﻿function getCalendarDetails(obj, height, width, placement, datetouse, calIn, calOut){
 var calTop=0;
 var calLeft=0;
 var today=new Date();

	//	탑 지역 검색에 사용
	if (placement=="secondright") {
		 calLeft = findPosX(obj)-59;
		 calTop = findPosY(obj) + width-157 ;
		 }
		
	// used on .... 호텔 정보 페이지
	else if (placement=="above"){
		calLeft = findPosX(obj);
		calTop = findPosY(obj) - 175;
		}
	
	else if (placement=="aboveri"){
		calLeft = findPosX(obj);
		calTop = findPosY(obj) +20;
		}

//  ....
	else if (placement=="below"){
		calLeft = findPosX(obj);
		calTop = findPosY(obj) + width + 4;
		}
	
//  서브들 -
 	else if (placement=="layer"){
		calLeft = findPosX(obj) - 59;
		calTop = findPosY(obj) + width -107;
		}
			
	else{
		calLeft = findPosX(obj)+10;
		calTop = findPosY(obj)+10;
		}

		if ((calTop+180) > document.body.clientHeight) {
			 if ((document.body.clientHeight - 260) >= 0){
					calTop = calTop - width;
					}
			 }
		
		var dayDiff=0;
		var dateToUse=datetouse+1;
		var numDays=0;
		var selectAfter=0;
		
		switch (datetouse)	{
			case 0:
			case 2:
			case 4:
			case 6:
			case 8:
			case 10:
			case 12:
			case 14:
			case 16:
				numDays = 330;
				selectAfter=0;
				if(checkemptytext(calIn, calOut)==1){
					var outdate = calOut.value.split("/");
					if (outdate != "")	{    
						var outday = outdate[1];
						var outmonth = outdate[0];
						var outyear = outdate[2];
						dayDiff=calculateDayDiff(outmonth,outday,outyear)-1;
					}
					if (dayDiff<=0)
						dayDiff=1;
				}
				else{
					var indate = calIn.value.split("/");
					if (indate != ""){    
						var inday = indate[1];
						var inmonth = indate[0];
						var inyear = indate[2];
						dayDiff=calculateDayDiff(inmonth,inday,inyear);
					}
				}
				break;
			case 1:
			case 3:
			case 5:
			case 7:
			case 9:
			case 11:
			case 13:
			case 15:
			case 17:
				numDays = 331;
				selectAfter=1;
				if(checkemptytext(calIn, calOut)==2){
					if (indate != "")	{
						var indate = calIn.value.split("/");
						var inday = indate[1];
						var inmonth = indate[0];
						var inyear = indate[2];
						var dayDiff=calculateDayDiff(inmonth,inday,inyear)+1;
					}
				}
				else{
					var outdate = calOut.value.split("/");
					if (outdate != "")	{    
						var outday = outdate[1];
						var outmonth = outdate[0];
						var outyear = outdate[2];
						var dayDiff=calculateDayDiff(outmonth,outday,outyear);
					}
					if (dayDiff<=0)
						dayDiff=1;
				}
				break;
		}
		
		var text="AppendOrReplace=Replace;AppendChar=';';CloseOnSelect=Yes;ReturnData=Date;Title=KOREAHOTEL Calendar;";
		text=text+"InlineX="+calLeft+";InlineY="+calTop+";";
		text=text+"CallFunction=CalFunction"+dateToUse+";";
		text=text+"CurrentDate=Today+"+dayDiff+";SelectAfter=Today+"+selectAfter+";SelectBefore=Today+"+numDays+";AllowWeekends=Yes;Resizable=No;Nav=Yes;SmartNav=No;Fix=Yes;WeekStart=0;Weekends=06;";
	
		return text;
	}

function findPosX(obj)
	{
	var curleft = 0;
	if (document.getElementById || document.all)
		{
		while (obj.offsetParent)
			{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
			}
		}
	else if (document.layers)
		{
		curleft += obj.x;
		}
	return curleft;
	}



function findPosY(obj)
	{
	var curtop = 0;
	if (document.getElementById || document.all)
		{
		while (obj.offsetParent)
			{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
			}
		}
	else if (document.layers)
		{
		curtop += obj.y;
		}
	return curtop;
	}

