/*******************************************
 * BNB Specific functions
 * Author: Rowena Abarrientos
 * Last Updated: Aug 15, 2006 1:38 PM
 ******************************************/ 

/*******************************************
 * BNB ID - assigned by BNB Concierge
 ******************************************/  
var bnb_id = 1003;
var bnb_daylimit = 7;
var bnb_domain = "http://www.bnbconcierge.com/";
var bnb_roomlist = "";

function bnb_checkDateDiff(strDate1, strDate2) {
    date1 = new Date();
    date2 = new Date();
    diff  = new Date();

    if (isValidDate(strDate1)) { // Validates first date 
        date1temp = new Date(strDate1 + " 00:00:00");
        date1.setTime(date1temp.getTime());
    }
    else {
        alert("Invalid start date!");
        return false; // otherwise exits
    }

    if (isValidDate(strDate2)) { // Validates second date 
        date2temp = new Date(strDate2 + " 00:00:00");
        date2.setTime(date2temp.getTime());
    }
    else 
    {
        alert("Invalid end date!");
        return false; // otherwise exits
    }

    timedifftemp = (date1.getTime() - date2.getTime());
    if(timedifftemp > 0) 
    {
        alert("Start date is after end date!");
        return false;
    }
    // sets difference date to difference of first date and second date

    diff.setTime(Math.abs(date1.getTime() - date2.getTime()));

    timediff = diff.getTime();
    
    days = Math.floor(timediff / (1000 * 60 * 60 * 24)); 
    // alert(timediff);

    if(days > (bnb_daylimit-1) && days >= 0)
    {
        alert ("Availability search is limited to within " + bnb_daylimit + " days! ");
        return false;
    }
    else return true;
}

/*******************************************
 * BNB Cookie functions
 * Author: Rowena Abarrientos
 * Last Updated: Aug 15, 2006 1:38 PM
 ******************************************/

/* Get Cookie */
function bnb_getCookie(c_name)
{
    // alert(document.cookie.length);
    if (document.cookie.length > 0)
    { 
        c_start = document.cookie.indexOf(c_name + "=")
        if (c_start != -1)
        { 
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) c_end = document.cookie.length;
            return unescape( document.cookie.substring(c_start , c_end) );
        } 
    }
    return null;
}

/* Set Cookie Value */
function bnb_setCookie(c_name, value, expiredays)
{
    var exdate = new Date()
    exdate.setDate( exdate.getDate() + expiredays);
    document.cookie = c_name + "=" + escape(value)+ ((expiredays==null) ? "" : "; expires=" + exdate);
}

 
/*******************************************
 * BNB Checkbox Selection functions
 * Author: Rowena Abarrientos
 * Last Updated: Aug 15, 2006 1:38 PM
 ******************************************/   
 
/* After selecting dates combinations, get room_date combinations */
function bnb_getChecked()
{
    try
    {
        // alert("yeah!");
        bnb_roomlist = "";
        var data = {};
        var form = $('bnb_form');
        // alert(form);
	    var ele;
    	
	    // alert(form.length);
	    for(var i=0; i < form.length; i++) 
	    {
		    ele = form[i];
		    switch(ele.tagName.toLowerCase()) 
		    {
			    case "hidden":
			    case "button":
				    break;
			    case "textarea":
				    data[ele.name] = ele.value;
				    break;
			    case "input":
				    switch(ele.type) {
					    case "text": break;
	                    case "radio": break;
					    case "checkbox":
					        if(ele.checked)
					        {
					            //alert(checked + " = " + checked.indexOf(","));
					            if (bnb_roomlist.length == 0) bnb_roomlist += ele.id;
		                        else bnb_roomlist += "," + ele.id;    		                
		                    }		
		                    data[ele.id] = ele.value;
						    break;
					    default:
						    break;
				    }
				    break;
			    default:
				    break;
		    }
        }
    } 
    catch (e) 
    {
        var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
        throw ("bnb_getChecked Exception: " + msg);
        return;
    }        
}/* end function getChecked() */
    
/* After selecting room_date combinations, remove items checked for deletion */
function bnb_getUnchecked()
{
    try
    {
        bnb_roomlist = "";
        var form = $('bnb_form');
        // alert(form);
        var ele2 = null;
        
        // alert(form.length);
        for(var i=0; i < form.length; i++) 
        {
	        ele2 = form[i];
	        switch(ele2.tagName.toLowerCase()) 
	        {
		        case "hidden":
		        case "button":
			        break;
		        case "textarea":
			        data[ele2.name] = ele2.value;
			        break;
		        case "input":
			        switch(ele2.type) {
				        case "text": break;
                        case "radio": break;
				        case "checkbox":
				            if(!ele2.checked)
				            {
				                // alert(ele2.id + " = " + ele2.checked);
				                if (bnb_roomlist.length == 0) bnb_roomlist += ele2.id;
	                            else bnb_roomlist += "," + ele2.id;    		                
	                        }		
					        break;
				        default:
					        break;
			        }
			        break;
		        default:
			        break;
		    }
        }
    } 
    catch (e) 
    {
        var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
        throw ("bnb_getChecked Exception: " + msg);
        return;
    } 
} /* function getUnchecked() */


