// JavaScript Document

function CalNumNights(start_date,end_date,Wiz)
{
	
	// GET ARRIVAL DATE VARIABLES
	var arrival_day = Wiz.ad.value;
	var arrival_month = Wiz.am.value;
	var arrival_year = Wiz.yr.value;
	
	// GET DEPARTURE DATE VARIABLES
	var dep_day = Wiz.dd.value;
	var dep_month = Wiz.dm.value;
	var dep_year = Wiz.dyr.value;
	
	// INTITILIZE OTHER VARIABLES
	var num_nights;
	var display_num_nights;
	var next_month_days;
	var next_month_days_total = 0;
	var year_1_days_total = 0;
	var year_2_days_total = 0;
	// Remove Comments For Debug - alert(arrival_day+","+dep_day);
	
	
	// num_nights = parseInt(dep_day) - parseInt(arrival_day);
	
	//*********************************************************************************************
	// IF SIMPLE SELECTION SAME YEAR AND SAME MONTH
	if(arrival_year == dep_year && arrival_month == dep_month)
	{
		num_nights = parseInt(dep_day) - parseInt(arrival_day);
	}
	
	//********************************************************************************************
	// IF COMPLEX SELECTION SAME YEAR AND DIFFRENT MONTH
	else if(dep_year == arrival_year && dep_month > arrival_month)
	{
		// NO. OF DAYS OF ARRIVAL MONTH
		arrival_month_days = getDaysInMonth_numnights(arrival_month,arrival_year);
		
		// NO. OF DAYS OF DEPARTURE MONTH
		dep_month_days = getDaysInMonth_numnights(dep_month,dep_year); 
		dep_remaining_days = parseInt(dep_month_days) - parseInt(dep_day);
		
		// TOTAL DAYS TO BE SUBTRACTED TO THE NO. OF DAYS CALCULATED BELOW
		days_to_subtract = parseInt(arrival_day) + parseInt(dep_remaining_days);
		
			
		// GET NUMBER OF DAYS BETWEEN ARRIVAL MONTH AND DEPARTURE MONTH
		
		for(var i=arrival_month; i<=dep_month; i++)
		{
			next_month_days = getDaysInMonth_numnights(i,arrival_year);
			next_month_days_total = parseInt(next_month_days_total) + parseInt(next_month_days)
		}
		// alert(next_month_days_total);
		num_nights = parseInt(next_month_days_total) - parseInt(days_to_subtract);
		//alert(arr_remaining_days);
	}
	
	//********************************************************************************************
	// IF COMPLEX SELECTION DIFFERENT YEAR AND SAME/DIFFRENT MONTH
	else if(dep_year > arrival_year)
	{
		arrival_month_days = getDaysInMonth_numnights(arrival_month,arrival_year);
		dep_month_days = getDaysInMonth_numnights(dep_month,dep_year);
		arr_remaining_days = parseInt(arrival_month_days) - parseInt(arrival_day);
				
		// calculate first initial year days left
		for(var i=arrival_month; i<=12; i++)
		{
			next_month_days = getDaysInMonth_numnights(i,arrival_year);
			year_1_days_total = parseInt(year_1_days_total) + parseInt(next_month_days)
		}
		year_1_days_total = parseInt(year_1_days_total) - parseInt(arrival_day);
		
		
		// calculate second year days left
		for(var i=1; i<=dep_month; i++)
		{
			next_month_days = getDaysInMonth_numnights(i,dep_year);
			year_2_days_total = parseInt(year_2_days_total) + parseInt(next_month_days)
		}
		
		year_2_days_total = parseInt(year_2_days_total) - ( getDaysInMonth_numnights(dep_month,dep_year) - parseInt(dep_day));
		
		num_nights = parseInt(year_1_days_total) + parseInt(year_2_days_total);
	}
	
	display_num_nights = num_nights; 
	// alert("num_nights"+num_nights);
	Wiz.txt_num_nights.value = display_num_nights;
}

function getDaysInMonth_numnights(month_index, year_index)
{
	// 31 DAYS MONTHS
	var days_in_month = 31
	
	// CHECK LEAP FOR FEB.
	if (month_index == 2)
    {
		if (isLeapYear(year_index))
        {
			days_in_month = 29;
        }
		else
        {
			days_in_month = 28;
        }
    }
	// 30 DAYS MONTHS... 9,4,6,11
	if (month_index == 4 || month_index == 6 || month_index == 9 || month_index == 11)
    {
		days_in_month = 30;
    }
	return days_in_month;
}