function CalFunction(inDate, outDate)
{
    var emptyType = checkemptytext(inDate, outDate);
    if(emptyType!=3)
    {
        check_checkOutDate(inDate, outDate,emptyType);
//        this.document.searchShortForm.chld.style.visibility = 'visible';
//		this.document.searchShortForm.adlt.style.visibility = 'visible';
//        alert('요금계산 버튼을 클릭하세요');

		searchShortForm.submit();
         
    }
}

function CalFunction111(inDate, outDate)
{
    var emptyType = checkemptytext(inDate, outDate);
    if(emptyType!=3)
    {
        check_checkOutDate(inDate, outDate,emptyType);
//       this.document.searchShortForm.chld.style.visibility = 'visible';
//	   this.document.searchShortForm.adlt.style.visibility = 'visible';
        document.searchShortForm.checkOutDate.value='';
     
    }
}
	
function CalFunction1(){
    CalFunction111(document.searchShortForm.checkInDate, document.searchShortForm.checkOutDate);
    }
function CalFunction2(){
    CalFunction(document.searchShortForm.checkInDate, document.searchShortForm.checkOutDate);
    }

function checkDateFormat(dateField){
	var str = replaceSeparater(dateField.value);
	if(str!="none"){
		var date = str.split("/");
        if (date.length!=3 || date[0].length<=0 || date[1].length<=0 || date[2].length<=0 || date[0].length>2 || date[1].length>2 || date[2].length>4) 
        {
            displaySubs("warnDateDiv");
            return false;
        }        
        
        var today = new Date();
        var thisyear = today.getFullYear().toString().charAt(0);
        if(date[2].length==1){
            thisyear = thisyear+today.getFullYear().toString().charAt(1);
            thisyear = thisyear+today.getFullYear().toString().charAt(2);
            var year = thisyear+date[2];
        }
        else if(date[2].length==2){
            thisyear = thisyear+today.getFullYear().toString().charAt(1);
            var year = thisyear+date[2];
        }
        else if(date[2].length==3){
            var year = thisyear+date[2];
        }else{
			var year = date[2];
		}

		if(date[1].length==3){
			var month = replace3digitMonth(date[1]);
			if(month=="none"){ displaySubs("warnDateDiv"); return false;}
			if((date[0].length>2)|(date[0].length<=0)|(!isNumber(date[0]))){ displaySubs("warnDateDiv"); return false;}
			else{
				if(date[0].length==1){
					var day = "0"+date[0];
				}else{
					var day=date[0];
				}
			}
		}else{
			if((date[0].length>3)|(date[0].length<=0)|(!isNumber(date[0]))){ displaySubs("warnDateDiv"); return false;}
			else{
				if(date[0].length==1){
					var month = "0"+date[0];
				}else{
					var month=date[0];
				}
			}
		  if((date[1].length>2)|(date[1].length<=0)|(!isNumber(date[1]))){ displaySubs("warnDateDiv"); return false;}
			else{
				if(date[1].length==1){
					var day = "0"+date[1];
				}else{
					var day=date[1];
				}
			}
		}
        
        if (month < 1 || month > 12) 
        {
            displaySubs("warnDateInvalid");
            return false;
        }

        if (day < 1 || day > 31) 
        {
            displaySubs("warnDateInvalid");
            return false;
        }

        if ((month == 4 || month == 6 || month == 9 || month == 11) && (day == 31)) 
        {
            displaySubs("warnDateInvalid");
            return false;
        }

        if (month == 2) 
        {
            var leap = (year % 4 == 0 &&
                       (year % 100 != 0 || year % 400 == 0));
            if (day>29 || (day == 29 && !leap)) 
            {
                displaySubs("warnDateInvalid");
                return false;
            }
        }
        
        var todaysDate = new Date();
        var currentYear = today.getFullYear().toString();
        var currentMonth = today.getMonth() + 1;
        var currentDate = today.getDate();

        if (year < currentYear) 
        {
            displaySubs("warnBeforeTodayDiv");
            return false;
        }
        else if (year == currentYear)
        {
            if (month < currentMonth)
            {
                displaySubs("warnBeforeTodayDiv");
                return false;
            }
            else if (month == currentMonth)
            {
                if (day < currentDate)
                {
                    displaySubs("warnBeforeTodayDiv");
                    return false;
                }
            }
        }

		if((parseInt(onedigit(day))<32)&&(parseInt(onedigit(month))<13)){
			dateField.value = month+"/"+day+"/"+year;
			return true;
		}else{displaySubs("warnDateDiv"); return false;}
	}else{
		displaySubs("warnDateDiv"); return false;
	}
}

