/* Simple AJAX Code-Kit (SACK) v1.6.1 */
/* ©2005 Gregory Wild-Smith */
/* www.twilightuniverse.com */
/* Software licenced under a modified X11 licence,
   see documentation or authors website for more details */

function sack(file) {
	  
			this.xmlhttp = null;


	  this.resetData = function() {
				this.method = "POST";
				this.queryStringSeparator = "?";
				this.argumentSeparator = "&";
				this.URLString = "";
				this.encodeURIString = true;
				this.execute = false;
				this.element = null;
				this.elementObj = null;
				this.requestFile = file;
				this.vars = new Object();
				this.responseStatus = new Array(2);
  	};



	  this.resetFunctions = function() {
				this.onLoading = function() { };
				this.onLoaded = function() { };
				this.onInteractive = function() { };
				this.onCompletion = function() { };
				this.onError = function() { };
				this.onFail = function() { };
	  };



			this.reset = function() {
				this.resetFunctions();
				this.resetData();
			};


			this.createAJAX = function() {
				try {
					this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
				} catch (e1) {
					try {
						this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
					} catch (e2) {
						this.xmlhttp = null;
					}
				}
		
				if (! this.xmlhttp) {
					if (window.XMLHttpRequest) {
						this.xmlhttp = new XMLHttpRequest();
					} else {
						this.failed = true;
					}
				}
			};
			

			this.setVar = function(name, value){
				this.vars[name] = Array(value, false);
			};


		
			this.encVar = function(name, value, returnvars) {
				if (true == returnvars) {
					return Array(encodeURIComponent(name), encodeURIComponent(value));
				} else {
					this.vars[encodeURIComponent(name)] = Array(encodeURIComponent(value), true);
				}
			}



			this.processURLString = function(string, encode) {
				encoded = encodeURIComponent(this.argumentSeparator);
				regexp = new RegExp(this.argumentSeparator + "|" + encoded);
				varArray = string.split(regexp);
				for (i = 0; i < varArray.length; i++){
					urlVars = varArray[i].split("=");
					if (true == encode){
						this.encVar(urlVars[0], urlVars[1]);
					} else {
						this.setVar(urlVars[0], urlVars[1]);
					}
				}
			}



			this.createURLString = function(urlstring) {
				if (this.encodeURIString && this.URLString.length) {
					this.processURLString(this.URLString, true);
				}
		
				if (urlstring) {
					if (this.URLString.length) {
						this.URLString += this.argumentSeparator + urlstring;
					} else {
						this.URLString = urlstring;
					}
				}

				// prevents caching of URLString
				this.setVar("rndval", new Date().getTime());

				urlstringtemp = new Array();
				for (key in this.vars) {
					if (false == this.vars[key][1] && true == this.encodeURIString) {
						encoded = this.encVar(key, this.vars[key][0], true);
						delete this.vars[key];
						this.vars[encoded[0]] = Array(encoded[1], true);
						key = encoded[0];
					}
		
					urlstringtemp[urlstringtemp.length] = key + "=" + this.vars[key][0];
				}
				if (urlstring){
					this.URLString += this.argumentSeparator + urlstringtemp.join(this.argumentSeparator);
				} else {
					this.URLString += urlstringtemp.join(this.argumentSeparator);
				}
			}


			
			this.runResponse = function() {
				eval(this.response);
			}

			this.runAJAX = function(urlstring) {
				if (this.failed) {
					this.onFail();
				} else {
					this.createURLString(urlstring);
					if (this.element) {
						this.elementObj = document.getElementById(this.element);
					}
					if (this.xmlhttp) {
						var self = this;
						if (this.method == "GET") {
							totalurlstring = this.requestFile + this.queryStringSeparator + this.URLString;
							this.xmlhttp.open(this.method, totalurlstring, true);
						} else {
							this.xmlhttp.open(this.method, this.requestFile, true);
							try {
								this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
							} catch (e) { }
						}
		
						this.xmlhttp.onreadystatechange = function() {
							switch (self.xmlhttp.readyState) {
								case 1:
									self.onLoading();
									break;
								case 2:
									self.onLoaded();
									break;
								case 3:
									self.onInteractive();
									break;
								case 4:
									self.response = self.xmlhttp.responseText;
									self.responseXML = self.xmlhttp.responseXML;
									self.responseStatus[0] = self.xmlhttp.status;
									self.responseStatus[1] = self.xmlhttp.statusText;
		
									if (self.execute) {
										self.runResponse();
									}
		
									if (self.elementObj) {
										elemNodeName = self.elementObj.nodeName;
										elemNodeName.toLowerCase();
										if (elemNodeName == "input"
										|| elemNodeName == "select"
										|| elemNodeName == "option"
										|| elemNodeName == "textarea") {
											self.elementObj.value = self.response;
										} else {
											self.elementObj.innerHTML = self.response;
										}
									}
									if (self.responseStatus[0] == "200") {
										self.onCompletion();
									} else {
										self.onError();
									}
		
									self.URLString = "";
									break;
							}
						};
		
						this.xmlhttp.send(this.URLString);
					}
				}
			};


  	this.reset();
  	this.createAJAX();
}






