function createXMLHttpRequest() {
var xmlHttp = null;
	try {
	xmlHttp = new XMLHttpRequest();
	//alert("FireFox, Opera, Safari");
	return xmlHttp;
	}catch (e){
		try {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		
		return xmlHttp;
		}catch (e){
			try {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		    return xmlHttp;
			}catch (e){
				alert("Your Browser not Supporting Ajax");
				return false;
			}
		}
	} 
}

function IDexit(){
var msg
var email=document.getElementById("mail").value;
var type=document.getElementById("type").value;
 var url = "/idcheck?mail="+email+"&type="+type;
  xmlHttp = createXMLHttpRequest();
 xmlHttp.onreadystatechange = function isUserExist(){
 if(xmlHttp.status==200){
  msg=xmlHttp.responseXML.getElementsByTagName("mailid")[0].childNodes[0].nodeValue;
 
 if(msg!="No"){
 document.getElementById("errmail").style.color="red";
 document.getElementById("errmail").innerHTML=msg;
 }else{
 document.getElementById("errmail").innerHTML="";
 
 }
 }
 }
 xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}




function changestate() {
	      var state = document.getElementById("stateid");
	      
	      var models;
	     if(state.value==""){
	     models= "<select name=\"city\" id=\"city\" style=\"width:150px\" disabled=\"disabled\"><option value=\"\">Select City</option></select>";
	     document.getElementById("viewmodel").innerHTML = models;
	     return false;
	     }
	      models= "<select name=\"city\" id=\"city\" style=\"width:150px\" disabled=\"disabled\"><option value=\"\">Loading....</option></select>";
	     document.getElementById("viewmodel").innerHTML = models;
	    
	      var url = "/changestate?state="+escape(state.value);
		  xmlHttp = createXMLHttpRequest();
		  xmlHttp.onreadystatechange = function gotModels() {	if(xmlHttp.readyState==4){
		if(xmlHttp.status==200){
			var msg = xmlHttp.responseXML.getElementsByTagName("root")[0];
		  //  alert(msg.childNodes.length);
			models = "<select name=\"city\" id=\"city\" style=\"width:150px\">";
			models = models + "<option value=\"\" checked=\"checked\">Select City</option>";
			for(i=0; i<msg.childNodes.length; i++){
	            //alert(msg.getElementsByTagName("city")[i].childNodes[0].nodeValue);
			   models = models + "<option value=\""+msg.getElementsByTagName("city")[i].childNodes[0].nodeValue+"\">"+msg.getElementsByTagName("city")[i].childNodes[0].nodeValue+"</option>";
			}
		models =models + "</select>";
	   	document.getElementById("viewmodel").innerHTML = models;
	   	document.forms[0].elements[2].focus();
//		document.forms[0].getElementById("city").focus();
		}
	}
}
//alert(url);
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
return true;
}
function getstate_city(frm){

var zip = document.getElementById("zipcode").value;

document.getElementById("state").value = "";
document.getElementById("city").value = "";

var url = "/getstatecity?zip="+zip;

	if(zip.length==5){
		if(!isNaN(zip)){
			xmlHttp = createXMLHttpRequest();
			xmlHttp.onreadystatechange = function gotCategories() {
				if(xmlHttp.readyState==4){
	 				if(xmlHttp.status==200){
	 				var msg = xmlHttp.responseXML.getElementsByTagName("statecity")[0];
	 				var state = msg.getElementsByTagName("state")[0].childNodes[0].nodeValue;
	 				var city = msg.getElementsByTagName("city")[0].childNodes[0].nodeValue;
					if(state!="No"){
					
					document.getElementById("state").value = state;
					document.getElementById("city").value = city;
					
					document.getElementById("zip_status").innerHTML="<font color=\"#FF9966\" size=\"2\"><b style=color:#003333>City: "+city+"&nbsp;&nbsp;&nbsp;State:"+state+"</b></font>";
					
					}else {
	 						document.getElementById("zip_status").innerHTML="<font color=\"red\" size=\"2\"><b>Enter Valid Zip Code<b></font>";
	 						
	 				}
	 				getstate_city1(frm);
				}
			}
		}
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
		
		}else {
		document.getElementById("zip_status").innerHTML="<font color=\"red\" size=\"2\"><b>Enter Valid Zip Code<b></font>";
		}
	}else {
	document.getElementById("zip_status").innerHTML="";
	}

}
function getstate_city1(frm){

var zip = document.getElementById("zip").value;

document.getElementById("state1").value = "";
document.getElementById("city1").value = "";

var url = "/getstatecity?zip="+zip;

	if(zip.length==5){
		if(!isNaN(zip)){
			xmlHttp = createXMLHttpRequest();
			xmlHttp.onreadystatechange = function gotCategories() {
				if(xmlHttp.readyState==4){
	 				if(xmlHttp.status==200){
	 				var msg = xmlHttp.responseXML.getElementsByTagName("statecity")[0];
	 				var state = msg.getElementsByTagName("state")[0].childNodes[0].nodeValue;
	 				var city = msg.getElementsByTagName("city")[0].childNodes[0].nodeValue;
					if(state!="No"){
					
					document.getElementById("state1").value = state;
					document.getElementById("city1").value = city;
					
					document.getElementById("zip_status1").innerHTML="<font color=\"#FF9966\" size=\"2\"><b style=color:#003333>City: "+city+"&nbsp;&nbsp;&nbsp;State:"+state+"</b></font>";
					
					}else {
	 						document.getElementById("zip_status1").innerHTML="<font color=\"red\" size=\"2\"><b>Enter Valid Zip Code<b></font>";
	 						
	 				}
				}
			}
		}
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
		
		}else {
		document.getElementById("zip_status1").innerHTML="<font color=\"red\" size=\"2\"><b>Enter Valid Zip Code<b></font>";
		}
	}else {
	document.getElementById("zip_status1").innerHTML="";
	}
}

