﻿/// <reference path="json2.debug.js"/>
/// <reference path="jquery-1.2.6.debug.js"/>
/// <reference path="jquery.simplemodal.debug.js"/>


function taf_displayMessage(successful) {
    jQuery(".taf-progress-icon").hide();
    if (successful) {
        jQuery(".taf-success").show();
        jQuery(".taf-error").hide();
    }
    else {
        jQuery(".taf-error").show();
        jQuery(".taf-success").hide(); 
    }
}
jQuery(function() {
    jQuery('.taf-form-submit img').click(function(event) {
        
        if (jQuery(event.target).is('.taf-form-submit img')) {
            
            event.preventDefault();
            
            var validationResult = validateForm();
            if (validationResult == "") 
            {
                jQuery(".taf-progress-icon").show();
                jQuery(".taf-form-submit").hide();
                jQuery(".taf-error").hide();
                jQuery.ajax({
                    type: "GET",
                    url: "/DesktopModules/ECCategory/Services/CartService.svc/AddProductToCart?pid=" + jQuery("#pidHidden").val() + "&name=" + GetValOrNull(jQuery("#fullName")) + "&address1=" + GetValOrNull(jQuery("#address1")) + "&address2=" + GetValOrNull(jQuery("#address2")) + "&city=" + GetValOrNull(jQuery("#city")) + "&state=" + GetValOrNull(jQuery("#state")) + "&zip=" + GetValOrNull(jQuery("#zip")) + "&phone=" + GetValOrNull(jQuery("#phone")) + "&email=" + GetValOrNull(jQuery("#email")) + "&message=" + GetValOrNull(jQuery("#message")),
                    dataType: "json",
                    success: function(msg) { 
                                taf_displayMessage(true);
                                jQuery('.taf-form [name!=""][type!=radio][type!=checkbox]')
                                    .each(function(){ 
                                        jQuery(this).val("");
                                    });
                                jQuery(".taf-form [name!=''][type=radio],.taf-form [name!=''][type=checkbox]").each(function(){
                                    jQuery(this).attr("checked", false);
                                });
                                jQuery(".taf-form-wrap").hide();
                                jQuery("#simplemodal-container").css("height", "210px");
                                jQuery("#SuccessNav").show();                                
                                
                                //setTimeout('jQuery(".modalCloseImg").click();jQuery(".taf-success").hide();jQuery(".taf-form-submit").show()',3000);
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) { jQuery(".taf-error").html("There was a problem adding item to shopping cart. If the problem continues, please contact the site administrator.");taf_displayMessage(false); }
                });
            }else{
                jQuery(".taf-error").html(validationResult);
                taf_displayMessage(false);
            }
        }
    });
    
    jQuery('.taf-form-submit-to-update img').click(function(event) {
        
        if (jQuery(event.target).is('.taf-form-submit-to-update img')) {
            
            event.preventDefault();
            
            var validationResult = validateForm();
            if (validationResult == "") 
            {
                jQuery(".taf-progress-icon").show();
                jQuery(".taf-form-submit").hide();
                jQuery(".taf-error").hide();
                jQuery.ajax({
                    type: "GET",
                    url: "/DesktopModules/ECCategory/Services/CartService.svc/UpdateCartItem?cdid=" + jQuery("#cdidHidden").val() + "&name=" + GetValOrNull(jQuery("#fullName")) + "&address1=" + GetValOrNull(jQuery("#address1")) + "&address2=" + GetValOrNull(jQuery("#address2")) + "&city=" + GetValOrNull(jQuery("#city")) + "&state=" + GetValOrNull(jQuery("#state")) + "&zip=" + GetValOrNull(jQuery("#zip")) + "&phone=" + GetValOrNull(jQuery("#phone")) + "&email=" + GetValOrNull(jQuery("#email")) + "&message=" + GetValOrNull(jQuery("#message")),
                    dataType: "json",
                    success: function(msg) { 
                                var itemInfoHtml = "<b>Ship to:</b> " + jQuery("#fullName").val() +
                                    "<br />" + jQuery("#address1").val() +
                                    (jQuery("#address2").val() != "" ? ", <br />" + jQuery("#address2").val() : "") +
                                    (jQuery("#city").val() != "" ? "<br />" + jQuery("#city").val() : "") +
                                    (jQuery("#state").val() != "" ? ", " + jQuery("#state").val() : "") +
                                    (jQuery("#zip").val() != "" ? " " + jQuery("#zip").val() : "") +
                                    (jQuery("#phone").val() != "" ? "<br /><br /><b>Phone:</b> " + jQuery("#phone").val() : "") +
                                    (jQuery("#message").val() != "" ? "<br /><br /><b>Message:</b> " + jQuery("#message").val() : "");
                                jQuery("#ItemInfo" + jQuery("#cdidHidden").val()).html(itemInfoHtml);
                                taf_displayMessage(true);
                                jQuery('.taf-form [name!=""][type!=radio][type!=checkbox]')
                                    .each(function(){ 
                                        jQuery(this).val("");
                                    });
                                jQuery(".taf-form [name!=''][type=radio],.taf-form [name!=''][type=checkbox]").each(function(){
                                    jQuery(this).attr("checked", false);
                                });
                                jQuery(".taf-form-wrap").hide();
                                jQuery("#simplemodal-container").css("height", "210px");
                                jQuery("#SuccessNav").show();                                
                                
                                //setTimeout('jQuery(".modalCloseImg").click();jQuery(".taf-success").hide();jQuery(".taf-form-submit").show()',3000);
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) { jQuery(".taf-error").html("There was a problem adding item to shopping cart. If the problem continues, please contact the site administrator.");taf_displayMessage(false); }
                });
            }else{
                jQuery(".taf-error").html(validationResult);
                taf_displayMessage(false);
            }
        }
    });
});

