// JScript File
/*
 * (c)2006 Jesse Skinner/Dean Edwards/Matthias Miller/John Resig
 * Special thanks to Dan Webb's domready.js Prototype extension
 * and Simon Willison's addLoadEvent
 *
 * For more info, see:
 * http://www.thefutureoftheweb.com/blog/adddomloadevent
 * http://dean.edwards.name/weblog/2006/06/again/
 * http://www.vivabit.com/bollocks/2006/06/21/a-dom-ready-extension-for-prototype
 * http://simon.incutio.com/archive/2004/05/26/addLoadEvent
 * 
 *
 * To use: call addDOMLoadEvent one or more times with functions, ie:
 *
 *    function something() {
 *       // do something
 *    }
 *    addDOMLoadEvent(something);
 *
 *    addDOMLoadEvent(function() {
 *        // do other stuff
 *    });
 *
 */
addDOMLoadEvent = (function(){
    // create event function stack
    var load_events = [],
        load_timer,
        script,
        done,
        exec,
        old_onload,
        init = function () {
            done = true;
            // kill the timer
            clearInterval(load_timer);
            // execute each function in the stack in the order they were added
            while (exec = load_events.shift())
                exec();
            if (script) script.onreadystatechange = '';
        };
    return function (func) {
        // if the init function was already ran, just run this function now and stop
        if (done) return func();
        if (!load_events[0]) {
            // for Mozilla/Opera9
            if (document.addEventListener)
                document.addEventListener("DOMContentLoaded", init, false);
            // for Internet Explorer
            /*@cc_on @*/
            /*@if (@_win32)
                document.write("<script id=__ie_onload defer src=//0><\/scr"+"ipt>");
                script = document.getElementById("__ie_onload");
                script.onreadystatechange = function() {
                    if (this.readyState == "complete")
                        init(); // call the onload handler
                };
            /*@end @*/
            // for Safari
            if (/WebKit/i.test(navigator.userAgent)) { // sniff
                load_timer = setInterval(function() {
                    if (/loaded|complete/.test(document.readyState))
                        init(); // call the onload handler
                }, 10);
            }
            // for other browsers set the window.onload, but also execute the old window.onload
            old_onload = window.onload;
            window.onload = function() {
                init();
                if (old_onload) old_onload();
            };
        }
        load_events.push(func);
    }
})();
function LoadDefault()
{
    var d = new Date();
    var curr_date = d.getDate();
    var curr_month = d.getMonth();
    var curr_timeHr = d.getHours();
    var curr_timeMin = d.getMinutes();
    var curr_timeAMPM = "am";
    if (curr_timeHr >= 12){
        curr_timeHr -= 12;
        curr_timeAMPM = "pm";
    }
    if (curr_timeHr == 0) curr_timeHr = 12;
    curr_month++;
    var curr_year = d.getFullYear();
    document.getElementById("monthDayYearField").value = (curr_month<=9?"0"+curr_month: curr_month) + "/" + (curr_date<=9?"0"+curr_date:curr_date) + "/" + curr_year;
    document.getElementById("itdDate").value = curr_year +''+ (curr_month<=9?"0"+curr_month: curr_month) + ''+(curr_date<=9?"0"+curr_date:curr_date); 
    document.getElementById("itdTimeHour").value = curr_timeHr;
    document.getElementById("itdTimeMinute").value = curr_timeMin;
    document.getElementById("hiddenYear").value = curr_year;
    document.getElementById("hiddenMonth").value = Months[curr_month-1];
    var ampmSelect = document.getElementById("itdLPxx_TimeAMPM");
    for (var i = 0; i < ampmSelect.options.length; i++)
    {
        if (ampmSelect.options[i].value ==curr_timeAMPM )
        {
            ampmSelect.options[i].selected  = true;
            document.getElementById("itdTimeAMPM").value = ampmSelect.options[i].value;
        }
    }
}
function insertDate(obj, type){

	var date = obj.value;
	var insertDate = date.split('/');
	
	var Year, Month, Midx, NewYearDay, MonthStartDay;
	var NumDaysInMonth, i, t, x;
        

	Year = parseFloat(document.getElementById('hiddenYear' +type.toUpperCase()).value);
	Month = document.getElementById('hiddenMonth' +type.toUpperCase()).value;

	Midx  =  DetermineMonthIdx();
	if (Midx == -1){
			alert ("Can't recognize that month");
			return;
	}

	NewYearDay = FindNewYearStartingDay(Year);
	MonthStartDay = FindMonthStartDay(NewYearDay, Year,  Midx);
	NumDaysInMonth = FindNumDaysInMonth(Year, Midx);

   
	var today=new Date(); 
	var dd=today.getDate(); 
	var mm=today.getMonth() +1; 
	var yy=today.getYear(); 
	
	var dayLast=today.getDate(); 
	var monthLast=today.getMonth() +1; 
	var yearLast=today.getYear(); 
	
	
	if(today.getDate() +21 > NumDaysInMonth){
		dayLast = (dd + 21) - FindNumDaysInMonth(Year, Midx -1);
		monthLast = mm +1 
	}
	else{
		dayLast = today.getDate() +21;
	}

	if (yy < 999){
		 yy += 1900;
		 yearLast+= 1900;
	 }
	 
	
	var s = new Date(parseFloat(insertDate[2]), parseFloat(insertDate[0])-1, parseFloat(insertDate[1]));
		s.setHours(0);
		s.setMinutes(0);
		s.setSeconds(0);
		s.setMilliseconds(0);

	var selectionDate = Date.parse(s);
		
	var	t = new Date();
		t.setHours(0);
		t.setMinutes(0);
		t.setSeconds(0);
		t.setMilliseconds(0);
	var today = Date.parse(t);
		today += 3 * 7 * 24 * 60 * 60 * 1000;

	var isInvalid = today - selectionDate < 0;
	
	if(date.indexOf('/')=='-1'){

		if(dd.length==1)dd = '0' +dd;
		if(mm.length==1)mm = '0' +mm;
		
		if(type=='dm'){
			document.forms[1].itdDate.value = yy + '' + mm + ''+ dd; 
			obj.value = mm + '/' + dd + '/'+ yy; 
		}
		else if(type=='rs'){
			obj.value = mm + '/' + dd + '/'+ yy; 
		}
		else{
			document.forms[0].itdDate.value = yy + '' + mm + ''+ dd; 
			obj.value = mm + '/' + dd + '/'+ yy; 
		}
	}
	else if(isInvalid){
		alert('The date entered is beyond the three week look-ahead period, which is the farthest advance date allowed due to periodically changing schedules. The date you selected has been reset to today\'s date.');
		obj.value = mm + '/' + dd + '/'+ yy;
		submitForm = "false";
        obj.select();
        obj.focus(); 
	} 
	
	else{
		
		if(isNaN(insertDate[0]) || insertDate[0] > 12){
			insertDate[0] = mm;
		}
		
		if(isNaN(insertDate[1]) || insertDate[1] > NumDaysInMonth){
			insertDate[1] = dd;
		}
		
		if(isNaN(insertDate[2])){
			insertDate[2] = yy;
		}
		
		if(insertDate[0] && insertDate[1]){
			if(insertDate[0].length==1)insertDate[0]='0' + insertDate[0];
			if(insertDate[1].length==1)insertDate[1]='0' + insertDate[1];
			
			if(type=='dm'){
				document.forms[1].itdDate.value = insertDate[2] + '' + insertDate[0] + ''+ insertDate[1]; 
				obj.value = insertDate[0] + '/' + insertDate[1] + '/'+ insertDate[2]; 
			}
			else if(type=='rs'){
				obj.value = insertDate[0] + '/' + insertDate[1] + '/'+ insertDate[2]; 
			}
			else{
				document.forms[0].itdDate.value = insertDate[2] + '' + insertDate[0] + ''+ insertDate[1]; 
				obj.value = insertDate[0] + '/' + insertDate[1] + '/'+ insertDate[2]; 
			}
		}
	
	}
	
}

