/* Code for subscription module starts. */

$(document).ready(function(){
	 // generate popups for global nav items

	$("#txt_email").keypress(function () {$("#error").html('');	});

    $('a[rel="popup"]').click(function(){
           popupWindow = window.open(this.href,this.title,'menu=no,toolbar=no,width=500,height=600,scrollbars=1,resizable=0,directories=no,location=no,screenX=0,screenY=0,top=48,left=48');
           popupWindow.focus()
           return false;
    });

	// Valid USA Zip Code should contain numbers and hypen only.
	$("#txt_zip_code").keypress(function(e) {
		var key;
		var keychar;

		if (window.event)
		{
			key = window.event.keyCode;
		}
		else if (e)
		{
			key = e.which;
		}
		else
		{
			return true;
		}

		keychar = String.fromCharCode(key);

		if ((key==null) || (key==0) || (key==8) ||  (key==9) || (key==13) || (key==27) )
		{
			return true;
		}
		else if ((("0123456789-").indexOf(keychar) > -1))
		{
			return true;
		}
		else
		{
			return false;
		}
	});

	/* Code for filtering stories by Zip Code */
	$("#btn_zip_code").click(function (){
		//reset other search fields							   
		$('#txt_state_code').val('');
		$('#sel_cause_type').val('');
		fun_filter_stories_by_zip_code($('#txt_zip_code').val());
	});
	/* Code for filtering stories by Zip Code */
	

	/* Code for filtering stories by Cause Type */
	//selection chose on change
	
	//$("#sel_cause_type").change(function (){
		//fun_filter_stories_by_cause_types(this.value);
	//});
	/* Code for filtering stories by Cause Type */
	
	/* Code for filtering stories by Cause Type */
	$("#btn_cause_type").click(function (){
		//reset other search fields
		$('#txt_state_code').val('');
		$('#txt_zip_code').val('');
		$('#txt_zip_code').watermark('watermark', 'ENTER ZIP:');
										 
		fun_filter_stories_by_cause_types($('#sel_cause_type').val());
	});
	/* Code for filtering stories by Cause Type */
	
	/* Code for filtering stories by State Code */
	$("#btn_state_code").click(function (){
		//reset other search fields	
		$('#sel_cause_type').val('');
		$('#txt_zip_code').val('');
		$('#txt_zip_code').watermark('watermark', 'ENTER ZIP:');
										 
	  fun_filter_stories_by_state_code($('#txt_state_code').val());
	});
	/* Code for filtering stories by State Code */
});

$(function(){
 	$("#txt_email").focus(function () {

 		var txt_val	=	'Enter your email address';

 		if($(this).val() == 'Enter your email address')
 		{
 			$(this).val('');
 		}
 	});

 	$("#txt_email").blur(function () {

 		if ($(this).val() == '')
 		{
 			var txt_val	=	'Enter your email address';
 		}

		$(this).val(txt_val);
 	});

});

/* Code for subscription module ends. */

/* Code for facebook starts. */
/*
window.fbAsyncInit = function() {
    FB.init({status: true, cookie: true,
             xfbml: true});
  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
*/
/* Code for facebook ends. */


function fun_check_email_exists()
{
	$('#err_msg').html('');
	var txt_email		=	 $('#txt_email').val();
	var base_url		=	 $('#base_url').val();
	txt_email			=	$.trim(txt_email);

	if(txt_email)
	{
		$.ajax({
			url			:	base_url+'ajax/check_email_exists',
			data		:	'txt_email='+txt_email,
			type		:	'post',
			dataType	:	'text',
			success		:	function (msg) {
				switch(msg)
				{
					case 'exists':
					$('#txt_email').val('');
					$('#err_msg').css('color', 'red');
					$('#display_error').html('A user with this Email Address is already subscribed on this site, please try with another Email Address!');
					return false;
					break;

					case 'success':
					$('#txt_email').val('');
					//$('#err_msg').html('<div class="thankYou show"><p>Thank You!</p></div>');
					$('#error').html('<div class="thankYou show"><p>Thank You!</p></div>');

					// Code for Omniture.
					fun_omniture('subscribe');

					return false;
					break;

					case 'failure':
					$('#txt_email').val('');
					$('#err_msg').css('color', 'red');
					$('#display_error').html('Unknown problem occured in subscribing to the Newsletter!');
					return false;
					break;
				}
			}
		}
		);
	}

	return false;
}

