$(document).ready(function(){
	/*$(".main a img").hover(
		function () {
			if($(this).parent().attr("class")!="active") {
				var url = $(this).attr("src");
				url = url.replace(/.png/, "_over.png");
				$(this).attr("src", url);
			}
		},
		function () {
			if($(this).parent().attr("class")!="active") {
				var url = $(this).attr("src");
				url = url.replace(/_over/, "");
				$(this).attr("src", url);
			}
		}
	);*/
	
	$(".lower a img").hover(
		function () {
			if($(this).parent().attr("class")!="active") {
				var url = $(this).attr("src");
				url = url.replace(/.png/, "_over.png");
				$(this).attr("src", url);
			}
		},
		function () {
			if($(this).parent().attr("class")!="active") {
				var url = $(this).attr("src");
				url = url.replace(/_over/, "");
				$(this).attr("src", url);
			}
		}
	);
	
	if($('input').length) {
		$('input, textarea').not('input:submit').focus(function() {
			if(this.defaultValue == this.value) {
				this.value = '';
			}
		});
		$('input, textarea').not('input:submit').blur(function() {
			if(this.value == '') {
				this.value = this.defaultValue;
			}
		});
	}
	
	$('form.form').submit(function() {
		$('p.error').remove();
		$('.error').removeClass();
		var fail = false;
		var reason = "";
		$('input, textarea').not('input:submit').each(function() {
			if(this.defaultValue == this.value) {
				this.value = '';
			}
		});
		if($('#requestcall').length) {
			if($('#name').val()=="")
			{
				$('#name').addClass('error');
				fail = true;
				reason += "Please enter your Name.<br />";
			}
			if($('#phone').val()=="")
			{
				$('#phone').addClass('error');
				fail = true;
				reason += "Please enter your Phone Number.<br />";
			}
			if(!(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/).test($('#email').val()))
			{
				$('#email').addClass('error');
				fail = true;
				reason += "Please enter your Email Address.<br />";
			}
		}
		if($('#requestservicecall').length) {
			if($('#name').val()=="")
			{
				$('#name').addClass('error');
				fail = true;
				reason += "Please enter your Name.<br />";
			}
			if($('#custID').val()=="")
			{
				$('#custID').addClass('error');
				fail = true;
				reason += "Please enter your Customer Number.<br />";
			}
			if($('#address').val()=="")
			{
				$('#address').addClass('error');
				fail = true;
				reason += "Please enter your Address.<br />";
			}
			if($('#city').val()=="")
			{
				$('#city').addClass('error');
				fail = true;
				reason += "Please enter your City.<br />";
			}
			if($('#state').val()=="State*")
			{
				$('#state').addClass('error');
				fail = true;
				reason += "Please enter your State.<br />";
			}
			if($('#zip').val()=="")
			{
				$('#zip').addClass('error');
				fail = true;
				reason += "Please enter your Zip Code.<br />";
			}
			if($('#phone').val()=="")
			{
				$('#phone').addClass('error');
				fail = true;
				reason += "Please enter your Phone Number.<br />";
			}
			if(!(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/).test($('#email').val()))
			{
				$('#email').addClass('error');
				fail = true;
				reason += "Please enter your Email Address.<br />";
			}
			if($('#serialn').val()=="")
			{
				$('#serialn').addClass('error');
				fail = true;
				reason += "Please enter the Unit Serial Number.<br />";
			}
			if($('#activitycode').val()=="Select One")
			{
				$('#activitycode').addClass('error');
				fail = true;
				reason += "Please select the problem you are having with the equipment.<br />";
			}
			if($('#comments').val()=="")
			{
				$('#comments').addClass('error');
				fail = true;
				reason += "Please provide a description of the problem you are having.<br />";
			}
		}
		if($('#creditapp').length) {
			if($('#lname').val()=="")
			{
				$('#lname').addClass('error');
				fail = true;
				reason += "Please enter your Last Name.<br />";
			}
			if($('#fname').val()=="")
			{
				$('#fname').addClass('error');
				fail = true;
				reason += "Please enter your First Name.<br />";
			}
			if(!(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/).test($('#email').val()))
			{
				$('#email').addClass('error');
				fail = true;
				reason += "Please enter your Email Address.<br />";
			}
			if($('#phone').val()=="")
			{
				$('#phone').addClass('error');
				fail = true;
				reason += "Please enter your Phone Number.<br />";
			}
		}
		if($('#refurb').length) {
			if($('#name').val()=="")
			{
				$('#name').addClass('error');
				fail = true;
				reason += "Please enter your Name.<br />";
			}
			if(!(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/).test($('#email').val()))
			{
				$('#email').addClass('error');
				fail = true;
				reason += "Please enter your Email Address.<br />";
			}
		}
		if(fail) {
			$('input, textarea').not('input:submit').each(function() {
				if(this.value == '') {
					this.value = this.defaultValue;
				}
			});
			$(this).prepend('<p class="error">'+reason+'</p>');
			return false;
		}
	});
	
	if($('form.form').length && location.search != '')
	{
		if(location.search=='?m=success') {
			if($('#requestservicecall').length) {
				$('form.form').before('<p>Thank you for submitting your service order.  A confirmation number will be sent to your email along with an estimated four hour time window for arrival of your field service representative.  If you do not receive the email, please call ESP at 1-800-695-4377 to verify service was scheduled.</p>').hide();
			} else {
				$('form.form').before('<h2>Thank you for your information.</h2> <p>An ESP representative will contact you shortly.</p>').hide();
			}
		}
		else if(location.search=='?m=input') {
			$('form.form').prepend('<p class="error">We had a problem validating your input. Please try again.</p>');
		}
		else if(location.search=='?m=problem') {
			$('form.form').prepend('<p class="error">There was a problem sending your message. <br />Please send us an email at <a href="mailto:espinfo@esph.com?subject=Service Call Form Error">espinfo@esph.com</a>.</p>');
		}
		else if(location.search=='?m=mailfail') {
			$('form.form').prepend('<p class="error">There was a problem sending your message. <br />Please send us an email at <a href="mailto:sales@esph.com">sales@esph.com</a>.</p>');
		}
	}
		
	var selectfix = false;
	$('.calc .selectfix').click(function() {
		$(this).next('select').trigger('click');
	});
	
	$('.calc select').click(function() {
		//$(this).css('height', 'auto');
	});
	
	function selectFixer(select) {
		if(selectfix) {
			select.css('height', '30px');
			select.children('option').css('margin-top', '-30px;');
			selectfix = false;
		}
		else
		{
			//var num = $(select).children('option').length;
			select.css('height', 'auto');
			selectfix = true;
		}
	}
	
	$('#state2Select').change(function() {
		top.location.href = this.form.state.options[this.form.state.selectedIndex].value;
		return false;
	});
	
	if($('#calc').length) {
		if($('h2.price').length) {
			$('#principal').val('$'+$('h2.price span').text());
		}
		$('#rates, #principal').change(function() {
			var payments = $('#rates').val();
			var values = payments.split(':');
			payments = Number(values[0]);
			var i = Number(values[1]);
			
			var principal = Number($('#principal').val().replace(/\$|,/ig, ''));
			if(principal>1 && payments>1) {
				var money = '' + principal*i;
				//var dec = money.indexOf(".");
				//var dollars = money.substring(0,dec);
				//var cents = money.substring(dec+1,dec+3);
				//cents = (cents.length < 2) ? cents + "0" : cents;
				//money = dollars + "." + cents;
				$('#payment').val('$'+(Math.round(money*100)/100));
			}
			else
			{
				$('#payment').val('Result');
			}
		});
		$('#rates').change();
	}
	
	if($('#getcoveragenow').length) {
		$('#getcoveragenow').append('<select id="overflow" style="display:none;"></select>');
		$('#state').change(function() {
			
			var state = $(this).val();
			//alert(state);
			//$('#equipment').val('0');
			$('#equipment').append($('#overflow').children());
			$('#equipment option').each(function() {
				if($(this).attr('value')!='0') {
					var allowed = $(this).attr('data-state');
					if(allowed.indexOf(state)>=0) {
						//$(this).show();
					} else {
						$('#overflow').append($(this));
					}
				}
			});
		});
		$('#state').change();
	}
	
	if($('.servicecontract').length) {
		$('.servicecontract').hide().after('<a href="#" class="statebutton signmeup">Sign Me Up</a>').each(function() {
			var product = $(this).parent().parent().prev('table').attr('id');
			$(this).append('<input type="hidden" name="product" value="' + product + '"/><input type="hidden" name="page" value="' + location.pathname + '"/>');
		});
		
		$('a.signmeup').click(function() {
			$('body').append('<div id="overlay"></div>');
			$('.container').append('<div id="modal"></div>');
			$('#modal').append($(this).prev('.servicecontract').clone().show().prepend('<a href="#" id="closeoverlay">X</a>'));
			$('#closeoverlay, #overlay').click(function() {
				$('#overlay, #modal').remove();
				$('body, .header *, .box *, .footer *').unbind('focus');
				return false;
			});
			
			/*$('body, .header *, .box *, .footer *').focus(function() {
				$('#modal .servicecontract input:first').focus();
			});*/
			$('html, body').animate({scrollTop:0}, 'slow');
			return false;
		});
		var form = $('.servicecontract');
		formhandler(form);
	}
	
	if($('.purchaseupgrade').length) {
		$('.purchaseupgrade').hide().after('<a href="#" class="statebutton signmeup">Purchase Upgrade</a>').each(function() {
			var product = $(this).parent().parent().prevAll('table').attr('id');
			//alert(product);
			$(this).append('<input type="hidden" name="product" value="' + product + '"/><input type="hidden" name="page" value="' + location.pathname + '"/>');
		});
		var form = $('.purchaseupgrade');
		$('a.signmeup').click(function() {
			if($('#termsconditions:checked').length) {
				$('body').append('<div id="overlay"></div>');
				$('.container').append('<div id="modal"></div>');
				$('#modal').append(form.clone().show().prepend('<a href="#" id="closeoverlay">X</a>'));
				$('#closeoverlay, #overlay').click(function() {
					$('#overlay, #modal').remove();
					$('body, .header *, .box *, .footer *').unbind('focus');
					return false;
				});
				
				$('html, body').animate({scrollTop:0}, 'slow');
			} else {
				$('#termsconditions').parent().css('color','red');
			}
			return false;
		});
		formhandler(form);
	}
	
	if($('#utahcertbox').length) {
		var price = 325.00;
		$('#numblocks').change(function() {
			var val = parseInt($(this).val());
			var text = 'Purchase ' + val * 100 + ' Certificates for $' + price * val;
			$('#certcalcbutton').val(text);
		});
		var form = $('.purchasecertificates');
		form.hide();
		$('#certcalcbutton').click(function() {
			var number = parseInt($('#numblocks').val());
			$('body').append('<div id="overlay"></div>');
			$('.container').append('<div id="modal"></div>');
			$('#modal').append(form.clone().show().prepend('<a href="#" id="closeoverlay">X</a>'));
			$('#modal input.button').val('Purchase ' + number * 100 + ' Certificates for $' + price * number);
			$('#modal').find('#quantity').val(number);
			$('#closeoverlay, #overlay').click(function() {
				$('#overlay, #modal').remove();
				$('body, .header *, .box *, .footer *').unbind('focus');
				return false;
			});
			
			$('html, body').animate({scrollTop:0}, 'slow');
		});
		formhandler(form);
	}
	
	$('#requestservicecall').find('#custID').unbind().live('change', function() {
		var field = $(this);
		var val = field.val();
		$.getJSON('http://esp-global.com/validateCustomer.php?cust_id=' + val + '&callback=?', function(data) {
			var status = data.status;
			if(status == "Valid") {
				field.css('border-color', 'green').addClass('valid');
				field.prev('label').children('span').text('(Valid Customer #)').css('color', 'green');
			} else if(status == "NotFnd") {
				field.css('border-color', 'red').removeClass('valid');
				field.prev('label').children('span').text('(Invalid Customer #)').css('color', 'red');
			}
		});
	});
	
	/*$('#requestservicecall').find('#serialn').unbind().live('change', function() {
		var cust = $('#requestservicecall').find('#custID');
		var field = $(this);
		var val = field.val();
		var custval = cust.val();
		$.getJSON('http://esp-global.com/validateSerial.php?cust_id=' + custval + '&serial=' + val + '&callback=?', function(data) {
			var status = data.status;
			if(status == "Valid") {
				field.css('border-color', 'green').addClass('valid');
				field.prev('label').children('span').text('(Valid Serial #)').css('color', 'green');
			} else if(status == "CustomerNotFnd") {
				field.css('border-color', 'red').removeClass('valid');
				field.prev('label').children('span').text('(Invalid Customer #)').css('color', 'red');
			} else if(status == "SerialNotFnd") {
				field.css('border-color', 'red').removeClass('valid');
				field.prev('label').children('span').text('(Invalid Serial #)').css('color', 'red');
			}
		});
	});*/
	
});