function checkDateFormatBoolean(dateField)
{
	var str = replaceSeparater(dateField.value);
	if(str!="none"){
		var date = str.split("/");
		if(date.length<3){ 
			var today = new Date();
			var year = today.getFullYear().toString();
		}else{
			if(date[2].length<3){
				var year = "20"+date[2];
			}else{
				var year = date[2];
			}
		}
		if(date[1].length==3){
			var month = replace3digitMonth(date[1]);
			if(month=="none"){ return false;}
			if((date[0].length>2)|(date[0].length<=0)|(!isNumber(date[0]))){ return false;}
			else{
				if(date[0].length==1){
					var day = "0"+date[0];
				}else{
					var day=date[0];
				}
			}
		}else{
			if((date[0].length>3)|(date[0].length<=0)|(!isNumber(date[0]))){ return false;}
			else{
				if(date[0].length==1){
					var month = "0"+date[0];
				}else{
					var month=date[0];
				}
			}
		if((date[1].length>2)|(date[1].length<=0)|(!isNumber(date[1]))){ return false;}
			else{
				if(date[1].length==1){
					var day = "0"+date[1];
				}else{
					var day=date[1];
				}
			}
		}
		if((parseInt(onedigit(day))<32)&&(parseInt(onedigit(month))<13)){
			dateField.value = month+"/"+day+"/"+year;
			return true;
		}else{ return false;}
	}else{
		return false;
	}
	return true;
}
function replace3digitMonth(str)
{
	if(str.toUpperCase()=="JAN"){return "01";}
	else if(str.toUpperCase()=="FEB"){return "02";}
	else if(str.toUpperCase()=="MAR"){return "03";}
	else if(str.toUpperCase()=="APR"){return "04";}
	else if(str.toUpperCase()=="MAY"){return "05";}
	else if(str.toUpperCase()=="JUN"){return "06";}
	else if(str.toUpperCase()=="JUL"){return "07";}
	else if(str.toUpperCase()=="AUG"){return "08";}
	else if(str.toUpperCase()=="SEP"){return "09";}
	else if(str.toUpperCase()=="OCT"){return "10";}
	else if(str.toUpperCase()=="NOV"){return "11";}
	else if(str.toUpperCase()=="DEC"){return "12";}
	else{return "none"}
}
function replaceSlash(string,sep)
{
	while(string.indexOf(sep)>=0){
		string = string.substring(0,string.indexOf(sep))+"/"+
		string.substring(string.indexOf(sep)+1,string.length);
	}
	return string;
}
function replaceSeparater(string)
{
	string = trimString(string);
	if(string.indexOf("-")>=0){
		string = replaceSlash(string,"-");
	}
	if(string.indexOf(".")>=0){
		string = replaceSlash(string,".");
	}
	if(string.indexOf(",")>=0){
		string = replaceSlash(string,",");
	}
	if(string.indexOf(":")>=0){
		string = replaceSlash(string,":");
	}
	if(string.indexOf(" ")>=0){
		string = replaceSlash(string," ");
	}
	if(string.indexOf("/")>=0){
		return string;
	}
	else{
		return "none";
	}
}
function DatecheckSubmit(myform)
{
	var indate = myform.checkInDate.value.split("/");
	var outdate = myform.checkOutDate.value.split("/");
	var cInDay = parseInt(onedigit(indate[1]));
	var cInMonth = parseInt(onedigit(indate[0]));
	var cOutDay = parseInt(onedigit(outdate[1]));
	var cOutMonth = parseInt(onedigit(outdate[0]));
	var Inyear = parseInt(indate[2]);
	var Outyear = parseInt(outdate[2]);
	var InDiff = calculateDayDiff(cInMonth,cInDay,Inyear);
	var OutDiff = calculateDayDiff(cOutMonth,cOutDay,Outyear);
    
    if(InDiff>=OutDiff)
    {
        displaySubs("warnBeforeDateDiv");
        return false;
    }
	else if(InDiff<0|OutDiff<1)
    {
		displaySubs("warnBeforeTodayDiv");
		return false;
	}
    else if((OutDiff-InDiff)>30)
    {


		displaySubs("warnStayDaysDiv");
		return false;
	}
    else if(OutDiff>330|InDiff>329)
    {
		displaySubs("warnMaxDateDiv");
		return false;
	}
    else
    { 
        return true;
    }
}
function check_checkOutDate(formInDate, formOutDate,emptytype)
{
	//check if checkOut date is after checkIn date;
	formInDate.focus();
	switch (emptytype){
	 case 0:
		var indate = formInDate.value.split("/");
		var outdate = formOutDate.value.split("/");
		var cInDay = parseInt(onedigit(indate[1]));
		var cInMonth = parseInt(onedigit(indate[0]));
		var cOutDay = parseInt(onedigit(outdate[1]));
		var cOutMonth = parseInt(onedigit(outdate[0]));
		var Inyear = parseInt(indate[2]);
		var Outyear = parseInt(outdate[2]);
		var InDiff = calculateDayDiff(cInMonth,cInDay,Inyear);
		var OutDiff = calculateDayDiff(cOutMonth,cOutDay,Outyear);
		if(InDiff>=OutDiff)
		{
			 if((cInMonth==12)&&(cInDay==31))
			 {
				formOutDate.value = "01/01/"+(Inyear+1);
			 }
			 else
			 {
				  if((check_endOfMonth(cInDay,(cInMonth-1),Inyear))==1)
				  {
					if ( ((cInMonth+1)/10)<1)
					{
						cInMonth=("0" + (cInMonth+1)).toString();
						formOutDate.value = cInMonth+"/01/"+Inyear;
					}
					else
					{
						formOutDate.value = (cInMonth+1)+"/01/"+Inyear;
					}
				  	
				  }
				  else
				  {
					if ( (cInMonth/10)<1)
					{
						cInMonth=("0" + cInMonth).toString();
					}
					if ( ((cInDay+1)/10)<1)
					{
						cInDay=("0" + (cInDay+1)).toString();
						formOutDate.value = cInMonth+"/"+cInDay+"/"+Inyear;
					}
					else
					{
						formOutDate.value = cInMonth+"/"+(cInDay+1)+"/"+Inyear;
					}
				  }
			 }
		}
		break;
		case 1:
		var outdate = formOutDate.value.split("/");
		var cOutDay = parseInt(onedigit(outdate[1]));
		var cOutMonth = parseInt(onedigit(outdate[0]));
		var Outyear = parseInt(outdate[2]);
		var Out_date =new Date(Outyear, (cOutMonth-1), cOutDay);
		var In_date =new Date(Out_date.getTime() - 24*60*60*1000);
		var cInMonth = In_date.getMonth()+1;
		var cInDay = In_date.getDate();
		var Inyear = In_date.getFullYear();
		
		if ( (cInMonth/10)<1)
		{cInMonth=("0" + cInMonth).toString();
		}
		if ( ((cInDay)/10)<1){
			cInDay=("0" + (cInDay)).toString();
		}
		formInDate.value = cInMonth+"/"+cInDay+"/"+Inyear;
		break;
		case 2:
		var indate = formInDate.value.split("/");
		var cInDay = parseInt(onedigit(indate[1]));
		var cInMonth = parseInt(onedigit(indate[0]));
		var Inyear = parseInt(indate[2]);
		var In_date =new Date(Inyear, (cInMonth-1), cInDay);
		var Out_date =new Date(In_date.getTime() + 24*60*60*1000);
		var cOutMonth = Out_date.getMonth()+1;
		var cOutDay = Out_date.getDate();
		var Outyear = Out_date.getFullYear();
		
		if ( (cOutMonth/10)<1)
		{cOutMonth=("0" + cOutMonth).toString();
		}
		if ( ((cOutDay)/10)<1){
		   cOutDay=("0" + (cOutDay)).toString();
		}
			formOutDate.value = cOutMonth+"/"+cOutDay+"/"+Outyear;
		break;
	}
}