function fun_filter_stories_by_cause_types(cause_type)
{
	cause_type		=	$.trim(cause_type);
	var base_url	=	$('#base_url').val();
	var by_map_link	=	$('#by_map_link').attr('href');

	$.ajax({
		beforeSend	: function(){
							var loading_html	=	fun_generate_loading_html(base_url);
     						$('#searchResults').html(loading_html);
						},
		url			:	base_url+'lend_a_hand/fun_filter_by_cause_type/'+cause_type,
		data		:	'filter_type=cause_type&by_map_link='+by_map_link,
		type		:	'POST',
		success		:	function (msg){
							$('#searchResults').html(msg);

							// Re- Bind the color box.
							fun_rebind_stories_modals();
						}
	});
}

function fun_filter_stories_by_state_code(state_code)
{
	state_code		=	$.trim(state_code);
	var base_url	=	$('#base_url').val();
	var by_map_link	=	$('#by_map_link').attr('href');

	$.ajax({
		beforeSend	: function(){
							var loading_html	=	fun_generate_loading_html(base_url);
     						$('#searchResults').html(loading_html);
						},
		url			:	base_url+'lend_a_hand/fun_filter_by_state_code/'+state_code,
		data		:	'filter_type=state_code&by_map_link='+by_map_link,
		type		:	'POST',
		success		:	function (msg){
							$('#searchResults').html(msg);

							// Re- Bind the color box.
							fun_rebind_stories_modals();
						}
	});
}

function fun_generate_loading_html(base_url)
{
	var loading_html	=	'<div align="center" style="margin:170px 0px 0px 0px;">';

	loading_html		+=	'<h3>Loading...</h3><br /><img src="'+base_url+'images/loadingAnimation.gif"/>';
	loading_html		+=	'</div>';

	return loading_html;
}

/*
 Function for re-binding the colorbox so that modal
 windows should work even after the content is loaded
 with AJAX.
*/

function fun_rebind_stories_modals()
{
	$(".modal-readStories").colorbox(
								{
									iframe:true,
									innerWidth:883,
									innerHeight:612,
									opacity:.9,
									transition:"fade",
									initialWidth:208,
									initialHeight:13,
									scrolling:false,
									overlayClose: false
								}
							);
}

function fun_filter_stories_by_zip_code(zip_code)
{
	var zip_code	=	$.trim(zip_code);
	var base_url	=	$('#base_url').val();
	var by_map_link	=	$('#by_map_link').attr('href');

	$.ajax({
		beforeSend	:	function(){

     						var loading_html	=	fun_generate_loading_html(base_url);
     						$('#searchResults').html(loading_html);
						},
		url			:	base_url+'lend_a_hand/fun_filter_by_zip_code/'+zip_code,
		data		:	'filter_type=zip_code&by_map_link='+by_map_link,
		type		:	'POST',
		success		:	function (msg){
							$('#searchResults').html(msg);
							$('#loading_img').hide();

							// Re- Bind the color box.
							fun_rebind_stories_modals();
						}
	});
}