function checkDate(obj){

	if (obj.id=='itdTimeHour') {
		var hour = parseInt(obj.value);
		
		if(isNaN(hour)){
			obj.value = 1;
		}
		else if(hour > 12)
		{
			while (hour > 12) {
				hour -= 12;
			}	

			obj.value = hour;
		}		
	}

	if (obj.id=='itdTimeMinute') {
		var minute = parseInt(obj.value);
		
		if(isNaN(minute)){
			obj.value = '00';
		}
		
		else if(minute > 59)
		{
			while (minute > 59) {
				minute -= 59;
			}	
			
			obj.value = minute;
		}
	}
	
}

Months = new Array(12);
Months[0] = "January";
Months[1] = "Febuary";
Months[2] = "March";
Months[3] = "April";
Months[4] = "May";
Months[5] = "June";
Months[6] = "July";
Months[7] = "August";
Months[8] = "September";
Months[9] = "October";
Months[10] = "November";
Months[11] = "December";

var coordsystem = "WGS84[DD.ddddd]";
var submitForm = "true";

function PadSpaces(TheString)
{
        var Spaces = "             ";
        len = Math.round((9 - TheString.length)/2);

        return Spaces.substring(0,len) + TheString;
}
function NumLeapYears(StartYear, EndYear)
{
        var LeapYears, i;

        if (EndYear >= StartYear){
                for(LeapYears = 0; StartYear <= EndYear; StartYear++)
                if (IsLeapYear(StartYear)) LeapYears++;
        }else{
        for(LeapYears = 0; EndYear <= StartYear; EndYear++)
                if (IsLeapYear(EndYear)) LeapYears++;
        }
        return LeapYears;
}