function check_endOfMonth(day,month,year){
	//check if input date is end of it's month.
	//if it is the end of it's month return 1. else return 0.
	var daysInMonth = Calendar_get_daysofmonth(month,year);
	if(day>=daysInMonth){
		return 1;
	}
	else{
		return 0;
	}
}

function calculateDayDiff(month,day,year){
	var Today=new Date();
	//Month is 0-11 in JavaScript
	var input_date =new Date(year, (month-1), day);
	// 1 day in milliseconds
	var one_day=1000*60*60*24;
	//Calculate difference btw the two dates, and convert to days
	return Math.ceil((input_date.getTime()-Today.getTime())/(one_day));
}

function trimString (str) {
  while (str.charAt(0) == ' ')
	str = str.substring(1);
  while (str.charAt(str.length - 1) == ' ')
	str = str.substring(0, str.length - 1);
  return str;
}
function onedigit (str) {
  if(trimString(str).charAt(0) == "0"){
	str = str.substring(1);
  }  	
  return str;
}
function isNumber(string) {
	if (string.length == 0)
		return false;
	for (var i=0;i < string.length;i++)
		if ((string.substring(i,i+1) < '0') || (string.substring(i,i+1) > '9'))
			return false;
    
	return true;
}
// return 0 if both checkin and checkout is not empty, and use the right format.
// return 1 if checkin is empty or not the right format.
// return 2 if checkout is empty or  not the right format.
// return 3 if both checkin and checkout is empty or not the right format.
function checkemptytext(inDate, outDate)
{
	if((""==trimString(inDate.value))&&(""==trimString(outDate.value))){
		return 3;
	}
	else if((!checkDateFormatBoolean(inDate))&&(!checkDateFormatBoolean(outDate))){
		return 3;
	}		
	else if(""==trimString(inDate.value)){return 1;}
	else if(!checkDateFormatBoolean(inDate)){return 1;}
	else if(""==trimString(outDate.value)){return 2;}
	else if(!checkDateFormatBoolean(outDate)){return 2;}
	else{return 0;}
}

