//
//	Copyright Agoda 2007, all rights reserved!
//  Author: Thalwin Hulsebos
//  Version: 1.0.0beta
//  Date: 15-May-2007
//	------------------------------------------------

// Script to detect the URL to be used for all scripts
function getScrURL(){
    var objScripts = document.getElementsByTagName("SCRIPT");   
    var retVal="";
    for (i=0;i<objScripts.length;i++) {
        var tstval = new String(objScripts[i].src.toLowerCase());
        if (tstval.indexOf("agoda_search.js")!=-1){
            retVal=tstval.substring(0,tstval.indexOf("/affiliates/js/agoda_search.js"));
        }
    }    
    return retVal;
}

var agoda_url=getScrURL();
var agoda_posturl=agoda_url+"/pages/agoda/default/waitpage.aspx";
var agoda_searchscript="/affiliates/getSearchBox.aspx";
var agoda_jscalendarscript="/affiliates/js/agoda_calendar.js";
var agoda_jslangscript="/affiliates/js/agoda_langjs.aspx";
var agoda_jsmainsearchscript="/affiliates/js/agoda_mainsearch.js?19.01.2009";
var agoda_cityscript="/affiliates/ajax/ajaxGetCities.aspx";
var agoda_hotelscript="/affiliates/ajax/ajaxGetHotels.aspx";
var agoda_defaultstyle="/affiliates/styles/search_style1.css";
var agoda_calstyle="/affiliates/styles/calendar.css";
var form_pat=/<form[\s\S]*?\/?>[\n\r]?/gi;
var body_pat = /<body[\s\S]*?\/?>[\n\r]?/gi;
var _newwindow = false;

