$(document).ready(function(){
	$('.callout ul li:first-child').addClass('first-child');
	$('.callout ul li:last-child').addClass('last-child');
	$(".search-form .txt").focus(function(){
		if(this.value == this.title) {
			this.value = "";
		}
	});
	$(".search-form .txt").blur(function(){
		if(this.value == "") {
			this.value = this.title;
		}
	});
	$('.tab-nav li a').click(function(e){e.preventDefault();});
	var tab = $('.tab-nav li.active a').hash;
	$('.tab-nav li a').hover(function(e){
		$('.callout > div').hide();
		$('.callout > div').filter(this.hash).show();
		$('.tab-nav li').removeClass('active');
		$(this).parent().addClass('active');
	});

	if($(".page-show-center a").length > 0) {
		$(".page-show-center a").overlay({
			target: '#gallery',
			expose: {
				opacity: 0.85,
				maskId: 'exposeMask'
			},
			closeOnClick: true
		}).gallery({speed: 800, opacity: 1});
	}
	$('#exposeMask').click(function(e){});
	$('input:[type=text], select').blur(function(e){
		validateForm(this);
	});

});

function checkLuhn10(a){
	if(a.length>19)
		return false;
	sum=0;
	mul=1;
	l=a.length;
	for(i=0;i<l;i++){
		digit=a.substring(l-i-1,l-i);
		tproduct=parseInt(digit,10)*mul;
		sum+=tproduct>=10?tproduct%10+1:tproduct;
		if(mul==1)
			mul++;
		else 
			mul--;
	}
	return sum%10==0?true:false;
}
function getCardType(a){
	var b=a.length;
	if(b>4)
		if(a.charAt(0)=="4"&&(b==13||b==16))
			return cardPics[nVisaCardType].src;
		else if(a.charAt(0)=="5"&&a.charAt(1)>="1"&&a.charAt(1)<="5"&&b==16)
			return cardPics[nMastercardCardType].src;
		else if(a.charAt(0)=="3"&&(a.charAt(1)=="4"||a.charAt(1)=="7")&&b==15)
			return cardPics[nAmexCardType].src;
		return cardPics[nUnknownCardType].src;
} 
function copyAddress(){
	if(document.form1.sInfo.checked==true){
		document.form1.shipping_first_name.value=document.form1.first_name.value;
		validateForm(document.form1.shipping_first_name);
		document.form1.shipping_last_name.value=document.form1.last_name.value;
		validateForm(document.form1.shipping_last_name);
		document.form1.shipping_address.value=document.form1.address.value;
		validateForm(document.form1.shipping_address);
		document.form1.shipping_city.value=document.form1.city.value;
		validateForm(document.form1.shipping_city);
		document.form1.shipping_zip.value=document.form1.zip.value;
		validateForm(document.form1.shipping_zip);
		document.form1.shipping_state.value=document.form1.state.value;
		document.form1.shipping_country.value=document.form1.country.value;
		document.form1.shipping_country.selectedIndex=document.form1.country.selectedIndex;
	}
}
function validateForm(field) {
	switch($(field).attr('name')) {
		case 'first_name':
		case 'last_name' :
		case 'address':
		case 'city':
		case 'shipping_first_name':
		case 'shipping_last_name' :
		case 'shipping_address':
		case 'shipping_city':
		case 'description':
			if(!$(field).val().trim().match(/^[^+*%]{3,}$/)) {
				$(field).addClass('error');
				var fieldLabel = $(field).prev('label').text();
				$(field).after('<span class="error">Please enter a valid '+fieldLabel.replace(":","")+'.</span>');
			} else {
				$(field).removeClass('error');
				$(field).next().remove();
			}
		break;
		case 'state':
		case 'shipping_state':
			if($(field).val().trim() == '') {
				$(field).addClass('error');
				var fieldLabel = $(field).prev('label').text();
				$(field).after('<span class="error">Please select a '+fieldLabel.replace(":","")+'.</span>');
			}	else {
					$(field).removeClass('error');
					$(field).next().remove();
			}
		break;
		case 'exp_year':
			var d = new Date();
			var month = d.getMonth() +1;
			var year = d.getFullYear() - 2000;
			if($(field).val().trim() == '' ||  ($('#expyear').val() == year && $('#expmonth').val() < month)) {
				$(field).addClass('error');
				var fieldLabel = $(field).prev().prev('label').text();
				if($(field).next('span.error').length == 0)
					$(field).after('<span class="error">Please select a valid '+fieldLabel.replace(":","")+'.</span>');
			}	else {
					$(field).removeClass('error');
					$(field).next().remove();
			}
		break;
		case 'exp_month':
		var d = new Date();
		var month = d.getMonth() +1;
		var year = d.getFullYear() - 2000;
		console.log($('#expyear').val());
		if($(field).val().trim() == '' ||  ($('#expyear').val() == year && $('#expmonth').val() < month)) {
				$(field).addClass('error');
				var fieldLabel = $(field).prev('label').text();
				if($(field).next().next('span.error').length == 0)
					$(field).next().after('<span class="error">Please select a valid '+fieldLabel.replace(":","")+'.</span>');
			}	else {
					$(field).removeClass('error');
					$(field).next().next().remove();
			}
		break;
		case 'zip':
		case 'shipping_zip':
			if(!$(field).val().trim().match(/^[0-9]{5}(\-[0-9]{4})?$/)) {
				$(field).addClass('error');
				var fieldLabel = $(field).prev('label').text();
				$(field).after('<span class="error">Please enter a valid '+fieldLabel.replace(":","")+'.</span>');
			} else {
				$(field).removeClass('error');
				$(field).next().remove();
			}
		break;
		case 'phone':
			if(!$(field).val().trim().match(/^(\()?[0-9]{3}([\).-])?[0-9]{3}([.-])?[0-9]{4}$/)) {
				$(field).addClass('error');
				var fieldLabel = $(field).prev('label').text();
				$(field).after('<span class="error">Please enter a valid '+fieldLabel.replace(":","")+'. (###.###.####)</span>');
			} else {
				$(field).removeClass('error');
				$(field).next().remove();
			}
		break;
		case 'email':
			if(!$(field).val().trim().match(/^[A-Za-z0-9]+[A-Za-z0-9._-]+([+][0-9]+)?@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/)) {
				$(field).addClass('error');
				var fieldLabel = $(field).prev('label').text();
				$(field).after('<span class="error">Please enter a valid '+fieldLabel.replace(":","")+'.</span>');
			} else {
				$(field).removeClass('error');
				$(field).next().remove();
			}
		break;
		case 'card_num':
			imgSrc = field.value.length>=13?checkLuhn10(field.value)?getCardType(field.value):cardPics[nUnknownCardType].src:cardPics[nUnknownCardType].src;
			console.log(imgSrc);
			if(imgSrc.match(/^.*invalid.gif$/)) {
				$(field).addClass('error');
				var fieldLabel = $(field).prev('label').text();
				if($(field).next('#cardimage').length > 0)
					$(field).next().replaceWith('<span class="error">Please enter a valid '+fieldLabel.replace(":","")+'.</span>');
				else
					$(field).after('<span class="error">Please enter a valid '+fieldLabel.replace(":","")+'.</span>');
				
			} else {
				$(field).removeClass('error');
				if($(field).next('span.error').length > 0)
					$(field).next().replaceWith('<img id="cardimage" src="'+imgSrc+'"  height="24" width="36" />');
				else
					$(field).after('<img id="cardimage" src="'+imgSrc+'"  height="24" width="36" />');
				$('#cardimage').attr('src', imgSrc);
			}
		break;
		case 'card_code':
			if(!$(field).val().trim().match(/^[0-9]{3,4}$/)) {
				$(field).addClass('error');
				var fieldLabel = $(field).prev('label').text();
				$(field).next().after('<span class="error lower">Please enter a valid '+fieldLabel.replace(":","")+'.</span>');
			} else {
				$(field).removeClass('error');
				$(field).next().next().remove();
			}
		break;
		case 'amount':
		if(!$(field).val().trim().match(/^[0-9]{1,}(\.[0-9]{2})?$/)) {
				$(field).addClass('error');
				var fieldLabel = $(field).prev('label').text();
				$(field).after('<span class="error">Please enter a valid '+fieldLabel.replace(":","")+'.</span>');
			} else {
				$(field).removeClass('error');
				$(field).next().remove();
			}
		break;
	}
}

function changeGalleryImage(x) {
         document.galleryImage.src =  x;
}
