﻿//Helper JavaScripts
//==================
/*
   * This file contains script extractions from the default.aspx page

   js/scriptaculous/lib/prototype.js > extension / improvement by DD[Clemens]
   line 544
	   return '[' + this.map(Object.inspect).join(', ') + ']';
	is replaced with
      return this.map(Object.inspect).join('-');
*/

//=== [Global Variables] ============================================

// browser / operating system
var os_win = (navigator.appVersion.indexOf('Win') != -1)?true:false;
var ie = (document.styleSheets && document.all)?true:false;
var gecko = (document.getElementById && !document.all)?true:false;

// Geolocation xml-container
var xmlGeo;

// Today we have the .. .. ....
var ToDay = new Date();


var AllGeo;
var MySearchViewState;
var MyBookViewState;
var MyCurrentRegion;
var MyCurrentViewState;

var regTimeOut = false;

var idlanguage;


//=== [Functions       ] ============================================

//Does what it says: returns all elements with the same css class name;
function getElementsByClassName( oClassNames, oElm, strTagName )
{
	var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var arrRegExpClassNames = new Array();
	if(typeof oClassNames == "object"){
		for(var i=0; i<oClassNames.length; i++){
			arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
		}
	}
	else{
		arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
	}
	var oElement;
	var bMatchesAll;
	for(var j=0; j<arrElements.length; j++){
		oElement = arrElements[j];
		bMatchesAll = true;
		for(var k=0; k<arrRegExpClassNames.length; k++){
			if(!arrRegExpClassNames[k].test(oElement.className)){
				bMatchesAll = false;
				break;
			}
		}
		if(bMatchesAll){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}





// ========== SEARCH Functions ==============





//SLIDE IT Functionality ******************************************
//*****************************************************************
var endPosX, endPosY;
var dimx, Dimx, dimy, Dimy;
var scrollFactor = (os_win) ? ((ie) ? (3/35) : 0.3) : (0.6);

function startSliderX(objNr, viewMode)
{
	$("LastViewMode").value = $("ViewMode").value;
	$("ViewMode").value = viewMode;

	endPosX=0;
	for (var i=0;i<=objNr;i++)
	{
		endPosX -= parseInt($("dvContent_"+i).style.width);
	}
	if (gecko)
	{
		$("dvContentInner").style.left = endPosX + "px";
	}
	else
	{
		//$("dvContentInner").style.left = endPosX + "px"; //
		slideItX();
	}
}

function slideItX(){
	timeX = setTimeout("slideItX()", 0);
	dimx = Math.round(Dimx+=((endPosX)-Dimx)*scrollFactor);
	$("dvContentInner").style.left = dimx + "px";
	if (endPosX == dimx)
	   clearTimeout(timeX);
}

function startSliderY(objNr)
{
	endPosY = 0;
	for (var i=0;i<=objNr;i++)
	{
		endPosY -= parseInt($("dvControl_"+i).style.height);
	}
	slideItY();
}

function slideItY()
{
	timeY = setTimeout("slideItY()", 0);
	dimy = Math.round(Dimy+=((endPosY)-Dimy)*scrollFactor);
	$("dvControlsInner").style.top = dimy + "px";
	if (endPosY == dimy) clearTimeout(timeY);
}
//------------------------------------------------------------------
//==================================================================







//Custom Error Messages ********************************************
//******************************************************************
//G_var
errorIcons = new Array ("Info", "Warning", "Error");

function redimErrorMsg()
{
	var y;
	if (self.innerHeight) // all except Explorer
	{
		y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight) // Explorer 6 Strict Mode
	{
		y = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
		y = document.body.clientHeight;
	}
	$("dvErrorMsgOuter").style.height = y + "px";
}

function showErrorMsg(icon, headline, text)
{
	$("dvErrorMsgInner").innerHTML = "<h1>" + headline + "<\/h1><p>" + text + "<\/p><div class=\"btn\"><img src=\"/images/button/darkLeft.gif\" alt=\"\" \/><a href=\"#\" onclick=\"resetErrorMsg();return false;\" class=\"darkBlue\">OK<\/a><img src=\"/images/button/darkRight.gif\" alt=\"\" \/><br clear=\"all\" \/><\/div>";
	$("dvErrorMsgOuter").style.display = "block";
	$("iconError").src = "/images/errorMsg/icon" + errorIcons[parseInt(icon)] + ".gif";
}

function resetErrorMsg()
{
	$("dvErrorMsgInner").innerHTML = "";
	$("dvErrorMsgOuter").style.display = "none";
}
//------------------------------------------------------------------
//==================================================================






//Image Gallery helper functions	*********************************
//****************************************************************
//showGallery: first version included "cnt" as first parameter...
function showGallery(idprovider)
{
   var vm = $("ViewMode").value;
   var targetID_hotel = $("dvContent_4inner");
   var targetID_gal = $("dvContent_5inner");

	setScrollLabel (0, "", 0);
  setScrollLabel (1, "", 0);
	setScrollLabel (2, "", 0);
	setScrollLabel (3, "", 0);

   var url_hotel = "/handler/Provider_Info.ashx";
	var url_gal = "/handler/Provider_Gallery.ashx";
	var params = "IDProvider="+idprovider + "&IDLanguage=" + idlanguage; // + "&cnt="+cnt


   MyCurrentViewState.setPane(3);
   MyCurrentViewState.setConfig(0);
   MyCurrentViewState.SaveViewState();

	// Ajax.Updater seems to have some problem with passing the correct values??
	//... but let's give it another try anyway...
	var detail = new Ajax.Updater (
		targetID_hotel,
		url_hotel,
		{
			method: "get",
			parameters: params
		}
	);

	var gallery = new Ajax.Updater (
		targetID_gal,
		url_gal,
		{
			method: "get",
			parameters: params,
			onComplete:slideToGallery
		}
	);

	function slideToGallery()
	{
		var galleryPicContainer = $("dvGalleryInner");
		galleryPicCount = galleryPicContainer.getElementsByTagName("img").length;
		$("btnPrevGalPic").style.display = "block";
		$("btnNextGalPic").style.display = "block";
		startSliderX(3, 5);
		if (vm == "2" || vm == "3") {
			setScrollLabel(2, "", 1);
		} else if (vm == "4") {
			setScrollLabel(3, "", 1);
		}
	}
}


function setGalleryImage(picID)
{
   //TODO: Url to be replaced with DomainURL
   $("GalleryPic").src = picID;
}


function scrollGalleryPics(direction)
{
   if (direction == 1)
   {
	   if (parseInt($("dvGalleryInner").style.left)<0)
	   {
		   $("dvGalleryInner").style.left = (parseInt($("dvGalleryInner").style.left) + 50) + "px";
		}
	}
	else
	{
	   if ( -parseInt($("dvGalleryInner").style.left)/50  < galleryPicCount-5)
	   {
		   $("dvGalleryInner").style.left = (parseInt($("dvGalleryInner").style.left) - 50) + "px";
		}
	}
}










function showHotelDetails(idprovider)
{

	var targetID = $("dvContent_4inner");
	var url = "http://www.nethotels.com/ProviderEdit.ashx";
	var params = "IDProvider="+idprovider + "&IDLanguage=" + idlanguage; //+ "&cnt="+cnt;


//	alert(url + "?" + params);

	var test = new Ajax.Request(
	   url,
	   {
		   method:'get',
		   parameters: params
		   ,onComplete: fillHotelDetail
	   }
   );

	function fillHotelDetail(originalRequest)
	{
	   targetID.innerHTML = originalRequest.responseText;
	}
}

function hideGalBtn()
{
	$("btnPrevGalPic").style.display = "none";
	$("btnNextGalPic").style.display = "none";
}

function showSecretTip ()
{
	var targetID = $("dvContent_0inner");
	var url = "/helper/secretTip.aspx";
	var secretTip = new Ajax.Updater (
		targetID,
		url,
		{
			method: "get"
		});
}

function showMeta (pageName)
{
	var targetID = $("dvContent_0inner");
	var url;

	//var url = "http://cmsnh.nethotels.com/article.asp?IDArticle=10161";
	//var param = "lang="+$("Language.Value").value;

	//parameters:param,

	var secretTip = new Ajax.Updater (
		targetID,
		url,
		{
			method: "get",
			onComplete:function(){startSliderX(-1, 0);}
		});
}






//GALLERY inner parts; method > Ajax.Request
/*
//	url = "/handler/Provider_Gallery.ashx";
//	params = "idprovider="+idprovider;

//	var detail = new Ajax.Request(
//	   url,
//	   {
//		   method:'get',
//		   parameters: params
//		   ,onComplete: fillHotelDetail
//	   }
//   );
//
//
//	function fillHotelDetail(originalRequest)
//	{
//	   alert(originalRequest.responseText);
//	   targetID.innerHTML = originalRequest.responseText;
//	}

	//url = "/helper/Gallery.aspx";
//	url = "/handler/Provider_Gallery.ashx";
//	params = "idprovider="+idprovider; // + "&cnt="+cnt;
//
//	var gallery = new Ajax.Request(
//	   url,
//	   {
//		   method:'get',
//		   parameters: params
//		   ,onComplete: fillImageGallery //slideToGallery
//	   }
//   );
//
//
//	function fillImageGallery(originalRequest)
//	{
//	   targetID.innerHTML = originalRequest.responseText;
//	   slideToGallery();
//	}

*/

//Image Gallery helper functions	*********************************
//****************************************************************














//FORM field updaters *******************************************
//***************************************************************

function requestHotel(idprovider)
{
	bookHotel(idprovider); // request and book is the same
}


function bookHotel(idprovider)
{

	var targetID_service = $("dvContent_4inner");

	var url = "http://www.nethotels.com/handler/Callback.aspx";



	var params_service = "";
	params_service += "idprovider=" + idprovider + "&action=Provider_Service&IDLanguage=" + idlanguage;


  if (arguments.length == 2)
  {
     params_service += "&idservice=" + arguments[1];
	}

   alert(url + "?" + params_service);

	var summary = new Ajax.Updater (
		targetID_service,
		url,
		{
			method: "get",
			parameters: params_service
		}
	);


}


function refreshSummary(direction)
{


	$("SummaryCalender.direction").value = direction;
	// die folgenden variablen abhängig davon, ob einzelzimmer, doppelzimmer oder beides ausgesucht wurden
	// mit 0 bzw. leer ("") ionitialisieren


	var RoomCount = $("Room_0_Count").options[$("Room_0_Count").selectedIndex].value;
	var RoomType = $("Room_0_Type").options[$("Room_0_Type").selectedIndex].value;

	if (MyBookViewState == null)
	{
	   MyBookViewState = new BookViewState();
	}

	MyBookViewState.ReadService(RoomType);
	MyBookViewState.Quantity = RoomCount;
//	alert(MyBookViewState.SerializeService());

	var url = "/provider_service.ashx";
	var prm = MyBookViewState.SerializeService();

   var strDDF = $("MyCalPrevDate").innerHTML;
   var strDDT = $("MyCalNextDate").innerHTML;
   var ddARRAY;
   if (direction < 0)
   {
      ddARRAY = strDDF.split(",");
      prm = prm + "StartYear=" + ddARRAY[0] + "&StartMonth=" + ddARRAY[1] + "&";
   }
   else if (direction > 0)
   {
      ddARRAY = strDDT.split(",");
      prm = prm + "StartYear=" + ddARRAY[0] + "&StartMonth=" + ddARRAY[1] + "&";
   }



	prm = prm +  "IDLanguage=" + MyCurrentViewState.IDLanguage;

	//alert(url + "?" + prm);


	var tgt = $("dvContent_5inner");

	var refreshService = new Ajax.Updater (
		tgt,
		url,
		{
			method: "get",
			parameters: prm
		}
	);

	//,onComplete:showSummaryCalendar


	return;




	//var singleroomCount = $("Room_0_Count").options[$("Room_0_Count").selectedIndex].value;
	//var singleroomType = $("Room_0_Type").options[$("Room_0_Type").selectedIndex].value;

	//var doubleroomCount = $("Room_1_Count").options[$("Room_1_Count").selectedIndex].value;
	//var singleroomType = $("Room_0_Type").options[$("Room_0_Type").selectedIndex].value;
	//var doubleroomType = $("Room_1_Type").options[$("Room_1_Type").selectedIndex].value;

	$("Rooms.SingleRooms").value = singleroomCount;
	$("Rooms.DoubleRooms").value = doubleroomCount;
	$("Rooms.SingleRoomType").value = singleroomType;
	$("Rooms.DoubleRoomType").value = doubleroomType;

	var targetID = $("dvContent_5inner");
	var url = "/helper/Summary.aspx";
	var datefrom = new Date($("DateFrom").value);
	var strDatefrom = datefrom.getDate() + "." + datefrom.getMonth() + "." + datefrom.getFullYear();
	var dateto = new Date($("DateTo").value);
	var strDateto = dateto.getDate() + "." + dateto.getMonth() + "." + dateto.getFullYear();
	var pars = new Array();
	pars[0]= "idprovider="+$("idprovider").value;
	pars[1]= "cnt="+$("cnt").value;
	pars[2]= "sr="+$("Rooms.SingleRooms").value;
	pars[3]= "dr="+$("Rooms.DoubleRooms").value;
	pars[4]= "srt="+$("Rooms.SingleRoomType").value;
	pars[5]= "drt="+$("Rooms.DoubleRoomType").value;
	pars[6]= "DateFrom="+strDatefrom;
	pars[7]= "DateTo="+strDateto;
	pars[8]= "Nights="+$("Nights").value;
	var params = pars.join("&");

	var gallery = new Ajax.Updater (
		targetID,
		url,
		{
			method: "get",
			parameters: params,
			onComplete:showSummaryCalendar
		}
	);
}

function showSummaryCalendar()
{


	refreshSummary(0);
	return;



	var calTargetID = "dvSummaryCalendar";
	var calUrl = "/helper/Summary.Calendar.aspx";


	var datefrom = new Date($("DateFrom").value);
	var strDatefrom = datefrom.getDate() + "." + datefrom.getMonth() + "." + datefrom.getFullYear();
	var dateto = new Date($("DateTo").value);
	var strDateto = dateto.getDate() + "." + dateto.getMonth() + "." + dateto.getFullYear();
	var calPars = new Array();


	calPars[0]= "idprovider="+$("idprovider").value;
	calPars[1]= "cnt="+$("cnt").value;
	calPars[2]= "sr="+$("Rooms.SingleRooms").value;
	calPars[3]= "dr="+$("Rooms.DoubleRooms").value;
	calPars[4]= "srt="+$("Rooms.SingleRoomType").value;
	calPars[5]= "drt="+$("Rooms.DoubleRoomType").value;
	calPars[6]= "DateFrom="+strDatefrom;
	calPars[7]= "DateTo="+strDateto;
	calPars[8]= "Nights="+$("Nights").value;
	calPars[9]= "direction="+$("SummaryCalender.direction").value;
	// direction = -1 ... previous month
	// direction = 0  ... no change in calendar
	// direction = 1  ... next month
	var calParams = calPars.join("&");
	var summaryCalendar = new Ajax.Updater (
		calTargetID,
		calUrl,
		{
			method: "get",
			parameters: calParams,
			onComplete: finishSummaryCalendar
		}
	);
	function finishSummaryCalendar(originalRequest) {
		calendarContainerSummary = $("dvSummaryCalendar");
		calendarDaysSummary = calendarContainerSummary.getElementsByClassName("available");
		calendarDaysLengthSummary = calendarDaysSummary.length;

		//alert(calendarDaysLengthSummary);
	}
}





var checkinDateSummary = new Date(1900, 0, 1);
var checkoutDateSummary = new Date(1900, 0, 1);
var calendarContainerSummary;
var calendarDaysSummary;
var calendarDaysLengthSummary;

function setExtendedCalendar(cYear, cMonth, cDay, obj)
{
	$("CalDate.CalenderMode").value = 'byDate';
	$("SummaryCalender.direction").value = 0;
	var datum = new Date(cYear, cMonth-1, cDay);
	var url = "/LocalDate.ashx";
	var params = "cYear="+cYear+"&cMonth="+cMonth+"&cDay="+cDay + "&IDLanguage=" + MyCurrentViewState.IDLanguage;;

	//alert(datum);
	//return;


	if (checkinDateSummary && !checkoutDateSummary && datum>checkinDateSummary)
	{
		checkoutDateSummary = datum;
		$("DateTo").value = datum;

		MyBookViewState.DateTo(cYear, cMonth, cDay);

		objCheckout = obj;
		var co = Date.UTC( checkoutDateSummary.getFullYear(), checkoutDateSummary.getMonth(), checkoutDateSummary.getDate(), 0, 0, 00 );
		var ci = Date.UTC( checkinDateSummary.getFullYear(),  checkinDateSummary.getMonth(),  checkinDateSummary.getDate(),  0, 0, 00 );
		$("DurationOfStay").value = (co-ci)/86400000;
		$("Nights").value = $("DurationOfStay").value;





		showSummaryCalendar()

	}
	else
	{
		checkinDateSummary = datum;
		$("DateFrom").value = datum;

		MyBookViewState.DateFrom(cYear, cMonth, cDay);

		objCheckin = obj;
		new Ajax.Updater(
			$("tdCheckinTextSummary"),
			url,
			{
				method:"get",
				parameters:params
			}
		);
//					calendarDaysSummary = calendarContainerSummary.getElementsByTagName("div");
//					calendarDaysLengthSummary = calendarDaysSummary.length;
		for (var i=0;i<calendarDaysLengthSummary;i++){
			calendarDaysSummary[i].style.backgroundImage = "url(/images/shim.gif)";
		}
		obj.style.backgroundImage = "url(/images/controls/bgDayChosen.gif)";
		checkoutDateSummary = "";
		objCheckout = "";
		$("tdCheckoutTextSummary").innerHTML = "";
		if ($("CalDate.CalenderMode").value == "byDate") {
			$("DurationOfStay").value = "";
			$("Nights").value = "";
		}
	}
}


//----------------------------------------------------------------
//================================================================


function MyAlert(txt)
{
   if (MyCurrentViewState != null && MyCurrentViewState.DebugMode == 1)
   {
      showErrorMsg(1, "Info", txt);
   }
}




//FORM field updaters *******************************************
//***************************************************************
function clearField(obj, defaultVal)
{
	if (obj.value == defaultVal)
	{
		obj.value = "";
	}
}

function setField(obj, defaultVal)
{
	if (obj.value == "")
	{
		obj.value = defaultVal;
	}
}
//---------------------------------------------------------------
//===============================================================

function doOpenGoogleMap(id, dm, w, h, idorg)
{
	//var gglUrl = "http://www.nethotels.com/ShowHotel.asp?IDProvider=" + id + "&amp;Domain=" + dm + "&amp;IDOrg=" + idorg;
	var gglUrl = "http://www.nethotels.com/ShowHotel.asp?IDProvider=" + id + "&Domain=" + dm + "&IDOrg=" + idorg + "&amp;";
	var winstring = "width=" + w + ",height=" + h + ",scrolling=0";
	var WW = window.open(gglUrl, "ProviderMap", winstring);
	
	WW.focus();
}


function doOpenGoogleMapLang(id, dm, w, h, idorg, idlng)
{
	//var gglUrl = "http://www.nethotels.com/ShowHotel.asp?IDProvider=" + id + "&amp;Domain=" + dm + "&amp;IDOrg=" + idorg + "&amp;idlng=2057";
	var gglUrl = "http://www.nethotels.com/ShowHotel.asp?IDProvider=" + id + "&Domain=" + dm + "&IDOrg=" + idorg + "&amp;idlng=" + idlng;
	var winstring = "width=" + w + ",height=" + h + ",scrollbars=yes";
	var WW = window.open(gglUrl, "ProviderMap", winstring);
	
	WW.focus();
}


//===================================================================================
// Arrive & Depature DateChange Script ==============================================
// RAN & TSO January 2012
//===================================================================================

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/* 
function checkArrive(ctrl) {

	//alert(ctrl);
}
*/

function checkArrive(ctrl) {
	
	var ctrlValues = getValues();
	var frmTime, nowTime, nowDate;
	
	
	frmDate = new Date(ctrlValues[2],ctrlValues[1],ctrlValues[0], 23, 59, 59);
	toDate = new Date(ctrlValues[5],ctrlValues[4],ctrlValues[3],00,00,00);
	
	nowDate = new Date();			
	frmTime = frmDate.getTime();			
	nowTime = nowDate.getTime();
	
	var d,m,y;
	var ddiff, mdiff, ydiff, msdiff;
	 
	var dn = nowDate.getDate();
	var mn = Number(nowDate.getMonth()+1);
	var yn = nowDate.getFullYear(); 
		
	if(ctrl == "d") {
		
		
		if (frmDate.getDate() != ctrlValues[0])
		{
			document.getElementById("arrivem").selectedIndex = document.getElementById("arrivem").selectedIndex +1;
			frmDate = new Date(ctrlValues[2],Number(document.getElementById("arrivem")-1).value,ctrlValues[0], 23, 59, 59);
		}
		if (toDate.getDate() != ctrlValues[3])
		{
			document.getElementById("departm").selectedIndex = document.getElementById("departm").selectedIndex +1;
			toDate = new Date(ctrlValues[5],Number(document.getElementById("departm").value-1),ctrlValues[3], 23, 59, 59);
		}
		if (frmTime < nowTime) {
			
			frmDate = new Date(frmDate.getFullYear(),mn+1,frmDate.getDate());
		}
		
		
	} 
	else if(ctrl == "m") {
	
		if (frmDate.getDate() != ctrlValues[0])
		{
			
			document.getElementById("arrived").selectedIndex = document.getElementById("arrived").selectedIndex - frmDate.getDate();
			frmDate = new Date(ctrlValues[2],ctrlValues[1],document.getElementById("arrived").value, 23, 59, 59);
			
		}
		if (toDate.getDate() != ctrlValues[3])
		{
			document.getElementById("departd").selectedIndex = document.getElementById("departd").selectedIndex - toDate.getDate();
			toDate = new Date(ctrlValues[5],ctrlValues[4],document.getElementById("departd").value, 23, 59, 59);	
		}
		if (frmTime < nowTime) {
		
			frmDate = new Date(yn+1,frmDate.getMonth(),frmDate.getDate()); 
		}
	}
	else if(ctrl == "y") {
	
		if (frmTime < nowTime) {
			document.getElementById("departy").selectedIndex = document.getElementById("departy").selectedIndex + 1;
			frmDate = new Date(ctrlValues[2]+1,frmDate.getMonth(),frmDate.getDate()); 
		}	
	}
	
	if (frmDate >= toDate)
	{
		toDate = dateAdd(frmDate,1);
	}
	
	setValues(frmDate,toDate);
	
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Add a value tot a given date! (Unit: 1=day, 2=month, 3=year)
function dateAdd(date,diff,unit) {

	var month = new Number(date.getMonth());

	if (!diff) {diff = 1;}

	switch (unit) {
		case 1:
			return new Date(date.getFullYear(), month, date.getDate() + diff);
			break;
		case 2:
			return new Date(date.getFullYear(), month + diff, date.getDate());
			break;
		case 3:
			return new Date(date.getFullYear() + diff, month, date.getDate());
			break;
		default:
			return new Date(date.getFullYear(), month, date.getDate() + diff);
	}
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Give you the value between 2 dates for the named unit(Uni: 1=Sec., 2=Min., 3=Hour, 4=Day, Default=Day)
function dateDiff(frmDate, toDate, unit) {

	var milli = toDate.getTime() - frmDate.getTime();

	switch (unit) {
		case 1:
			return Math.floor(milli / (1000));
			break;
		case 2:
			return Math.floor(milli / (60 * 1000));
			break;
		case 3:
			return Math.floor(milli / (60 * 60 * 1000));
			break;
		case 4:
			return Math.floor(milli / (24 * 60 * 60 * 1000));
			break;
		default:
			return Math.floor(milli / (24 * 60 * 60 * 1000));
			break;
	}
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function getValues() {

	var ctrlValues = new Array(6);

	// ddi, mmi, yyyyi
	var ddi = document.getElementById("arrived").selectedIndex;
	var mmi = document.getElementById("arrivem").selectedIndex;
	var yyyyi = document.getElementById("arrivey").selectedIndex;

	// dd, mm, yyyy
	ctrlValues[0] = document.getElementById("arrived").options[ddi].value;
	
	var month = new Number(document.getElementById("arrivem").options[mmi].value -1);
	ctrlValues[1] = month; // + 1; alert(String(month + 1));
	
	ctrlValues[2] = document.getElementById("arrivey").options[yyyyi].value;

	// ddti, mmti, yyyyti
	var ddti = document.getElementById("departd").selectedIndex;
	var mmti = document.getElementById("departm").selectedIndex;
	var yyyyti = document.getElementById("departy").selectedIndex;

	// ddt, mmt, yyyyt
	ctrlValues[3] = document.getElementById("departd").options[ddti].value;
	
	var month2 = new Number(document.getElementById("departm").options[mmti].value -1);
	ctrlValues[4] = month2;
	
	ctrlValues[5] = document.getElementById("departy").options[yyyyti].value;
	
	return ctrlValues;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function setValues(frmDate,toDate) {

	var val, ctrl;
	var monthfrom = new Number(frmDate.getMonth()+1);
	var monthto = new Number(toDate.getMonth()+1);

	var ctrls = new Array(6);
	ctrls[0] = "arrived";
	ctrls[1] = "arrivem";
	ctrls[2] = "arrivey";
	ctrls[3] = "departd";
	ctrls[4] = "departm";
	ctrls[5] = "departy";

	var values = new Array(6);
	values[0] = frmDate.getDate();
	values[1] = monthfrom;
	values[2] = frmDate.getFullYear();
	values[3] = toDate.getDate();
	values[4] = monthto;
	values[5] = toDate.getFullYear();

	for (i = 0; i < ctrls.length; i++) {

		val = values[i];
		ctrl = document.getElementById(ctrls[i]);

		for (j = 0; j < ctrl.length; j++) {

			if (ctrl[j].value == val) {

				ctrl.selectedIndex = j;
			}
		}
	}

}

//===================================================================================
//===================================================================================

function doCheckChildrenAgeBoxes(obj)
{
	var selectedChildren = obj.value;

	var oFrm = obj.form;

	var ChArray = new Array(oFrm.elements["ChildrenAgeList_1"],
													oFrm.elements["ChildrenAgeList_2"],
													oFrm.elements["ChildrenAgeList_3"],
													oFrm.elements["ChildrenAgeList_4"],
													oFrm.elements["ChildrenAgeList_5"]);

	var ch_1 = oFrm.elements["ChildrenAgeList_1"];
	var ch_2 = oFrm.elements["ChildrenAgeList_2"];
	var ch_3 = oFrm.elements["ChildrenAgeList_3"];
	var ch_4 = oFrm.elements["ChildrenAgeList_4"];
	var ch_5 = oFrm.elements["ChildrenAgeList_5"];

	if (selectedChildren == 0)
	{
			for (x = 0; x < ChArray.length; x++ )
			{
				ChArray[x].value = "";
				ChArray[x].style.display = "none";
			}

			document.getElementById("ChildrenAges").style.display = "none";

	}

	else {

		document.getElementById("ChildrenAges").style.display = "block";

		for (x = 0; x < ChArray.length; x++ )
			{
				if (x >= selectedChildren)
				{
					ChArray[x].value = "";
				}
				ChArray[x].style.display = "none";
			}

		for (x = 0; x < selectedChildren; x++ )
			{
				//ChArray[x].value = "";
				ChArray[x].style.display = "inline";
			}
	}

}

