//--------------------------------------------------------SearchProduct()---------------------------------------------------

function SearchProduct()
{
	var select;
	var input;
	var url;
	// get id city
	select = document.getElementById('ddl_ListVilles');
	var idCity = 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_Date');
	var fromDate = input.value;

	// get duration
	input = document.getElementById('TextBox_Nuits');
	var duration = input.value;

	// calculate to date
	var toDate = AddDays(fromDate, duration);

	url = ResaApplicationPath + "/ui/aba/Hotel_Search.aspx?"
			+ "user=" + currentuser
			+ "&iddestination=" + idDestination
			+ "&idcity=" + idCity
			+ "&S=" + 1066;

	if (idCategory!="0")
		url +=  "&idcategory=" + idCategory;

	url +=  "&fromdate=" + fromDate 
			+ "&todate=" + toDate 
			+ "&curr=2&ilng=1&keyword=" + keyword ;

	document.location.href = url;
}
//------------------------------------------------------------------------------------------------------------------------------

function favoris() 
{
	if ( navigator.appName != 'Microsoft Internet Explorer' )
		window.sidebar.addPanel("Sunny hotels","http://www.sunnyhotels.com.tn/",""); 
	else 
		window.external.AddFavorite("http://www.sunnyhotels.com.tn/","Sunny hotels"); 
 
}

function IsValidMail(strMail)
	{
		var regxEmail = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
		return (regxEmail.test(strMail));
	}
function addToNewsletter()
{
	var input = document.getElementById('textfield_newletter');
	var email = input.value;
	if (IsValidMail(email))
	{
	var url = applicationPath + "/info/Newsletter.aspx?m=0&email=" + email 
			+ "&q=1&k=1";
			
	location.href = url;
	}	
}
//------------------------------------------------------------------------------------------------------------------------------
function meteo()
{ 
	var rtnValue = window.open("http://www.meteo.tn/htmlfr/donnees/observation.php","","scrollbars=0,menubar=0,toolbar=0,height=680,width=800,left=150,top=100","");
}
//------------------------------------------------------------------------------------------------------------------------------
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];
   }
}
//-------------------------------------------------------------------------------------------------------------------------------


///---------------------------------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 CalculateOvernightsPeriod(objDepartureDate,objArrivalDate, objResult)
//{
//	if (!objDepartureDate || !objArrivalDate || !objResult)
//		return;
//	var tabDepartureDate = objDepartureDate.value.split("/");
//	var tabArrivalDate = objArrivalDate.value.split("/");
//	if ((objDepartureDate.value !="") && (objArrivalDate.value !=""))
//		objResult.value = nb_jour(tabDepartureDate,tabArrivalDate);
//	else
//		objResult.value = "0";
//		
//	// check that the number parameter is numeric. 
//    if (isNaN (objResult.value))
//		objResult.value = "0";
//	
//}
// End calcul de la différence entre deux dates

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;
                } else {
                    //alert("There is a problem with the year entry.");
                }
            } else {
                //alert("There is a problem with the month entry.");
            }
        } else {
            //alert("There is a problem with the <FONT style="BACKGROUND-COLOR: #0a246a" color=#ffffff>date</FONT> entry.");
        }
    } else {
        //alert("Incorrect <FONT style='BACKGROUND-COLOR: #0a246a' color=#ffffff>date</FONT> format. Enter as mm/dd/yyyy.");
    }
    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;  
}
	  
	  //Retorune:
	  //   0 si strDateToDate = strFromDate
  	  //   1 si strDateToDate > strFromDate
	  //  -1 si strDateToDate < strFromDate	  
	
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))
}

// Date Add
//function dateAdd( objArrivalDate, interval, objPeriod, objResult ) {
//	
  //  var number	= objPeriod.value;
//    var tabArrivalDate = objArrivalDate.value.split("/");
//    var start	= eval(tabArrivalDate[1]) + "/" + eval(tabArrivalDate[0]) + "/" + eval(tabArrivalDate[2]);
    
//	if ((isNaN(objPeriod.value)) || (objPeriod.value < 0))
//		objResult = "";	
	//var entryDate = new Date(eval(tabArrivalDate[2]),eval(tabArrivalDate[1]),eval(tabArrivalDate[0]));
    // create 3 error messages, 1 for each argument. 
//    var startMsg = "Sorry the start parameter of the dateAdd function\n"
//        startMsg += "must be a valid date format.\n\n"
//        startMsg += "Please try again." ;
		
//    var intervalMsg = "Sorry the dateAdd function only accepts\n"
//        intervalMsg += "d, h, m OR s intervals.\n\n"
//        intervalMsg += "Please try again." ;

//    var numberMsg = "Sorry the number parameter of the dateAdd function\n"
//        numberMsg += "must be numeric.\n\n"
//        numberMsg += "Please try again." ;
		
    // get the milliseconds for this Date object.
//    var buffer = Date.parse( start ) ;
    // check that the start parameter is a valid Date.
//    if ( isNaN (buffer) ) {
        //alert( startMsg ) ;
//        objResult.value = "0" ;
//        return null;
//    }
	
    // check that an interval parameter was not numeric. 
//    if ( interval.charAt == 'undefined' ) {
        // the user specified an incorrect interval, handle the error. 
        //alert( intervalMsg ) ;
//        objResult.value = "0";
//        return null ;
//    }

    // check that the number parameter is numeric. 
//    if ( isNaN ( number ) )	{
//        objResult.value = "0" ;
//        return null ;
//    }

    // so far, so good...
    //
    // what kind of add to do?
//    switch (interval.charAt(0))
//    {
//        case 'd': case 'D': 
//            number *= 24 ; // days to hours
            // fall through!
//        case 'h': case 'H':
//            number *= 60 ; // hours to minutes
            // fall through! 
//        case 'm': case 'M':
//            number *= 60 ; // minutes to seconds
            // fall through!
//        case 's': case 'S':
//            number *= 1000 ; // seconds to milliseconds
//            break ;
//        default:
        // If we get to here then the interval parameter
        // didn't meet the d,h,m,s criteria.  Handle
        // the error.		
       // alert(intervalMsg) ;
 //       return null ;
 //   }
//    var tmpDate = new Date( buffer + number ) ;
//    
//    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();
//    
//    objResult.value = strDay+ "/" + strMonth + "/" + tmpDate.getFullYear();
//}

//function isDateGreaterOrEqualThanNow(objDate, objDiv) {
//	
//    var tabDate = objDate.value.split("/");
//    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) ) {
//        return 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)
//	{
//		objDiv.style.display = '';
//		objDate.value= '';
//		return false;
//	}
//	else
//	{
//		objDiv.style.display = 'none';
//		return true;
//	}
//}

// is objDate Greater Than Now
//function isDateGreaterThanEqualNow(objDate, objDiv, objPeriod) {
	
  //  var tabDate = objDate.value.split("/");
//    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) ) {
//        return 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)
//	{
//		objDiv.style.display = '';
//		objDate.value= '';
//		objPeriod.value = 0;
//		return false;
//	}
//	else
//	{
//		objDiv.style.display = 'none';
//		return true;
//	}
//}

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;
}

///---------------------------------End Dates-------------------------------------///

// Hide the specified image when an error occurs for exemple.
//function HideControl(objImage)
//{
//	objImage.style.display = 'none';
//}

///---------------------------------Begin Arrays-------------------------------------///

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 DesactivateEnterKey(event)
{
//	if (event)
//		if (event.which == 13) return false;
//	else
//		if (window.event.keyCode == 13) return false;
//		
//	return true;
}

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' : '';
}


