/********************************************************************************************
 Author: Pier Paolo Manca
 Date: 08/04/2009
 
 Destinations pop-up - AJAX
 Retrieve informations for the destination ajax section
 
 Used in all the main sections 
 Included by: /includes/ajax/destinations-website-template.html
********************************************************************************************/
var xmlHttp2;
var imagePath = "http://www.destinations.ie/images/dream_deals/";
var imagePathClub = "http://www.clubtravel.ie/common/cms/images/public/"
var imageSource = "/images/null.gif";
var destSource = "N/A";
var travelDate = "N/A";
var longDescription = "N/A";
var type = 0;

var data = null;

/***********************************************/
/***********************************************/
/*			     HTTP Functions			       */
/***********************************************/
/***********************************************/

function searchDestinationsOffers(url, parseType){ 
	xmlHttp2=GetXmlHttpObject();
	if (xmlHttp2==null){
		alert ("Your browser does not support AJAX!");
	  return;
	}
	type = parseType	
	xmlHttp2.onreadystatechange=stateChanged2;
	xmlHttp2.open("GET",url,true);
	xmlHttp2.send(null);
}

function stateChanged2(){ 
	if (xmlHttp2.readyState==4){
		switch(type){
			case 1:
				parseXMLDestinations(xmlHttp2.responseText);		
				document.getElementById("popUpDestinationsWebsite").innerHTML = TrimPath.processDOMTemplate("divTemplate", data);
				break;
			case 2:
				parseXMLFlights(xmlHttp2.responseText);
				document.getElementById("popUpDestinationsWebsite").innerHTML = TrimPath.processDOMTemplate("divTemplate", data);
				break;
			case 3:
				parseXMLHolidays(xmlHttp2.responseText);
				document.getElementById("popUpDestinationsWebsite").innerHTML = TrimPath.processDOMTemplate("divTemplate", data);
				break;
			case 4:
				parseXMLHotels(xmlHttp2.responseText);
				document.getElementById("popUpDestinationsWebsite").innerHTML = TrimPath.processDOMTemplate("divTemplate", data);
				break;
		}
	}
}

function GetXmlHttpObject(){
	var xmlHttp2=null;
	try{
	  // Firefox, Opera 8.0+, Safari
	  xmlHttp2=new XMLHttpRequest();
	  }catch (e){
		  // Internet Explorer
		  	try{
		    	xmlHttp2=new ActiveXObject("Msxml2.XMLHTTP");
			}catch (e){
			    xmlHttp2=new ActiveXObject("Microsoft.XMLHTTP");
		    }
	  }
	return xmlHttp2;
}

/***********************************************/
/***********************************************/
/*			   Parsing Functions			   */
/***********************************************/
/***********************************************/

function getXmlDOC2(text){
	var xmlDoc;
	
	try //Internet Explorer
 	{
		  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		  xmlDoc.async="false";
		  xmlDoc.loadXML(text);
	 }catch(e){
		  try //Firefox, Mozilla, Opera, etc.
		  {
			  parser=new DOMParser();
			  xmlDoc=parser.parseFromString(text,"text/xml");
		  }catch(e){
			  alert(e.message);
			  return;
		  }
	}
	
	return(xmlDoc);
}

function parseXMLDestinations(text){
	
	var xmlDoc = getXmlDOC2(text);
			
	try{
		var length = 0;
		
		if(xmlDoc.getElementsByTagName("root")[0].childNodes[0]!=null)
			length = xmlDoc.getElementsByTagName("root")[0].childNodes.length;
		
		if(length != 0){
			if(xmlDoc.getElementsByTagName("image")[0].childNodes[0]!=null)
				imageSource = imagePath + xmlDoc.getElementsByTagName("image")[0].childNodes[0].nodeValue;
			if(xmlDoc.getElementsByTagName("destination")[0].childNodes[0]!=null)
				destSource = xmlDoc.getElementsByTagName("destination")[0].childNodes[0].nodeValue;
			if(xmlDoc.getElementsByTagName("valid")[0].childNodes[0]!=null)
				travelDate = xmlDoc.getElementsByTagName("valid")[0].childNodes[0].nodeValue;
			if(xmlDoc.getElementsByTagName("header")[0].childNodes[0]!=null)
				longDescription = xmlDoc.getElementsByTagName("header")[0].childNodes[0].nodeValue;
		}
		
		data = {
		    offer : {imgSrc: imageSource, destination: destSource, date: travelDate, description: longDescription}
		};
	}catch(e){
	}
}

function parseXMLFlights(text){
	
	var xmlDoc = getXmlDOC2(text);
			
	try{
		var length = 0;
		
		if(xmlDoc.getElementsByTagName("root")[0].childNodes[0]!=null)
			length = xmlDoc.getElementsByTagName("root")[0].childNodes.length;
		
		if(length != 0){
			if(xmlDoc.getElementsByTagName("image")[0].childNodes[0]!=null)
				imageSource = imagePathClub + xmlDoc.getElementsByTagName("image")[0].childNodes[0].nodeValue;
			else
				imageSource = "/images/logo.jpg";
			if(xmlDoc.getElementsByTagName("CITYNAME")[0].childNodes[0]!=null)
				destSource = xmlDoc.getElementsByTagName("CITYNAME")[0].childNodes[0].nodeValue;
			else
				destSource = ""
			if(xmlDoc.getElementsByTagName("valid")[0].childNodes[0]!=null)
				travelDate = xmlDoc.getElementsByTagName("valid")[0].childNodes[0].nodeValue;
			else
				travelDate = ""
			if(xmlDoc.getElementsByTagName("header")[0].childNodes[0]!=null)
				longDescription = xmlDoc.getElementsByTagName("header")[0].childNodes[0].nodeValue;
			else
				longDescription = ""
		}
		
		data = {
		    offer : {imgSrc: imageSource, destination: destSource, date: travelDate, description: longDescription}
		};
	}catch(e){
		data = {
			offer : {imgSrc: "/images/logo.jpg", destination: "Flight Offer", date: "", description: ""}
		};
	}
}