function SrchObject() {
    var _cid;
    var _objId;
    var _langid = '';   
    var _displCal=false;
    var parArr = new Array();
    //var colArr = new Array();
    var styleArr = new Array();
    var boxType;
    this.clientID=_clientID;
    this.setLangID = _setLangID;
    this.setNewWindow = _setNewWindow;
	this.displaySearch = _displaySearch;
	this.callback_displaySearch=_callback_displaySearch;
	this.addParam = _addParam;
	this.clear = _clear;
	this.clearParam = _clearParam;
	this.useStyleSheet = _useStyleSheet;
	this.useURL = _useURL;
	this.displCalendar = _displCalendar;
	this.setTarget = _setTarget;
	this.setColor =_setColor;
	this.setStyle =_setStyle;
	this.post2URL = _post2URL;
	this.refresh = _refresh;
	//this.displayiFrame=_displayiFrame;

	function _clearParam() {
		parArr.length=0;
        _displCal=false;
	}
	function _clear() {
	    var objLang=document.getElementById('agoda_langscript');
		parArr.length=0;
		styleArr.length=0;
        _displCal=false;
        _langid='';
	}
	function _clientID(cidval) {
		_cid=cidval;
	}
	function _setLangID(langid) {
		_langid=langid;
}
    function _setNewWindow(newwindow) {
        _newwindow = newwindow;
    }
	function _displCalendar() {
	    _displCal=true;
	    _addParam("usecal","true");
	}
	function _useURL(urlval) {
		agoda_url=urlval;
	}
	function _post2URL(urlval) {
		agoda_posturl=urlval;
	}
	
	function _useStyleSheet(cssstyle) {
		if (!document.getElementById('agoda_usedstyle')) {
        
            var objHead = document.getElementsByTagName('head');
            objCSS = document.createElement('link');
            objCSS.rel = 'stylesheet';
            objCSS.href = cssstyle;
            objCSS.type = 'text/css';
            objCSS.id= "agoda_usedstyle";     
            objHead[0].appendChild(objCSS);
	    } else {
            objCSS.href = cssstyle;
	    }
	    //_addParam("style",cssstyle);
	}
	function _setStyle(objid,attr,value) {
	    styleArr[styleArr.length++]=new styleItem(objid,attr,value);
	}
	function styleItem(objid,attr,value) {
	    this.objid=objid;
	    this.attr=attr;
	    this.value=value;
	}
	function _setColor(objtype,colorCode) {
	    switch (objtype.toLowerCase()) {
	        case "text":
	            _setStyle("agoda_country_label","color",colorCode);
	            _setStyle("agoda_city_label","color",colorCode);
	            _setStyle("agoda_hotel_label","color",colorCode);
	            _setStyle("agoda_checkin_label","color",colorCode);
	            _setStyle("agoda_checkout_label","color",colorCode);
	            _setStyle("agoda_room_label","color",colorCode);
	            _setStyle("agoda_adult_label","color",colorCode);
	            _setStyle("agoda_children_label","color",colorCode);
	            //_addParam("text",colorCode);
	            break;
	        case "bg":
	            _setStyle("agoda_searchbox_wrapper","backgroundColor",colorCode);
	            //_addParam("bg",colorCode);
	            break;
	        case "border":
	            _setStyle("agoda_searchbox_wrapper","border","solid 1px "+colorCode);
	            //_addParam("border",colorCode);
	            break;
	        case "button_text":
	            _setStyle("agoda_btnSubmit","color",colorCode);
	            //_addParam("button_text",colorCode);
	            break;
	        case "button_bg":
	            _setStyle("agoda_btnSubmit","backgroundColor",colorCode);
	            //_addParam("button_bg",colorCode);
	            break;
	        case "button_border":
	            _setStyle("agoda_btnSubmit","border","solid 1px "+colorCode);
	            //_addParam("button_border",colorCode);
	            break;
	    }
	}
	function _addParam(parName,parValue) {
	    if (parName=="usecal" && parValue=="true")
		    _displCal=true;
	    if (parName=="post2URL" && parValue!="")
		    _post2URL(parValue);

	    parArr[parArr.length++]=new parItem(parName,parValue);
	}
	function parItem(parName,parValue) {
	    this.name=parName;
	    this.value=parValue;
	}
	
    function _setTarget(objid) {
        _objId=objid;
    }

	function _refresh() {
		var obj = document.getElementById(_objId);
		obj.innerHTML="<img src='"+agoda_url+"/affiliates/images/ajaxloader.gif'>";
	    _displaySearch(_objId);
	}

	function _displaySearch(objid) {
	    _objId=objid
		var obj = document.getElementById(objid);
		// Validation of required object and variables
		if (!obj) {
		    alert("Required Element '"+objid+"' is missing!");
			return false;
		}
		if (!_cid) {
		    alert("Required ClientID is missing!");
			return false;
		}
		// Registration of required scripts and stylesheets
	    var TimeStamp =getTimeStamp();
	    var old  = document.getElementById("agoda_langscript");
        if (old) {
            var objHead = document.getElementsByTagName('head');
        	objHead[0].removeChild(old);
        }

	    if (!document.getElementById('agoda_langscript')) {
            var objHead = document.getElementsByTagName('head');

            jsLanguage = document.createElement("script");
            jsLanguage.setAttribute("language", "javascript");
            jsLanguage.setAttribute("type", "text/javascript");
            jsLanguage.setAttribute("charset", "UTF-8");
            jsLanguage.setAttribute("src", agoda_url+agoda_jslangscript+"?langid="+_langid+"&ts="+TimeStamp); 
            jsLanguage.id= "agoda_langscript";
            objHead[0].appendChild(jsLanguage);
	    } else {
	        document.getElementById('agoda_langscript').src=agoda_url+agoda_jslangscript+"?langid="+_langid+"&ts="+TimeStamp;
	    }
	    if (!document.getElementById('agoda_mainsearchscript')) {
            var objHead = document.getElementsByTagName('head');
            jsMain = document.createElement("script");
            jsMain.setAttribute("language", "javascript");
            jsMain.setAttribute("type", "text/javascript");
            jsMain.setAttribute("src", agoda_url+agoda_jsmainsearchscript); 
            jsMain.id= "agoda_mainsearchscript";     
            objHead[0].appendChild(jsMain);
	    }		
		// Make sure that a style is being used
    	if (!document.getElementById('agoda_usedstyle')) {
            var objHead = document.getElementsByTagName('head');
            objCSS = document.createElement('link');
            objCSS.rel = 'stylesheet';
            objCSS.href = agoda_url+agoda_defaultstyle;
            objCSS.type = 'text/css';
            objCSS.id= "agoda_usedstyle";     
            objHead[0].appendChild(objCSS);
    	}
    	if (_displCal) {
   		    if (!document.getElementById('agoda_calstyle')) {
                var objHead = document.getElementsByTagName('head');
                objCalCSS = document.createElement('link');
                objCalCSS.rel = 'stylesheet';
                objCalCSS.href =  agoda_url+agoda_calstyle;
                objCalCSS.type = 'text/css';
                objCalCSS.id= "agoda_calstyle";     
                objHead[0].appendChild(objCalCSS);
   		    }
		    if (!document.getElementById('agoda_calendarscript')) {
                var objHead = document.getElementsByTagName('head');
                jsCalendar = document.createElement("script");
                jsCalendar.setAttribute("language", "javascript");
                jsCalendar.setAttribute("type", "text/javascript");
                jsCalendar.setAttribute("charset", "UTF-8");
                jsCalendar.setAttribute("src",  agoda_url+agoda_jscalendarscript); 
                jsCalendar.id= "agoda_calendarscript";     
                objHead[0].appendChild(jsCalendar);
	        }
    	}
    	
		var url= agoda_url+agoda_searchscript+"?cid="+_cid+"&langid="+_langid+getParameters()+"&ts="+TimeStamp; 
        
        var old  = document.getElementById("agoda_boxscript");	
        if (old) {  
            document.body.removeChild(old);
        }
	    jsBox = document.createElement("script");
        jsBox.setAttribute("language", "javascript");
        jsBox.setAttribute("type", "text/javascript");
        jsBox.setAttribute("charset", "UTF-8");
        jsBox.setAttribute("src", url);
        jsBox.id= "agoda_boxscript";
        document.body.appendChild(jsBox);
	}
	
	function _callback_displaySearch() {
	    var obj=document.getElementById(_objId);
        var retval=unescape(srcboxContent);
        //alert("callbackDone:"+retval);
        obj.innerHTML=retval;
        overwriteStyles();
        SetDateValues();
    }
        
	function getParameters() {
	    var retval="";
	    for (i=0;i<parArr.length;i++) {
	        retval+="&"+parArr[i].name+"="+escape(parArr[i].value);
	    }
	    return retval;
	} 
	
	function overwriteStyles() {
	    for (i=0;i<styleArr.length;i++) {
    		var obj = document.getElementById(styleArr[i].objid);
    		if (obj) {
    		    var evVal = "document.getElementById(styleArr[i].objid).style."+styleArr[i].attr+"='"+styleArr[i].value+"'";
    		    eval(evVal);
    		} else {
    		    alert("Element "+styleArr[i].objid+" is missing!");
    		}
	    }
	}
}

