/* Used with jquery 1.3.2.min.js and jquery.simplemodal-1.2.3.min.js to handle contact form submit and jquery effects on product-detail template. */

// this needs to occur before document is ready
$('head').append('<script type="text/javascript" src="/global-scripts/jquery.bt.min.js"></' + 'script>');
if(navigator.appName === 'Microsoft Internet Explorer'){// IE requires excanvas.js for beautytip
	$('head').append('<script type="text/javascript" src="/global-scripts/excanvas.js"></' + 'script>');
}

$(document).ready(function() {
	// only execute if form element realname exists on the page
	if(typeof(document.getElementsByName('realname')[0]) !== 'undefined') {
		var expFormName = document.getElementsByName('realname')[0].value;
		document.getElementById('productContactForm').name = expFormName;
		// set contact form name attribute for SiteCat tracking
		$('input#LeadSource').val(document.URL); // Sets #LeadSource input value
		//$('input#CampaignIdentifier').val('Business Unit Partner = ' + expBUPartner + ', Channel = ' + expChannel);
		
		if(location.search.match(/send=yes$/g)){
			$("#productContactForm").hide();
			$('#formConfirmation').modal();
			s.sendFormEvent('s', s.pageName, expFormName);
			// send success event for form
		}
		
		if ($("#productContactForm").hasClass('enableValidation')){
			$('#submitButton').hover(function(){
				$(this).css({'cursor':'pointer','cursor':'hand'});
			},function(){
				$(this).css({'cursor':'auto'});
			});
			$('#submitButton').bind('click',function(){
				submitForm();
			});
			startValidation(); // starts form validation
		}
	}
});

function submitForm (){	
	finalValidation();
	if($(".notvalid").length<1){
		var firstNameValue = $('input[name="First Name"]').val(); // Get first name
		var lastNameValue = $('input[name="Last Name"]').val(); // Get last name
		$('input[name="realname"]').val(firstNameValue + " " + lastNameValue); // Set realname value
		
		if ($('input[name="Email"][type!="hidden"]').length > 0){
			var emailValue = $('input[name="Email"][type!="hidden"]').val(); // Get email
			$('input[name="email"][type="hidden"]').val(emailValue); // Set email value
		}
		else if ($('input[name="Email Address"][type!="hidden"]').length > 0){				
			var emailValue = $('input[name="Email Address"][type!="hidden"]').val(); // Get email from legacy forms where email field has a name of 'Email Address'
			$('input[name="email"][type="hidden"]').val(emailValue); // Set email value for legacy forms
		}
		if(location.search.match(/^\?cat1?2?=/g)){ // checks for cat1 or cat2 req params before appending send param
			$("#formRedirect")[0].value = document.URL + "&send=yes"; // redirects page to display confirmation message
		}
		else {
			$("#formRedirect")[0].value = document.URL + "?send=yes"; // redirects page to display confirmation message
		}
		$("#productContactForm").submit(); // submits form
	}
}

// form validation functions begin
function startValidation(){	
	$('.productFormLabel').each(function(){
		if($(this).hasClass('productFormLabelRequired')){
			var labelText = $(this).text();
			var requiredFieldName = $(this).attr('for');
			var jThis = $('.productTextField[name='+requiredFieldName+']');
			
			$(this).text(labelText + " *");
			
			jThis.bind('keyup',function(){
				setValueAsActive(jThis,requiredFieldName); // set values at keyup
			});
			
			jThis.bind('blur',function(){
				setValues(jThis,requiredFieldName); // reset values at blur
			});
		}	
	});
}

function finalValidation(){
	$('.productFormLabel').each(function(){
		if($(this).hasClass('productFormLabelRequired')){
			var requiredFieldName = $(this).attr('for');
			var jThis = $('.productTextField[name='+requiredFieldName+']');
			setValues(jThis,requiredFieldName);
		}	
	});
}

function setValueAsActive(j,req){	
	if (j.parent('li').hasClass('activeField')){
		j.parent('li').removeClass('activeField');
	}
	if (j.parent('li').hasClass('notvalid')){
		j.parent('li').removeClass('notvalid');
	}			
	if (j.parent('li').hasClass('valid')){
		j.parent('li').removeClass('valid');
	}
	
	j.parent('li').addClass('activeField');
	
	return;
}

function setValues(j,req){
	var fieldValue = j.val();
	var btTestClass = testValue(req,fieldValue);
	
	if (j.parent('li').hasClass('activeField')){
		j.parent('li').removeClass('activeField');
	}
	if (j.parent('li').hasClass('notvalid')){
		j.parent('li').removeClass('notvalid');
	}			
	if (j.parent('li').hasClass('valid')){
		j.parent('li').removeClass('valid');
	}
	
	j.parent('li').addClass(btTestClass);
	
	return;
}

function testValue(fieldName,fieldValue){
	var email='Email';
	var email2='Email Address'; // covers legacy forms that use Email Address
	var emailTest = /\b[\w._%+-]+@(?:[\w-]+\.)+[\w]{2,4}\b/;
	var textTest = /^[^\s].+\s*$/;
	var btTestClass;
	switch(fieldName){
		case email:
			if(emailTest.test(fieldValue)){
				btTestClass="valid";
			}
			else {
				btTestClass="notvalid";
			}
			break;
			
		case email2:
			if(emailTest.test(fieldValue)){
				btTestClass="valid";
			}
			else {
				btTestClass="notvalid";
			}
			break;
		
		default:
			if(textTest.test(fieldValue)){
				btTestClass="valid";
			}
			else {
				btTestClass="notvalid";
			}
			break;
	}
	return btTestClass;
}
// form validation functions end
