GiftCertificateHandler.prototype.checkEmail = GiftCertificateHandler_checkEmail;
GiftCertificateHandler.prototype.cleanBadChars = GiftCertificateHandler_cleanBadChars;
GiftCertificateHandler.prototype.clearErrors = GiftCertificateHandler_clearErrors;
GiftCertificateHandler.prototype.getSku = GiftCertificateHandler_getSku;
GiftCertificateHandler.prototype.renderPrice = GiftCertificateHandler_renderPrice;
GiftCertificateHandler.prototype.validate = GiftCertificateHandler_validate;

function GiftCertificateHandler() {
    this.skuId = null;
}

function GiftCertificateHandler_checkEmail() {
    var Temp     = document.getElementById("giftCertEmail");
	var AtSym    = Temp.value.indexOf('@');
	var Period   = Temp.value.lastIndexOf('.');
	var Space    = Temp.value.indexOf(' ');
	var Length   = Temp.value.length - 1;

	if ((AtSym < 1) || (Period <= AtSym+1) || (Period == Length ) || (Space  != -1)) {
	    return false;
	}
	
	return true;
}

function GiftCertificateHandler_cleanBadChars(inputField) {
    var badChars = "<>\"'%;)(&+-";

    for (var i = 0, n = inputField.value.length; i < n; i++) {
        if (badChars.indexOf(inputField.value.charAt(i)) > -1) {
            inputField.value = inputField.value.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,"");
           	return true;
        }
    }
    
    return false;
}

function GiftCertificateHandler_clearErrors() {
}

function GiftCertificateHandler_getSku() {
    return this.skuId;
}

function GiftCertificateHandler_renderPrice(dropDown) {
    var selectedOption = dropDown.options[dropDown.selectedIndex];
    
    if (selectedOption) {
        
        var priceDisplay = "";
        if (selectedOption.value > "") {
            priceDisplay = "$" + selectedOption.text + ".00";
        } 
        
        document.getElementById("priceValue").innerHTML = priceDisplay;
    }
}

function GiftCertificateHandler_validate() {

    var formOk = true;

    var fields = [
        {fieldId:"giftCertTo", fieldType:"text", errorFieldId:"giftCertTo_Error", errorMsgText:"Recipient"},
        {fieldId:"giftCertFrom", fieldType:"text", errorFieldId:"giftCertFrom_Error", errorMsgText:"Sender"},
        {fieldId:"giftCertEmail", fieldType:"email", errorFieldId:"giftCertEmail_Error", errorMsgText:"e-mail address"},
        {fieldId:"giftCertAmount", fieldType:"dropdown", errorFieldId:"giftCertAmount_Error", errorMsgText:"amount"},
        {fieldId:"gcMessage", fieldType:"textarea", errorFieldId:"gcMessage_Error", errorMsgText:"Optional Message", maxlength:120}
    ];

    var errorMsg = "Please correct the following errors:<br />";
    
    for (var f = 0; f < fields.length; f++) {
        var field = fields[f];
        var fieldId = field.fieldId;
        var el = document.getElementById(fieldId);
        var hasError = false;
        
        if (field.fieldType == "text") {
            if (el.value.match("^\\s*$") != null) {
                hasError = true;
                errorMsg += "* " + field.errorMsgText + "'s name incomplete<br />";
            }
            if (this.cleanBadChars(el)) {
                hasError = true;
                errorMsg += "* Certain special characters have been removed from the " + field.errorMsgText + " field. Please review the changes and continue<br />";
            }
        } else if (field.fieldType == "email") {
            if (!this.checkEmail()) {
                hasError = true;
        		errorMsg += "* Please enter a valid " + field.errorMsgText + ".<br />";
    		}
        } else if (field.fieldType == "dropdown") {
            if (el.selectedIndex < 1) {
                hasError = true;
                errorMsg += "* Please select a valid " + field.errorMsgText + "<br />";
    		}
        } else if (field.fieldType == "textarea") {
            if (this.cleanBadChars(el)) {
                hasError = true;
                errorMsg += "* Certain special characters have been removed from the " + field.errorMsgText + " field. Please review the changes and continue.<br />";
            }
        
            if (el.value.length > field.maxlength) {
                hasError = true;
                el.value = el.value.substring(0, field.maxlength);
                errorMsg += "* The message you entered exceeded " + field.maxlength + " characters. We have trimmed your message to fit. Please review your message and continue.<br />";
            }
        }
        
        if (hasError) {
            formOk = false;
            showElement(field.errorFieldId);
        } else {
            hideElement(field.errorFieldId);
        }
    }
    
    if (!formOk) {
        showErrorMessage(errorMsg);
    }

    return formOk;
}