// JavaScript Document
var http = getHTTPObject();
var httpTwo = getHTTPObject();
var default_url = "/grouptours/callBack.php";
var xmlDoc;

function getHTTPObject() {
	var xmlhttp;
	try {
		xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
		} catch (E) {
			xmlhttp = false;
		}
	}
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp = false;
		}
	}
	return xmlhttp;
}

var mouseOffset = null;
var currentObject = null;

isNS4 = (document.layers) ? 1 : 0;
isIE4 = (document.all) ? 1 : 0;
isW3C = (document.getElementById && !document.all) ? 1 : 0;

function vendorQuery(vendorID){
	var url = default_url + "?vendorID=" + vendorID;
	url = url + "&sid=" + Math.random();	
	if((http.readyState == 0) || (http.readyState == 4)){			
		http.open("GET", url, true); 
		http.onreadystatechange = handleHttpVendorResponse;
		http.send(null);
	}
}

function singleVenueQuery(venueID){
	var url = default_url + "?venueID=" + venueID;
	url = url + "&sid=" + Math.random();	
	if((http.readyState == 0) || (http.readyState == 4)){			
		http.open("GET", url, true); 
		http.onreadystatechange = handleHttpSingleVenueResponse;
		http.send(null);
	}
}

function listQuery(object, pageNum){	
	var interest = document.getElementById('interestVal').value;	
	var region = document.getElementById('regionVal').value;
	
	if(object == document.getElementById('regionVal')) {		
		cityQuery();	
	} else {
		var city = document.getElementById('cityVal').value;
	}
	
	var url = default_url + "?page=listQuery&interest=" + interest + "&region=" + region + "&city=" + city + "&pageNum=" + pageNum;
	url = url + "&sid=" + Math.random();	
	if((http.readyState == 0) || (http.readyState == 4)){			
		http.open("GET", url, true); 
		http.onreadystatechange = handleHttpListResponse;
		http.send(null);
	}	
}

function venueQuery(object, pageNum){
	var type = document.getElementById('typeVal').value;	
	var region = document.getElementById('regionVal').value;
	
	if(object == document.getElementById('regionVal')) {		
		venueCityQuery();	
	} else {
		var city = document.getElementById('cityVal').value;
	}
	
	var url = default_url + "?page=venueQuery&region=" + region + "&city=" + city + "&pageNum=" + pageNum + "&type=" + type;	
	url = url + "&sid=" + Math.random();	
	if((http.readyState == 0) || (http.readyState == 4)){			
		http.open("GET", url, true); 
		http.onreadystatechange = handleHttpVenueResponse;
		http.send(null);
	}	
}

function cityQuery(){
	var region = document.getElementById('regionVal').value;
	
	var url = default_url + "?page=cityQuery&region=" + region;
	url = url + "&sid=" + Math.random();	
	if((httpTwo.readyState == 0) || (httpTwo.readyState == 4)){			
		httpTwo.open("GET", url, true); 
		httpTwo.onreadystatechange = handleHttpCityResponse;
		httpTwo.send(null);
	}	
}

function venueCityQuery(){
	var region = document.getElementById('regionVal').value;
	
	var url = default_url + "?page=venueCityQuery&region=" + region;
	url = url + "&sid=" + Math.random();	
	if((httpTwo.readyState == 0) || (httpTwo.readyState == 4)){			
		httpTwo.open("GET", url, true); 
		httpTwo.onreadystatechange = handleHttpCityResponse;
		httpTwo.send(null);
	}	
}

function addVendor(vendorID){
	var url = default_url + "?page=addVendor&vendor=" + vendorID;
	url = url + "&sid=" + Math.random();	
	if((httpTwo.readyState == 0) || (httpTwo.readyState == 4)){			
		httpTwo.open("GET", url, true); 
		httpTwo.onreadystatechange = handleHttpAddResponse;
		httpTwo.send(null);
	}	
}

function removeStep(stepID){
	var url = default_url + "?page=removeStep&step=" + stepID;
	url = url + "&sid=" + Math.random();	
	if((httpTwo.readyState == 0) || (httpTwo.readyState == 4)){			
		httpTwo.open("GET", url, true); 
		httpTwo.onreadystatechange = handleHttpAddResponse;
		httpTwo.send(null);
	}	
}

