// JavaScript Document

var xmlreqs = new Array();
var displayArr = new Array();
var holDealsStr=new Array();
var cruiseDealsStr=new Array();
var flightDealsStr=new Array();
var hotelDealsStr=new Array();
var dpDealsStr=new Array();

var noDealsStr = "<span class='deals'>Find our very best prices on the <a href='/deals/'>Deals Page</a></span>";

function CXMLReq(freed) { 
	this.freed = freed; 
	this.xmlhttp = false;
	 
	try{
		this.xmlhttp=new XMLHttpRequest();
	} catch (err) {
		try{
			this.xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
		} catch (err){
			this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	/*
	if (window.XMLHttpRequest) { 
		this.xmlhttp = new XMLHttpRequest(); 
	} else if (window.ActiveXObject) { 
		this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
	} */
} 

function xmlreqGET(url) { 
	var pos = -1; 
	for (var i=0; i<xmlreqs.length; i++) { 
		if (xmlreqs[i].freed == 1) { 
			pos = i; 
			break; 
		} 
	} 
	
	if (pos == -1) { 
		pos = xmlreqs.length; 
		xmlreqs[pos] = new CXMLReq(1); 
	} 
	if (xmlreqs[pos].xmlhttp) { 
		xmlreqs[pos].freed = 0; 
		xmlreqs[pos].xmlhttp.open("GET",url,true); 
		xmlreqs[pos].xmlhttp.onreadystatechange = function() { 
				if (typeof(xmlhttpChange) != 'undefined') { 
					xmlhttpChange(pos); 
				} 
			} 
		if (window.XMLHttpRequest) { 
			xmlreqs[pos].xmlhttp.send(null); 
		} else if (window.ActiveXObject) { 
			xmlreqs[pos].xmlhttp.send(); 
		} 
	} 
} 

function xmlreqPOST(url,data) { 
	var pos = -1; 
	for (var i=0; i<xmlreqs.length; i++) { 
		if (xmlreqs[i].freed == 1) { 
			pos = i; 
			break; 
		} 
	} 
	
	if (pos == -1) { 
		pos = xmlreqs.length; 
		xmlreqs[pos] = new CXMLReq(1); 
	} 
	if (xmlreqs[pos].xmlhttp) { 
		xmlreqs[pos].freed = 0; 
		xmlreqs[pos].xmlhttp.open("POST",url,true); 
		xmlreqs[pos].xmlhttp.onreadystatechange = function() { 
				if (typeof(xmlhttpChange) != 'undefined') { 
					xmlhttpChange(pos); 
				} 
			} 
		xmlreqs[pos].xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
		xmlreqs[pos].xmlhttp.send(data); 
	} 
} 

function xmlhttpChange(pos) { 
	if (typeof(xmlreqs[pos]) != 'undefined' && xmlreqs[pos].freed == 0 && xmlreqs[pos].xmlhttp.readyState == 4) { 
		if (xmlreqs[pos].xmlhttp.status == 200 || xmlreqs[pos].xmlhttp.status == 304) { 
//			handle_response(xmlreqs[pos].xmlhttp.responseXML); 
			handle_response(xmlreqs[pos].xmlhttp.responseText);
		} else { 
			handle_error(); 
		} 
		xmlreqs[pos].freed = 1; 
	} 
}

function handle_response(responseText) {
	var dtidx = responseText.indexOf('dt');
	
	if ( responseText.substr(dtidx,3) == 'dt2' || responseText.substr(dtidx,3) == 'dt3' || responseText.substr(dtidx,3) == 'dt9' || responseText.substr(dtidx,3) == 'dt5' ) {
		responseText=responseText.substr(dtidx);
	}
	if ( responseText.substr(0,2) == "dt" && responseText.length > 3 ) {
	
		// put returned data into an array of deals per type
		if ( responseText.substr(0,3) == "dt2" || responseText.substr(0,3) == "dt9") {
			holDealsStr = responseText.substr(3).split("|");
		}	
		if ( responseText.substr(0,3) == "dt3" ) {
			flightDealsStr = responseText.substr(3).split("|");
		}	
		if ( responseText.substr(0,3) == "dt5" ) {
			cruiseDealsStr = responseText.substr(3).split("|");
		}	
		// build the relevant amount of deals from each subset, in the specific order, into an array to display
		var currCnt = 0,dealCnt = 0;
		while ( dealCnt < 5 && currCnt <= 25) {
			if ( holDealsStr[currCnt] && holDealsStr[currCnt] != '' ) {
				displayArr[dealCnt] = holDealsStr[currCnt];
				dealCnt++; 
			}
			if ( cruiseDealsStr[currCnt] && cruiseDealsStr[currCnt] != '' ) {
				displayArr[dealCnt] = cruiseDealsStr[currCnt];
				dealCnt++;
			}
			if ( flightDealsStr[currCnt] && flightDealsStr[currCnt] != '' ) {
				displayArr[dealCnt] = flightDealsStr[currCnt];
				dealCnt++;
			}
			currCnt++; 
		} 

		// put the display array of deals into a string 
		var displayStr = '';
		x=0;
		while ( x<=5 && x<= displayArr.length ) {
			if ( displayArr[x] && displayArr[x] != '' ) {
				displayStr += displayArr[x];
			}
			x++;
		}
		if (displayStr=='') {
			displayStr = noDealsStr;
		}
			
		document.getElementById('FeedDeals').innerHTML=displayStr;
		
	} else {
		// if the deal type is unknown
		if ( document.getElementById('FeedDeals').innerHTML == '<img class="polling" src="/images/siteElements/deals/feed-polling.gif" alt="Loading...">' ||
			 document.getElementById('FeedDeals').innerHTML == noDealsStr ) {
			document.getElementById('FeedDeals').innerHTML='';
		}
		
		var responseArr = responseText.split("|");

		var displayStr = '';
		x=0;
		while ( x<=4 && x<= responseArr.length ) {
			if ( responseArr[x] && responseArr[x] != '' ) {
				displayStr += responseArr[x];
			}
			x++;
		}

		if ( document.getElementById('FeedDeals').innerHTML == '' && displayArr == '' ) {
			document.getElementById('FeedDeals').innerHTML=noDealsStr;		
		} else {
			if ( displayArr.length > 3 && displayArr.substr(0,2) != 'dt' ) {
				document.getElementById('FeedDeals').innerHTML=document.getElementById('FeedDeals').innerHTML+displayStr;
			}
		}
	}
}

function handle_error() {
	document.getElementById('FeedDeals').innerHTML=noDealsStr;
}

