var request = null;
function createRequest(){
	try{
		request = new XMLHttpRequest();
	}catch(trymicrosoft){
		try{
			request = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(othermicrosoft){
			try{
				request = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(failed){
			request = null;
			}
		}
	}
	if(request == null){
		alert("Error creating request object");
	}

}



function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

//***************************************************
/*
Firefox v.2 seems to hang (or just consider itself finished) on readystate 3, but IE needs to 
get to readystate 4 before checking for status 200 -- maybe this is a hack but I made a 
here so we can use a variable for the readystate comparison value based on whether the browser
is IE or not.

so, usually in a callback function, where we would check if(request.readyState == 4),
we'll use the variable instead of 4 eg. if(request.readyState == rsDone)
*/

var rsDone = 4;
var agentStr = navigator.userAgent;
if(agentStr.indexOf("Firefox/2")>-1){
	var rsDone = 3;
}


var position;
function getFeatures(prodId,lang,obj){
	var row = obj.parentNode.parentNode;
	position = findPos(row);
	createRequest();
	var url = "/includes_common2/getFeaturesAjax.php?prodId="+prodId+"&lang="+lang;
	request.open("GET", url, true);
	request.onreadystatechange = showFeatures;
	request.send(null);
}

function showFeatures(){
	//var y = getScrollXY();
	var rowYPos = position[1]+10+"px";
	if(request.readyState == rsDone){
	var features = request.responseText;
	//alert("response = "+features);
	var featuresDiv = document.getElementById("featuresDiv");
	//replaceText(featuresDiv, features);
	//featuresDiv.style.display="inline";
	featuresDiv.style.visibility="visible";
	featuresDiv.style.top = rowYPos;
	featuresDiv.innerHTML = features;
	}
}


function hideFeatures(){
var featuresDiv = document.getElementById("featuresDiv");
featuresDiv.innerHTML = "";
featuresDiv.style.visibility="hidden";
}

function getPartnerByApplication(form){
	var lang = form.lang.value;
	var langRoot = form.langRoot.value;
	var theDiv = document.getElementById("partnerAppsDiv");
	clearText(theDiv);
	var selectedIndex = form.partTypeId.options.selectedIndex;
	var selectedValue = form.partTypeId.options[selectedIndex].value;
	if(selectedValue != 0){
	createRequest();
	var url = "/includes_common2/getPartnerTypesAjax.php?company="+selectedValue+"&langRoot="+langRoot+"&lang="+lang;
	request.open("GET", url, true);
	request.onreadystatechange = showPartnerApplications;
	request.send(null);
	}else{
		clearText(theDiv);
	}
	
}

function showPartnerApplications(){
	var theDiv = document.getElementById("partnerAppsDiv");
	if(request.readyState == rsDone){
	var text = request.responseText;
	theDiv.innerHTML = text;
	}
}

function getHIDidentityPage(id,lang){
	//alert("called getHIDidentityPage with "+id+"  "+lang);
	createRequest();
	var url = "/includes_common2/getHIDidentityPageAjax.php?pageId="+id+"&lang="+lang;
	request.open("GET", url, true);
	request.onreadystatechange = showHIDidentityPageJSON;
	request.send(null);
}

function showHIDidentityPage(){
	if(request.readyState == rsDone){
	var content = request.responseText;
	var contentDiv = document.getElementById("identityMiddleContent");
	contentDiv.innerHTML = content;
	}
}

function showHIDidentityPageJSON(){
	if(request.readyState == rsDone){
	var contentData = eval("("+request.responseText+")");
	var content = contentData.pageContent[0].centerContent;
	var contentDiv = document.getElementById("identityMiddleContent");
	contentDiv.innerHTML = content;
	var bmrk = contentData.pageContent[0].bookmark;
	//document.location.search="pageId=4";
	fav(bmrk);
	}
}

function fav(bmrk) {
var host = document.location.host;
var url = bmrk;
var s = document.getElementById('fav');
clearText(s);
if (window.sidebar) {
var newT = document.createTextNode('Add to Favorites - Firefox opens in side panel, not recommended');
s.appendChild(newT);
s.style.color = '#00f';
s.style.cursor = 'pointer';
s.onclick = function() {window.sidebar.addPanel("HID Identity page",url,'')};
} else if (window.external) {
var newT = document.createTextNode('Add to Favorites '+url);
s.appendChild(newT);
s.style.color = '#00f';
s.style.cursor = 'pointer';
s.onclick = function() {window.external.AddFavorite(url,"HID Identity page")};
} else if (window.opera) {
/*s.appendChild(newT);
s.style.color = '#00f';
s.style.cursor = 'pointer';
s.onclick = function() {
     var e = document.createElement('a');
     e.setAttribute('href',url);
     e.setAttribute('title',"HID Identity page");
     e.setAttribute('rel','sidebar');
     e.click(); 
  }*/
}
}

/**************** HID Identity Testimonial AJAX stuff *******************/
function getTestimonial(quoteId,lang,obj){
	var row = obj;
	position = findPos(row);
	createRequest();
	var url = "/includes_common2/hidTestimonialsAjax.php?quoteId="+quoteId+"&lang="+lang;
	request.open("GET", url, true);
	request.onreadystatechange = showTestimonial;
	request.send(null);
}

function showTestimonial(){
	//var y = getScrollXY();
	var rowYPos = position[1]+0+"px";
	var rowXPos = position[0]+160+"px";
	if(request.readyState == rsDone){
	var testimonial = request.responseText;
	//alert("response = "+features);
	var testimonialDiv = document.getElementById("identityTestimonialDiv");
	//replaceText(featuresDiv, features);
	//featuresDiv.style.display="inline";
	testimonialDiv.style.visibility="visible";
	testimonialDiv.style.top = rowYPos;
	testimonialDiv.style.left = rowXPos;
	testimonialDiv.innerHTML = testimonial;
	}
}


function hideTestimonial(){
var testimonialDiv = document.getElementById("identityTestimonialDiv");
testimonialDiv.innerHTML = "";
testimonialDiv.style.visibility="hidden";
}

/****************** SmartSolutions dropDown Ajax stuff **********************************/

var smartSolCourseContainerId;//will hold the course drop-down box
function getSmartSolCourseSelBoxBySubjectId(subjId,lang,contId){
	var classListDiv = document.getElementById("classContainerDiv");
	classListDiv.innerHTML = "";
	smartSolCourseContainerId = contId;
	var locationSelectBox = document.getElementById("locationSelect");
		locationSelectBox.selectedIndex=0;

	if(subjId){	
		createRequest();
		var url = "/includes_common2/getSmartSolCoursesSelectBoxAjax.php?subjId="+subjId+"&lang="+lang;
		request.open("GET", url, true);
		request.onreadystatechange = SmartSolCourseSelBox;
		request.send(null);
	}else{
		var selContainer=document.getElementById(smartSolCourseContainerId);
		selContainer.innerHTML = "";
	}
}





function SmartSolCourseSelBox(){
	if(request.readyState == rsDone){
		if(request.status == 200){
			var selBox = request.responseText;
			var selContainer = document.getElementById(smartSolCourseContainerId);
			selContainer.style.display="inline";
			selContainer.innerHTML = selBox;
		}else{
			alert("An error occurred processing your request "+request.status);
		}
	}
}

var smartSolClassContainerId;//will hold the table of classes listed

function getSmartSolClassTableByCourseId(courseId,lang,contId){
	smartSolClassContainerId = contId;
	createRequest();
	var url = "/includes_common2/getSmartSolClassListAjax.php?courseId="+courseId+"&lang="+lang;
	request.open("GET", url, true);
	request.onreadystatechange = SmartSolClassTable;
	request.send(null);
}



function getSmartSolClassTableByLocationId(locId,lang,contId){
	//if we search by location, get rid of courses and set subjects to 0
	if(document.getElementById(smartSolCourseContainerId)){
		document.getElementById(smartSolCourseContainerId).innerHTML = "";
	}
	if(document.getElementById("subjectSelect")){
		document.getElementById("subjectSelect").selectedIndex=0;					   
	}
	//now get classes by location id
	smartSolClassContainerId = contId;
	createRequest();
	var url = "/includes_common2/getSmartSolClassLocationListAjax.php?locId="+locId+"&lang="+lang;
	request.open("GET", url, true);
	request.onreadystatechange = SmartSolClassTable;
	request.send(null);
}


function SmartSolClassTable(){
	if(request.readyState == rsDone){
		var classContainer = document.getElementById(smartSolClassContainerId);
		if(request.status == 200){
			var solClassTable = request.responseText;
			classContainer.style.display="block";
			classContainer.innerHTML = solClassTable;
		}else{
			classContainer.style.display="block";
			classContainer.innerHTML = "An error occurred processing your request "+request.status;
		}
	}
}

/****************academyTraining Ajax stuff***************************/
var academyTrainingCourseContainerId;//will hold the course drop-down box
function getAcademyTrainingCourseSelBoxBySubjectId(subjId,lang,contId){
	var classListDiv = document.getElementById("classContainerDiv");
	classListDiv.innerHTML = "";
	academyTrainingCourseContainerId = contId;
	var locationSelectBox = document.getElementById("locationSelect");
		locationSelectBox.selectedIndex=0;

	if(subjId){	
		createRequest();
		var url = "/includes_common2/getAcademyTrainingCoursesSelectBoxAjax.php?subjId="+subjId+"&lang="+lang;
		request.open("GET", url, true);
		request.onreadystatechange = academyTrainingCourseSelBox;
		request.send(null);
	}else{
		var selContainer=document.getElementById(academyTrainingCourseContainerId);
		selContainer.innerHTML = "";
	}
}





function academyTrainingCourseSelBox(){
	if(request.readyState == rsDone){
		if(request.status == 200){
			var selBox = request.responseText;
			var selContainer = document.getElementById(academyTrainingCourseContainerId);
			selContainer.style.display="inline";
			selContainer.innerHTML = selBox;
		}else{
			alert("An error occurred processing your request "+request.status);
		}
	}
}

var academyTrainingClassContainerId;//will hold the table of classes listed

function getAcademyTrainingClassTableByCourseId(courseId,lang,contId){
	academyTrainingClassContainerId = contId;
	createRequest();
	var url = "/includes_common2/getAcademyTrainingClassListAjax.php?courseId="+courseId+"&lang="+lang;
	request.open("GET", url, true);
	request.onreadystatechange = academyTrainingClassTable;
	request.send(null);
}



function getAcademyTrainingClassTableByLocationId(locId,lang,contId){
	//if we search by location, get rid of courses and set subjects to 0
	if(document.getElementById(academyTrainingCourseContainerId)){
		document.getElementById(academyTrainingCourseContainerId).innerHTML = "";
	}
	if(document.getElementById("subjectSelect")){
		document.getElementById("subjectSelect").selectedIndex=0;					   
	}
	//now get classes by location id
	academyTrainingClassContainerId = contId;
	createRequest();
	var url = "/includes_common2/getAcademyTrainingClassLocationListAjax.php?locId="+locId+"&lang="+lang;
	request.open("GET", url, true);
	request.onreadystatechange = academyTrainingClassTable;
	request.send(null);
}


function academyTrainingClassTable(){
	if(request.readyState == rsDone){
		var classContainer = document.getElementById(academyTrainingClassContainerId);
		if(request.status == 200){
			var solClassTable = request.responseText;
			classContainer.style.display="block";
			classContainer.innerHTML = solClassTable;
		}else{
			classContainer.style.display="block";
			classContainer.innerHTML = "An error occurred processing your request "+request.status;
		}
	}
}
/******************************Events Sched Stuff********************************/
var generalEventsContainerId="";
	
	function getGeneralEventLinksByCity(cityName, lang, contId){
		generalEventsContainerId = contId;
		createRequest();
		var url = "/includes_common2/getEventsByCityAJAX.php?city="+cityName+"&lang="+lang;
		request.open("GET", url, true);
		request.onreadystatechange = showEvents;
		request.send(null);
	}
	
	function showEvents(){
		if(request.readyState == rsDone){
			var eventsContainer = document.getElementById(generalEventsContainerId);
			if(request.status == 200){
				var eventsList = request.responseText;
				eventsContainer.style.display="block";
				eventsContainer.innerHTML = eventsList;
			}else{
				eventsContainer.style.display="block";
				eventsContainer.innerHTML = "An error occurred processing your request "+request.status;
			}
		}
	}