function aLs(layerID)
{
var isIE = false;
var isOther = false;
var isNS4 = false;
var isNS6 = false;
if(document.getElementById)
{
	if(!document.all)
	{
		isNS6=true;
	}
	if(document.all)
	{
		isIE=true;
	}
}
else
{
	if(document.layers)
	{
		isNS4=true;
	}
	else
	{
		isOther=true;
	}
}
var returnLayer;
	if(isIE)
	{
		returnLayer = eval("document.all." + layerID + ".style");
	}
	if(isNS6)
	{
		returnLayer = eval("document.getElementById('" + layerID + "').style");
	}
	if(isNS4)
	{
		returnLayer = eval("document." + layerID);
	}
	if(isOther)
	{
		returnLayer = "null";
		alert("-[Error]-\nDue to your browser you will probably not\nbe able to view all of the following page\nas it was designed to be viewed. We regret\nthis error sincerely.");
	}
	return returnLayer;
}

function ShowDiv(ID)
{
	if(aLs(ID).visibility == "hidden")
	{
		aLs(ID).visibility = "visible";
	}
}

function closeCalendar()
{
	if (calendarExists == "yes"){
		 
		Calendar.Close("INLINE", "Calendar");
		
	}
}

function getAirCalendarDetails(obj, height, width, placement, datetouse, calIn, calOut)
{
 var calTop=0;
 var calLeft=0;
 var today=new Date();

	// used on ClusterSearchTableCell.jsp (on burst page)
	if (placement=="right")
		{
		calLeft = findPosX(obj) + 18;
		calTop = findPosY(obj) + width - 7;
		}
	
	//	used on ClusterSearchTableCell.jsp (on burst page)
	if (placement=="secondright")
		 {
		 calLeft = findPosX(obj) + 18;
		 calTop = findPosY(obj) + width - 15;
		 }
		
	// used on SearchTableCell.jsp (on homepage and brand landing page)	
	else if (placement=="above")
			{
			calLeft = findPosX(obj);
			calTop = findPosY(obj) - 175;
			}
		
	// used on HotelAdSelectionTableCell.jsp and
	// used on HotelLandingSelectionTableCell.jsp and	
	// used on PropertyLandingAdvSelectionTableCell.jsp
	else if (placement=="below")
		{
		calLeft = findPosX(obj);
		calTop = findPosY(obj) + width + 4;
		}
		
	else
		{
		calLeft = findPosX(obj)+10;
		calTop = findPosY(obj)+10;
		}

	if ((calTop+180) > document.body.clientHeight)
		 {
		 if ((document.body.clientHeight - 260) >= 0)
				{
				calTop = calTop - width;
				}
		 }
    
    var text="AppendOrReplace=Replace;AppendChar=';';CloseOnSelect=Yes;ReturnData=Date;";
    text=text+"InlineX="+calLeft+";InlineY="+calTop+";";
    text=text+"CurrentDate=Today;SelectAfter=Today;SelectBefore=Today+365;AllowWeekends=Yes;Resizable=No;Nav=Yes;SmartNav=No;Fix=Yes;WeekStart=0;Weekends=06;";

    return text;
  
}