jQuery(document).ready(function() {

// general interface functions --------------------------------------------------------------------------------------------------

// preload images from css (testing)
	jQuery.preloadCssImages(); 

//Embed logo
	jQuery('#logo-div').empty();
	jQuery('#logo-div').flash(
		{ 
			src: '/wp-content/themes/starkers/images/logo.swf',
			width: 113,
			height: 157,
			background: '#000000',
			wmode: 'transparent', 
			flashvars: {}
		},
			{ version: 8 }
	);

// Update form toggler
	jQuery('.update-toggle').click(
		function() {
			jQuery("#update-div").animate({
				"height": "toggle",
				"show": "toggle"
			}, "normal");
			return false;
		}
	);//close div toggler.

// Send form toggler
	jQuery('.send-toggle').click(
		function() {
			jQuery("#send-div").animate({
				"height": "toggle",
				"show": "toggle"
			}, "normal");
			return false;
		}
	);//close div toggler.

// link and anchor functions --------------------------------------------------------------------------------------------------

// open external links in new window/tab	
	jQuery('a[@rel=external]').click(
		function () {window.open(jQuery(this).attr('href')); return false; } 
		//.attr('target','_blank');
	);// opens external links in new windows.

// scroll to anchor 
	function filterPath(string) {
		return string
	  .replace(/^\//,'')
	  .replace(/(index|default).[a-zA-Z]{3,4}$/,'')
	  .replace(/\/$/,'');
  } // close filter path
	
  jQuery('a[href*=#]').each(function() {
	
	if(jQuery(this).attr('rel') == 'tab') { return false; }
	
	if ( filterPath(location.pathname) == filterPath(this.pathname)
	&& location.hostname == this.hostname
	&& this.hash.replace(/#/,'') ) {
	  var $targetId = jQuery(this.hash), $targetAnchor = jQuery('[name=' + this.hash.slice(1) +']');
		var $target = $targetId.length ? $targetId : $targetAnchor.length ? $targetAnchor : false;
	   if ($target) {
		 var targetOffset = $target.offset().top;
		 jQuery(this).click(function() {
		   jQuery('html, body').animate({scrollTop: targetOffset}, 400);
		   return false;
		 });
	  }
	}
  });// close each function
// close scroll to anchor
	

// form functions --------------------------------------------------------------------------------------------------

// let's try to make a span in a form clickable, and check the checkbox in it.
	/*jQuery('form p:hasChild("input")').click(
		function(){
			$check = jQuery('input[@name=terms]').attr('checked');
			jQuery('input[@name=terms]').attr('checked',!$check);
		}
	);*/


// assign hover states to fancy submit buttons.  it would be cool to genericize this by pulling the element height from the CSS and adjusting the BG postiion accordingly
	jQuery('input.button').hover(
		function() {//mouse in function
			jQuery(this).css("background-position","0px -24px");
		},
		function() {//mouse out function
			jQuery(this).css("background-position","0px 0px");
		}
	);//close .button hover behaviour
	
// Specific form functions ------------------------------------------------------------------

// Update form collection ------------------------------------------------------------------
	var options = { 
		target:				'#ajx-update-resp',	// target element(s) to be updated with server response 
		beforeSubmit:	showUpdateRequest,		// pre-submit callback 
    success:			showUpdateResponse,	// post-submit callback
		type:					'post'								// 'get' or 'post', override for form's 'method' attribute 
	}; 
// bind form using 'ajaxForm' 
	jQuery("#update").ajaxForm(options);

// Send form collection ------------------------------------------------------------------
	var options = {
		target:				'#ajx-send-resp',	// target element(s) to be updated with server response 
		beforeSubmit:		showSendRequest,		// pre-submit callback 
    	success:			showSendResponse,	// post-submit callback
		type:				'post'								// 'get' or 'post', override for form's 'method' attribute 
	}; 
// bind form using 'ajaxForm' 
	jQuery("#send").ajaxForm(options);

// Petition form collection ------------------------------------------------------------------
	var options = { 
		target:				'#ajx-petition-resp',	// target element(s) to be updated with server response 
		beforeSubmit:	showPetitionRequest,		// pre-submit callback 
    success:			showPetitionResponse,	// post-submit callback
		type:					'post'								// 'get' or 'post', override for form's 'method' attribute 
	}; 
// bind form using 'ajaxForm' 
	jQuery("#petition-form").ajaxForm(options);

// Letter form collection ------------------------------------------------------------------
	var options = { 
		target:				'#ajx-letter-resp',	// target element(s) to be updated with server response 
		beforeSubmit:	showLetterRequest,	//pre-submit callback 
    success:			showLetterResponse,	//post-submit callback
		type:					'post'							// 'get' or 'post', override for form's 'method' attribute 
	}; 
// bind form using 'ajaxForm' 
	jQuery("#letter-form").ajaxForm(options);
	
	
//reset the form. GENERIFY ME.
	jQuery('.doover').click(
		function() {
			//fade out the response div
			$("#ajx-upload-resp").animate({"height":"toggle","opacity":"toggle"}, "slow",
				function(){// FO callback
					//clear out response div
					$(this).removeClass("alert").empty();
					//reset the form while still hidden
					$("#contest-upload").resetForm();
					//animate the form
					$("#contest-upload").animate({"height":"toggle","opacity":"toggle"}, "slow",
						function() {//form animate callback that 'brings back' resonse div
							$("#ajx-upload-resp").animate({"height":"toggle","opacity":"toggle"}, "slow");
						}//close form callback
					);//close form animation
				}//close FO callback
			);//close fadeout
			return false;
		}//close function
	); // close click



// just some space so i do not forget to close the top function

}); // close top function

// AJAX form utility functions --------------------------------------------------------------------------

function tcs_preview() {
	// fields 
	var county					= jQuery("#letter-form [@name=let-county]").fieldValue();
	var signatureOption	= jQuery("#letter-form [@name=signature]").fieldValue();
	var firstName				= jQuery("#letter-form [@name=let-firstName]").fieldValue();
	var lastName				= jQuery("#letter-form [@name=let-lastName]").fieldValue();
	var director				= "";
	var title						= "Mr.";
	
	// spans
	var titleSpan			= jQuery("#title");
	var directorSpan	= jQuery("#director");
	var countySpan		= jQuery("#county");
	var signatureSpan	= jQuery("#signature");
	
	// fake validation
	if (county[0] == "Default") { 
		jQuery("#ajx-letter-resp").removeClass('foo');
		jQuery("#ajx-letter-resp").addClass("alert");
		jQuery("#ajx-letter-resp").text("Please select your county.");
		return false; 
	} else if (!firstName[0]) { 
		jQuery("#ajx-letter-resp").removeClass();
		jQuery("#ajx-letter-resp").addClass("alert");
		jQuery("#ajx-letter-resp").text("Please enter your first name.");
		return false;
	} else if (!lastName[0]) { 
		jQuery("#ajx-letter-resp").removeClass();
		jQuery("#ajx-letter-resp").addClass("alert");
		jQuery("#ajx-letter-resp").text("Please enter your last name.");
		return false;
	}

	//prepare sig replacement
	if ( signatureOption == "myName") {
		var signature =  firstName + " " + lastName;
	} else {
		var signature = "Concerned Citizen";
	}
	
	// map county to director
	if (county[0] == "Gonzales") {
		var director = "Myrna P. McLeroy";
		title = "Mrs.";
	} else if (county[0] == "Victoria") {
		var director = "Clifton L. Thomas";
	} else if (county[0] == "Comal") {
		var director = "Tilmon T.L Walker";
	} else if (county[0] == "Caldwell") {
		var director = "Oscar H. Fogle";
	} else if (county[0] == "Kendall") {
		var director = "Margaret M. Grier";
		title = "Mrs.";
	} else if (county[0] == "Guadalupe") {
		var director = "Grace G. Kunde";
		title = "Mrs.";
	} else if (county[0] == "Calhoun") {
		var director = "Arlene N. Marshall";
		title = "Mrs.";
	} else if (county[0] == "Refugio") {
		var director = "Frank J. Pagel";
	} else if (county[0] == "Hays") {
		var director = "James L. Powers";
	} else if (county[0] == "Other") {
		var director = "William West, Jr.";
		county = "Texas";
	}
	
		// get #preview position
		var theTarget	= $("#preview");
		var position	= theTarget.position();
		var scrollX		= position.top;
		var scrollY		= position.left;
		var theHeight	= theTarget.height();
		var theWidth	= theTarget.width();
	
	$("#preview").fadeTo( 'normal', .33, function() {
				
				//alert(scrollX+", "+scrollY+", "+theHeight+", "+theWidth);
				
				
			$('.spinner').width(theWidth).height(theHeight).css({top:scrollX, left:scrollY});
			 $('.spinner').fadeIn('normal');
			
				
				setTimeout( function(){
			// replacements
				jQuery("#ajx-letter-resp").text("Preview Complete.");
				titleSpan.html("<b>"+title+"</b>");
				directorSpan.html("<b>"+director+"</b>");
				countySpan.html("<b>"+county+" county</b>");
				signatureSpan.html("<b>"+signature+"</b>");
					$('.spinner').fadeOut('slow', function() {
						$('#preview').fadeTo('slow',1);		
					}); 
				}, 2000);
				
			}); // close callback, close fadeTo
} // close letter preview

function showLetterRequest(formData, jqForm, options) { 
	jQuery("#ajx-letter-resp").addClass("spin");
	jQuery("#ajx-letter-resp").html("<p><span>Just a moment...</span></p>");

	// validation rules
	/* firstName, lastName, email */
	var firstNameValue	= jQuery("input[@name=firstName]").fieldValue();
	var lastNameValue	= jQuery("input[@name=lastName]").fieldValue();
	var emailValue		= jQuery("input[@name=email]").fieldValue();
	var mobileValue		= jQuery("input[@name=mobile]").fieldValue();
	var emailReg	= /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
	
	if (!firstNameValue[0]) { 
		jQuery("#ajx-letter-resp").removeClass();
		jQuery("#ajx-letter-resp").addClass("alert");
		jQuery("#ajx-letter-resp").text("Please enter your first name.");
		return false; 
	} else if (!lastNameValue[0]) { 
		jQuery("#ajx-letter-resp").removeClass();
		jQuery("#ajx-letter-resp").addClass("alert");
		jQuery("#ajx-letter-resp").text("Please enter your last name.");
		return false; 
	} else if (!emailValue[0]) { 
		jQuery("#ajx-letter-resp").removeClass();
		jQuery("#ajx-letter-resp").addClass("alert");
		jQuery("#ajx-letter-resp").text("Please enter your email address.");
		return false; 
	} else if (!emailReg.test(emailValue[0])) { 
		jQuery("#ajx-letter-resp").removeClass();
		jQuery("#ajx-letter-resp").addClass("alert");
		jQuery("#ajx-letter-resp").text("Your e-mail address must be valid.");
		return false;
	} else if (mobileValue[0] && mobileValue[0].length < 10 ) { 
		jQuery("#ajx-letter-resp").removeClass();
		jQuery("#ajx-letter-resp").addClass("alert");
		jQuery("#ajx-letter-resp").text("Did you add your area code?");
		return false;
	} 

	// fade out the form using the its ID
	jQuery("#letter").animate({"height":"toggle","opacity":"toggle"}, "slow");
} // close showletterrequest

function showLetterResponse(responseText, statusText) { 
	jQuery("#ajx-letter-resp").removeClass("spin").addClass("alert");
	jQuery("#ajx-letter-resp span").fadeOut("slow",
		function() {// callback
			jQuery(this).empty();
			jQuery(this).append(responseText).fadeIn("slow");
		} // close callback
	);//close fade
} // close response




function showUpdateRequest(formData, jqForm, options) { 
	jQuery("#ajx-update-resp").addClass("spin");
	jQuery("#ajx-update-resp").html("<p><span>Just a moment...</span></p>");

	// validation rules
	/* firstName, lastName, email */
	var firstNameValue	= jQuery("input[@name=firstName]").fieldValue();
	var lastNameValue	= jQuery("input[@name=lastName]").fieldValue();
	var emailValue		= jQuery("input[@name=email]").fieldValue();
	var mobileValue		= jQuery("input[@name=mobile]").fieldValue();
	var emailReg	= /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
	
	if (!firstNameValue[0]) { 
		jQuery("#ajx-update-resp").removeClass();
		jQuery("#ajx-update-resp").addClass("alert");
		jQuery("#ajx-update-resp").text("Please enter your first name.");
		return false; 
	} else if (!lastNameValue[0]) { 
		jQuery("#ajx-update-resp").removeClass();
		jQuery("#ajx-update-resp").addClass("alert");
		jQuery("#ajx-update-resp").text("Please enter your last name.");
		return false; 
	} else if (!emailValue[0]) { 
		jQuery("#ajx-update-resp").removeClass();
		jQuery("#ajx-update-resp").addClass("alert");
		jQuery("#ajx-update-resp").text("Please enter your email address.");
		return false; 
	} else if (!emailReg.test(emailValue[0])) { 
		jQuery("#ajx-update-resp").removeClass();
		jQuery("#ajx-update-resp").addClass("alert");
		jQuery("#ajx-update-resp").text("Your e-mail address must be valid.");
		return false;
	} else if (mobileValue[0] && mobileValue[0].length < 10 ) { 
		jQuery("#ajx-update-resp").removeClass();
		jQuery("#ajx-update-resp").addClass("alert");
		jQuery("#ajx-update-resp").text("Did you add your area code?");
		return false;
	} 

	// fade out the form using the its ID
	jQuery("#update").animate({"height":"toggle","opacity":"toggle"}, "slow");
} // close showupdaterequest

function showUpdateResponse(responseText, statusText) { 
	jQuery("#ajx-update-resp").removeClass("spin").addClass("alert");
	jQuery("#ajx-update-resp span").fadeOut("slow",
		function() {// callback
			jQuery(this).empty();
			jQuery(this).append(responseText).fadeIn("slow");
		} // close callback
	);//close fade
	/*$("#contest-upload").replaceWith("<div id='ajx-update-answer' class='alert'>" + responseText + "</div>");*/
} // close response

function showSendRequest(formData, jqForm, options) { 
	jQuery("#ajx-send-resp").addClass("spin");
	jQuery("#ajx-send-resp").html("<p><span>Just a moment...</span></p>");

	// validation rules
	/* firstName, lastName, email */
	var yourNameValue		= jQuery("input[@name=your_name]").fieldValue();
	var yourEmailValue		= jQuery("input[@name=your_email]").fieldValue();
	var friendNameValue		= jQuery("input[@name=friend_name]").fieldValue();
	var friendEmailValue	= jQuery("input[@name=friend_email]").fieldValue();
	var emailReg	= /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
	
	if (!yourNameValue[0]) { 
		jQuery("#ajx-send-resp").removeClass();
		jQuery("#ajx-send-resp").addClass("alert");
		jQuery("#ajx-send-resp").text("Please enter your name.");
		return false; 
	} else if (!yourEmailValue[0]) { 
		jQuery("#ajx-send-resp").removeClass();
		jQuery("#ajx-send-resp").addClass("alert");
		jQuery("#ajx-send-resp").text("Please enter your email address.");
		return false; 
	} else if (!emailReg.test(yourEmailValue[0])) { 
		jQuery("#ajx-send-resp").removeClass();
		jQuery("#ajx-send-resp").addClass("alert");
		jQuery("#ajx-send-resp").text("Your e-mail address must be valid.");
		return false; 
	} else if (!friendNameValue[0]) { 
		jQuery("#ajx-send-resp").removeClass();
		jQuery("#ajx-send-resp").addClass("alert");
		jQuery("#ajx-send-resp").text("Please enter your friend's name.");
		return false; 
	} else if (!friendEmailValue[0]) { 
		jQuery("#ajx-send-resp").removeClass();
		jQuery("#ajx-send-resp").addClass("alert");
		jQuery("#ajx-send-resp").text("Please enter your friend's email address.");
		return false;
	} else if (!emailReg.test(friendEmailValue[0])) { 
		jQuery("#ajx-send-resp").removeClass();
		jQuery("#ajx-send-resp").addClass("alert");
		jQuery("#ajx-send-resp").text("Your friend's e-mail address must be valid.");
		return false;
	} 
	// fade out the form using the its ID
	jQuery("#send").animate({"height":"toggle","opacity":"toggle"}, "slow");
} // close showupdaterequest

function showSendResponse(responseText, statusText) { 
	jQuery("#ajx-send-resp").removeClass("spin").addClass("alert");
	jQuery("#ajx-send-resp span").fadeOut("slow",
		function() {// callback
			jQuery(this).empty();
			jQuery(this).append(responseText).fadeIn("slow");
		} // close callback
	);//close fade
	/*$("#contest-upload").replaceWith("<div id='ajx-update-answer' class='alert'>" + responseText + "</div>");*/
} // close response

// petition utility functions
function showPetitionRequest(formData, jqForm, options) { 
	jQuery("#ajx-petition-resp").addClass("spin");
	jQuery("#ajx-petition-resp").html("<p><span>Just a moment...</span></p>");

	// validation rules
	/* firstName, lastName, email */
	var firstNameValue	= jQuery("input[@name=pet-firstName]").fieldValue();
	var lastNameValue		= jQuery("input[@name=pet-lastName]").fieldValue();
	
	var	phoneValue			= jQuery("input[@name=pet-phone]").fieldValue();
	var	mobileValue			= jQuery("input[@name=pet-mobile]").fieldValue();

	var emailValue			= jQuery("input[@name=pet-email]").fieldValue();
	var emailReg				= /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
	
	if (!firstNameValue[0]) { 
		jQuery("#ajx-petition-resp").removeClass();
		jQuery("#ajx-petition-resp").addClass("alert");
		jQuery("#ajx-petition-resp").text("Please enter your first name.");
		return false; 
	} else if (!lastNameValue[0]) { 
		jQuery("#ajx-petition-resp").removeClass();
		jQuery("#ajx-petition-resp").addClass("alert");
		jQuery("#ajx-petition-resp").text("Please enter your last name.");
		return false; 
	} else if (!emailValue[0]) { 
		jQuery("#ajx-petition-resp").removeClass();
		jQuery("#ajx-petition-resp").addClass("alert");
		jQuery("#ajx-petition-resp").text("Please enter your email address.");
		return false; 
	} else if (!emailReg.test(emailValue[0])) { 
		jQuery("#ajx-petition-resp").removeClass();
		jQuery("#ajx-petition-resp").addClass("alert");
		jQuery("#ajx-petition-resp").text("Your e-mail address must be valid.");
		return false;
	} else if (phoneValue[0] && phoneValue[0].length < 10 ) { 
		jQuery("#ajx-petition-resp").removeClass();
		jQuery("#ajx-petition-resp").addClass("alert");
		jQuery("#ajx-petition-resp").text("Did you add your phone's area code?");
		return false;
	} else if (mobileValue[0] && mobileValue[0].length < 10 ) { 
		jQuery("#ajx-petition-resp").removeClass();
		jQuery("#ajx-petition-resp").addClass("alert");
		jQuery("#ajx-petition-resp").text("Did you add your mobile's area code?");
		return false;
	} 

	// fade out the form using the its ID
	jQuery("#petition-form").animate({"height":"toggle","opacity":"toggle"}, "slow");
} // close showupdaterequest

function showPetitionResponse(responseText, statusText) { 
	jQuery("#ajx-petition-resp").removeClass("spin").addClass("alert");
	jQuery("#ajx-petition-resp span").fadeOut("slow",
		function() {// callback
			jQuery(this).empty();
			jQuery(this).append(responseText).fadeIn("slow");
		} // close callback
	);//close fade
	/*$("#contest-upload").replaceWith("<div id='ajx-update-answer' class='alert'>" + responseText + "</div>");*/
} // close response


