$(function (){
	/* Challenge a friend */
	$("#frmChallengeFriend").validate({
		invalidHandler: function(form, validator) {
			var errors = validator.numberOfInvalids();
			if (errors) {
				// Code for displaying red colored error message.
				$("#challengeFriendMessage").removeClass('successMsg errorMsg').addClass('errorMsg');
				var message = 'Highlighted fields are mandatory.';


				//////////////////* Code for email validation and for similar email IDs. *//////////////////
				if(($('#friendsEmail').val() != '') &&  ($('#friendsEmail').is_valid_email() == false))
				{
					message	=	"Please enter valid Your Friend's Email.";
				}
				else if(($('#yourEmail').val() != '') && ! ($('#yourEmail').is_valid_email()))
				{
					message	=	'Please enter valid Your Email.';
				}
				//////////////////* Code for email validation and for similar email IDs. *//////////////////



				$("#challengeFriendMessage").html(message);
				$("#challengeFriendMessage").addClass("errorMsg");
				$("div.errorMsg").show();
				$("#challengeFriendMessage").css("color", 'red');
			} else {
				$("div.errorMsg").hide();
			}
		},
		errorPlacement: function(error,element) {
			return true;
		}
	});
	/* Contact Us */
	$("#frmContactUs").validate({
		invalidHandler: function(form, validator) {
			var errors = validator.numberOfInvalids();
			if (errors) {

				// Code for displaying red colored error message.
				$("#contactUsMessage").removeClass('successMsg errorMsg').addClass('errorMsg');

				var message = 'Highlighted fields are mandatory.';

				//////////////////* Code for email validation and for similar email IDs. *//////////////////
				if(($('#email').val() != '') &&  ($('#email').is_valid_email() == false))
				{
					message	=	'Please enter valid Email.';
				}
				else if(($('#confirmEmail').val() != '') && ! ($('#confirmEmail').is_valid_email()))
				{
					message	=	'Please enter valid Confirm Email.';
				}
				else if(($('#email').val() != '') && ($('#confirmEmail').val() != '') && ($('#email').val() != $('#confirmEmail').val()))
				{
					message	=	'Email and Confirm Email should be same.';
				}
				//////////////////* Code for email validation and for similar email IDs. *//////////////////

				$("#contactUsMessage").html(message);
				$("#contactUsMessage").addClass("errorMsg");
				$("div.errorMsg").show();
				$("#contactUsMessage").css("color", 'red');
			} else {
				$("div.errorMsg").hide();
			}
		},
		errorPlacement: function(error,element) {
			return true;
		},
		rules: {
		    confirmEmail: {
		      equalTo: "#email"
		    }
		}
	});

	/* Code for adding a method for validating phone number, starts */
		$.validator.addMethod("NumbersOnly", function(value, element) {
			return this.optional(element) || /^[0-9\-\+]+$/i.test(value);
		},"Phone number can only contain numbers (0-9) and -.");

		$.validator.addMethod("OnlyNumbers", function(value, element) {
			return this.optional(element) || /^[0-9\+]+$/i.test(value);
		},"Please enter numbers only (0-9).");
	/* Code for adding a method for validating phone number, ends */

	/* Code for validating Submit Story form */
	$("#frm_submit_st").validate({
		invalidHandler: function(form, validator) {
			var errors = validator.numberOfInvalids();
			if (errors) {
				// Code for displaying red colored error message.
				$("#submitStoryMessage").removeClass('successMsg errorMsg').addClass('errorMsg');

				var message = 'Highlighted fields are mandatory.';

				//////////////////* Code for email validation and for similar email IDs. *//////////////////
				if(($('#email').val() != '') &&  ($('#email').is_valid_email() == false))
				{
					message	=	'Please enter valid Email.';
				}
				else if(($('#confirmEmail').val() != '') && ! ($('#confirmEmail').is_valid_email()))
				{
					message	=	'Please enter valid Confirm Email.';
				}
				else if(($('#email').val() != '') && ($('#confirmEmail').val() != '') && ($('#email').val() != $('#confirmEmail').val()))
				{
					message	=	'Email and Confirm Email should be same.';
				}
				else if (($('#phone').val() != '') && ($('#phone').is_valid_phone() == false))
				{
					message	=	'Please enter only numbers (0-9) and - in Phone.';
				}
				else if (($('#zip').val() != '') && ($('#zip').allow_numbers_only() == false))
				{
					message	=	'Please enter only numbers (0-9) in Zip Code.';
				}
				//////////////////* Code for email validation and for similar email IDs. *//////////////////

				$("#submitStoryMessage").html(message);
				$("#submitStoryMessage").addClass("form_error");
				$("#submitStoryMessage").css("color", "red");
			}
		},

		highlight: function(element, errorClass) {
			$(element).css('border', 'red 1px solid');
		},

		unhighlight: function(element, errorClass) {
			$(element).css('border', 'white 1px solid');
		},

		errorPlacement: function(error,element) {
			return true;
		},
		rules: {
			confirmEmail: {
				equalTo: "#email"
			},

			zip: {
				required: true,
				OnlyNumbers: true
			}
		}
	}); // $("#frm_submit_st").....

	$('#frm_submit_st').submit(function () {
		if($("#frm_submit_st").valid()){
			fun_submit_story();
			return false;
		}

		return false;
	});

	$('#frmChallengeFriend').submit(function () {
		if($("#frmChallengeFriend").valid()){
			fun_challenge_others();
			return false;
		}

		return false;
	});

}); // $(document)...

