/*
////////////////////////////////////
jQUERY FUNCTIONS
///////////////////////////////////
*/

$j(document).ready(function(){
	/* CONFIGURE SLIMBOX2 - http://www.digitalia.be/software/slimbox2 */
	//$j('body').append('<link rel="stylesheet" href="'+mcmsAssetsDir+'js/jquery/slimbox/slimbox2.css" media="screen" type="text/css" />');
	$j("dt.gallery-icon a, a[rel^='lightbox']").slimbox({
			loop:false,
			overlayOpacity:0.9,
			overlayFadeDuration:400,
			resizeDuration:400,
			resizeEasing:"swing",
			initialWidth:250,
			initialHeight:250,
			imageFadeDuration:400,
			captionAnimationDuration:400,
			counterText:'Image {x} of {y}',
			closeKeys:[27,88,67],
			previousKeys:[37,80],
			nextKeys:[39,78]
		}, function(el) { return [el.href, el.title]; }, function(el) { return (this == el) || ((this.rel.length >= 8) && (this.rel == el.rel)); });
	
	/* CONFIGURE GIFT FORM LINKS */
	$j('a.launchform').colorbox({ iframe:true, width:800, height:"90%", opacity:"0.9" });
	/* CONFIGURE GIFT FORM SUBMISSION */
	$j('form.fsForm')
		.submit(function(){
			try {
				var okGo = true;
				var error = '';
				var fixArr = [];
				var regNumDecimal = /(?!^0*$)(?!^0*\.0*$)^\d{1,9}(\.\d{1,2})?$/;
				var regEmailBad = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; 
				var regEmailGood = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
				var regCCard = /^((67\d{2})|(4\d{3})|(5[1-5]\d{2})|(6011))(-?\s?\d{4}){3}|(3[4,7])\d{2}-?\s?\d{6}-?\s?\d{5}$/;
				var regNumberOnly = /^[0-9]*$/;
				for (i=0;i<$j(this).find('.fsRequired').length;i++) {
					var thisObj = $j(this).find('.fsRequired').eq(i);
					if (thisObj.val() == '') {
						okGo = false;
						error += 'You must enter a value for "'+$j('label[for='+$j(thisObj).attr('id').split('-')[0]+']').text().split('*')[0]+'".\n';
						fixArr.push(thisObj);
						//break;
					}
				}
				if (okGo) {
					for (i=0;i<$j(this).find('.fsNumberDecimals-2').length;i++) {
						var thisObj = $j(this).find('.fsNumberDecimals-2').eq(i);
						if (!regNumDecimal.test(thisObj.val())) {
							okGo = false;
							error += 'Please enter a valid dollar amount for "'+$j('label[for='+$j(thisObj).attr('id').split('-')[0]+']').text().split('*')[0]+'".\n';
							fixArr.push(thisObj);
							//break;
						}
					}
				}
				if (okGo) {
					for (i=0;i<$j(this).find('.fsFormatEmail').length;i++) {
						var thisObj = $j(this).find('.fsFormatEmail').eq(i);
						if (regEmailBad.test(thisObj.val()) || !regEmailGood.test(thisObj.val())) {
							okGo = false;
							error += 'Please enter a valid email address for "'+$j('label[for='+$j(thisObj).attr('id').split('-')[0]+']').text().split('*')[0]+'".\n';
							fixArr.push(thisObj);
							//break;
						}
					}
				}
				if (okGo) {
					for (i=0;i<$j(this).find('.fsFormatCreditCard').length;i++) {
						var thisObj = $j(this).find('.fsFormatCreditCard').eq(i);
						if (!regCCard.test(thisObj.val())) {
							okGo = false;
							error += 'Please enter a valid credit card number.';// for "'+$j('label[for='+$j(thisObj).attr('id').split('-')[0]+']').text().split('*')[0]+'".\n';
							fixArr.push(thisObj);
							//break;
						}
					}
				}
				if (okGo) {
					for (i=0;i<$j(this).find('.fsNumberDecimals-0').length;i++) {
						var thisObj = $j(this).find('.fsNumberDecimals-0').eq(i);
						var thisLen = parseInt(thisObj.attr('maxlength'));
						if (!regNumberOnly.test(thisObj.val())) {
							okGo = false;
							error += 'Please enter a valid number for "'+$j('label[for='+$j(thisObj).attr('id').split('-')[0]+']').text().split('*')[0]+'" (numbers only).\n';
							fixArr.push(thisObj);
							//break;
						}
						if (thisObj.hasClass('fsCheckLength') && thisObj.val().length != thisLen) {
							okGo = false;
							error += 'Please enter the correct number of digits for "'+$j('label[for='+$j(thisObj).attr('id').split('-')[0]+']').text().split('*')[0]+'" (numbers only).\n';
							fixArr.push(thisObj);
						}
					}
				}
				if (!okGo) {
					alert(error);
					fixArr[0].focus();
				}
			} catch(err) {
				alert(err);
			}
			return okGo;
		});
});