// *****************************************************      Functions     *********************************************


    var ajax = new sack();
				var glbInputName = '';
				var ajaxRoot = '/ajax/';
				function getStateList( sel, inputName )
				{
					 ajax.reset();
				 glbInputName = inputName;
					var countryCode = sel.options[sel.selectedIndex].value;
					document.getElementById(glbInputName).options.length = 2;	
					if(countryCode.length>0){
						
						ajax.requestFile = ajaxRoot + 'getStates.php?countryCode='+countryCode;	// Specifying which file to get
						
						if ( inputName == "find_state" )
						{
						 ajax.onCompletion = createStates_FindDealer;	// Specify function that will be executed after file has been found
						}
						else if ( inputName == "choose_state" )
						{
							document.getElementById("choose_dealer").options.length = 2;	
							ajax.onCompletion = createStates_ChooseDealer;
						}
						else
						{
						 ajax.onCompletion = createStates;	// Specify function that will be executed after file has been found
						}
						ajax.runAJAX();		// Execute AJAX function
					}
				}
				
				
				function createStates()
				{
					var obj = document.getElementById(glbInputName);
					eval(ajax.response);	// Executing the response from Ajax as Javascript code	
										
				}
							
				
				function createStates_FindDealer()
				{
					var obj = document.getElementById(glbInputName);
					eval(ajax.response);	// Executing the response from Ajax as Javascript code	
					if ( document.frm_find_dealer.find_state.options.length <= 2 )
					{
						document.frm_find_dealer.submit();
					}
				}

    
				function createStates_ChooseDealer()
				{
					var obj = document.getElementById(glbInputName);
					eval(ajax.response);	// Executing the response from Ajax as Javascript code	
					if ( document.frm_public_info.choose_state.options.length <= 2 )
					{
						fill_ChooseDealer();
					}
				}			
				
				
				
				
				
				
				
				function fill_ChooseDealer()
				{
					ajax.execute=true;
					ajax.requestFile = ajaxRoot + 'fill_choose_dealer.php?country='+document.frm_public_info.choose_country.value+'&state='+document.frm_public_info.choose_state.value;	// Specifying which file to get
					//ajax.onCompletion = getDealers();
					ajax.runAJAX();		// Execute AJAX function				
				}
				
				
				
				function show_dealer_info( dealer )
				{
					ajax.execute=true;
					ajax.requestFile = ajaxRoot + 'show_dealer_info.php?dealer='+dealer;	// Specifying which file to get
					//ajax.onCompletion = getDealers();
					ajax.runAJAX();		// Execute AJAX function				
				}
				
				
				function show_dealer_info_2( dealer )
				{
					ajax.execute=true;
					ajax.requestFile = ajaxRoot + 'show_dealer_info_2.php?dealer='+dealer;	// Specifying which file to get
					//ajax.onCompletion = getDealers();
					ajax.runAJAX();		// Execute AJAX function				
				}
				
				
				

    function show_strap_info( strap )
				{					
					ajax.execute=true;
					ajax.requestFile = ajaxRoot + 'show_strap_info.php?strap='+strap;	// Specifying which file to get
					ajax.runAJAX();		// Execute AJAX function					
				}
				
				
				
				
				
				
				
				
				function news_signup( lang )
				{				
				 var news_subscribe;
					if ( document.frm_news_signup.news_subscribe[0].checked )
					{
						news_subscribe = 'subscribe';
					}
					else
					{
						news_subscribe = 'unsubscribe';
					}
					
				 if ( document.frm_news_signup.email.value == "" )
					{
						document.frm_news_signup.email.focus();
					}
					else if ( !isEmail(document.frm_news_signup.email.value) )
					{
						alert('You must enter a valid email!');
					}
					else
					{
					 ajax.execute=true;
					 ajax.requestFile = ajaxRoot + 'news_signup.php?lang='+lang+'&email='+ document.frm_news_signup.email.value+'&news_subscribe='+news_subscribe;	// Specifying which file to get
						ajax.runAJAX();		// Execute AJAX function					
					}
				}







    function dealer_check_acc_name( acc_name, action )
				{					
					 ajax.requestFile = ajaxRoot + 'dealer_check_acc_name.php?acc_name='+acc_name+'&action='+action;	// Specifying which file to get					 
						ajax.onCompletion = submit_dealer_application;	// Specify function that will be executed after file has been found
						ajax.runAJAX();
					
				}
				
				function submit_dealer_application()
				{
					eval(ajax.response);
					
					if ( dealer_check_step4('en') )
					{	
					 document.frm_dealer_application.submit();
					}
				}
				
				
				
								

    function profile_check_acc_name( acc_name, action )
				{					
					 ajax.requestFile = ajaxRoot + 'dealer_check_acc_name.php?acc_name='+acc_name+'&action='+action;	// Specifying which file to get					 
						ajax.onCompletion = submit_profile;	// Specify function that will be executed after file has been found
						ajax.runAJAX();
					
				}
					
				
				function submit_profile()
				{
					eval(ajax.response);
					if ( check_dealer_profile('en') )
					{																																			
					 document.frm_dealer_application.submit();
					}
				}