function handleHttpVendorResponse(){
	if (http.readyState == 4) {		
		if ((http.status == 200)||(http.status == 0)) {			
			var response = eval ('(' + http.responseText + ')');		
			
			if(response.name.length > 0){
				if(response.photo_location != null){
					document.getElementById('popImage').src = '/images/vendors/resized/main/' + response.photo_location;
					document.getElementById('popImage').alt = response.photo_description;
				}
				
				if(parseInt(response.zip) == 0) response.zip = '';
				
				document.getElementById('vendorDesc').innerHTML = "<h3>" + response.name + "</h3><h4>" + response.city + ", TN" + "</h4><p>" + response.description + "</p>";	
				document.getElementById('popInfo').innerHTML = "<strong>Contact Information:</strong><br/>" + response.address + "<br/>" + response.city + ", TN " + response.zip;
				if(response.phone.length > 5) document.getElementById('popInfo').innerHTML += "<br/>Phone: " + response.phone;
				try{
                if(response.website.length > 5) document.getElementById('popInfo').innerHTML += "<br/>Web: <a href='http://" + response.website + "' target='_blank'>Visit this site</a>";
				} catch(e){ }
				
				/* mouseOffset = getMouseOffset(currentObject); */
				var layerHolder = document.getElementById('vendorPop');
				var overLayer = document.getElementById('vendorBodyInfo');			
				document.getElementById('addInfo').href = '/vendors/' + response.directory;
				var bodyHeight = getCalculatedProperty('vendorBody', "height");
				bodyHeight = parseInt(bodyHeight);
				bodyHeight += 120;			
				layerHolder.style.top = (mouseOffset.y - bodyHeight) + 'px';
				layerHolder.style.visibility="visible";
			}			
		}
	}
}

function handleHttpSingleVenueResponse(){
	if (http.readyState == 4) {		
		if ((http.status == 200)||(http.status == 0)) {			
			var response = eval ('(' + http.responseText + ')');		
			
			if(response.name.length > 0){
				if(response.photo_location != null){
					document.getElementById('popImage').src = '';
					document.getElementById('popImage').alt = '';
				}
				
				if(parseInt(response.zip) == 0) response.zip = '';
				
				document.getElementById('vendorDesc').innerHTML = "<h3>" + response.name + "</h3><h4>" + response.city + ", TN" + "</h4><p>" + response.description + "</p>";	
				document.getElementById('popInfo').innerHTML = "" + response.address + "<br/>" + response.city + ", TN " + response.zip;
				document.getElementById('popInfo').innerHTML += "<br/><br/><strong>Contact Information:</strong><br/>" + response.contact + "<br/>" + response.title + "<br/>" + response.cvb;				
				if(response.phone.length > 5) document.getElementById('popInfo').innerHTML += "<br/>Phone: " + response.phone;
				try{
                if(response.email.length > 5) document.getElementById('popInfo').innerHTML += "<br/>Email: <a href='mailto:" + response.email + "'>Email this CVB</a>";
				} catch(e){ }
				
				/* mouseOffset = getMouseOffset(currentObject); */
				var layerHolder = document.getElementById('vendorPop');
				var overLayer = document.getElementById('vendorBodyInfo');			
				
				var bodyHeight = getCalculatedProperty('vendorBody', "height");
				bodyHeight = parseInt(bodyHeight);
				bodyHeight += 120;			
				layerHolder.style.top = (mouseOffset.y - bodyHeight) + 'px';
				layerHolder.style.visibility="visible";
			}			
		}
	}
}

function handleHttpListResponse(){
	if (http.readyState == 4) {		
		if ((http.status == 200)||(http.status == 0)) {			
			var response = eval ('(' + http.responseText + ')');		
			var totalEntries = response.length;
			var totalList='';
			var totalPages = 0;
			var curPage = 0;
			for(var i=0; i<totalEntries; i++){
				var region;				
				totalPages = parseInt(response[i].maxPages);
				curPage = parseInt(response[i].pageNum);				
				if(response[i].areaID == '3') region = 'East';
				else if(response[i].areaID == '2') region = 'Middle';
				else if(response[i].areaID == '1') region = 'West';
				totalList += "<div class=\"itinerary\"><a href=\"\" class=\"addItinerary\"  onclick=\"addVendor(" + response[i].vendorID + "); return false;\">Add To Itinerary</a><h4><a href=\"/vendors/" + response[i].directory + "/\" onclick=\"displayHelp(this," + response[i].vendorID + "); return false; \">" + response[i].name + "</a></h4><p>region: <strong>" + region + " Tennessee</strong> || <strong><a href=\"\" onclick=\"addVendor(" + response[i].vendorID + "); return false;\">&raquo; Add to Itinerary</a></strong></p></div>";
			}			
			document.getElementById('vendorList').innerHTML=totalList;	
			
			var pageDif = 6;
			var pageMax = pageDif;
			var pageMin = 0;
			var pageNav = '';
			
			if((pageMax + curPage) <= totalPages) pageMax = (curPage + pageMax);
			else pageMax = (totalPages);
			if(pageMin < (curPage - pageDif)) pageMin = (curPage - pageDif); 
			
			if(totalPages > 1){
				if(curPage > 0) pageNav += "<a href=\"\" onclick=\"listQuery(this, " + (curPage - 1) + "); return false;\">&laquo;Prev</a> ";
				
				for(var i=pageMin; i<pageMax; i++){
					if(i == curPage) pageNav += " " + (i+1) + " ";
					else pageNav += "<a href=\"\" onclick=\"listQuery(this, " + i + "); return false;\">" + (i+1) + "</a> ";
				}				
				
				if(curPage < (totalPages - 1)) pageNav += "<a href=\"\" onclick=\"listQuery(this, " + (curPage + 1) + "); return false;\">Next&raquo<a/>";								
			}			
			document.getElementById('pageNav').innerHTML=pageNav;
		}
	}
}

