﻿//http://ws.geonames.org/countryInfo
//http://code.google.com/apis/ajax/documentation/#ClientLocation

var _firstload, _State, _Country, _Marketing
var StateData = {
    "CAN":[],
    "USA":[],
    "AUS":[]
};

var required_fields;

Recaptcha.create("6Ld5zwYAAAAAAIjL3lXaJ45vHN2o8hikCEWy6ieX",
"recaptcha_div", {
        theme: "white",
        callback: function() {
            var txt = document.getElementById("recaptcha_response_field");
            txt.validate = function() { return (this.value.length > 0) }
            required_fields.push(txt);
        }
});

required_fields = [ //Add validation to required fields that just require a value.
    document.getElementById("FirstName"),
    document.getElementById("LastName"),
    document.getElementById("Company"),
	document.getElementById("Phone"),
    document.getElementById("Address"),
    document.getElementById("City"),
    document.getElementById("Marketing")
]
for (var i=0; i<required_fields.length; i++) {      //Add validation
    required_fields[i].validate = function() { return (this.value.length > 0) }
}
var form = document.getElementById("FindFlowDistributor");
var Country = document.getElementById("Country")    //Point to Country drop down list
var State = document.getElementById("State")        //Point to State drop down list
var ZipCode = document.getElementById("ZipCode")
addEventSimple(Country, "change", function(e) {
    var cty = Country.options[Country.selectedIndex].value;
    switch(cty) {
        case "USA":
            ZipCode.parentNode.style.display = "";
        case "CAN":
        case "AUS":
            State.parentNode.style.display = "";
            State.options.length = 0;
            State.options[0] = new Option(" - Choose - ", "");
            for (var i=0; i<StateData[cty].length; i++) {
                State.options[i+1] = new Option(StateData[cty][i].state, StateData[cty][i].code);
            }
            break;
        default:
            State.parentNode.style.display = ZipCode.parentNode.style.display = "none";
            break;
    }
});
State.validate = function() {
    return ((Country.options[Country.selectedIndex].value != "USA" &&
            Country.options[Country.selectedIndex].value != "CAN" &&
            Country.options[Country.selectedIndex].value != "AUS"
            ) || Country.options[Country.selectedIndex].value != "")
}

ZipCode.validate = function() { return (Country.options[Country.selectedIndex].value != "USA" || (!isNaN(ZipCode.value) && ZipCode.value.length == 5)) }

var Email = document.getElementById("Email");
Email.validate = function() { return (echeck(this.value)) }

for (var i=0; i<Country.options.length; i++) {
    if (Country.options[i].value == "USA") {
        Country.selectedIndex = i;
        break;
    }
}
aux_load();

if (_Country) {
    for (var i=0; i<Country.options.length; i++) {
        if (Country.options[i].value == _Country) {
            Country.selectedIndex = i;
            break;
        }
    }
}

if (Country.fireEvent) {
    Country.fireEvent("onchange");
} else {
    var evt = document.createEvent("HTMLEvents");
    evt.initEvent("change",true,true);
    Country.dispatchEvent( evt );
}

if (_State) {
    for (var i=0; i<State.options.length; i++) {
        if (State.options[i].value == _State) {
            State.selectedIndex = i;
            break;
        }
    }
}

if (_Marketing) {
    var Marketing = document.getElementById("Marketing");
    for (var i=0; i<Marketing.options.length; i++) {
        if (Marketing.options[i].value == _Marketing) {
            Marketing.selectedIndex = i;
            break;
        }
    }
}

required_fields.push(State);
required_fields.push(ZipCode);
required_fields.push(Email);
validate_fields("required_warning");

for (var i=0; i<required_fields.length; i++) {
    var fn = function() { validate_field(this, "required_warning") }
    addEventSimple(required_fields[i], "keyup", fn)
    addEventSimple(required_fields[i], "change", fn)
}
addEventSimple(form, "submit", function(e) {
    e = (e?e:event);
    var returnValue = true;
    returnValue = (validate_fields("required_error") && returnValue)
    if (returnValue) {
        return true;
    } else {
        if (e.preventDefault)
            e.preventDefault();
        else if (e.returnValue)
            e.returnValue = false;
        return false;
    }
});

function validate_fields(className) {
    var ReturnValue = true;
    for (var i=0; i<required_fields.length; i++) {
        ReturnValue = (validate_field(required_fields[i], className) && ReturnValue);
    }
    return ReturnValue;
}

function validate_field(field, className) {
    if (!field.validate()) {
        field.className = className;
        return false;
    } else {
        field.className = "";
        return true;
    }
}

//http://www.smartwebby.com/DHTML/email_validation.asp
function echeck(str) {

    var at="@"
    var dot="."
    var lat=str.indexOf(at)
    var lstr=str.length
    var ldot=str.indexOf(dot)
    if (str.indexOf(at)==-1){
        return false
    }

    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
        return false
    }

    if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
        return false
    }

    if (str.indexOf(at,(lat+1))!=-1){
        return false
    }

    if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
        return false
    }

    if (str.indexOf(dot,(lat+2))==-1){
        return false
    }

    if (str.indexOf(" ")!=-1){
        return false
    }

    return true					
}

//The following two functions are from quirksmode.org, the best JavaScript event site ever
//http://www.quirksmode.org/js/eventSimple.html
function addEventSimple(obj,evt,fn) {
	if (obj.addEventListener)
		obj.addEventListener(evt,fn,false);
	else if (obj.attachEvent)
		obj.attachEvent('on'+evt,fn);
}

function removeEventSimple(obj,evt,fn) {
	if (obj.removeEventListener)
		obj.removeEventListener(evt,fn,false);
	else if (obj.detachEvent)
		obj.detachEvent('on'+evt,fn);
}