var isIE = navigator.appName.indexOf("Microsoft") != -1;
var isIE5 = navigator.userAgent.indexOf('MSIE 5.0') > 0;

function validation(form) {
    
	// To make a field not required put // in front the err = statement.
	
	// first name
	err = validateField('first_name');
	// last name
	err = validateField('last_name') || err;
	// email
	err = validateField('email') || err;
	// company
	err = validateField('company') || err;
	// city
	err = validateField('city') || err;
	// state
	err = validateField('state') || err;
	// salutation
	//err = validateField('salutation') || err;
	// title
	//err = validateField('title') || err;
	// URL
	//err = validateField('URL') || err;
	// phone
	//err = validateField('phone') || err;
	// mobile
	//err = validateField('mobile') || err;
	// fax
	//err = validateField('fax') || err;
	// street
	//err = validateField('street') || err;
	// zip
	err = validateField('zip') || err;
	// country
	err = validateField('country') || err;
	// Description
	//err = validateField('description') || err;
	// industry
	//err = validateField('industry') || err;
	// revenue
	//err = validateField('revenue') || err;
	// employees
	//err = validateField('employees') || err;
	// Primary Vertical
	//err = validateField('00N70000002EDNY') || err;
	// County
	err = validateField('00N70000002EkJh') || err;
	// Preferred Contact Method
	//err = validateField('00N70000002Emnf') || err;
	// Referral Source
	err = validateField('00N70000002Fc6i') || err;
	// Campaign_ID
	err = validateField('Campaign_ID') || err;

    return !err;
} 


function formatPhoneOnEnter(field, evt) {
    var e = getEvent(evt);
    var key = e.keyCode;

    if (key == 13) {
        formatPhone(field);
    }
}

function formatPhone (field) {
    if (field.value == '') {
       return true;
    }
    //field.value = trim(field.value);

    var ov = field.value;
    var v = "";
    var x = -1;

    // is this phone number 'escaped' by a leading plus?
    if (0 < ov.length && '+' != ov.charAt(0)) { // format it
        // count number of digits
        var n = 0;
        if ('1' == ov.charAt(0)) {  // skip it
            ov = ov.substring(1, ov.length);
        }

        for (i = 0; i < ov.length; i++) {
            var ch = ov.charAt(i);

            // build up formatted number
            if (ch >= '0' && ch <= '9') {
                if (n == 0) v += "(";
                else if (n == 3) v += ") ";
                else if (n == 6) v += "-";
                v += ch;
                n++;
            }
            // check for extension type section;
            // are spaces, dots, dashes and parentheses the only valid non-digits in a phone number?
            if (! (ch >= '0' && ch <= '9') && ch != ' ' && ch != '-' && ch != '.' && ch != '(' && ch != ')') {
                x = i;
                break;
            }
        }
        // add the extension
        if (x >= 0) v += " " + ov.substring(x, ov.length);

        // if we recognize the number, then format it
        if (n == 10 && v.length <= 40) field.value = v;
    }
    return true;
}

function handleTextAreaElementChange(textId, maxLength, remainingText, overText) {
    /* Used by TextAreaElement.  Relies on ids set there */
    var textArea = document.getElementById(textId);
    var counter = document.getElementById(textId + '_counter');

    if (!textArea || !counter) return;

    var valueLength = textArea.value.length;
    if (valueLength > 0 && !(isIE || isIE5)) {
        var lines = textArea.value.match(/\n/g);
        if (lines) valueLength += lines.length;
    }
    var remaining = maxLength - valueLength;

    if (remaining < 0) {
      counter.parentNode.className = "textCounterMiddle over";
      counter.innerHTML = (-1 * remaining) + " " + overText;
    } else if (remaining < 50) {
      counter.parentNode.className = "textCounterMiddle warn";
      counter.innerHTML = remaining + " " + remainingText;
    } else {
      counter.parentNode.className = "textCounterMiddle";
      counter.innerHTML = remaining + " " + remainingText;
    }
}

// -------------------------------------------------------------------
//
//  Private Functions
//
// -------------------------------------------------------------------
function getEvent(e){
    return e || window.event;
}

function validateField(fieldName) {
    var err = false;
    var ctl = null;

	ctl = document.getElementById(fieldName)
	if (ctl != null && ctl.parentNode.parentNode.style.display != 'none') {
		if (ctl.value == '') {
	        setError();
	        setFieldError(fieldName, 'This field is required');
	        if (!err) {
	            ctl.focus();
	        }
	        err = true;
		} else {
			clearFieldError(fieldName);
		}
   }
   
   return err;
}

function setError(error) {
    var errorDiv = document.getElementById("errorDiv_ep");
    
    if (error) {
        errorDiv.innerHTML = error;
    }
    errorDiv.style.display = "block";
}

function clearError(error) {
    var errorDiv = document.getElementById("errorDiv_ep");
    
    errorDiv.style.display = "none";
}

function setFieldError(id, message) {
	//I have to get the div that this element is contained in.
	//Then search through that div and look for an errorMsg class
	//This is incrediby hacky and prone to error.
	var elem = null;
	if (document.getElementById(id).nodeName == "DIV") {
		elem = document.getElementById(id).parentNode
	} else {
		elem = document.getElementById(id).parentNode;
	}
	var isErrorPresent = false;
	var errorLoc;
	for (var i = 0; i < elem.childNodes.length; i++) {
		if (elem.childNodes[i].className != null && elem.childNodes[i].className == "errorMsg") {
			isErrorPresent = true;
			errorLoc = i;
		}
	}

	//if the error is not there and we should be putting an error on the page, then create a new error div
    if (!isErrorPresent) {
    	if(message != '') {
	        var errorDiv = document.createElement("div");
		    errorDiv.className = "errorMsg";
		    errorDiv.innerHTML = message;
		    elem.appendChild(errorDiv);
    	}
    } else {
    	//if the error already exists on the page then simply show it
    	if(message != null) {
	        elem.childNodes[errorLoc].innerHTML = message;
	        elem.childNodes[errorLoc].style.display = "block";
    	} else {
    		elem.childNodes[errorLoc].style.display = "none";
    	}
    }
}

function clearFieldError(id) {
	//I have to get the div that this element is contained in.
	//Then search through that div and look for an errorMsg class
	//This is incrediby hacky and prone to error.
	var elem = null;
	if (document.getElementById(id).nodeName == "DIV") {
		elem = document.getElementById(id).parentNode
	} else {
		elem = document.getElementById(id).parentNode;
	}
	var isErrorPresent = false;
	var errorLoc;
	for (var i = 0; i < elem.childNodes.length; i++) {
		if (elem.childNodes[i].className != null && elem.childNodes[i].className == "errorMsg") {
			isErrorPresent = true;
			errorLoc = i;
		}
	}

    if (isErrorPresent) {
    	//if the error already exists on the page then simply hide it
   		elem.childNodes[errorLoc].style.display = "none";
    }
}

function cancelForm(url) {
    window.location = url;
}