$(document).ready(function(){

	$("#frm_subscribe").validate({

		invalidHandler: function(form, validator) {
			var errors = validator.numberOfInvalids();
			if (errors) {
				$("#error").html('');
			}
		},

		highlight: function(element, errorClass) {
			$(element).css('border', 'red 1px solid');
			$(element).focus();
		},

		unhighlight: function(element, errorClass) {
			$(element).css('border', 'white 1px solid');
		},

		errorPlacement: function(error, element) {
			error.appendTo( $("#display_error").html(''));
			$("#display_error").css('color', 'red');
		},

		rules: {
			txt_email: {
					required: true,
					email: true
					}
				},

		messages: {
			txt_email:{
					required: "Please enter valid email.",
					email: "Please enter valid email."
			}
		}
	});

	$('#frm_subscribe').submit(function () {
			if($("#frm_subscribe").valid()){
				fun_check_email_exists();
			}

			return false;
	});

	$('#frmContactUs').submit(function () {
		if($("#frmContactUs").valid()){
			// Contact Us Omniture
			fun_omniture('contact_us');

			// Subscribe Omniture

			if($('#acceptBoxN').attr('checked'))
			{
				fun_omniture('subscribe');
			}

			// AJAX: insert contact us form data and send mail.
			fun_submit_contact_us_form();
			return false;
		}

		return false;
	});

	$('#frmChallengeFriend').submit(function () {
			if($("#frmChallengeFriend").valid()){

				// Omniture
				fun_omniture('tell_a_friend');
			}
	});
});

/*
 Function written for calling Omniture.
*/

function fun_omniture(page_name)
{
	switch (page_name)
	{
		case 'subscribe':
			var s= s_gi(s_account);
			s.linkTrackVars='events';
			s.linkTrackEvents='event15';
			s.events='event15';
			s.tl(this,'o','newsletter_subscription');
		break;

		case 'tell_a_friend':
			var s= s_gi(s_account);
			s.linkTrackVars='events';
			s.linkTrackEvents='event11';
			s.events='event11';
			s.tl(this,'o','challenge_others');
		break;

		case 'contact_us':
			var s= s_gi(s_account);
			s.linkTrackVars='events';
			s.linkTrackEvents='event16';
			s.events='event16';
			s.tl(this,'o','contact_us');
		break;
	}
}

function fun_submit_story()
{
	var firstName	=	$("#firstName").val();
	var lastName	=	$("#lastName").val();
	var busName		=	$("#busName").val();
	var city		=	$("#city").val();
	var state		=	$("#state").val();

	var zip			=	$("#zip").val();
	var email		=	$("#email").val();
	var phone		=	$("#phone").val();
	var comments	=	$("#comments").val();
	var base_url	=	$("#base_url").val();

	firstName		=	$.trim(firstName);
	lastName		=	$.trim(lastName);
	busName			=	$.trim(busName);
	city			=	$.trim(city);
	state			=	$.trim(state);

	zip				=	$.trim(zip);
	email			=	$.trim(email);
	phone			=	$.trim(phone);
	comments		=	$.trim(comments);

	var qry_str		=	'firstName='+firstName+'&lastName='+lastName+'&busName='+busName+'&city='+city+'&state='+state;
	qry_str			+=	'&zip='+zip+'&email='+email+'&phone='+phone+'&comments='+comments;

	$.ajax({
			url			:	base_url+'ajax/insert_marketer',
			data		:	qry_str,
			type		:	'post',
			dataType	:	'text',
			beforeSend	:	function (){
								$("#submitStoryMessage").html('');
								$("#loading_msg").show();
							},
			success		:	function (msg) {
								$("#loading_msg").hide();
								switch (msg)
								{
									case 'success':
									$("#submitStoryMessage").html('Story submitted successfully.');
									$("#submitStoryMessage").css('color', 'green');

									// Function called for reseting the form.
									$('form').clearForm();
									break;

									case 'error':
									$("#submitStoryMessage").html('Problem in submitting story.');
									$("#submitStoryMessage").css('color', 'red');
									break;

									case 'email_exists':
									$("#submitStoryMessage").html('This Email already exists.');
									$("#email").focus();
									$("#submitStoryMessage").css('color', 'red');
									break;
								}
							}
		});
}