/*******************************************
 * BNB AJAX & JSON functions
 * Author: Rowena Abarrientos
 * Last Updated: Aug 15, 2006 1:38 PM
 ******************************************/  

function bnb_loadCalendar_()
{
    try
    {
        var dtFrom = $F('bnb_startDate');	
	    var dtTo = $F('bnb_endDate'); 
	    // var dtFrom = document.getElementById('bnb_startDate').value;	
	    // var dtTo = document.getElementById('bnb_endDate').value;
    	 	
	    //alert(dtFrom + " " + dtTo);
	    if(dtFrom != null && dtTo != null && trimAll(dtFrom) != "" && trimAll(dtTo) != "")
        {
            // var url = "json_calendar.aspx?cmd=availability&bnbid=" + bnb_id + "&from=" + dtFrom + "&to=" + dtTo;
            // var url = bnb_domain + "json_calendar.aspx?cmd=availability&bnbid=" + bnb_id + "&from=" + dtFrom + "&to=" + dtTo;
            var url = bnb_domain + "json_calendar.aspx?cmd=json_avail&bnbid=" + bnb_id + "&from=" + dtFrom + "&to=" + dtTo;
            var calledURL = "";
            var randomnumber = Math.floor(Math.random()*100001);
		    if (url.indexOf("?") == -1) {
			    calledURL = url + "?rnd=" + randomnumber;
		    } else {
			    calledURL = url + "&rnd=" + randomnumber;
		    }
		    //alert(calledURL);
		    
	        var s = document.createElement("SCRIPT");
	        s.src = calledURL;
    //	    var h = document.getElementsByTagName("head").item(0);
    //      // var h = document.getElementsByTagName("head");
    //	    // var item = h.item(h.length-1);
    //	    h.appendChild(s);
    //	    window.mytimeout = window.setTimeout("displayContent()", 120); 	
            var h = $("bnb_dvCalendar");
            //alert(h);
            //alert(s.src);
	        if(h) h.appendChild(s); 
	              
	    }
	    else
	    {
	        alert("Invalid dates!");
	    } 
	} 
    catch (e) 
    {
        var bnb_msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
        alert("Error: Failed to load availability calendar. \n" + bnb_msg);
        return;
    } 
}// end function loadCalendar()

function bnb_loadCalendar() 
{
	document.getElementById("bnb_dvCalendar").innerHTML = "<div id='bnb_searching'><strong>Searching for available rooms...</strong><br /><br /><img src='images/loading.gif' /></div>";
	document.getElementById("bnb_dvRooms").innerHTML = "";	
	setTimeout("bnb_loadCalendarData()", 1);

}

function bnb_loadCalendarData()
{
	
    try
    {
        var dtFrom = $F('bnb_startDate');	
	    var dtTo = $F('bnb_endDate'); 
	    // var dtFrom = document.getElementById('bnb_startDate').value;	
	    // var dtTo = document.getElementById('bnb_endDate').value;
    	 	
	    //alert(dtFrom + " " + dtTo);
	    if(dtFrom != null && dtTo != null && trimAll(dtFrom) != "" && trimAll(dtTo) != "")
        {
            // var url = "json_calendar.aspx?cmd=availability&bnbid=" + bnb_id + "&from=" + dtFrom + "&to=" + dtTo;
            // var url = bnb_domain + "json_calendar.aspx?cmd=availability&bnbid=" + bnb_id + "&from=" + dtFrom + "&to=" + dtTo;
            var url = bnb_domain + "json_calendar.aspx?cmd=json_avail&bnbid=" + bnb_id + "&from=" + dtFrom + "&to=" + dtTo;
            var calledURL = "";
            var randomnumber = Math.floor(Math.random()*100001);
		    if (url.indexOf("?") == -1) {
			    calledURL = url + "?rnd=" + randomnumber;
		    } else {
			    calledURL = url + "&rnd=" + randomnumber;
		    }
		    //alert(calledURL);
		    
	        var s = document.createElement("SCRIPT");
	        s.src = calledURL;
    //	    var h = document.getElementsByTagName("head").item(0);
    //      // var h = document.getElementsByTagName("head");
    //	    // var item = h.item(h.length-1);
    //	    h.appendChild(s);
    //	    window.mytimeout = window.setTimeout("displayContent()", 120); 	
            var h = $("bnb_dvCalendar");
            //alert(h);
            //alert(s.src);
	        if(h) h.appendChild(s); 
	              
	    }
	    else
	    {
	        alert("Invalid dates!");
	    } 
	} 
    catch (e) 
    {
        var bnb_msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
        alert("Error: Failed to load availability calendar. \n" + bnb_msg);
        return;
    } 			
}// end function loadCalendar()

