window.addEvent('domready', function() {
	$('mailing_state').addEvent('change',function(e){
		new Event(e).stop();
		$('county').setProperty('disabled','true');
		/**
		 * AJAX the counties for *this* State
		 */
//		new Ajax($('site_webroot').value+$('cfc_root').value+'/com/creativengine/Geographical.cfc',{
//		new Ajax(site_webroot+cfc_root+'/com/creativengine/Geographical.cfc',{
		new Request({
			url: $('site_webroot').value+$('cfc_root').value+'/com/creativengine/Geographical.cfc',
			/**/
			method: 'get',
			data: 'method=getCounties&State='+this.options[this.selectedIndex].value,
			onComplete: function(HTML){

				XML = XMLDocument(HTML);

				XML = XML.getElementsByTagName("string");

				/**
				 * <select name="county" id="county" required="yes">
            	 * <option label="--" value="null">--</option>
 				 * <option label="Adams County" value="Adams County">Adams County</option>...
				*/

				$('county').empty();

				try {
					county = document.createElement('<OPTION LABEL="--" VALUE="null">');
				} catch (e) {
					county = document.createElement('OPTION');
					county.setAttribute('label','--');
					county.setAttribute('value','null');
				}
				county.appendChild(document.createTextNode('--'));
				$('county').appendChild(county);

				for(var i=0; i < XML.length; i++){

					try {
						county = document.createElement('<OPTION LABEL="'+XML[i].firstChild.data+'" VALUE="'+XML[i].firstChild.data+'">');
					} catch (e) {
						county = document.createElement('OPTION');
						county.setAttribute('label',XML[i].firstChild.data);
						county.setAttribute('value',XML[i].firstChild.data);
					}

					county.appendChild(document.createTextNode(XML[i].firstChild.data));
					$('county').appendChild(county);
				}


				$('county').removeProperty('disabled');
			},
			onFailure: function(){
				alert('!');
				$('county').removeProperty('disabled');
			}
//		}).request();
		}).send();
	});




	/**
	 * Handle when the petition form is submitted.
	 */
	$('form').addEvent('submit', function(e) {
		/**
	 	* Prevent the submit event
	 	*/
		new Event(e).stop();
		/**
		* Handle error message for Form
		*/
		var message = form();
		//
		if(message.length){
			alert(message);
		}else{
			$('petition_form').addClass('disappear');
			$('petition_main').addClass('ajax-loading');
			/**
			 * send takes care of encoding and returns the Ajax instance.
			 * onComplete removes the spinner from the log.
			 */
			new Request({
				url: $('site_webroot').value+$('cfc_root').value+'/com/creativengine/petition/component.cfc',
				method: 'post',
				data: 'method='+$('method').value+'&'+'uid='+$('uid').value+'&'+'first_name='+$('first_name').value+'&'+'last_name='+$('last_name').value+'&'+'email='+$('email').value+'&address='+$('address').value+'&'+'mailing_state='+$('mailing_state').value+'&city='+$('city').value+'&county='+$('county').value+'&'+'zip='+$('zip').value+'&email_text='+$('email_text').value,
				onComplete: function(response){
					response = XMLDocument(response);
					response = response.getElementsByTagName("string");
					/**/
					/**
					$('petition_optional').addClass('show');
				  	$('petition_optional_text').empty();
					**/
					
					$('response_1').setStyle('display','inline');
					$('intro_1').setStyle('display','none');
					$('petition_form').setStyle('display','none');
					/**/
					/**
					switch(response[0].firstChild.data)
					{
						case "0":
						  	$('petition_optional_text').appendChild(XMLDocument('<font>'+$('petition_response_2').value+'</font>').firstChild);
						  	break;
						case "1":
						  	$('petition_optional_text').appendChild(XMLDocument('<font>'+$('petition_response_2').value+'</font>').firstChild);
						  	break;
						case "2":
						  	$('petition_optional_text').appendChild(XMLDocument('<font>'+$('petition_response_2').value+'</font>').firstChild);
						  	break;
						default:
					}
					**/
					$('petition_main').removeClass('ajax-loading');
				}
			}).send();
		}
	});
});


function form(){
	var message = "";
	// First Name
	if(!$('first_name').value.replace(/ /g,'').length){
		message = message + "- First Name is required\n\n";
	}
	// Last Name
	if(!$('last_name').value.replace(/ /g,'').length){
		message = message + "- Last Name is required\n\n";
	}
	// City
	if(!$('city').value.replace(/ /g,'').length){
		message = message + "- Town is required\n\n";
	}
	// Email
	if($('email').value.search(/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/)<0){
		message = message + "- Email is required or invalid\n\n";
	}
	// Verify Email
	if($('email').value!=$('verify_email').value){
		message = message + "- Verify Email does not match Email\n\n";
	}
	// Mailing State
	if($('mailing_state').options[$('mailing_state').selectedIndex].value=="null"){
		message = message + "- State is required\n\n";
	}
	
	/**  County
	if($('county').options[$('county').selectedIndex].value=="null"){
		message = message + "- County is required\n\n";
	}
	**/
	// ZIP
	if($('zip').value.search(/^[A-Za-z0-9]{5}(\-[A-Za-z0-9]{4})*$/)<0){
		message = message + "- ZIP is required or invalid\n\n";
	}
	//
	return message;
}
function XMLDocument(XML){
	var _result;
	/**
	 * XML Parse
	 */
	if(document.implementation && document.implementation.createDocument){
		/**
		 * Mozilla, Firefox, Opera etc
		 */
		var _parser = new DOMParser();
	  	_result = _parser.parseFromString(XML,"text/xml");
	}else{
		/**
 		 * Microsoft
		 */
		_result = new ActiveXObject("Microsoft.XMLDOM");
  		_result.async=false;
		_result.loadXML(XML);
	}
	return _result;
}
