var Ajax = new Object();

Ajax.Request = function(url, action, pId, resultElement, lable, addInfo, resultElement2) {

	if (!(url && action && pId)) { return; }
	Ajax.request = Ajax.createRequestObject();
	Ajax.resultElement = resultElement;
	if(!resultElement2 == "") { Ajax.resultElement2 = resultElement2; }
	
	if(!addInfo == "")	{ Ajax.addInfo = addInfo; }
	
	// Show Loading Gif
	//Ajax.displayLoad(Ajax.resultElement + '_loading');
	
	// For Combo Option Load
	
	if(action == 'loadcombo'){
		if(!lable == "")	{ Ajax.selectLable = lable;}
		else				{ Ajax.selectLable = "-- Select " + resultElement.substring(3, resultElement.length) + " --"; }
		
		Ajax.request.onreadystatechange = Ajax.LoadCombo;
		Ajax.request.open("POST", url+pId, true);
		Ajax.request.send(null);
		
	} else if (action == 'postForm'){ // To post the form
		
		Ajax.selectLable = lable;
		if(pId == 'feedback') {
			var lStr = Ajax.parseFeedback();
			Ajax.request.onreadystatechange = Ajax.postFeedback;
			Ajax.request.open("POST", url+pId, true);
			Ajax.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        	Ajax.request.send(lStr);
		}else if(pId == 'comments') {
			url=url+"&sid="+Math.random()
			Ajax.request.onreadystatechange=Ajax.StateChanged 
			Ajax.request.open("GET",url,true)
			Ajax.request.send(null)
		}
		
        
	} else if (action == 'uniqCheck') { 
		Ajax.selectLable = lable;
		
		Ajax.request.onreadystatechange = Ajax.uniqCheck;
		Ajax.request.open("POST", url+pId, true);
		Ajax.request.send(null);
	}
}

Ajax.createRequestObject = function() {
	var obj;
	
	if(window.XMLHttpRequest) {
		obj = new XMLHttpRequest();
	}
	else if(window.ActiveXObject) {
		obj = new ActiveXObject("MSXML2.XMLHTTP");
	}
	
	return obj;
}

Ajax.CheckReadyState = function(obj) {
	if(obj.readyState == 4 && obj.status == 200) return true;
}

Ajax.LoadCombo = function() {
	if(Ajax.CheckReadyState(Ajax.request)) {	
		
		var	response = Ajax.request.responseXML.documentElement;
		var _option = response.getElementsByTagName("option");
		//alert(Ajax.request.responseText)
		//alert(_option.length);
		
		childCombo = Ajax.resultElement;
		document.getElementById(childCombo).length = 0;
		
		if(!Ajax.resultElement2 == "") {
			childCombo2 = Ajax.resultElement2;
			document.getElementById(childCombo2).length = 0;
		}
		
			
		if(_option.length == 0) {
			document.getElementById(childCombo).options[0] = new Option("No Record Avbl.","nil");	
			if(!Ajax.resultElement2 == "") {
				document.getElementById(childCombo2).options[0] = new Option("No Record Avbl.","nil");	
			}
		}else{
			document.getElementById(childCombo).options[0] = new Option(Ajax.selectLable, "-1");
			if(!Ajax.resultElement2 == "") {
				document.getElementById(childCombo2).options[0] = new Option(Ajax.selectLable, "-1");
			}
			var iShift = 1;			
			for ( i = 0 ; i < _option.length ; i ++ )	{	
				document.getElementById(childCombo).options[i+iShift] = new Option(response.getElementsByTagName('value')[i].firstChild.data,response.getElementsByTagName('id')[i].firstChild.data);	
				if(!Ajax.resultElement2 == "") {
					document.getElementById(childCombo2).options[i+iShift] = new Option(response.getElementsByTagName('value')[i].firstChild.data,response.getElementsByTagName('id')[i].firstChild.data);	
				}
			}
		}
	}	
}

