function adeels_initialize() {
    // fill years
    var select = document.getElementById('adeels_yearSelect');
    var year = new Date().getFullYear();
    while (year >= 1900) {
        var el = document.createElement('option');
        el.text = year.toString();
        el.value = year.toString();         
        try {
            select.add(el, null); // standards compliant; doesn't work in IE
        }
        catch(ex) {
            select.add(el); // IE only
        }
        year--;
    }
    // fill days
    adeels_updateDaySelect();
    // reset month
    select = document.getElementById('adeels_monthSelect').options[0].selected = "selected";
}

function adeels_processDate() {
    //todo: check inputs
    year = document.getElementById('adeels_yearSelect').value;
    month = document.getElementById('adeels_monthSelect').value;
    day = document.getElementById('adeels_daySelect').value;    
    if (year == 0 || month == 0|| day == 0) {
        alert('Please enter your full date of birth.');
        document.getElementById('adeels_yearSelect').focus();
        return true;
    } 
    
    var westernSign = adeels_getWesternSign(year, month, day);
    var chineseSign = adeels_getChineseSign(year, month, day);
    imgWestern = new Image(); 
    imgWestern.src = adeels_plugin_url + '/images/western/' + westernSign+'.png';
    imgChinese = new Image();
    imgChinese.src = adeels_plugin_url + '/images/chinese/' + chineseSign +'.png';
    document.images.adeels_chineseImage.src = imgChinese.src;
    document.images.adeels_westernImage.src = imgWestern.src; 
    document.getElementById('adeels_date').innerHTML = day + " " + document.getElementById('adeels_monthSelect').options[document.getElementById('adeels_monthSelect').selectedIndex].text +
    ", " + year;
    document.getElementById('adeels_western_title').innerHTML = westernSign;
    document.getElementById('adeels_chinese_title').innerHTML = chineseSign; 
    //display
    document.getElementById('adeels_input').style.display = 'none';
    document.getElementById('adeels_images').style.display = 'inline';    
}

function adeels_tryAgain() {
    document.getElementById('adeels_input').style.display = 'inline';
    document.getElementById('adeels_images').style.display = 'none';
    document.images.adeels_chineseImage.src = adeels_plugin_url + '/images/loading.gif';
    document.images.adeels_westernImage.src = adeels_plugin_url + '/images/loading.gif';
}

function adeels_updateDaySelect() {
    var count = adeels_getLastDayInMonth(document.getElementById('adeels_yearSelect').value, document.getElementById('adeels_monthSelect').value);
    var select = document.getElementById('adeels_daySelect');
    // remove days
    while (select.options.length > (count + 1)) {
        select.remove(select.options.length - 1);
    }
    // and add some
    while (select.options.length < (count + 1)) {
        var el = document.createElement('option');
        el.text = select.options.length;
        el.value = select.options.length.toString();         
        try {
            select.add(el, null); // standards compliant; doesn't work in IE
        }
        catch(ex) {
            select.add(el); // IE only
        }
    }
}

function adeels_getLastDayInMonth(year, month){
  var dd = new Date(year, month, 0); // yea! pretty short!
  return dd.getDate();
}

function adeels_getWesternSign(year, month, day) {
    var date = new Date(year, month, day);
    var dates = new Array();    
    var signs = new Array();
    dates[0] = new Date(year-1, 12, 22);
    signs[0] = "capricorn";
	dates[1] = new Date(year, 1, 20);
	signs[1] = "aquarius";
	dates[2] = new Date(year, 2, 19);
	signs[2] = "pisces";
	dates[3] = new Date(year, 3, 21);
	signs[3] = "aries";
	dates[4] = new Date(year, 4, 20);
	signs[4] = "taurus";
	dates[5] = new Date(year, 5, 21);
	signs[5] = "gemini";
	dates[6] = new Date(year, 6, 22);
	signs[6] = "cancer";
	dates[7] = new Date(year, 7, 23);
	signs[7] = "leo";
	dates[8] = new Date(year, 8, 23);
	signs[8] = "virgo";
	dates[9] = new Date(year, 9, 23);
	signs[9] = "libra";
	dates[10] = new Date(year, 10, 24);
	signs[10] = "scorpio";
	dates[11] = new Date(year, 11, 23);
	signs[11] = "sagittarius";
	dates[12] = new Date(year, 12, 22);
	signs[12] = "capricorn";
	dates[13] = new Date(year+1, 1, 20);
	signs[13] = "aquarius"; // actually it's not necessary 
    var i = 0;
    while ((date >= dates[i+1]) && (i+1 < dates.length)) {
        i++;
    }
    return signs[i];
}