function isBrowserSupp() {
    // Get the version of the browser
    version =  parseFloat( navigator.appVersion );

    if ( ( version >= 2.0 ) && ( version < 2.1 ) && ( navigator.appName.indexOf( "Netscape" ) != -1 ) ) {
        return false;
    }
    else {
    return true;
    }

return true;
}

function isLeapYear(yrStr)
{
var leapYear=false;
var year = parseInt(yrStr, 10);
// every fourth year is a leap year
if (year%4 == 0)
    {
    leapYear=true;
    // unless it's a multiple of 100
    if (year%100 == 0)
        {
        leapYear=false;
        // unless it's a multiple of 400
        if (year%400 == 0)
            {
            leapYear=true;
            }
        }
    }
return leapYear;
}


function getDaysInMonth(mthIdx, YrStr)
{
// all the rest have 31
var maxDays=31
// expect Feb. (of course)
if (mthIdx==1)
    {
    if (isLeapYear(YrStr))
        {
        maxDays=29;
        }
    else
        {
        maxDays=28;
        }
    }
// thirty days hath...
if (mthIdx==3 || mthIdx==5 || mthIdx==8 || mthIdx==10)
    {
    maxDays=30;
    }
return maxDays;
}
//the function which does some magic to the date fields
// return non-zero if it is the last day of the month
function adjustDate(mthIdx, Dt)
{
var value=0;

var today = new Date()
var theYear = parseInt(today.getYear(),10)

if (mthIdx < today.getMonth()) {
    theYear = (parseInt(today.getYear(), 10) + 1)
}
if(theYear<100){
    theYear = "19" + theYear
}
else{
    if((theYear-100) < 10){
        theYear = "0" + (theYear-100)
    }
    else{
        theYear = (theYear-100)+""
    }
    theYear = "20" + theYear
}


var numDays=getDaysInMonth(mthIdx, theYear);

if (mthIdx==1)
    {
    if (Dt.options.selectedIndex + 1 < numDays)
        {
        return 0;
        }
    else
        {
        Dt.options.selectedIndex=numDays - 1;
        //check for leap year
        if (numDays==29)
            {
            return 99;
            }
        else
            {
            return 1;
            }
        }
    }
if (Dt.options.selectedIndex + 1 < numDays)
    {
    value=0;
    }
else
    {
    if (Dt.options.selectedIndex + 1 > numDays)
        {
        Dt.options.selectedIndex--;
        value=3;
        }
    else
        {
        //index is 31 or 30
        value=2;
        }
    }
return value;
}

//changes departure month when arrival month is changed
function amadChange(inM,inD,outM,outD)
{
	if (!isBrowserSupp())
    {
    	return;
    }

	var res = adjustDate(inM.options.selectedIndex, inD);

	if (res != 0)
    {
           outD.options.selectedIndex=0;
           if (inM.options.selectedIndex==11){
            outM.options.selectedIndex=0
           }
           else{
            outM.options.selectedIndex=inM.options.selectedIndex + 1;
           }
    }
	else
    {
    outM.options.selectedIndex = inM.options.selectedIndex;
    outD.options.selectedIndex = inD.options.selectedIndex+1;
    }
	return;
}

function dmddChange(outM,outD,inM,inD)
{
if (!isBrowserSupp())
    {
    return;
    }

adjustDate(outM.options.selectedIndex,outD);
if (((outM.options.selectedIndex < inM.options.selectedIndex) && (inM.options.selectedIndex != 11)) || ((outM.options.selectedIndex == inM.options.selectedIndex) && (outD.options.selectedIndex <= inD.options.selectedIndex)))
	{
		amadChange(inM,inD,outM,outD);
	}
	
return;
}

function l_map()
{
window.open("locmap.asp","","width=600,height=435,status=no,scrollbars=no,resizable=no,location=no,menubar=no,toolbar=no,top=140,left=37")
}

function cl()
{
varlink=document.fm.star.options[document.fm.star.selectedIndex].value

if (varlink == "ss")
{
alert("Select Counrty.")
return false;
}
else
{
window.open(varlink,"","width=600,height=435,status=yes,scrollbars=yes,resizable=yes,location=yes,menubar=yes,toolbar=yes,top=140,left=50")
return true;
}
}