function fun_challenge_others()
{
	var friendsName	=	$("#friendsName").val();
	var friendsEmail=	$("#friendsEmail").val();
	var comments	=	$("#comments").val();
	var yourName	=	$("#yourName").val();
	var yourEmail	=	$("#yourEmail").val();

	var acceptBox	=	$("#acceptBox:checked").length;
	var base_url	=	$("#base_url").val();

	var qry_str		=	'friendsName='+friendsName+'&friendsEmail='+friendsEmail+'&comments='+comments;
	qry_str			+=	'&yourName='+yourName+'&yourEmail='+yourEmail+'&acceptBox='+acceptBox;

	$.ajax({
			url			:	base_url+'lend_a_hand/submit_challenging_others_form',
			data		:	qry_str,
			type		:	'post',
			dataType	:	'text',
			beforeSend	:	function (){
								$("#challengeFriendMessage").html('');
								$("#loading_msg").show();
							},
			success		:	function (msg) {
								$("#loading_msg").hide();

								switch (msg)
								{
									case 'success':
									$("#challengeFriendMessage").html('Message sent successfully.');
									$("#challengeFriendMessage").css('color', 'green');

									// Function called for reseting the form.
									$('form').clearForm();
									break;

									case 'error':
									$("#challengeFriendMessage").html('Problem in sending message.');
									$("#challengeFriendMessage").css('color', 'red');
									break;
								}
							}
		});
}

function fun_submit_contact_us_form()
{
	var firstName	=	$("#firstName").val();
	var lastName	=	$("#lastName").val();
	var email		=	$("#email").val();
	var myComments	=	$("#myComments").val();
	var comments	=	$("#comments").val();

	var acceptBox	=	$("#acceptBox:checked").length;
	var acceptBoxN	=	$("#acceptBoxN:checked").length;

	var qry_str		=	'firstName='+firstName+'&lastName='+lastName+'&email='+email;
	qry_str			+=	'&myComments='+myComments+'&comments='+comments+'&acceptBox='+acceptBox+'&acceptBoxN='+acceptBoxN;

	var base_url	=	$("#base_url").val();

	$.ajax({
			url			:	base_url+'contact_us/submit_contact_us_form',
			data		:	qry_str,
			type		:	'post',
			dataType	:	'text',
			beforeSend	:	function (){
								$("#contactUsMessage").html('');
								$("#loading_msg").show();
							},
			success		:	function (msg) {
								$("#loading_msg").hide();

								switch (msg)
								{
									case 'success':
									$("#contactUsMessage").html('Thank you for contacting us.');
									$("#contactUsMessage").css('color', 'green');

									// Function called for reseting the form.
									$('form').clearForm();
									break;

									case 'email_exists':
									$("#contactUsMessage").html('This Email already exists.');
									$("#email").focus();
									$("#contactUsMessage").css('color', 'red');
									break;

									case 'error':
									$("#contactUsMessage").html('Problem in sending message.');
									$("#contactUsMessage").css('color', 'red');
									break;

									default:
									$("#contactUsMessage").html('Problem in sending message.');
									$("#contactUsMessage").css('color', 'red');
									break;
								}
							}
		});
}

/* Function added for resetting the form. */
$.fn.clearForm = function() {
	return this.each(function() {

		//var type = this.type, tag = this.tagName.toLowerCase();
		var type = this.type, tag = this.tagName.toLowerCase();

		if (tag == 'form')
		{
			return $(':input',this).clearForm();
		}

		if (type == 'text' || type == 'password' || tag == 'textarea')
		{
			this.value = '';
		}

		else if (type == 'checkbox' || type == 'radio')
		{
			this.checked = false;
		}

		else if (tag == 'select')
		{
			this.selectedIndex = -1;
		}
	});
};
/* Function added for resetting the form. */

$.fn.is_valid_email	=	function () {
return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(this.val());
}

$.fn.is_valid_phone	=	function () {
	return /^[0-9\-\+]+$/i.test(this.val());
}

$.fn.allow_numbers_only	=	function () {
	return  /^[0-9\+]+$/i.test(this.val());
}

window.onerror = function (){
//	return true;
}