function validateForm(){
    var message = '';
			
	var contactInputs = jQuery(".taf-form :visible [name!='']");
	for	(var i=0; i<contactInputs.length; i++)
	{
		var contactInput = contactInputs[i];
		var validetionType = contactInput.getAttribute("validationtype");
		var relName = contactInput.getAttribute("relname")==null ? contactInput.name : contactInput.getAttribute("relname");
		if (validetionType!= null)
		{
			var req = /required/;
			if (req.test(validetionType))
			{
				if (!jQuery(contactInput).val()) {
					message += relName + ' is required. <br />';
				}
				else
				{
					var emailVaild = /email/;
					if (emailVaild.test(validetionType))
					{
						var email = contactInput.value;
						if (!validateEmail(email)) {
							message += relName + ' is invalid email. <br />';
						}
					}
				}
			}
			else
			{					
				var emailVaild = /email/;
				if (emailVaild.test(validetionType))
				{
					var email = contactInput.value;
					if (email && validateEmail(email)) {
						message += relName + ' is invalid email. <br />';
					}
				}
			}
			
		}
	}

	if (message.length > 0) {
		return message;
	}
	else {
		return "";
	}
}

function validateEmail(email) {
	var at = email.lastIndexOf("@");

	// Make sure the at (@) sybmol exists and  
	// it is not the first or last character
	if (at < 1 || (at + 1) === email.length)
		return false;

	// Make sure there aren't multiple periods together
	if (/(\.{2,})/.test(email))
		return false;

	// Break up the local and domain portions
	var local = email.substring(0, at);
	var domain = email.substring(at + 1);

	// Check lengths
	if (local.length < 1 || local.length > 64 || domain.length < 4 || domain.length > 255)
		return false;

	// Make sure local and domain don't start with or end with a period
	if (/(^\.|\.$)/.test(local) || /(^\.|\.$)/.test(domain))
		return false;

	// Check for quoted-string addresses
	// Since almost anything is allowed in a quoted-string address,
	// we're just going to let them go through
	if (!/^"(.+)"$/.test(local)) {
		// It's a dot-string address...check for valid characters
		if (!/^[-a-zA-Z0-9!#$%*\/?|^{}`~&'+=_\.]*$/.test(local))
			return false;
	}

	// Make sure domain contains only valid characters and at least one period
	if (!/^[-a-zA-Z0-9\.]*$/.test(domain) || domain.indexOf(".") === -1)
		return false;	

	return true;
}
function GetValOrNull(v)
{
    if (v[0] == null)
        return "";
    else
        return escape(v.val());
}