﻿function KitForm(){}
KitForm.$= function(id) {
    var els = new Array();
    if (arguments.length==0) return null;
    var reAspNet = /^ctl00(_[A-Za-z0-9]+)+$/;
    var reNormal = /^[A-Za-z]/;
    
    for (var i=0, j=document.forms[0].elements.length; i<j; i++) {
        if (reNormal.test(document.forms[0].elements[i].id) || reAspNet.test(document.forms[0].elements[i].id)) {
            if (document.forms[0].elements[i].id.indexOf(id)>=0)
                els.push(document.forms[0].elements[i]);
        }
    }
    return els.length == 1 ? els[0] : (els.length==0 ? null : els);        
};
KitForm.doValidation = false;
KitForm.emails = new Array();
KitForm.stripId = function(id) {
	// removes the container id prefixes
	id = id.split("_");	
	return id.length > 0 ? id[id.length-1] : id;
}
KitForm.emailExists = function(email) {
    if (KitForm.emails.length==0) {
        //KitForm.emails = eval("("++")");
        KitForm.retrieveEmails();
    }
    for (var i=0, j=KitForm.emails.length; i<j; i++) 
        if (email==KitForm.emails[i]) 
            return true;
    return false;
};
KitForm.updateCalendar = function(frm) {
    var daysInMonth = [31,31,28,31,30,31,30,31,31,30,31,30,31];
    var cboDay =frm.cboDOBDay.selectedIndex;
    var cboMonth = frm.cboDOBMonth.selectedIndex;
    var cboYear = Number(frm.cboDOBYear.options[frm.cboDOBYear.selectedIndex].value);
    
    if (cboYear > 0 || cboMonth > 0) {
        for (var i=frm.cboDOBDay.options.length - 1; i>0; i--)
            frm.cboDOBDay.options[i] = null;
        
        if (cboYear > 0 && (cboYear % 4 == 0 && cboMonth==2))
            daysInMonth[2] = 29; 
            
        for (var i=1, j=daysInMonth[cboMonth]; i<=j; i++)
            frm.cboDOBDay.options[i] = new Option(i,i);
            
        if (frm.cboDOBDay.options.length > cboDay) {
           frm.cboDOBDay.selectedIndex = cboDay;
        } else {
           frm.cboDOBDay.selectedIndex = 0;
        }           
    }
};
KitForm.setCalendar=function(dt) {
    frm.cboDOBDay.selectedIndex = dt.getDate();
    frm.cboDOBMonthselectedIndex = dt.getMonth() + 1;
    frm.cboDOBYear.selectedIndex = dt.getYear() - 1996;
}
KitForm.submit = function() {
    var validState = FormValidator.checkForm();
	var fieldValid;
	
    /*
    if (KitForm.emailExists(KitForm.$("txtEmail").value))) {
        document.getElementById("txtEmailExistsErrorMessage").style.display = "block";
        KitForm.$("txtEmail").onblur = function() {
            document.getElementById("txtEmailExistsErrorMessage").style.display = "none";
        }
        validState = false;
    } else {
        validState = true;
    }
    */    
    if (KitForm.$("cboState").selectedIndex<=0) {
        document.getElementById("cboStateErrorMessage").style.display = "block";
        KitForm.$("cboState").onchange = function() {
            if (this.selectedIndex > 0)
                document.getElementById("cboStateErrorMessage").style.display = "none";
        }
        validState = validState && false;
    } else {
		document.getElementById("cboStateErrorMessage").style.display = "none";
        validState = validState && true;
    }    
    if ((KitForm.$("cboWorkDetails")) && (KitForm.$("cboWorkDetails").selectedIndex<=0)) {
        document.getElementById("cboWorkDetailsErrorMessage").style.display = "block";
        KitForm.$("cboWorkDetails").onchange = function() {
            if (this.selectedIndex > 0)
                document.getElementById("cboWorkDetailsErrorMessage").style.display = "none";
        }
        validState = validState && false;
    } 
    if (KitForm.$("cboCreditCardExpM")) {
        fieldValid = KitForm.$("cboCreditCardExpM").selectedIndex > 0 && KitForm.$("cboCreditCardExpY").selectedIndex > 0;
        document.getElementById("cboCreditCardExpError").style.display = fieldValid ? "none" : "block";
		if (!fieldValid) {
			KitForm.$("cboCreditCardExpM").onchange = function() {
				document.getElementById("cboCreditCardExpError").style.display = (this.selectedIndex > 0 && KitForm.$("cboCreditCardExpY").selectedIndex > 0) ? "none" : "block";
			}			
		}
		validState = validState && fieldValid;
    }
    if (document.getElementById("rblDeliveryOptionsErrorMessage")) {
        var radioList = KitForm.$("rblDeliveryOptions");
        fieldValid = false;
        
        for (var i=0, j=radioList.length; i<j; i++) {
            if (radioList[i].checked) {
                fieldValid =true;
                break;
            }
        }
        document.getElementById("rblDeliveryOptionsErrorMessage").style.display= fieldValid ? "none" : "block";
        
        // all previous tests must be true for this one to be true
        validState = validState && fieldValid;
    }	
    return validState;
};
KitForm.setState= function(country,state) {
    if (!KitForm.$("cboState")) return;
    
    var states = {
        au : [
            ["ACT","Australian Capital Territory"],
            ["NSW","New South Wales"],
            ["NT","Northern Territory"],
            ["QLD","Queensland"],
            ["SA","South Australia"],
            ["TAS","Tasmania"],
            ["VIC","Victoria"],
            ["WA","Western Australia"]
        ],
        nz : [
            ["NZN","North Island"],
            ["NZS","South Island"]
        ]
    }
    var selObj = KitForm.$("cboState");
    if (selObj.options.length > 1) 
        for (i = selObj.options.length - 1; i>=1; i--)
            selObj.options[i] = null;
            
    for (var i=0, j=states[country].length; i<j; i++) {
       selObj.options[i+1] = new Option(states[country][i][1],states[country][i][0]);
       if (states[country][i][0]==state)
            selObj.options[i+1].selected = true;
    } 
    KitForm.$("cboCountry").selectedIndex = country == "nz" ? 2 : 1;
}
KitForm.changeCountry= function() {
    KitForm.setState(KitForm.$("cboCountry").selectedIndex ==  1 ? "au" : "nz");
    KitForm.showDeliveryOptions(KitForm.$("cboCountry").selectedIndex ==  1 ? "au" : "nz");
}
KitForm.showDeliveryOptions = function(domain, deliveryMethod) {
    if (domain!="nz") domain = "au";
    document.getElementById("DeliveryOptions_au").style.display=domain=="au" ? "block" : "none";
    document.getElementById("DeliveryOptions_nz").style.display=domain=="nz" ? "block" : "none";
    
    var radioList = KitForm.$("rblDeliveryOptions_" + domain);
    for (var i=0, j=radioList.length; i<j; i++) {
        if (radioList[i].value==deliveryMethod) {
            radioList[i].checked = true;
        }
    }
} 
KitForm.searchTags = function() {
	var txt = KitForm.$("tbSearch");
	if (txt==null || txt.value.length == 0) {
		alert("Please enter a search term");
		return false;
	}
	var url = txt.value.replace(/\s/g,"-");
	url = url.replace(/\&/g,"");
	url = url.replace(/\W/g,"-");
	url = url.replace(/\-+/g,"-");
	url = escape(url);
	location.href = "/products/" + url;
}
KitForm.changeState = function(selObj) {
	if (selObj.selectedIndex >=1) {
		document.getElementById("cboStateErrorMessage").style.display="none";
	} else {
		document.getElementById("cboStateErrorMessage").style.display="block";
	}
}
KitForm.submitSearch = function(e) {
	var code = 0;
	if (!e) {
		if (window.event) {
			code = event.keyCode;
			event.cancelBubble = true;
		}
	} else {
		code = e.codeChar;
		e.bubbles = false;
	}
	if (code==13) KitForm.searchTags();
}
KitForm.reminderPassed = true;
KitForm.isEmail = function(s) {
    return /^[\w\-]+(\.[\w\-]+)*\@[\w\-]+(\.[\w\-]+)*(\.(com|gov|net|id|tv|org|nom|edu|web|store|arpa|int|info|name|biz|co))(\.(au|nz))*$/.test(s);
}
KitForm.isEmpty = function(s) {
	var re = /^\s+$/;
	return s==null || s.length == 0 || re.test(s);
};
KitForm.sendReminder = function() {
    var email = KitForm.$("txtSigninEmail").value;
    KitForm.reminderPassed = true;
    
    if (email.length==0) {
        document.getElementById("ctl00_ContentPlaceHolder1_RequiredFieldValidator3").style.display="block";
        KitForm.reminderPassed = false;
    } else {
        document.getElementById("ctl00_ContentPlaceHolder1_RequiredFieldValidator3").style.display="none";
        if (KitForm.isEmail(email)==false) {
            document.getElementById("ctl00_ContentPlaceHolder1_RegexValidator1").style.display="block";
            KitForm.reminderPassed = false;
        } else {
            document.getElementById("ctl00_ContentPlaceHolder1_RegexValidator1").style.display="none";
        }    
    }
}
KitForm.submitSignUp=function() {
    function signUpResponse(alreadySignedUp) {
        if (alreadySignedUp) {
			$("SignUp_Already_Error").style.display="inline";
		} else {
			$("SignUp_Button").value = "Thank you!";
			/*/$("SignUp_Button").onclick = function() {
				$("SignUp_Already_Error").style.display="inline";
			};*/
		    urchinTracker("/SignUp/");
		}
    }
    	
	$("SignUp_Already_Error").style.display="none";
    var isValid = true;
    isValid = isValid && !KitForm.isEmpty($("SignUp_Name").value);
	$("SignUp_Name").onblur = function() {
		$("SignUp_Name_Error").style.display = "none";	
	};
	$("SignUp_Email").onblur = function() {
		$("SignUp_Email_Error").style.display = "none";
		$("SignUp_Email_Error_Invalid").style.display = "none";
	};
    $("SignUp_Name_Error").style.display = isValid ? "none" : "inline";
    isValid = isValid && !KitForm.isEmpty($("SignUp_Email").value);
    $("SignUp_Email_Error").style.display = isValid ? "none" : "inline";
    if (isValid) {
        isValid = isValid && KitForm.isEmail($("SignUp_Email").value);
        $("SignUp_Email_Error_Invalid").style.display = isValid ? "none" : "inline";
    }
    if (isValid) {
        KitCosmetics.WebServices.General.SignUp($("SignUp_Name").value, $("SignUp_Email").value, 
            signUpResponse, webServiceFailure);
    }
}
function webServiceFailure(error) {
    alert("The following error has occured:\n" + error.get_message() + "\n\nWe apologise for any inconvenience.");
}
function addEvent(obj, evType, fn, useCapture){
    if (obj.addEventListener) {
        obj.addEventListener(evType, fn, useCapture);
        return true;
    } else if (obj.attachEvent){
        var r = obj.attachEvent("on"+evType, fn);
        return r;
    } else {
        // alert('Handler could not be attached');
        return false;
    }
}
function $(id) {
    var o = document.getElementById(id);
    if (o)
        return o;
        
    var nodes;
    var elements = ["DIV","SPAN","IMG","A"];
    for (var x = 0, y = elements.length; x<y; x++) {
        nodes = document.getElementsByTagName(elements[x]);
        for (var i=0, j=nodes.length; i<j; i++) {
            if ((id == KitForm.stripId(nodes[i].id)) || (id==nodes[i].id))
                return nodes[i];
        }
    }
    return null;
}