function handleHttpCityResponse(){
	if (httpTwo.readyState == 4) {		
		if ((httpTwo.status == 200)||(httpTwo.status == 0)) {			
			var response = eval ('(' + httpTwo.responseText + ')');					
			var totalEntries = response.length;
			var totalList='<option value="">None Selected</option>';
			for(var i=0; i<totalEntries; i++){				
				totalList += "<option value=\"" + response[i].cityID + "\">" + response[i].city + "</option>";
			}			
			document.getElementById('cityVal').innerHTML=totalList;
		}
	}
}

function handleHttpAddResponse(){
	if (httpTwo.readyState == 4) {		
		if ((httpTwo.status == 200)||(httpTwo.status == 0)) {			
			var response = eval ('(' + httpTwo.responseText + ')');					
			var totalEntries = response.length;			
			var totalList='';
			for(var i=0; i<totalEntries; i++){
				if(response[i].areaID == '3') region = 'East';
				else if(response[i].areaID == '2') region = 'Middle';
				else if(response[i].areaID == '1') region = 'West'; 
				totalList += "<p><strong>" +  response[i].name + "</strong><br/>" +  region + " Tennessee<br/><a href=\"\" onclick=\"removeStep(" +  response[i].referenceID + "); return false;\">{remove}</a></p>";	
			}
			document.getElementById('itList').innerHTML=totalList;
		}
	}
}

function handleHttpVenueResponse(){
	if (http.readyState == 4) {		
		if ((http.status == 200)||(http.status == 0)) {			
			var response = eval ('(' + http.responseText + ')');		
			var totalEntries = response.length;
			var totalList='';
			var totalPages = 0;
			var curPage = 0;
			for(var i=0; i<totalEntries; i++){
				var region;				
				totalPages = parseInt(response[i].maxPages);
				curPage = parseInt(response[i].pageNum);				
				if(response[i].areaID == '3') region = 'East';
				else if(response[i].areaID == '2') region = 'Middle';
				else if(response[i].areaID == '1') region = 'West';
				totalList += "<div class=\"itinerary\"><h4><a href=\"mailto:" + response[i].cvb_email + "/\" onclick=\"displayVenueHelp(this," + response[i].venue_id + "); return false; \">" + response[i].venue_name + "</a></h4><p class=\"noBuild\">region: <strong>" + region + " Tennessee</strong></p></div>";
			}			
			document.getElementById('vendorList').innerHTML=totalList;	
			
			var pageDif = 6;
			var pageMax = pageDif;
			var pageMin = 0;
			var pageNav = '';
			
			if((pageMax + curPage) <= totalPages) pageMax = (curPage + pageMax);
			else pageMax = (totalPages);
			if(pageMin < (curPage - pageDif)) pageMin = (curPage - pageDif); 
			
			if(totalPages > 1){
				if(curPage > 0) pageNav += "<a href=\"\" onclick=\"venueQuery(this, " + (curPage - 1) + "); return false;\">&laquo;Prev</a> ";
				
				for(var i=pageMin; i<pageMax; i++){
					if(i == curPage) pageNav += " " + (i+1) + " ";
					else pageNav += "<a href=\"\" onclick=\"venueQuery(this, " + i + "); return false;\">" + (i+1) + "</a> ";
				}				
				
				if(curPage < (totalPages - 1)) pageNav += "<a href=\"\" onclick=\"venueQuery(this, " + (curPage + 1) + "); return false;\">Next&raquo<a/>";								
			}			
			document.getElementById('pageNav').innerHTML=pageNav;
			
		}
	}
}