function IsLeapYear(Year)
{
        if(Math.round(Year/4) == Year/4){
                if(Math.round(Year/100) == Year/100){
                        if(Math.round(Year/400) == Year/400)
                                return true;
                        else return false;
                }else return true;
        }
        return false;
}

function Trim(TheString)
{
        var len;

        len = TheString.length;
        while(TheString.substring(0,1) == " "){ //trim left
                TheString = TheString.substring(1, len);
                len = TheString.length;
        }

        while(TheString.substring(len-1, len) == " "){ //trim right
                TheString = TheString.substring(0, len-1);
                len = TheString.length;
        }
        return TheString;
}

function DetermineMonthIdx()
{
        var i, month, month_s, len;


        month = Trim(document.getElementById('hiddenMonth').value);
        len = month.length;

        for( i = 0; i <12; i++){
                month_s = Months[i].substring(0,len);
                if (month_s.toUpperCase() == month.toUpperCase())
                        return (i);
        }
        return -1;
}


function FindNewYearStartingDay(Year)
{
        var LeapYears, Years, Day;

        LeapYears = NumLeapYears(1995, Year);

        if  (Year >=1995)
                Years = (Year -1995)+LeapYears;
        else    Years = (Year -1995)-LeapYears;

        if  (Year >=1995)
                Day = Math.round(((Years/7 - Math.floor(Years/7))*7)+.1);
        else    Day = Math.round(((Years/7 -  Math.ceil(Years/7))*7)-.1);

        if (Year >=1995){
                if(IsLeapYear(Year)) Day--;
        }else Day += 7;

        if(Day < 0) Day = 6;
        if(Day > 6) Day = 0;
        return Day;
}

function FindNumDaysInMonth(Year, Month)
{
        if(Month == 1){
                if(IsLeapYear(Year)) return 29;
                else return 28;
        }else{
                if(Month >6) Month++;
                if(Month/2 == Math.round(Month/2))  return 31;
        }
 return 30;
}

function FindMonthStartDay(NewYearDay, Year, Month)
{
        var MonthStartDay;

        AddArray = new Array(12);

        AddArray[0]=0;AddArray[1]=3;AddArray[2]=3;AddArray[3]=6;
        AddArray[4]=1;AddArray[5]=4;AddArray[6]=6;AddArray[7]=2;
        AddArray[8]=5;AddArray[9]=0;AddArray[10]=3;AddArray[11]=5;

        MonthStartDay = NewYearDay + AddArray[Month];
        if(IsLeapYear(Year)  && (Month ) > 1) MonthStartDay ++;

        if (MonthStartDay > 6) MonthStartDay -= 7;

        return MonthStartDay;
}