function parseXMLHolidays(text){
	
	var xmlDoc = getXmlDOC2(text);
			
	try{
		var length = 0;
		
		if(xmlDoc.getElementsByTagName("root")[0].childNodes[0]!=null)
			length = xmlDoc.getElementsByTagName("root")[0].childNodes.length;
		
		if(length != 0){
			if(xmlDoc.getElementsByTagName("image")[0].childNodes[0]!=null)
				imageSource = imagePathClub + xmlDoc.getElementsByTagName("image")[0].childNodes[0].nodeValue;
			else
				imageSource = "/images/logo.jpg";
			if(xmlDoc.getElementsByTagName("regionName")[0].childNodes[0]!=null)
				destSource = xmlDoc.getElementsByTagName("regionName")[0].childNodes[0].nodeValue;
			else
				destSource = ""
			if(xmlDoc.getElementsByTagName("valid")[0].childNodes[0]!=null)
				travelDate = xmlDoc.getElementsByTagName("valid")[0].childNodes[0].nodeValue;
			else
				travelDate = ""
			if(xmlDoc.getElementsByTagName("header")[0].childNodes[0]!=null)
				longDescription = xmlDoc.getElementsByTagName("header")[0].childNodes[0].nodeValue;
			else
				longDescription = ""
		}

		data = {
		    offer : {imgSrc: imageSource, destination: destSource, date: travelDate, description: longDescription}
		};
	}catch(e){
		data = {
			offer : {imgSrc: "/images/logo.jpg", destination: "Holiday Offer", date: "", description: ""}
		};
	}
}

function parseXMLHotels(text){
	
	var xmlDoc = getXmlDOC2(text);
 		
	try{
		var length = 0;
		
		if(xmlDoc.getElementsByTagName("root")[0].childNodes[0]!=null)
			length = xmlDoc.getElementsByTagName("root")[0].childNodes.length;
		
		if(length != 0){
			if(xmlDoc.getElementsByTagName("image")[0].childNodes[0]!=null)
				imageSource = imagePathClub + xmlDoc.getElementsByTagName("image")[0].childNodes[0].nodeValue;
			else
				imageSource = "/images/logo.jpg";
			if(xmlDoc.getElementsByTagName("cityNameDescription")[0].childNodes[0]!=null)
				destSource = xmlDoc.getElementsByTagName("cityNameDescription")[0].childNodes[0].nodeValue;
			else
				destSource = ""
			if(xmlDoc.getElementsByTagName("valid")[0].childNodes[0]!=null)
				travelDate = xmlDoc.getElementsByTagName("valid")[0].childNodes[0].nodeValue;
			else
				travelDate = ""
			if(xmlDoc.getElementsByTagName("header")[0].childNodes[0]!=null)
				longDescription = xmlDoc.getElementsByTagName("header")[0].childNodes[0].nodeValue;
			else
				longDescription = ""
		}
		
		data = {
		    offer : {imgSrc: imageSource, destination: destSource, date: travelDate, description: longDescription}
		};
	}catch(e){
		data = {
			offer : {imgSrc: "/images/logo.jpg", destination: "Hotel Offer", date: "", description: ""}
		};
	}
}

/***********************************************/
/***********************************************/
/*			    CSS Functions	   		       */
/***********************************************/
/***********************************************/

function ShowDestinationsOfferPopup(hoveritem){
	// Set popup to visible
	/*document.getElementById("popUpDestinationsWebsite").style.top = getElementTopPosition(hoveritem) + 18;
	document.getElementById("popUpDestinationsWebsite").style.left = getElementLeftPosition(hoveritem) + 20;
	document.getElementById("popUpDestinationsWebsite").style.visibility = "Visible";*/
	//alert($('[id="popUpDestinationsWebsite"]').fadeIn());
	$('[id="popUpDestinationsWebsite"]').css("visibility", "visible");
	$('[id="popUpDestinationsWebsite"]').css("top", (getElementTopPosition(hoveritem) + 18));
	$('[id="popUpDestinationsWebsite"]').css("left", (getElementLeftPosition(hoveritem) + 20));
	
	
	/*alert(document.getElementById("popUpDestinationsWebsite"))*/
	
}

function HideDestinationsOfferPopup(){
	document.getElementById("popUpDestinationsWebsite").innerHTML = "<img src='/images/ajax-loading-orange.gif' class='padding10px' />";
	document.getElementById("popUpDestinationsWebsite").style.visibility  = "Hidden";	
}

/**
* returns the absolute left location of an element.
* param: e: element
* return: an integer representing the offset from left.
*/
function getElementLeftPosition(e){
	var x=0;
	while(e){
		x+=e.offsetLeft+e.clientLeft;
		e=e.offsetParent;
	}
	return x;
}

/**
* returns the absolute top location of an element.
* param: e: element
* return: an integer representing the offset from top.
*/
function getElementTopPosition(e){
	var y=0;
	while(e){
		y+=e.offsetTop+e.clientTop;
		e=e.offsetParent;
	}
	return y;
}