function getstate_city2(frm){

var zip = document.getElementById("zip1").value;

document.getElementById("state1").value = "";
document.getElementById("city1").value = "";

var url = "/getstatecity?zip="+zip;

	if(zip.length==5){
		if(!isNaN(zip)){
			xmlHttp = createXMLHttpRequest();
			xmlHttp.onreadystatechange = function gotCategories() {
				if(xmlHttp.readyState==4){
	 				if(xmlHttp.status==200){
	 				var msg = xmlHttp.responseXML.getElementsByTagName("statecity")[0];
	 				var state = msg.getElementsByTagName("state")[0].childNodes[0].nodeValue;
	 				var city = msg.getElementsByTagName("city")[0].childNodes[0].nodeValue;
					if(state!="No"){
					
					document.getElementById("state1").value = state;
					document.getElementById("city1").value = city;
					document.getElementById("state1").type="text";
					document.getElementById("city1").type="text";
					
										}else {
										document.getElementById("state1").type="hidden";
										document.getElementById("city1").type="hidden";
	 						document.getElementById("zip_status1").innerHTML="<font color=\"red\" size=\"2\"><b>Enter Valid Zip Code<b></font>";
	 						
	 				}
				}
			}
		}
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
		
		}else {
		document.getElementById("zip_status1").innerHTML="<font color=\"red\" size=\"2\"><b>Enter Valid Zip Code<b></font>";
		}
	}else {
	document.getElementById("zip_status1").innerHTML="";
	}
}
function emailIDexit(){

var msg
var email=document.getElementById("mail").value;

 var url = "/idcheck?mail="+email;
  xmlHttp = createXMLHttpRequest();
 xmlHttp.onreadystatechange = function isUserExist(){
 if(xmlHttp.status==200){
  msg=xmlHttp.responseXML.getElementsByTagName("mailid")[0].childNodes[0].nodeValue;
 
 if(msg!="No"){
 document.getElementById("errmail").style.color="red";
 document.getElementById("errmail").innerHTML=msg;
 }else{
 document.getElementById("errmail").innerHTML="";
 
 }
 }
 }
 xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}

function getVaspot(){

var state = document.getElementById("state").value;
document.getElementById("vaspot").value = "";
var vactionspot;
//document.getElementById("city1").value = "";
var url ="/getvaspot?state="+state;

	
	
		
			xmlHttp = createXMLHttpRequest();
			xmlHttp.onreadystatechange = function getVaspot() {
				if(xmlHttp.readyState==4){
	 				if(xmlHttp.status==200){
	 				var msg = xmlHttp.responseXML.getElementsByTagName("vaspot1")[0];
	 				var vaspot = msg.getElementsByTagName("vaspot")[0].childNodes[0].nodeValue;
	 				
	 			//	var city = msg.getElementsByTagName("city")[0].childNodes[0].nodeValue;
					
					document.getElementById("vaspot").value = vaspot;
					
					//document.getElementById("city1").value = city;
					//document.getElementById("state1").type="text";
					//document.getElementById("city1").type="text";
					vactionspot="<select name=\"vaspot\" id=\"vaspot\" class=\"Textbox\" style=\" font-size:12px;height:22px;width:190px;\" >";
					
					
					for(i=0; i<msg.childNodes.length; i++){
					
					vactionspot=vactionspot+ "<option value=\""+msg.getElementsByTagName("vaspot")[i].childNodes[0].nodeValue+"\">"+msg.getElementsByTagName("vaspot")[i].childNodes[0].nodeValue+"</option>";
									}
									vactionspot=vactionspot+"</select>";
									
									document.getElementById("vaspot_status").innerHTML = vactionspot;
										
				}
			}
		}
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
		}