Ajax.uniqCheck = function () {
	if(Ajax.CheckReadyState(Ajax.request)) {
		var chk =  document.getElementById(Ajax.resultElement);
		var resp = Ajax.request.responseText
		
		if(Ajax.resultElement=='hdnRecoverIDCheck' || Ajax.resultElement=='hdnRecoverEmail'){
			if(resp == 'NotExist') {
				chk.value = 'false';
				msg = Ajax.addInfo;
			}else {
				chk.value = 'true';
				msg = '';
			}
		} else {
			if(resp == 'NotExist') {
				chk.value = 'true';
				msg = '';
			}else {
				chk.value = 'false';
				msg = Ajax.addInfo;
			}
		}
		displayDiv(Ajax.selectLable, msg);
	}
	// Hide Loading Gif
	//Ajax.hideLoad(Ajex.resultElement + '_loading');	
}
	
Ajax.postFeedback = function() {
	// clear existing Feedback
	if(Ajax.CheckReadyState(Ajax.request)) {
		var frm = document.getElementById(Ajax.resultElement);
		frm.tarFeedback.value = '';
		displayDiv(Ajax.selectLable, Ajax.request.responseText);
	}
	// Hide Loading Gif
	//Ajax.hideLoad(Ajex.resultElement + '_loading');	
}

Ajax.StateChanged = function () { 
	if (Ajax.CheckReadyState(Ajax.request))	 { 
	  document.getElementById(Ajax.resultElement).innerHTML=Ajax.request.responseText
	 } 
}

Ajax.postComments = function() {
	if(Ajax.CheckReadyState(Ajax.request)) {
		
		var frm = document.getElementById(Ajax.resultElement);
		frm.tarComments.value = '';

		displayDiv(Ajax.selectLable, Ajax.request.responseText);
	}
	// Hide Loading Gif
	//Ajax.hideLoad(Ajex.resultElement + '_loading');	
}

Ajax.parseFeedback = function() {
	var frm = document.getElementById(Ajax.resultElement);
	var lName = frm.txtYourName.value;
	var lMail = frm.txtEmailId.value;
	var lFeedbk = frm.tarFeedback.value;
	var lCurrentUrl = location.href;
	lName = urlStringEncode(lName);
	lMail = urlStringEncode(lMail);
	lFeedbk = urlStringEncode(lFeedbk);
	lCurrentUrl = urlStringEncode(lCurrentUrl);
	
	var lStr = "fbName=" + lName + "&fbMail=" + lMail + "&fbText=" + lFeedbk + "&fbUrl=" + lCurrentUrl;
	return lStr;
}

Ajax.parseComments = function() {
	var frm = document.getElementById(Ajax.resultElement);

	var lRelative 		= frm.hdnRelative.value;
	var lRelative_Id 	= frm.hdnRelativeId.value;
	var lUser_Name 		= frm.txtName.value;
	var lUser_Mail 		= frm.txtEmail.value;
	var lComments 		= frm.tarComments.value;
	var lCurrentUrl 	= location.href;
	
	lRelative 			= urlStringEncode(lRelative);
	lRelative_id 		= urlStringEncode(lRelative_Id);
	lUser_Name 			= urlStringEncode(lUser_Name);
	lUser_Mail 			= urlStringEncode(lUser_Mail);
	lComments 			= urlStringEncode(lComments);
	lCurrentUrl 		= urlStringEncode(lCurrentUrl);
	
	var lStr = "Relative=" + lRelative + "&Relative_id=" + lRelative_id + "&Username=" + lUser_Name + "&Useremail=" + lUser_Mail + "&Comments=" + lComments + "&Url=" + lCurrentUrl;
	return lStr;
}

urlStringEncode = function(str) {
	// convert (&, +, =) to string equivs. Needed so URL encoded POST won't choke.
	str = str.replace(/&/g,"**am**");
	str = str.replace(/=/g,"**eq**");
	str = str.replace(/\+/g,"**pl**");
	
	return str;
}

displayDiv = function(divId, msg, position) {
	var div = document.getElementById(divId);
	if(position == 'top')
		div.innerHTML = msg + div.innerHTML;
	else if(position == 'bottom')
		div.innerHTML = div.innerHTML + msg;
	else
	div.innerHTML = msg;
}

displayLoding = function(loadId) {
	var load = document.getElementById(loadId);
	//Show  load 
}

hideLoding = function(loadId) {
	var load = document.getElementById(loadId);
	//Hide  load 
}