function adeels_getChineseSign(){
    var date = new Date(year, month, day);
    var dates = new Array();    
    var signs = new Array();
    dates[2025] = new Date(2025, 1, 29);
	signs[2025] = "snake";
	dates[2024] = new Date(2024, 2, 10);
	signs[2024] = "dragon";
	dates[2023] = new Date(2023, 1, 22);
	signs[2023] = "rabbit";
	dates[2022] = new Date(2022, 2, 01);
	signs[2022] = "tiger";
	dates[2021] = new Date(2021, 2, 12);
	signs[2021] = "ox";
	dates[2020] = new Date(2020, 1, 25);
	signs[2020] = "rat";
	dates[2019] = new Date(2019, 2, 05);
	signs[2019] = "boar";
	dates[2018] = new Date(2018, 2, 19);
	signs[2018] = "dog";
	dates[2017] = new Date(2017, 1, 28);
	signs[2017] = "rooster";
    dates[2016] = new Date(2016, 2, 08);
	signs[2016] = "monkey";
	dates[2015] = new Date(2015, 2, 19);
	signs[2015] = "sheep";
	dates[2014] = new Date(2014, 1, 31);
	signs[2014] = "horse";
	dates[2013] = new Date(2013, 2, 10);
	signs[2013] = "snake";
	dates[2012] = new Date(2012, 1, 23);
	signs[2012] = "dragon";
	dates[2011] = new Date(2011, 2, 03);
	signs[2011] = "rabbit";
	dates[2010] = new Date(2010, 2, 14);
	signs[2010] = "tiger";
	dates[2009] = new Date(2009, 1, 26);
	signs[2009] = "ox";
	dates[2008] = new Date(2008, 2, 07);
	signs[2008] = "rat";
	dates[2007] = new Date(2007, 2, 18);
	signs[2007] = "boar";
	dates[2006] = new Date(2006, 1, 29);
	signs[2006] = "dog";
	dates[2005] = new Date(2005, 2, 9);
	signs[2005] = "rooster";
	dates[2004] = new Date(2004, 1, 22);
	signs[2004] = "monkey";
	dates[2003] = new Date(2003, 2, 1);
	signs[2003] = "sheep";
	dates[2002] = new Date(2002, 2, 12);
	signs[2002] = "horse";
	dates[2001] = new Date(2001, 1, 24);
	signs[2001] = "snake";
	dates[2000] = new Date(2000, 2, 5);
	signs[2000] = "dragon";
	dates[1999] = new Date(1999, 2, 16);
	signs[1999] = "rabbit";
	dates[1998] = new Date(1998, 1, 28);
	signs[1998] = "tiger";
	dates[1997] = new Date(1997, 2, 8);
	signs[1997] = "ox";
	dates[1996] = new Date(1996, 2, 19);
	signs[1996] = "rat";
	dates[1995] = new Date(1995, 1, 31);
	signs[1995] = "boar";
	dates[1994] = new Date(1994, 2, 10);
	signs[1994] = "dog";
	dates[1993] = new Date(1993, 1, 23);
	signs[1993] = "rooster";
	dates[1992] = new Date(1992, 2, 4);
	signs[1992] = "monkey";
	dates[1991] = new Date(1991, 2, 15);
	signs[1991] = "sheep";
	dates[1990] = new Date(1990, 1, 27);
	signs[1990] = "horse";
	dates[1989] = new Date(1989, 2, 6);
	signs[1989] = "snake";
	dates[1988] = new Date(1988, 2, 17);
	signs[1988] = "dragon";
	dates[1987] = new Date(1987, 1, 29);
	signs[1987] = "rabbit";
	dates[1986] = new Date(1986, 2, 9);
	signs[1986] = "tiger";
	dates[1985] = new Date(1985, 2, 20);
	signs[1985] = "ox";
	dates[1984] = new Date(1984, 2, 2);
	signs[1984] = "rat";
	dates[1983] = new Date(1983, 2, 13);
	signs[1983] = "boar";
	dates[1982] = new Date(1982, 1, 25);
	signs[1982] = "dog";
	dates[1981] = new Date(1981, 2, 5);
	signs[1981] = "rooster";
	dates[1980] = new Date(1980, 2, 16);
	signs[1980] = "monkey";
	dates[1979] = new Date(1979, 1, 28);
	signs[1979] = "sheep";
	dates[1978] = new Date(1978, 2, 7);
	signs[1978] = "horse";
	dates[1977] = new Date(1977, 2, 18);
	signs[1977] = "snake";
	dates[1976] = new Date(1976, 1, 31);
	signs[1976] = "dragon";
	dates[1975] = new Date(1975, 2, 11);
	signs[1975] = "rabbit";
	dates[1974] = new Date(1974, 1, 23);
	signs[1974] = "tiger";
	dates[1973] = new Date(1973, 2, 3);
	signs[1973] = "ox";
	dates[1972] = new Date(1972, 1, 16);
	signs[1972] = "rat";
	dates[1971] = new Date(1971, 1, 27);
	signs[1971] = "boar";
	dates[1970] = new Date(1970, 2, 6);
	signs[1970] = "dog";
	dates[1969] = new Date(1969, 2, 17);
	signs[1969] = "rooster";
	dates[1968] = new Date(1968, 1, 30);
	signs[1968] = "monkey";
	dates[1967] = new Date(1967, 2, 9);
	signs[1967] = "sheep";
	dates[1966] = new Date(1966, 1, 21);
	signs[1966] = "horse";
	dates[1965] = new Date(1965, 2, 2);
	signs[1965] = "snake";
	dates[1964] = new Date(1964, 2, 13);
	signs[1964] = "dragon";
	dates[1963] = new Date(1963, 1, 25);
	signs[1963] = "rabbit";
	dates[1962] = new Date(1962, 2, 5);
	signs[1962] = "tiger";
	dates[1961] = new Date(1961, 2, 15);
	signs[1961] = "ox";
	dates[1960] = new Date(1960, 1, 28);
	signs[1960] = "rat";
	dates[1959] = new Date(1959, 2, 8);
	signs[1959] = "boar";
	dates[1958] = new Date(1958, 2, 18);
	signs[1958] = "dog";
	dates[1957] = new Date(1957, 1, 31);
	signs[1957] = "rooster";
	dates[1956] = new Date(1956, 2, 12);
	signs[1956] = "monkey";
	dates[1955] = new Date(1955, 1, 24);
	signs[1955] = "sheep";
	dates[1954] = new Date(1954, 2, 3);
	signs[1954] = "horse";
	dates[1953] = new Date(1953, 2, 14);
	signs[1953] = "snake";
	dates[1952] = new Date(1952, 1, 27);
	signs[1952] = "dragon";
	dates[1951] = new Date(1951, 2, 6);
	signs[1951] = "rabbit";
	dates[1950] = new Date(1950, 2, 17);
	signs[1950] = "tiger";
	dates[1949] = new Date(1949, 1, 29);
	signs[1949] = "ox";
	dates[1948] = new Date(1948, 2, 10);
	signs[1948] = "rat";
	dates[1947] = new Date(1947, 1, 22);
	signs[1947] = "boar";
	dates[1946] = new Date(1946, 2, 2);
	signs[1946] = "dog";
	dates[1945] = new Date(1945, 2, 13);
	signs[1945] = "rooster";
	dates[1944] = new Date(1944, 1, 25);
	signs[1944] = "monkey";
	dates[1943] = new Date(1943, 2, 5);
	signs[1943] = "sheep";
	dates[1942] = new Date(1942, 2, 15);
	signs[1942] = "horse";
	dates[1941] = new Date(1941, 1, 27);
	signs[1941] = "snake";
	dates[1940] = new Date(1940, 2, 8);
	signs[1940] = "dragon";
	dates[1939] = new Date(1939, 2, 19);
	signs[1939] = "rabbit";
	dates[1938] = new Date(1938, 1, 31);
	signs[1938] = "tiger";
	dates[1937] = new Date(1937, 2, 11);
	signs[1937] = "ox";
	dates[1936] = new Date(1936, 1, 24);
	signs[1936] = "rat";
	dates[1935] = new Date(1935, 2, 4);
	signs[1935] = "boar";
	dates[1934] = new Date(1934, 2, 14);
	signs[1934] = "dog";
	dates[1933] = new Date(1933, 1, 26);
	signs[1933] = "rooster";
	dates[1932] = new Date(1932, 2, 6);
	signs[1932] = "monkey";
	dates[1931] = new Date(1931, 2, 17);
	signs[1931] = "sheep";
	dates[1930] = new Date(1930, 1, 30);
	signs[1930] = "horse";
	dates[1929] = new Date(1929, 2, 10);
	signs[1929] = "snake";
	dates[1928] = new Date(1928, 1, 23);
	signs[1928] = "dragon";
	dates[1927] = new Date(1927, 2, 2);
	signs[1927] = "rabbit";
	dates[1926] = new Date(1926, 2, 13);
	signs[1926] = "tiger";
	dates[1925] = new Date(1925, 1, 25);
	signs[1925] = "ox";
	dates[1924] = new Date(1924, 2, 5);
	signs[1924] = "rat";
	dates[1923] = new Date(1923, 2, 16);
	signs[1923] = "boar";
	dates[1922] = new Date(1922, 1, 28);
	signs[1922] = "dog";
	dates[1921] = new Date(1921, 2, 8);
	signs[1921] = "rooster";
	dates[1920] = new Date(1920, 2, 20);
	signs[1920] = "monkey";
	dates[1919] = new Date(1919, 2, 1);
	signs[1919] = "sheep";
	dates[1918] = new Date(1918, 2, 11);
	signs[1918] = "horse";
	dates[1917] = new Date(1917, 1, 23);
	signs[1917] = "snake";
	dates[1916] = new Date(1916, 2, 3);
	signs[1916] = "dragon";
	dates[1915] = new Date(1915, 2, 14);
	signs[1915] = "rabbit";
	dates[1914] = new Date(1914, 1, 26);
	signs[1914] = "tiger";
	dates[1913] = new Date(1913, 2, 6);
	signs[1913] = "ox";
	dates[1912] = new Date(1912, 2, 18);
	signs[1912] = "rat";
	dates[1911] = new Date(1911, 1, 30);
	signs[1911] = "boar";
	dates[1910] = new Date(1910, 2, 10);
	signs[1910] = "dog";
	dates[1909] = new Date(1909, 1, 22);
	signs[1909] = "rooster";
	dates[1908] = new Date(1908, 2, 2);
	signs[1908] = "monkey";
	dates[1907] = new Date(1907, 2, 13);
	signs[1907] = "sheep";
	dates[1906] = new Date(1906, 1, 25);
	signs[1906] = "horse";
	dates[1905] = new Date(1905, 2, 4);
	signs[1905] = "snake";
	dates[1904] = new Date(1904, 2, 16);
	signs[1904] = "dragon";
	dates[1903] = new Date(1903, 1, 29);
	signs[1903] = "rabbit";
	dates[1902] = new Date(1902, 2, 8);
	signs[1902] = "tiger";
	dates[1901] = new Date(1901, 2, 19);
	signs[1901] = "ox";
	dates[1900] = new Date(1900, 1, 31);
	signs[1900] = "rat";	
	if (date < dates[year]){
	   return signs[year - 1];
	} else {
	   return signs[year];
	}
}