function formhandler(form) {
	form.unbind().live('submit', function() {
		var errors = false;
		$(this).find('.required').each(function() {
			if($(this).hasClass('email')) {
				if(!(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/).test($(this).val())) {
					$(this).css('border-color', 'red');
					errors = true;
				} else {
					$(this).css('border-color', '');
				}
			} else {
				if($(this).val()=='') {
					$(this).css('border-color', 'red');
					errors = true;
				} else {
					var id = $(this).attr('id');
					if(id == 'custid' || id == 'equipment') {
						if(!$(this).hasClass('valid')) {
							$(this).css('border-color', 'red');
							errors = true;
						} else {
							$(this).css('border-color', '');
						}
					} else {
						$(this).css('border-color', '');
					}
				}
			}
		});
		if(errors) {
			return false;
		}
	});
	
	form.find('#custid').unbind().live('change', function() {
		var field = $(this);
		var val = field.val();
		$.getJSON('http://esp-global.com/validateCustomer.php?cust_id=' + val + '&callback=?', function(data) {
			var status = data.status;
			if(status == "Valid") {
				field.css('border-color', 'green').addClass('valid');
				field.prev('label').children('span').text('(Valid Customer #)').css('color', 'green');
			} else if(status == "NotFnd") {
				field.css('border-color', 'red').removeClass('valid');
				field.prev('label').children('span').text('(Invalid Customer #)').css('color', 'red');
			}
		});
	});
	
	form.find('#equipment').unbind().live('change', function() {
		var cust = $('#modal form').find('#custid');
		var field = $(this);
		var val = field.val();
		var custval = cust.val();
		$.getJSON('http://esp-global.com/validateSerial.php?cust_id=' + custval + '&serial=' + val + '&callback=?', function(data) {
			var status = data.status;
			if(status == "Valid") {
				field.css('border-color', 'green').addClass('valid');
				field.prev('label').children('span').text('(Valid Serial #)').css('color', 'green');
			} else if(status == "CustomerNotFnd") {
				field.css('border-color', 'red').removeClass('valid');
				field.prev('label').children('span').text('(Invalid Customer #)').css('color', 'red');
			} else if(status == "SerialNotFnd") {
				field.css('border-color', 'red').removeClass('valid');
				field.prev('label').children('span').text('(Invalid Serial #)').css('color', 'red');
			}
		});
	});
}

