
///---------------------------------Begin Dates-------------------------------------///
// Begin calcul de la différence entre deux dates
function bissextile(annee) {
	if (annee%4==0 && annee %100!=0 || annee%400==0) return true; else return false
}

function nb_01_01(date){
	nb_mois=new Array(13);
	nb_mois=[,0,31,59,90,120,151,181,212,243,273,304,334];
	j=eval(date[0]) ; m=eval(date[1]) ; a=eval(date[2]);
	nb=nb_mois[m]+j-1 ;
	if (bissextile(a) && m>2) nb++;
	return nb;
}

function nb_jour_annee(a1,a2){
	n=0;
	if (a1==a2) n=0 ; else
	for (i=a1; i<a2; i++) {n += 365; if (bissextile(i)) n++}
	return n;
}

function nb_jour(date1,date2){
	a1=eval(date1[2]) ; a2=eval(date2[2]) ; 
	nb=nb_jour_annee(date1[2],date2[2]) - nb_01_01(date1) + nb_01_01(date2);
	if(nb < 0) nb = 0;
	return nb;
}

function GetDays(strArrivalDate, strDepartureDate)
{
	if (!isDate(strArrivalDate) || !isDate(strDepartureDate))
		return 0;
		
	var tabArrivalDate	 = strArrivalDate.split("/");
	var tabDepartureDate = strDepartureDate.split("/");
	
	return nb_jour(tabArrivalDate, tabDepartureDate);
}

function AddDays(strDate, intNumberOfDays)
{
	if ((isNaN(intNumberOfDays)) || (intNumberOfDays < 0))
        return "";

	// set input date
    var tabArrivalDate = strDate.split("/");
    var start	= eval(tabArrivalDate[1]) + "/" + eval(tabArrivalDate[0]) + "/" + eval(tabArrivalDate[2]);
    
    // get the milliseconds for this Date object.
    // then, check that the start parameter is a valid Date.
    var buffer = Date.parse( start ) ;
    if ( isNaN (buffer) ) 
        return "";
	
	intNumberOfDays *= 24 * 60 * 60 * 1000; // days to milliseconds
	
    var tmpDate = new Date( buffer + intNumberOfDays ) ;
    
    var strMonth = tmpDate.getMonth() + 1;
    if ((tmpDate.getMonth() + 1) < 10 ) strMonth = "0" + (tmpDate.getMonth() + 1);
    
    var strDay = tmpDate.getDate();
    if (tmpDate.getDate() < 10 ) strDay = "0" + tmpDate.getDate();
    
    return strDay + "/" + strMonth + "/" + tmpDate.getFullYear();
}

function isInt(Value) {
	var parsedValue = parseInt(Value, 10);
	if (parsedValue != Value || isNaN(parsedValue)) 
		return false;
		
	return true;
}

function isDate(fld) {
    var mo, day, yr;
    var entry = fld;
    var re = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{4}\b/;
    if (re.test(entry)) 
    {
        var delimChar = (entry.indexOf("/") != -1) ? "/" : "-";
        var delim1 = entry.indexOf(delimChar);
        var delim2 = entry.lastIndexOf(delimChar);
        day = parseInt(entry.substring(0, delim1), 10);
        mo = parseInt(entry.substring(delim1+1, delim2), 10);
        yr = parseInt(entry.substring(delim2+1), 10);
        var testDate = new Date(yr, mo-1, day);
        //alert(testDate)
        if (testDate.getDate( ) == day) 
        {
            if (testDate.getMonth( ) + 1 == mo) 
            {
                if (testDate.getFullYear( ) == yr) 
                {
                    return true;
                }
            } 
        } 
    } 
    return false;
}

//On suppose que la date entrée a été validée auparavant
//au format dd/mm/yyyy
function GetDate(strDate)
{	  
    day = strDate.substring(0,2);
	month = strDate.substring(3,5);
	year = strDate.substring(6,10);
	d = new Date();
	d.setDate(day);
	d.setMonth(month);
	d.setFullYear(year); 

	return d;  
}
	
function Compare2Dates(strDateToDate, strFromDate)
{
	strDateToDate = GetDate(strDateToDate);
	strFromDate = GetDate(strFromDate);
    diff = strDateToDate.getTime() - strFromDate.getTime();
    return (diff==0?diff:diff/Math.abs(diff));
}
function isMail(str)
{
 var filter=/^.+@.+\..{2,3}$/
 return (filter.test(str))
}

