//\/////
//\  DateNavigation.js
//\  Handles date selection in dropdown boxes
//\/////

function addEvent( obj, type, fn ) {
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else {
		obj["on"+type] = obj["e"+type+fn];
	}
}

var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();
addEvent(window,'unload',EventCache.flush);

addEvent(window, 'load', setSelectedDate, false);       /* without this,the setSelectedDate functio but be done onload.*/

function setSelectedDate()
	{
    var mypathname=location.pathname;                 /* Check if this is a date in history type page */
    mypathname=mypathname.replace(".htm","");          /* Recognizes only strictly /1/1_03.htm filenames */

    var mypatharray=mypathname.slice(1).split(/[\/_]/);    /* slice to remove leading / which IE treats differently in split */

    if (mypatharray.length<3){
        dayflag=0;
        monthflag=0;
    } else {
        var myfilemonth=mypatharray[1];
        var myfileday=mypatharray[2];
        
        myfileday=myfileday.slice(0,2);             /* let 5_02 or 5_02etc yield day 02 */
        var re1monthdigit=/^\d{1}$/;
        var re2monthdigit=/^\d{2}$/;
        var re2daydigit=/^\d{2}/;
        var monthflag=1;
        var dayflag=1;
        if (myfilemonth.search(re2monthdigit)==-1){if (myfilemonth.search(re1monthdigit)==-1){monthflag=0;}}
        if (myfileday.search(re2daydigit)==-1){dayflag=0;}
        if (myfilemonth<1 || myfilemonth>12){monthflag=0;}
        if (myfileday<1 || myfileday>31){dayflag=0;}
    
        var daysinmonth = new Array (31,29,31,30,31,30,31,31,30,31,30,31);
        if  (myfileday > daysinmonth[myfilemonth-1]){dayflag=0;}
    }
    
    if (monthflag*dayflag ==1) {          /* if either flag is zero, no correct month-day page set */
        day_now = myfileday-1;             /* change to base 0 for use in array */
        month_now = myfilemonth-1;          /* ditto */
    } else {
    var date_now = new Date();           /* get current date */
    var month_now = date_now.getMonth();   /* getMonth returns 0-11 so month_now is base 0 too */
    var day_now = date_now.getDate()-1;       /* getDay returns 0-30 so day_now is base 0 too */
    }

    document.Calendar.month.options[month_now].selected = true;      /* target month is now selected */

    setOptions(month_now + 1); /* set appropriate day options for chosen month */       
    document.Calendar.day.options[day_now].selected = true;      /* target day is now selected */
}

function setOptions(chosen) {
    var daysinmonth = new Array (31,29,31,30,31,30,31,31,30,31,30,31);
    var selbox = document.Calendar.day;
    selbox.options.length = 0;

    for (i = 1; i <= daysinmonth[chosen-1]; i++)
    {
    dayoption=""+i;
    daytext="";
    if (i<10) {daytext="0"};
    daytext=daytext+i;

    selbox.options[selbox.options.length] = new Option(dayoption,daytext);
    }
}


function gohere($mymonth, $myday) {
parent.location="http://www.todayinsci.com/"+$mymonth+"/"+$mymonth+"_"+$myday+".htm"
}