function agoda_GetCityList(countryId) {    
	var obj = document.getElementById("agoda_city_input");
	var _cid=document.getElementById("agoda_CID").value;
	// Validation on required object and variables
	if (!obj) {
	    alert("Required Element 'divCitySelected' is missing!");
		return false;
	}
	if (!countryId) {
	    alert("Required countryId is missing!");
		return false;
	}
   	var strHTML="<select name='ddlTemp' class='agoda_city_field' disabled><option value='0'>" + document.getElementById("agoda_txtloading").value + "...</option></select>";    	    	    	
    obj.innerHTML = strHTML;
    document.getElementById("agoda_hotel_input").innerHTML = "<select name='ddlSelectHotel' id='ddlSelectHotel' class='agoda_hotel_field' disabled><option value='0'>" + document.getElementById("agoda_txtselHotel").value + "...</option></select>"; 

	var TimeStamp=getTimeStamp();
	var url= agoda_url+agoda_cityscript+"?cid="+_cid+"&countryid="+countryId+"&ts="+TimeStamp; 
    	
    var old  = document.getElementById("agoda_getcityscript");	
    if (old) {  
        document.body.removeChild(old);
    }
    jsBox = document.createElement("script");
    jsBox.setAttribute("language", "javascript");
    jsBox.setAttribute("type", "text/javascript");
    jsBox.setAttribute("charset", "UTF-8");
    jsBox.setAttribute("src", url);
    jsBox.id= "agoda_getcityscript";
    document.body.appendChild(jsBox);
}