function CheckDateGreaterOrEqualThanNow(source, arguments) 
{	
		
	var tabDate = arguments.Value.split("/");
	
	if (!isInt(tabDate[0]) || !isInt(tabDate[1]) || !isInt(tabDate[2]))
		{
			return;
		}
		
	var start	= eval(tabDate[1]) + "/" + eval(tabDate[0]) + "/" + eval(tabDate[2]);

	// get the milliseconds for this Date object.
	var buffer = Date.parse( start ) ;
	// check that the start parameter is a valid Date.
	if ( isNaN (buffer) )
		arguments.IsValid = false;
	//Date.parse : Analyse une chaîne contenant une date et retourne le nombre de millisecondes 
	// entre cette date et le 1er janvier 1970 à minuit.
	var currentTime =  Date.parse( new Date());
	currentTime = currentTime - (1000*60*60*24); // le nombre de millisecondes pour un jour
	if (buffer < currentTime)
		arguments.IsValid = false;
	else
		arguments.IsValid = true;
}
	
function emptyArray(objArray, objInputId)
{
	for(var i = 0; i < objArray.length; i++)
	{
		if(objArray[i]==objInputId)
		{
			objArray.splice(i,1);
			return true;
		}
	}
}
function fillArray(objArray, objInputId)
{
	for(var i = 0; i < objArray.length; i++)
	{
		if(objArray[i]==objInputId)
			return true;
	}
	objArray.push(objInputId);
}
function isArrayEmpty(objArray)
{
	if(objArray.length == 0)
		return true;
	return false;
}

function ShowCityWindow(path)
{
var new_window=window.open (path,'new_window','resizable=1,scrollbars=1,width=800,height=400px');
new_window.focus();
}

function ShowDestinationWindow(path)
{
var new_window=window.open (path,'new_window','resizable=1,scrollbars=1,width=800,height=400px');
new_window.focus();
}

///---------------------------------End Arrays-------------------------------------///

function Display_AdvancedDetail()
{
	var objDiv = document.getElementById("Div_Advanced");
	objDiv.style.display = (objDiv.style.display == '') ? 'none' : '';
}

function Display_Address()
{
	var objDiv = document.getElementById("Div_AddressTitle");
	objDiv.style.display = (objDiv.style.display == '') ? 'none' : '';
}



function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}



function SearchProduct(sDefaultParams)
{
	var select;
	var input;
	var url;
	
	// get id city
	select = document.getElementById('ddl_ListVilles');
	var idCity = select.options[select.selectedIndex].value;
	
	//idHotel
	select = document.getElementById('ddl_ListHotels');
	var idHotel = select.options[select.selectedIndex].value;
	
	//idTheme
	select = document.getElementById('ddl_ListThemes');
	var idTheme = select.options[select.selectedIndex].value;

	// get id category
	select = document.getElementById('ddl_ListStars');
	var idCategory = select.options[select.selectedIndex].value;

	// get keyword
	input = document.getElementById('TextBox_MotCle');
	var keyword = input.value;

	// get from date
	input = document.getElementById('TextBox_ArrivalDate');
	var fromDate = input.value;
	
	// get from date
	input = document.getElementById('TextBox_DepartureDate');
	var toDate = input.value;
	
	//if a hotel is selected then choose it automatically and reach selection page
	if (idHotel!=null && idHotel!='')
	{
		url = ResaApplicationPath + "/ui/aba/Hotel_Selection.aspx?" 
			+ "&fromdate=" + fromDate 
			+ "&todate=" + toDate 
			+ "&id=" + idHotel 
			+ "&"+sDefaultParams;
	}
	else
	{
		url = ResaApplicationPath + "/ui/aba/Hotel_Search.aspx?"
				+ "&iddestination=" + idDestination
	  			+ "&idcity=" + idCity
	  			+ "&idtheme=" + idTheme
				
		if (idCategory!="0")
			url +=  "&idcategory=" + idCategory;

		url +=  "&fromdate=" + fromDate 
				+ "&todate=" + toDate 
				+ "&keyword=" + keyword 
				+ "&"+sDefaultParams;
	}

	document.location.href = url;

}


function SwitchLanguage(language)
{
	var URL = document.location.href;
	if(URL.indexOf("?", 0) == -1)
	{
		URL = URL + "?ilng=" + language;
	}
	else
	{
		if(URL.indexOf("ilng=", 0) == -1)
		{
			URL = URL + "&ilng=" + language;
		}
		else
		{					
			URL = URL.substring(0, URL.indexOf("ilng=", 0) + 5) + language + URL.substring(URL.indexOf("ilng=", 0) + 6, URL.length);					
		}
	}		
	
	document.location.href = URL;
}

function ShowHiddenDiv(nameDiv)
{
	HideAll();
 	var ObjDivShow = document.getElementById("Div"+nameDiv);
	ObjDivShow.style.display = ObjDivShow.style.display = "inline";
}

function HideAll()
{
	document.getElementById("DivAccueil").style.display="none";
	document.getElementById("DivHebergement").style.display="none";
	document.getElementById("DivGastronomie").style.display="none";
	document.getElementById("DivLoisir").style.display="none";
	document.getElementById("DivThalasso").style.display="none";
	document.getElementById("DivEvenements").style.display="none";
	document.getElementById("DivTunisie").style.display="none";
}