function updateInputOnUserInputSubmit()
{
    if(submitForm == "true")
    {
        checkInputOnSubmit();
        UpdateLocation();
    }
    else
    {
        submitForm = "true";
        return false;

    }
        
}

function updateInputOnPresetStartSubmit()
{
    if(submitForm == "true")
    {
        checkInputOnSubmit();
        UpdateDestinationLocation();
    }
    else
    {
        submitForm = "true";
        return false;

    }
}

function updateInputOnPresetEndSubmit()
{
    if(submitForm == "true")
    {
        checkInputOnSubmit();
        UpdateOriginLocation();
    }
    else
    {
        submitForm = "true";
        return false;

    }
}


function updateInputOnUserInputAdditional()
{
    checkInputOnAdditional();
    UpdateLocation();
}

function updateInputOnPresetStartAdditional()
{
    checkInputOnAdditional();
    UpdateDestinationLocation();
}

function updateInputOnPresetEndAdditional()
{
    checkInputOnAdditional();
    UpdateOriginLocation();
}

function setAgency()
{
    if(document.getElementById('preferInclOP').checked)
        document.getElementById('preferInclOP').value = agencyName;
    else
        document.getElementById('preferInclOP').value = "";

}
function checkInputOnSubmit(){
    document.getElementById('itdLPxx_additonalOptions').value = "";
    document.getElementById('execInst').value ="normal";
}
function checkInputOnAdditional(){
    document.getElementById('itdLPxx_additonalOptions').value = "1";
    document.getElementById('execInst').value ="verifyOnly";
}

function UpdateLocation()
{
    UpdateOriginLocation();
    UpdateDestinationLocation();
}

function UpdateOriginLocation()
{
    document.getElementById("name_origin").value = document.getElementById("name_origin_input").value;
    document.getElementById("place_origin").value = document.getElementById("place_origin_input").value;
}

function UpdateDestinationLocation()
{
    document.getElementById("name_destination").value = document.getElementById("name_destination_input").value;
    document.getElementById("place_destination").value = document.getElementById("place_destination_input").value;
}



function CallStartSetLocation()
{
    SetLocation(true,document.getElementById('presetOriginLocation').value,document.getElementById('Originlatitude').value,document.getElementById('Originlongitude').value);
}

function CallEndSetLocation()
{
    SetLocation(false,document.getElementById('presetDestinationLocation').value,document.getElementById('Destinationlatitude').value,document.getElementById('Destinationlongitude').value);
}

function SetLocation(IsStart, name, latitude, longitude)
{
    var inputLat;
    var inputLong;
    var inputName;
    if(IsStart)
    {
        if(name==null)
        {
            inputName = document.getElementById("name_origin").value;
        }
        else
        {
            inputName = name;
            UpdateSpan('spname_origin',inputName);
        }
        if(latitude == null)
        {
            inputLat = document.getElementById("name_origin_Lat").value;
        }
        else
        {
            inputLat = latitude;
        }
        if(longitude == null)
        {
            inputLong = document.getElementById("name_origin_Long").value;
        }
        else
        {
            inputLong = longitude;
        }
        document.getElementById("name_origin").value=inputLat+":"+inputLong+":"+coordsystem+":"+inputName;
        document.getElementById("type_origin").value = "coord";

    }
    else
    {
        if(name==null)
        {
            inputName = document.getElementById("name_destination").value;
        }
        else
        {
            inputName = name;
            UpdateSpan('spname_destination',inputName);            
        }
        if(latitude == null)
        {
            inputLat = document.getElementById("name_destination_Lat").value;
        }
        else
        {
            inputLat = latitude;
        }
        if(longitude == null)
        {
            inputLong = document.getElementById("name_destination_Long").value;
        }
        else
        {
            inputLong = longitude;
        }
        document.getElementById("name_destination").value=inputLat+":"+inputLong+":"+coordsystem+":"+inputName;
        document.getElementById("type_destination").value = "coord";

    }   
    document.getElementById("divPlanner").style.display = "block";
    document.getElementById("divPlanner").style.visibility = "visible";
    
}

function UpdateSpan(id, str) {
    document.getElementById(id).innerHTML = str;
}  