function emailIDexit(){

var msg
var email=document.getElementById("mail").value;

 var url = "/idcheck?mail="+email;
  xmlHttp = createXMLHttpRequest();
 xmlHttp.onreadystatechange = function isUserExist(){
 if(xmlHttp.status==200){
  msg=xmlHttp.responseXML.getElementsByTagName("mailid")[0].childNodes[0].nodeValue;
 
 if(msg!="No"){
 document.getElementById("errmail").style.color="red";
 document.getElementById("errmail").innerHTML=msg;
 }else{
 document.getElementById("errmail").innerHTML="";
 
 }
 }
 }
 xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
	function getrenstate_city(frm){

var zip = document.getElementById("zipcode").value;

document.getElementById("state").value = "";
document.getElementById("city").value = "";
document.getElementById("state").innerHTML="";
document.getElementById("city").innerHTML="";
var url = "/getstatecity?zip="+zip;

	var url = "/getstatecity?zip="+zip;

	if(zip.length==5){
		if(!isNaN(zip)){
			xmlHttp = createXMLHttpRequest();
			xmlHttp.onreadystatechange = function gotCategories() {
				if(xmlHttp.readyState==4){
	 				if(xmlHttp.status==200){
	 				var msg = xmlHttp.responseXML.getElementsByTagName("statecity")[0];
	 				var state = msg.getElementsByTagName("state")[0].childNodes[0].nodeValue;
	 				var city = msg.getElementsByTagName("city")[0].childNodes[0].nodeValue;
					if(state!="No"){
					document.getElementById("state").value = state;
					document.getElementById("city").value = city;
					document.getElementById("zip_status").innerHTML="";
					
					}else {
					
	 						document.getElementById("zip_status").innerHTML="<font color=\"red\" size=\"2\"><b>Enter Valid Zip Code<b></font>";
	 						document.getElementById("city").disabled="false";
	 						document.getElementById("state").disabled="true";
	 					}
	 					}
			}
		}
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
		
		}else {
		document.getElementById("zip_status").innerHTML="<font color=\"red\" size=\"2\"><b>Enter Valid Zip Code<b></font>";
		}
	}else {
	document.getElementById("zip_status").innerHTML="";
	}

}	

function	createAutoComplete(){
	var vaspot=document.getElementById("theText").value;
	var aNames=new Array();
	var aNames ;
	if(vaspot.length>2){
var url ="/getsearchvaspot?vaspot="+vaspot;
		xmlHttp = createXMLHttpRequest();
			xmlHttp.onreadystatechange = function getVaspot() {
				if(xmlHttp.readyState==4){
	 				if(xmlHttp.status==200){
	 				var msg = xmlHttp.responseXML.getElementsByTagName("vaspot1")[0];
	 				var vaspot = msg.getElementsByTagName("vaspot")[0].childNodes[0].nodeValue;
	 				
					for(i=0; i<msg.childNodes.length; i++){
					aNames[i]=""+msg.getElementsByTagName("vaspot")[i].childNodes[0].nodeValue+"";
					//var aNames1 =aNames+msg.getElementsByTagName("vaspot")[i+1].childNodes[0].nodeValue;
					
					
									}
									
							
									
								
										
				}
			
				new AutoComplete(aNames,document.getElementById("theText"),document.getElementById("theDiv"),11);
			}
		}
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}

}
		function AutoCompleteDB()
{
	// set the initial values.
	this.bEnd = false;
	this.nCount = 0;
	this.aStr = new Object;
}

AutoCompleteDB.prototype.add = function(str)
{
	// increment the count value.
	this.nCount++;

	// if at the end of the string, flag this node as an end point.
	if ( str == "" )
		this.bEnd = true;
	else
	{
		// otherwise, pull the first letter off the string
		var letter = str.substring(0,1);
		var rest = str.substring(1,str.length);
		
		// and either create a child node for it or reuse an old one.
		if ( !this.aStr[letter] ) this.aStr[letter] = new AutoCompleteDB();
		this.aStr[letter].add(rest);
	}
}

AutoCompleteDB.prototype.getCount = function(str, bExact)
{
	// if end of search string, return number
	if ( str == "" )
		if ( this.bEnd && bExact && (this.nCount == 1) ) return 0;
		else return this.nCount;
	
	// otherwise, pull the first letter off the string
	var letter = str.substring(0,1);
	var rest = str.substring(1,str.length);
	
	// and look for case-insensitive matches
	var nCount = 0;
	var lLetter = letter.toLowerCase();
	if ( this.aStr[lLetter] )
		nCount += this.aStr[lLetter].getCount(rest, bExact && (letter == lLetter));
	
	var uLetter = letter.toUpperCase();
	if ( this.aStr[uLetter] )
		nCount += this.aStr[uLetter].getCount(rest, bExact && (letter == uLetter));
	
	return nCount;	
}

AutoCompleteDB.prototype.getStrings = function(str1, str2, outStr)
{
	if ( str1 == "" )
	{
		// add matching strings to the array
		if ( this.bEnd ) 
			outStr.push(str2);

		// get strings for each child node
		for ( var i in this.aStr )
			this.aStr[i].getStrings(str1, str2 + i, outStr);
	}
	else
	{
		// pull the first letter off the string
		var letter = str1.substring(0,1);
		var rest = str1.substring(1,str1.length);
		
		// and get the case-insensitive matches.
		var lLetter = letter.toLowerCase();
		if ( this.aStr[lLetter] )
			this.aStr[lLetter].getStrings(rest, str2 + lLetter, outStr);

		var uLetter = letter.toUpperCase();
		if ( this.aStr[uLetter] )
			this.aStr[uLetter].getStrings(rest, str2 + uLetter, outStr);
	}
}


function AutoComplete(aStr, oText, oDiv, nMaxSize)
{
	
	
	this.oText = oText;
	this.oDiv = oDiv;
	this.nMaxSize = nMaxSize;
	
	// preprocess the texts for fast access
	this.db = new AutoCompleteDB();
	var i, n = aStr.length;
	for ( i = 0; i < n; i++ )
	{
		this.db.add(aStr[i]);
	}
			
	// attach handlers to the text-box
	oText.AutoComplete = this;
	oText.onkeyup = AutoComplete.prototype.onTextChange;
	oText.onblur = AutoComplete.prototype.onTextBlur;
}

AutoComplete.prototype.onTextBlur = function()
{
	this.AutoComplete.onblur();
}

AutoComplete.prototype.onblur = function()
{
	this.oDiv.style.visibility = "hidden";
}

AutoComplete.prototype.onTextChange = function()
{
	this.AutoComplete.onchange();
}

AutoComplete.prototype.onDivMouseDown = function()
{
	this.AutoComplete.oText.value = this.innerHTML;
}

AutoComplete.prototype.onDivMouseOver = function()
{
	this.className = "AutoCompleteHighlight";
}

AutoComplete.prototype.onDivMouseOut = function()
{
	this.className = "AutoCompleteBackground";
}

AutoComplete.prototype.onchange = function()
{
	var txt = this.oText.value;
	
	// count the number of strings that match the text-box value
	var nCount = this.db.getCount(txt, true);
	
	// if a suitable number then show the popup-div
	if ( (this.nMaxSize == -1 ) || ((nCount < this.nMaxSize) && (nCount > 0)) )
	{
		// clear the popup-div.
		while ( this.oDiv.hasChildNodes() )
			this.oDiv.removeChild(this.oDiv.firstChild);
			
		// get all the matching strings from the AutoCompleteDB
		var aStr = new Array();
		this.db.getStrings(txt, "", aStr);
		
		// add each string to the popup-div
		var i, n = aStr.length;
		for ( i = 0; i < n; i++ )
		{
			var oDiv = document.createElement('div');
			this.oDiv.appendChild(oDiv);
			oDiv.innerHTML = aStr[i];
			oDiv.onmousedown = AutoComplete.prototype.onDivMouseDown;
			oDiv.onmouseover = AutoComplete.prototype.onDivMouseOver;
			oDiv.onmouseout = AutoComplete.prototype.onDivMouseOut;
			//oDiv.onkeydown = AutoComplete.prototype.checkKeycode;
			oDiv.AutoComplete = this;			
		}
		this.oDiv.style.visibility = "visible";
	}
	else // hide the popup-div
	{
		this.oDiv.innerHTML = "";
		this.oDiv.style.visibility = "hidden";
	}
}
	
		
