monthMaxDays	= [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
monthMaxDaysLeap= [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
hideSelectTags = [];
var trgt;
function getRealYear(dateObj)
{
	return (dateObj.getYear() % 100) + 
         (((dateObj.getYear() % 100) < 39) ? 2000 : 1900);
}
function disabledDate(date,curDate)
 {
 //debugger
 var dt=date.split("-");
 var dtnew=curDate.split("-");
// if(dtnew[0]<10)
// {
//   dtnew[0]="0" + dtnew[0];
//  }
//  if(dtnew[1]<10)
// {
//   dtnew[1]="0" + dtnew[1];
//  }
        if (parseFloat(dt[0])<parseFloat(dtnew[0]))
        {
            if(parseFloat(dt[1])<=parseFloat(dtnew[1]) && parseFloat(dt[2])<=parseFloat(dtnew[2]))
            {
             return false;
            }
            else
                return true;
        }
        else
        {
            if(parseFloat(dt[1])>=parseFloat(dtnew[1]) && parseFloat(dt[2])>=parseFloat(dtnew[2]))
            {
             return true;
            }
            else
                return false;
        } 
 }

function getDaysPerMonth(month, year)
{
	/* 
	Check for leap year. These are some conditions 
        to check year is leap year or not...
	1.Years evenly divisible by four are normally 
          leap years, except for... 
	2.Years also evenly divisible by 100 are not 
          leap years, except for... 
	3.Years also evenly divisible by 400 are 
          leap years. */
	if ((year % 4) == 0)
	{
		if ((year % 100) == 0 && (year % 400) != 0)
			return monthMaxDays[month];
	
		return monthMaxDaysLeap[month];
	}
	else
		return monthMaxDays[month];
}

function createCalender(year, month, day)
{
	 // current Date
	 //debugger
	var datenew=document.getElementById("depDt").value;
	if(document.getElementById("body").title!="package")
	{
	    var datenewret=document.getElementById("retDt").value;
	}
	
	var datedisabl=document.getElementById("disableddate").value;
    var datedisablnew=datedisabl.split('-');
	
    if(document.getElementById("body").title=="flight")
    {
        var datedisablinter=document.getElementById("disabed").value;
        // var datenew1=datenew.split('-');
        // var datenewret1=datenewret.split('-');
        var datedisablnewinter=datedisablinter.split('-');
        var datenewDOM=document.getElementById("depDtDomestic").value;
	    var datenewretDOM=document.getElementById("retDtDomestic").value
        var datenew1DOM=datenewDOM.split('-');
        var datenewret1DOM=datenewretDOM.split('-');
    }
	var curDate = new Date();
	var curDay = curDate.getDate();
	var Month;
	 if(document.getElementById("body").title!="package")
	 {
	     if((trgt=="txtReturnDateInternational")||(trgt=="txtDepartDateInternational"))
        {
	        Month=document.getElementById('txtDepartDateInternational').value;
	    }
	    else
	        Month=document.getElementById('txtDepartDateDomestic').value;
	 }
	 else
	 {
	    Month=document.getElementById('txtDepart').value;
	 }
	    var curMnth= Month.split('-');
	     var curMonth;
	    if(curMnth[1]<10)
	    {
	         var Mnth=curMnth[1].split('0');
	         curMnth[1]=Mnth[1];
	    }
	    curMonth= parseFloat(curMnth[1])-1;
	    	    
//	}
//	else
//	    curMonth = curDate.getMonth();
	
	var curYear = getRealYear(curDate)
	 // if a date already exists, we calculate some values here
	if (!year)
	{
		var year = curYear;
		var month = curMonth;
	}
	var yearFound = 0;
	for (var i=0; i<document.getElementById('selectYear').options.length; 
             i++)
	{
		if (document.getElementById('selectYear').options[i].value 
                    == year)
		{
			document.getElementById('selectYear').selectedIndex = 
                        i;
			yearFound = true;
			break;
		}
	}
	if (!yearFound)
	{
		document.getElementById('selectYear').selectedIndex = 0;
		year = document.getElementById('selectYear').options[0].value;		
	}
	document.getElementById('selectMonth').selectedIndex = month;
	 // first day of the month.
	var fristDayOfMonthObj = new Date(year, month, 1);
	var firstDayOfMonth = fristDayOfMonthObj.getDay();
	continu		= true;
	firstRow	= true;
	var x	= 0;
	var d	= 0;
	var trs = []
	var ti = 0;
	while (d <= getDaysPerMonth(month, year))
	{
		if (firstRow)
		{
			trs[ti] = document.createElement("TR");
			if (firstDayOfMonth > 0)
			{
				while (x < firstDayOfMonth)
				{
				trs[ti].appendChild(document.createElement
                                ("TD"));
				x++;
				}
			}
			firstRow = false;
			var d = 1;
		}
		var i=0;
		if (x % 7 == 0)
		{
			ti++;
			trs[ti] = document.createElement("TR");
		}
		if (day && d == day)
		{
			var setID = 'calenderChoosenDay';
			var styleClass = 'choosenDay';
			var setTitle = 'this day is currently selected';
		}
		else if (d == curDay && month == curDate.getMonth() && year == curYear)
		{
			var setID = 'calenderToDay';
			var styleClass = 'toDay';
			var setTitle = "Today's Date";
			
		}
		
		else
		{
		       var setID = false;
			   var styleClass = 'normalDay';
			   var setTitle = false;
		}
		 
		  if((document.getElementById("body").title=="flight")&&((trgt=="txtReturnDateInternational")||(trgt=="txtDepartDateInternational")))
		   {
		        if(d<datedisablnewinter[0])
                {
                    if(parseFloat(month)+1<=datedisablnewinter[1] && year<=datedisablnewinter[2])
		            {
		                var setID = 'calendDay';
		                var styleClass = 'disableddates';
		            }
		        }
		        else
		        {
		            if(parseFloat(month)+1<datedisablnewinter[1] && year<=datedisablnewinter[2])
		            {
		                var setID = 'calendDay';
		                var styleClass = 'disableddates';
		            }
		        }
		    }
		    else
		    {
		        if(d<datedisablnew[0])
                {
                if(parseFloat(month)+1<=datedisablnew[1] && year<=datedisablnew[2])
		        {
		        var setID = 'calendDay';
		        var styleClass = 'disableddates';
		        }
		        }
		        else
		        {
		            if(parseFloat(month)+1<datedisablnew[1] && year<=datedisablnew[2])
		            {
		                var setID = 'calendDay';
		                var styleClass = 'disableddates';
		            }
		        }
		     }
//		if(trgt=="txtDepartDateInternational")
//        {
//              if(d<datedisablnew[0])
//              {
//                if(parseFloat(month)+1<=datedisablnew[1] && year<=datedisablnew[2])
//		        {
//		        var setID = 'calDay';
//		        var styleClass = 'disableddates';
//		        }
//		      }
//        }
//		if(trgt=="txtReturnDateInternational")
//        {
//          if(d<datedisablnew[0])
//          {
//                if(parseFloat(month)+1<=datedisablnew[1] && year<=datedisablnew[2])
//		        {
//		        var setID = 'calendDay';
//		        var styleClass = 'disableddates';
//		        }
//		   }
//        }
//        if(document.getElementById("body").title=="flight")
//    {
//		if(trgt=="txtDepartDateDomestic")
//        {
//            if(d<datedisablnew[0])
//          {
//                if(parseFloat(month)+1<=datedisablnew[1] && year<=datedisablnew[2])
//		        {
//		        var setID = 'calendDay';
//		        var styleClass = 'disableddates';
//		        }
//		   }
//            
//        }
//        if(trgt=="txtReturnDateDomestic")
//        {
//           if(d<datedisablnew[0])
//          {
//                if(parseFloat(month)+1<=datedisablnew[1] && year<=datedisablnew[2])
//		        {
//		        var setID = 'calendDay';
//		        var styleClass = 'disableddates';
//		        }
//		   }
//        }
//      }
		var td = document.createElement("TD");
		td.className = styleClass;
		if (setID)
		{
			td.id = setID;
		}
		if (setTitle)
		{
			td.title = setTitle;
		}
		td.onmouseover = new Function('highLiteDay(this)');
		td.onmouseout = new Function('deHighLiteDay(this)');
		if (targetEl)
			td.onclick = new Function(
                           'pickDate('+year+', '+month+', '+d+')'
                           );
		else
			td.style.cursor = 'default';
		td.appendChild(document.createTextNode(d));
		trs[ti].appendChild(td);
		x++;
		d++;
	}
	var daynew=getDaysPerMonth(month, year);
	var newdate=new Date((month+1)+"/"+ daynew +"/"+year);
	newdate.setDate(newdate.getDate());
	
	var alphaday=newdate.getDay();

	while(alphaday < 6)
	{
        var td = document.createElement("TD");
		//td.className = styleClass;
		if (setID)
		{
			td.id = setID;
		}
		if (setTitle)
		{
			td.title = setTitle;
		}
		td.appendChild(document.createTextNode(""));
		trs[ti].appendChild(td);
		alphaday++;
	 }
	return trs;
}
function showCalender(elPos, tgtEl)
{
    //debugger
    trgt=tgtEl;
	var topValue= 0,leftValue= 0;
	var disabledate;
	disabledate=document.getElementById('disableddate').value;
	if(document.getElementById("body").title=="flight")
    {
        if(trgt=="txtDepartDateInternational"||trgt=="txtReturnDateInternational")
        {
            disabledate=document.getElementById('disabed').value;
         }
    }
    if(document.getElementById("body").title=="package")
    {
        if(document.getElementById("ctl00_contentMain_ctl00_hdnPackageMode").value=="I")
        {
           disabledate=document.getElementById('disabed').value;
        }
        else
            disabledate=document.getElementById('disabed').value;
    }
	while(elPos){
	leftValue+= elPos.offsetLeft;
	topValue+= elPos.offsetTop;
	elPos= elPos.offsetParent;
    }
    finalvalue = leftValue + "," + topValue;
	
	
	if (document.getElementById(tgtEl))
	{
		targetEl = document.getElementById(tgtEl);
	}
	else
	{
		if (document.forms[0].elements[tgtEl])
		{
			targetEl = document.forms[0].elements[tgtEl];
		}
	}
	var calTable = document.getElementById('calenderTable');
	var positions = [0,0];
//alert(calTable);
//alert(document.getElementById("body").title);
//alert(trgt);
    if((document.getElementById("body").title=="hotel")&&(trgt=="txtDepartDateInternational"))
	{//alert(leftValue);
	//alert(topValue);
	    calTable.style.left = leftValue + 20 + "px";		
	    calTable.style.top = topValue + 20 + "px";	
	}
	else
	{//alert(leftValue);
	//alert(topValue);
	    calTable.style.left = leftValue + 20 + "px" ;		
	    calTable.style.top = topValue + 20 + "px" ;	
	}
//alert(calTable.style.left);
//alert(calTable.style.top);
	calTable.style.display='block';
	var matchDate = new RegExp('^([0-9]{2})-([0-9]{2})-([0-9]{4})$');
	//var m = matchDate.exec(targetEl.value);
	var m= matchDate.exec(disabledate);
	if(((trgt=="txtDepartDateInternational")||(trgt=="txtReturnDateInternational"))&&document.getElementById("body").title=="flight")
    {
        var m=matchDate.exec(document.getElementById('disabed').value);
    }
	//alert("value of m" + m);
	if (m == null)
	{
		trs = createCalender(false, false, false);
		//alert(trs);
		showCalenderBody(trs);
	}
	else
	{
		if (m[1].substr(0, 1) == 0)
			m[1] = m[1].substr(1, 1);
		if (m[2].substr(0, 1) == 0)
			m[2] = m[2].substr(1, 1);
		m[2] = m[2] - 1;
		trs = createCalender(m[3], m[2], m[1]);
		showCalenderBody(trs);
	}
	hideSelect(document.body, 1);
}
function showCalenderBody(trs)
{
	var calTBody = document.getElementById('calender');
	while (calTBody.childNodes[0])
	{
		calTBody.removeChild(calTBody.childNodes[0]);
	}
	for (var i in trs)
	{
		calTBody.appendChild(trs[i]);
	}
}
function setYears(sy, ey)
{
	var curDate = new Date();
	var curYear = getRealYear(curDate);
	if (sy)
		startYear = curYear;
		sy=startYear;
	if (ey)
		endYear = curYear + 50;
		ey=endYear;
		document.getElementById('calendar').style.visibility="visible";
	document.getElementById('selectYear').options.length = 0;
	var j = 0;
	for (y=ey; y>=sy; y--)
	{
	document.getElementById('selectYear')[j++] = new Option(y, y);
	}
}
function hideSelect(el, superTotal)
{
	if (superTotal >= 100)
	{
		return;
	}
	var totalChilds = el.childNodes.length;
	for (var c=0; c<totalChilds; c++)
	{
		var thisTag = el.childNodes[c];
		if (thisTag.tagName == 'SELECT')
		{
		if (thisTag.id != 'selectMonth' && thisTag.id != 'selectYear')
		{
		var calenderEl = document.getElementById('calenderTable');
		var positions = [0,0];
		var positions = getParentOffset(thisTag, positions);	// nieuw
		var thisLeft	= positions[0];
		var thisRight	= positions[0] + thisTag.offsetWidth;
		var thisTop	= positions[1];
		var thisBottom	= positions[1] + thisTag.offsetHeight;
		var calLeft	= calenderEl.offsetLeft - 100;
		var calRight = calenderEl.offsetLeft;  //+ calenderEl.offsetWidth;
		var calTop	= calenderEl.offsetTop;
		var calBottom	= calenderEl.offsetTop + calenderEl.offsetHeight;
		if (
		(
		// check if it overlaps horizontally 
		(thisLeft >= calLeft && thisLeft <= calRight)
		||
		(thisRight <= calRight && thisRight >= calLeft)
		||
		(thisLeft <= calLeft && thisRight >= calRight)
		)
		&&
		(
		// check if it overlaps vertically 
		(thisTop >= calTop && thisTop <= calBottom)
		||
		(thisBottom <= calBottom && thisBottom >= calTop)
		||
		(thisTop <= calTop && thisBottom >= calBottom)
		)
		)
		{
		hideSelectTags[hideSelectTags.length] = thisTag;
		thisTag.style.display = 'none';
		}
		}
		}
		else if(thisTag.childNodes.length > 0)
		{
			hideSelect(thisTag, (superTotal+1));
		}
	}
}
function plusdatedomestic()
{
//debugger
//    var arr=document.getElementById('txtDepartDateDomestic').value;
//    document.getElementById('txtReturnDateDomestic').value=arr;
//    var arr1=document.getElementById('txtDepartDateInternational').value;
//    document.getElementById('txtReturnDateInternational').value=arr1;
    var arr;
    var arr1;

    arr=document.getElementById('txtDepartDateDomestic').value.split('-');
    arr1=document.getElementById('txtReturnDateDomestic').value.split('-');
    if((trgt=="txtDepartDateInternational"||trgt=="txtReturnDateInternational")&&document.getElementById("body").title=="flight")
    {
        arr=document.getElementById('txtDepartDateInternational').value.split('-');
        arr1=document.getElementById('txtReturnDateInternational').value.split('-');
    }
    var depdate=arr1[0] + "-" + arr1[1] + "-" + arr1[2];
    var retdate=arr[0] + "-" + arr[1] + "-" + arr[2];
    var todate
    //var todate = new Date(Date.parse(depdate) + 1 * 24 * 60 * 60 * 1000 );
    if(arr[0]>arr1[0]||arr[1]>arr1[1]||arr[2]>arr1[2])
    {
        todate=retdate;
    }
    else
        todate=depdate;
//    month = todate.getMonth() + 1;
//    day = todate.getDate();
//    year = todate.getFullYear();
//    if(day<10)
//    {
//        day="0" + day;
//    } 
//    if(month<10)
//    {
//        month="0" + month;
//    }        
//    var todatenew=(day + "-" + month + "-" + year);
    if((trgt=="txtDepartDateInternational")&&document.getElementById("body").title=="flight")
    {
        document.getElementById('txtReturnDateInternational').value=todate;
    }
    if((trgt=="txtDepartDateDomestic"||trgt=="txtReturnDateDomestic")&&document.getElementById("body").title=="flight")
        document.getElementById("txtReturnDateDomestic").value=todate;
}
  
function plusdate()
{
   //debugger
    var arr=document.getElementById('txtDepartDateInternational').value.split('-');
    var arr1=document.getElementById('txtReturnDateInternational').value.split('-');
    var disabledate=document.getElementById('disableddate').value.split('-');
    if(document.getElementById("body").title=="flight")
     {
        var disabedt=document.getElementById('disabed').value.split('-');
     }
    if(disabledate[0]<10)
        disabledate[0]= "0" + disabledate[0];
    if(disabledate[1]<10)
        disabledate[1]= "0" + disabledate[1];
    if(document.getElementById("body").title=="flight")
     {
          if(disabedt[0]<10)
             disabedt[0]= "0" + disabedt[0];
          if(disabedt[1]<10)
            disabedt[1]= "0" + disabedt[1];
     }
    var depdate=arr1[0] + "-" + arr1[1] + "-" + arr1[2];
    var retdate;
    var myday=new Date(arr[1] + "/" + arr[0] + "/" + arr[2]);
    myday.setDate(myday.getDate()+1);
    var next_day_year = myday.getFullYear();
    var next_day_month = myday.getMonth();

   // document.getElementById("txtReturnDateInternational").value=todatenew;

     if(document.getElementById("body").title=="hotel")
    {
        var next_day=myday.getDate()
        if(next_day_month<10)
            next_day_month= "0" + (next_day_month+1);
        else
             next_day_month=(parseFloat(next_day_month)+1);
        if(next_day<10)
            next_day= "0" + next_day  
        if(arr1[0]>=next_day && arr1[1]>=next_day_month && arr1[2]>=next_day_year)
            retdate=depdate;
        else
        {
            retdate=next_day + "-" + next_day_month + "-" + next_day_year;
        }
        var arrday = myday.getDate();
    }
    else
    {
        if(arr[0]>=arr1[0]&& arr[1]>=arr1[1] && arr[2]>=arr[2])
        {
            retdate=arr[0] + "-" + arr[1] + "-" + arr[2];
        }
        else
            retdate=arr1[0] + "-" + arr1[1] + "-" + arr1[2];
    }
    
    var todate
//    if(arr[0]>=disabledate[0])
//    {
        if(arr[1]>=disabledate[1] && arr[2]>=disabledate[2])
        {
            todate=arr[0]+"-"+arr[1]+"-"+arr[2];
            document.getElementById("txtDepartDateInternational").value=todate;
            document.getElementById("txtReturnDateInternational").value=retdate;
        }
        if((document.getElementById("body").title=="flight")&&(trgt=="txtDepartDateDomestic"||trgt=="txtReturnDateDomestic"))
        { 
            if(arr[1]>=disabledate[1] && arr[2]>=disabledate[2])
            {
                todate=arr[0]+"-"+arr[1]+"-"+arr[2];
                document.getElementById("txtDepartDateDomestic").value=todate;
                document.getElementById("txtReturnDateDomestic").value=retdate;
            }
         }
    //var todate = new Date(Date.parse(depdate) + 1 * 24 * 60 * 60 * 1000 );
//    if(arr[0]>arr1[0]||arr[1]>arr1[1]||arr[2]>arr1[2])
//    {
//        
//        if(document.getElementById("body").title!="hotel")
//        {
//            todate=retdate;
//        }
//        else 
//        {
//            var newretday=arrday + "-" + next_day_month + "-" + next_day_year;
//            var dt_day=document.getElementById("depDt").value.split("-");
//            if(dt_day[0]<arrday && dt_day[1]<next_day_month && dt_day[2]<next_day_year)
//            {
//                todate=dt_day[0] + "-" + dt_day[1] + "-" + dt_day[2];
//            }
//            else
//                todate=newretday
//        } 
//    }
//    else
//    {
//        if(document.getElementById("body").title!="hotel")
//        {
//            todate=depdate;
//        }
//        else
//        {
//            todate=disabledate[0]+"-"+disabledate[1]+"-"+disabledate[2];
////             var newretday=arrday + "-" + next_day_month + "-" + next_day_year;
////            var dt_day=document.getElementById("depDt").value.split("-");
////            if(dt_day[0]<arrday && dt_day[1]<next_day_month && dt_day[2]<next_day_year)
////            {
////                todate=dt_day[0] + "-" + dt_day[1] + "-" + dt_day[2];
////            }
////            else
////                todate=newretday
//        }
//    }
//    document.getElementById("txtDepartDateInternational").value=todate;
//    document.getElementById("txtReturnDateInternational").value=retdate;
}
function closeCalender()
{
//debugger
var curDate = new Date();
var curDay = curDate.getDate();
var curMonth = curDate.getMonth()+1;
var curYear = getRealYear(curDate);
//if(curDay<10)
//{
//    curDay= "0" + curDay;
//}
//if(curMonth<10)
//    curMonth="0" + curMonth;
curDate = curDay + "-" + curMonth + "-" + curYear;
var flag=disabledDate(document.getElementById('disableddate').value,curDate);
if(flag)
{
    if(document.getElementById("body").title=="hotel")
    {
        if(trgt=="txtDepartDateInternational")
        {
            plusdate();
        }
        
	
    }
}
    if(document.getElementById("body").title=="flight")
    {
        if(trgt=="txtDepartDateDomestic")
        {
            plusdatedomestic();
        }
        if(trgt=="txtDepartDateInternational")
        {
            plusdatedomestic();
            plusdate();
        }
	
    }
    for (var i=0; i<hideSelectTags.length; i++)
	{
		hideSelectTags[i].style.display = 'block';
	}
     hideSelectTags.length = 0;
	document.getElementById('calenderTable').style.display='none';
	
}
function highLiteDay(el)
{
//debugger
//document.getElementById('ms_id12').classname='disableddates';
    if(el.className!='disableddates')
    {
	    el.className = 'hlDay';
    }
}
function deHighLiteDay(el)
{
	if (el.id == 'calenderToDay')
		el.className = 'toDay';
	else if (el.id == 'calenderChoosenDay')
		el.className = 'choosenDay';
	else
	if(el.className!='disableddates')
		el.className = 'normalDay';
}
function pickDate(year, month, day)
{
//debugger
    month++;
	day	= day < 10 ? '0'+day : day;
	month	= month < 10 ? '0'+month : month;
	if (!targetEl)
	{
		alert('target for date is not set yet');
	}
	else
	{
	
//	    var curDate = new Date();
//        var curDay = curDate.getDate();
//        var curMonth = curDate.getMonth()+1;
//        var curYear = getRealYear(curDate);
//        if(curDay<10)
//        {
//            curDay= "0" + curDay;
//        }
//        if(curMonth<10)
//            curMonth="0" + curMonth;
//        curDate = curDay + "-" + curMonth + "-" + curYear;
var curDate;
var disabledate;
disabledate=document.getElementById('disableddate').value.split('-');
    if(targetEl.id=="txtReturnDateInternational")
    {
        curDate=document.getElementById("depDt").value;
        if(document.getElementById("body").title=="flight")
        {
             disabledate=document.getElementById('disabed').value.split('-');
        }
     }
    else
        if(targetEl.id=="txtDepartDateInternational")
        {
            curDate=document.getElementById("retDt").value;
            if(document.getElementById("body").title=="flight")
            {
                disabledate=document.getElementById('disabed').value.split('-');
            }
        }
     if(targetEl.id=="txtReturnDateDomestic")
    {
        curDate=document.getElementById("depDtDomestic").value;
       
    }
    else
        if(targetEl.id=="txtDepartDateDomestic")
        {
            curDate=document.getElementById("retDtDomestic").value;
            
        }
            var selecteddate=day+'-'+month+'-'+year;
            
            if(disabledate[0]<10)
                disabledate[0]= "0" + disabledate[0];
            if(disabledate[1]<10)
                disabledate[1]= "0" + disabledate[1];
            var newdisabledate= disabledate[0] +"-"+ disabledate[1] +"-"+ disabledate[2];
            var flag=disabledDate(selecteddate,newdisabledate);
if(flag)
{
		targetEl.value= day+'-'+month+'-'+year;
}
		closeCalender();
	}
}
function getParentOffset(el, positions) {

	positions[0] += el.offsetLeft;
	positions[1] += el.offsetTop;
	if (el.offsetParent)
	  positions = getParentOffset(el.offsetParent, positions);
	return positions;
}