function bnb_preloadRooms()
{
    try
    {
        var bnb_merged = bnb_getCookie('bnb_roomlist' + bnb_id)
        if(bnb_merged != null)
        {
            bnb_roomlist = uniqueStrings(bnb_merged);
            // alert(bnb_roomlist);
            if(trimAll(bnb_roomlist) != "") bnb_loadRooms();
        }        
    } 
    catch (e) 
    {
        var bnb_msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
        alert("Error: Failed to preload room list. \n" + bnb_msg);
        return;
    } 
}// end function loadRooms()


function bnb_loadRooms() {
	//document.getElementById("bnb_dvCalendar").innerHTML = "<div id='bnb_searching'><strong>Searching for available rooms...</strong><br /><br /><img src='images/loading.gif' /></div>";
//	document.getElementById("bnb_dvRooms").innerHTML = "";	
	setTimeout("bnb_loadRoomData()", 750);
}

function bnb_loadRoomData()
{
    try
    {
        bnb_getChecked();	
        
        var bnb_merged = bnb_getCookie('bnb_roomlist' + bnb_id)
        if(bnb_merged == null) bnb_merged = "";
        // alert(bnb_merged);
        if(bnb_roomlist != null && trimAll(bnb_roomlist) != "") // bnb_roomlist.indexOf(",") > 0)
        {           
            if(bnb_merged.length > 0) bnb_merged += "," + bnb_roomlist; 
            else bnb_merged = bnb_roomlist; 
        }
            
        if(bnb_merged.length > 0) bnb_roomlist = uniqueStrings(bnb_merged);
        // alert($('bnb_selectedrooms'));
        $('bnb_selectedrooms').value = bnb_roomlist;
        
        // alert(bnb_roomlist);

	    if(trimAll(bnb_roomlist) != "")
        {
            var url = bnb_domain + "json_room.aspx?cmd=rooms&bnbid=" + bnb_id + "&roomlist=" + bnb_roomlist;
            var calledURL = "";
            var randomnumber = Math.floor(Math.random()*100001);
		    if (url.indexOf("?") == -1) {
			    calledURL = url + "?rnd=" + randomnumber;
		    } else {
			    calledURL = url + "&rnd=" + randomnumber;
		    }
		    
		    var s = document.createElement("SCRIPT");
	        s.src = calledURL;

            var h = $("bnb_dvRooms");
	        // alert(h);
	        if(h) h.appendChild(s); 	    
	    }
//	    else
//	    {
//	        alert("No selected rooms!");
//	    }
    } 
    catch (e) 
    {
        var bnb_msg = (typeof e == "string") ? e : ((e.description ) ? e.description : "Unknown Error");
        alert("Error: Failed to load room list. \n" + bnb_msg);
        return;
    } 
}// end function loadRooms()

function bnb_reloadRooms()
{
    try
    {
        bnb_getUnchecked();	
        bnb_setCookie('bnb_roomlist' + bnb_id, bnb_roomlist, 365)  
        if($('bnb_selectedrooms') != null)  $('bnb_selectedrooms').value = bnb_roomlist; 
            
	    // alert(bnb_roomlist);
	    if(bnb_roomlist != null && trimAll(bnb_roomlist) != "")
        {
            var url = bnb_domain + "json_room.aspx?cmd=rooms&bnbid=" + bnb_id + "&roomlist=" + bnb_roomlist;
            var calledURL = "";
            var randomnumber = Math.floor(Math.random()*100001);
		    if (url.indexOf("?") == -1) {
			    calledURL = url + "?rnd=" + randomnumber;
		    } else {
			    calledURL = url + "&rnd=" + randomnumber;
		    }
		    
		    var s = document.createElement("SCRIPT");
	        s.src = calledURL;

            var h = $("bnb_dvRooms");
	        if(h) h.appendChild(s); 
	    }
	    else
	    {
	        $("bnb_dvRooms").innerHTML = "";
	        if(trimAll(bnb_roomlist) != "") loadCalendar();
	    }
    } 
    catch (e) 
    {
        var bnb_msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
        alert("Error: Failed to load room list. \n" + bnb_msg);
        return;
    } 
}// end function reloadRooms()

function bnb_finalizeRooms()
{
    try
    {
        bnb_getUnchecked();	
        bnb_setCookie('bnb_roomlist' + bnb_id, null, 365)  
        if($('bnb_selectedrooms') != null)  $('bnb_selectedrooms').value = bnb_roomlist; 
    } 
    catch (e) 
    {
        var bnb_msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
        alert("Error: Failed to load room list. \n" + bnb_msg);
        return;
    } 
}// end function finalizeRooms()