function displayHelp(object, partnerNum){
		var fillText = 'Hello All!';		
		
		document.getElementById('popImage').src = '/images/grouptours/testPartnerImage.gif';
		document.getElementById('popImage').alt = '';
		
		document.getElementById('vendorDesc').innerHTML='';
		
		if(document.getElementById('vendorPop').style.visibility=="visible" && currentObject == object){
			document.getElementById('vendorPop').style.visibility="hidden";
			//document.getElementById('vendorBodyInfo').innerHTML = "";
		} else if(partnerNum != ''){
			vendorQuery(partnerNum);
			currentObject = object;			
			mouseOffset = getMouseOffset(currentObject);				
		}
		return false;		
}

function displayVenueHelp(object, partnerNum){
		var fillText = 'Hello All!';		
					
		document.getElementById('vendorDesc').innerHTML='';
		
		if(document.getElementById('vendorPop').style.visibility=="visible" && currentObject == object){
			document.getElementById('vendorPop').style.visibility="hidden";
			//document.getElementById('vendorBodyInfo').innerHTML = "";
		} else if(partnerNum != ''){
			singleVenueQuery(partnerNum);
			currentObject = object;			
			mouseOffset = getMouseOffset(currentObject);				
		}
		return false;		
}

function getCalculatedProperty(objName, property) {

    // ***** W3C Compatible DOM (NN6, Mozilla 16, etc.) *****

    if (isW3C) {
        docObj = document.getElementById(objName);
		
        if (property == "visibility") {
	    cssp = docObj.style.visibility;
	    return (cssp == "") ? "inherit" : cssp;
	}

	if (property == "clip") {
	    cssp = docObj.style.clip;

	    if (cssp == "") {
		cssStr = "rect(0px "; 
		cssStr += getCalculatedProperty(objName, "width") + " ";
		cssStr += getCalculatedProperty(objName, "height") 
+ " ";
		cssStr += "0px)";
		return cssStr;
	    }
	    return cssp;
	}

	if (property == "zIndex") {
	    cssp = docObj.style.zIndex;
	    return (cssp == "") ? "inherit" : cssp;
	}

	cssp = document.defaultView.getComputedStyle
(docObj, "").getPropertyValue(property);

	return (cssp == "") ? "unknown" : cssp;
    }

    // ***** Netscape Navigator 4+ DOM *****

    if (isNS4) {
	docObj = document.layers[objName];

	if (property == "visibility") {
	    cssp = docObj.visibility;
	    return (cssp == "hide") ? "hidden" : (cssp 
== "show") ? "visible" : "inherit";
	}

	if (property == "clip") {
	    cssStr = "rect(" + docObj.clip.top + "px ";
	    cssStr += docObj.clip.right + "px ";
	    cssStr += docObj.clip.bottom + "px ";
	    cssStr += docObj.clip.left + "px)";
	    return cssStr;
	}

	if ((property == "width") || (property == "height")) {
	    return eval("docObj.clip." + property) + "px";
	}

	if (property == "top") property = "pageY";
	if (property == "left") property = "pageX";

	cssp = eval("docObj." + property);

	if (property != "zIndex") cssp += "px";

	return cssp;
    }

    // ***** Internet Explorer 4+ DOM *****

    if (isIE4) {
	if (property == "width") return eval(objName + ".offsetWidth") 
+ "px";

	if (property == "height") return eval(objName 
+ ".offsetHeight") + "px";

	if (property == "clip") {
	    cssp = eval(objName + ".style.clip");

	    if (cssp == "") {
		cssStr = "rect(0px ";
		cssStr += getCalculatedProperty(objName, "width") + " ";
		cssStr += getCalculatedProperty(objName, "height") 
+ " ";
		cssStr += "0px)";
		return cssStr;
	    }
	    return cssp;
	}

	if (property == "top") return eval(objName + ".offsetTop") 
+ 'px';

	if (property == "left") return eval(objName + ".offsetLeft") 
+ 'px';

        // Else, use 'currentStyle' to find the rest

	return eval(objName + ".currentStyle." + property);
    }
}

function hideHelp(){		
	document.getElementById('vendorPop').style.visibility="hidden";
	//document.getElementById('vendorBodyInfo').innerHTML = "";
}

function getMouseOffset(target){
	var docPos = getPosition(target);
	return {x:docPos.x, y:docPos.y};
}
function getPosition(e){	
	var left = 0;
	var top  = 0;		
	while (e.offsetParent){		
		left += e.offsetLeft;
		top  += e.offsetTop;
		e     = e.offsetParent;		
	}	
	left += e.offsetLeft;
	top  += e.offsetTop;
	return {x:left, y:top};	
}
function mouseCoords(ev){
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
}