function callBack_City() {
	var obj = document.getElementById("agoda_city_input");
    var retval=unescape(ret_cityList);
    //alert("callBack_City:"+retval);
    obj.innerHTML = retval;
   	var tstVal = document.getElementById("ddlSelectCity");
    if (tstVal.value!="0") {
        // load hotellist in case of single hotel
	    agoda_GetHotelList(tstVal.value);
	} 
}

function agoda_GetHotelList(CityID) {
	var obj = document.getElementById("agoda_hotel_input");
	// Validation on required object and variables
	if (!obj) {
	    alert("Required Element 'agoda_hotel_input' is missing!");
		return false;
	}
	if (!CityID) {
	    alert("Required CityID is missing!");
		return false;
	}
	var _cid=document.getElementById("agoda_CID").value;
	var countryId=document.getElementById("ddlSelectCountry").value;
	
   	var strHTML="<select name='ddlSelectHotel' id='ddlSelectHotel' class='agoda_hotel_field' disabled><option value='0'>" + document.getElementById("agoda_txtloading").value + "...</option></select>";    	    	    	
    obj.innerHTML = strHTML;
    
	var TimeStamp=getTimeStamp();
	var url=agoda_url+agoda_hotelscript+"?cid="+_cid+"&countryid="+countryId+"&cityid="+CityID+"&ts="+TimeStamp; 

    var old  = document.getElementById("agoda_gethotelscript");	
    if (old) {  
        document.body.removeChild(old);
    }
    jsBox = document.createElement("script");
    jsBox.setAttribute("language", "javascript");
    jsBox.setAttribute("type", "text/javascript");
    jsBox.setAttribute("charset", "UTF-8");
    jsBox.setAttribute("src", url);
    jsBox.id= "agoda_gethotelscript";
    document.body.appendChild(jsBox);
}

function callBack_Hotel() {
	var obj = document.getElementById("agoda_hotel_input");
    var retval=unescape(ret_hotelList);
    obj.innerHTML = retval;
}

function agoda_updButtonTxt() {
    var hotel_id = document.getElementById("ddlSelectHotel").value;
    var btn_id = document.getElementById("agoda_btnSubmit");
    if (typeof(btn_id)=="object") {
        if (hotel_id != '0')
            btn_id.value = txtBtnCheckRates;
        else
            btn_id.value = txtBtnFindHotels;
    }
}

function getTimeStamp() {
    var TimeStamp =new Date();
    var	dateNow	 = TimeStamp.getDate()+'';
    var	hoursNow = TimeStamp.getHours()+'';
    var	minNow = TimeStamp.getMinutes()+'';
    var	secNow = TimeStamp.getSeconds()+'';
    var	msNow = TimeStamp.getMilliseconds()+'';

    return escape(dateNow+hoursNow+minNow+secNow+msNow);
}

function addEvent(obj, evType, fn){
 if (obj.addEventListener){
    obj.addEventListener(evType, fn, false);
    return true;
 } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
 } else {
    return false;
 }
}