/**
 * 
 * Validates the login form
 * 
 * @return
 */
function validateLogin(form) {

    var uname = document.getElementsByName("user")[0].value;
    var unameElem = document.getElementById("lblUsername");

    var passwd = document.getElementsByName("loginPassword")[0].value;
    var passwdElem = document.getElementById("lblPwd");

    unameElem.innerHTML = '';
    passwdElem.innerHTML = '';
    /*
	 * if (uname == "" || passwd == "") { if (uname == "") unameElem.innerHTML
	 * ='*';
	 * 
	 * if (passwd == "") passwdElem.innerHTML = '*';
	 * 
	 * return false; }
	 */
    if (uname == "" && passwd == "") {
        alert("Please Enter Username and Password.");
        unameElem.innerHTML = '*';
        passwdElem.innerHTML = '*';
        return false;
    }

    if (uname == "") {
        alert("Please Enter Username.");
        unameElem.innerHTML = '*';
        return false;
    }

    if (passwd == "") {
        alert("Please Enter Password.");
        passwdElem.innerHTML = '*';
        return false;
    }

    form.submit();
}

function validateResetPassword(form) {

    // user password
    var password = document.getElementsByName("npass")[0];
    var passwordMsg = document.getElementById("lblPass");

    var confirmpassword = document.getElementsByName("cpass")[0];
    var confirmpasswordMsg = document.getElementById("lblCpass");

    var dontMatchMsg = document.getElementById("lblDontMatch");

    passwordMsg.innerHTML = '';
    confirmpasswordMsg.innerHTML = '';
    dontMatchMsg.innerHTML = '';

    /*
	 * if (password.value == "" || confirmpassword.value == "") { // ||
	 * discount.value == "") { if (password.value == "") passwordMsg.innerHTML =
	 * '*';
	 * 
	 * if (confirmpassword.value == "") confirmpasswordMsg.innerHTML = '*';
	 * return false; }
	 */

    if (password.value == "" && confirmpassword.value == "") {
        alert("Please enter password and confirm password.");
        return false;
    } else if (password.value == "") {
        alert("Please enter password .");
        return false;
    } else if (confirmpassword.value == "") {
        alert("Please enter confirm password.");
        return false;
    } else if (password.value != confirmpassword.value) {
        alert("Confirm password does not match password!");
        // dontMatchMsg.innerHTML = "Confirm password does not match!";
        return false;
    } else if (password.value.length < 6) {
        alert("Password length cannot be less than 6 charachters");
        // dontMatchMsg.innerHTML = "Password length cannot be less than 6
        // charachters";
        return false;
    }

    form.submit();

}

function validateEmail(form) {

    var email = document.getElementsByName("email")[0].value;
    var emailElem = document.getElementById("lblEmail");

    emailElem.innerHTML = '';

    if (email == "") {
        alert("Please enter email address.");
        emailElem.innerHTML = '*';
        return false;
    }
    form.submit();
}

function validateLinkForm(form) {

    var company = document.getElementsByName("companyId")[0];
    var companyMsg = document.getElementById("lblCompany");

    if (!validateCountry(company, companyMsg,
        "Please select a company first than click submit.")) {

        return false;
    }

    form.submit();
}

/**
 * User for the validaion of PASSCODES FORM
 * 
 * @param form
 * @return
 */
function validatePasscodesForm(form) {

    var usages = document.getElementsByName("passcode.noOfTimes")[0];
    var usagesElem = document.getElementById("lblNoOfTimes");

    var keyword = document.getElementsByName("passcode.keyword")[0];
    var keywordElem = document.getElementById("lblKeyword");

    /*
	 * var discount = document.getElementsByName("passcode.discountRate")[0];
	 * var discElem = document.getElementById("lblDiscountRate");
	 */
    usagesElem.innerHTML = '';
    keywordElem.innerHTML = '';

    // discElem.innerHTML = '';
	
	
    var description = document.getElementsByName("passcode.description")[0];

    if (description.value != "" && description.value != null) {
        if (checkWordLength(description.value, 'Description')) {
            return false;
        }
    }

    if (usages.value == "" || keyword.value == "") {
        // || discount.value == "") {
        if (usages.value == "")
            usagesElem.innerHTML = '*';

        if (keyword.value == "")
            keywordElem.innerHTML = '*';

        // if (discount.value == "")
        // discElem.innerHTML = '*';

        return false;
    }

    if (!isNumeric(usages, true)) {

        // || !validateCurrency(discount)) {
        if (!isNumeric(usages, true)) {
            usagesElem.innerHTML = "Invalid";
        }
        /*
		 * if (!validateCurrency(discount)) { discElem.innerHTML = "Invalid"; }
		 */
        return false;

    }
	
	
    form.submit();

}

/**
 * 
 * @param form
 * @return
 */
/*
 * function userformPassword(form){
 * 
 * 
 * var password = document.getElementsByName("user.password")[0]; var
 * confirmpassword = document.getElementsByName("user.confirmpassword")[0]; var
 * confirmpasswordMsg = document.getElementById("lblConfirmPassword");
 * 
 * if (password.value != confirmpassword.value) { confirmpasswordMsg.innerHTML =
 * "Passwords do not match!"; return false; } }
 */

/**
 * Called from registration.jsp. Checks for passwords, empty fields, emails etc
 * 
 * @param form
 *            form object
 * @return false to stop submit or submit this form.
 */

var alert_message = "";

function validateRegistration(form) {

    //alert("called with form: "+form.name);
    // Company Name
    var compname = document.getElementsByName("companyName")[0];

    // user id
    var username = document.getElementsByName("username")[0];
	
    // user first name
    var firstname = document.getElementsByName("firstName")[0];
	
    // user last name
    var lastname = document.getElementsByName("lastName")[0];
	
    // user address
    var address = document.getElementsByName("address")[0];
	
    // user city
    var city = document.getElementsByName("city")[0];
	
    // user phone
    var phone = document.getElementsByName("phone")[0];
	
    // user password
    var password = document.getElementsByName("password")[0];
	
    var confirmpassword = document
    .getElementsByName("conf_password")[0];
	
    var email = document.getElementsByName("emailAddress")[0];
	
    var country = document.getElementsByName("country")[0];

    var pricingPlan = document.getElementsByName("pricingPlan")[0];

    var agreement = document.getElementsByName("agreement")[0];
        
    alert_message = "";

    var functionStatus = true;

    if ( !validateField(compname, "Company", true, "Company")
			
        | !validateField(city, "City", true, "City")
        | !validateField(country, "Country", true, "Country")
        //| !validateField(email, "Provide a valid email address", false)
        | !verifyEmail(email, false)
        //| !validateField(username, "Provide a username", false)
        | !validateUserName(username, false)
        | !validateNameField("First name",firstname.value)
        | !validateNameField("Last name", lastname.value)
        | !validateField(address, "Address", false, "")
        //| !validateField(phone, "Provide a phone number", false)
        | !isNumeric(phone, false)
        | !validateField(password, "Password", false, "")
        | !validateField(confirmpassword, "Confirm password", false, "")
			
        // | !validateNames(firstname, middlename,
        // lastname,compcity,compstate,usercity,userstate)
        ) {

        functionStatus = false;

        alert_message = "The following field(s) either contain(s) invalid or no data:\n"+alert_message;
    }

    /*
	 * if(!validatePhoneAndFax(phone)){ phoneMsg.innerHTML="*"; return false; }
	 * 
	 * if(!validatePhoneAndFax(compphone)){ compphoneMsg.innerHTML="*"; return
	 * false; }
	 */


    if (password.value != confirmpassword.value) {
        //alert("Passwords do not match!");

        alert_message = alert_message + "\n\nPasswords do not match!";
        functionStatus = false;
    }

    if (pricingPlan.value == 0) {

        //alert ("You must select a valid pricing plan");
        alert_message = alert_message + "\n\nYou must select a valid pricing plan";
        functionStatus = false;
    }

    if (agreement.checked == false) {

        //alert ("You must accept the agreement to continue");
        alert_message = alert_message + "\n\nYou must accept the agreement to continue";
        functionStatus = false;
    }

    if (!functionStatus) {

        alert (alert_message)

    }
    return functionStatus;
//form.submit();

}

/**
 * Checks whether names are alphabets
 * 
 * @param firstname
 * @param middlename
 * @param lastname
 * @return
 */

function validateNameField (nameFieldLable, nameFieldValue) {

    var valid = /^[a-zA-Z\s\.]+$/.test(nameFieldValue);

    if (valid == false) {

        alert_message = alert_message+"\n"+nameFieldLable + " contains invalid text";
    }

   return valid;

    //var lValid = /^[a-zA-Z\s\.]+$/.test(lastname);



}
function validateNames(firstname, middlename, lastname) {

    document.getElementById("lblMiddlename").innerHTML = "";

    var ok = true;
    if (containsNumber(firstname, "Firstname", true)) {

        document.getElementById("lblFirstname").innerHTML = "*";
        ok = false;

    }

    if (containsNumber(lastname, "Lastname", true)) {

        document.getElementById("lblLastname").innerHTML = "*";
        ok = false;
    }

    if ((trim(middlename.value).length > 0 && containsNumber(middlename, "Middlename", true))) {

        document.getElementById("lblMiddlename").innerHTML = "*";
        ok = false;
    }

    return ok;
}

/**
 * called from license/payment.jsp and widgetlicense/payment.jsp
 * 
 * @return
 */
function validatePayment(form) {

    // purchase order
    var spanPay = document.getElementById("spanPay");
    // passcode
    var spanPass = document.getElementById("spanPass");

    var txtPass = document.getElementsByName("txtPasscode")[0];
    var txtPurchaseorder = document.getElementsByName("txtPurchaseorder")[0];
    var txtBank = document.getElementsByName("txtBank")[0];

    var lblPass = document.getElementById("lblPasscode");
    var lblPurchaseorder = document.getElementById("lblPurchaseorder");
    var lblBank = document.getElementById("lblBank");

    var radioPurchase = document.getElementsByName("paymentmethod")[0];
    var radioPasscode = document.getElementsByName("paymentmethod")[1];

    if (radioPurchase.checked == false && radioPasscode.checked == false) {

        return false;

    }

    if (radioPasscode.checked) {

        if (!validateField(txtPass, lblPass, "*")) {
            return false;
        }
    } else if (radioPurchase.checked) {

        if (!validateField(txtPurchaseorder, lblPurchaseorder, "*")
            | !validateField(txtBank, lblBank, "*")) {

            return false;

        }

    }

    var submit;

    if (document.getElementById('imagecheckbox')
        && document.getElementById('imagecheckbox').checked) {

        submit = validateImageFile(document.getElementsByName('imagePath')[0]);

    } else {
        submit = true;
    }

    if (submit) {
        form.submit();
    }
}

/**
 * Called from Productform.jsp
 * 
 * @param form
 *            form object
 * @return false to stop submit or submit this form.
 */

function validateProductForm(form) {

    var name = document.getElementsByName("product.name")[0];
    var nameMsg = document.getElementById("lblName");

    var price = document.getElementsByName("product.price")[0];
    var priceMsg = document.getElementById("lblPrice");

    var description = document.getElementsByName("product.description")[0];

    if (name.value != "" && name.value != null) {
        if (checkWordLength(name.value, 'Product Name')) {
            return false;
        }
    }
	
    if (description.value != "" && description.value != null) {
        if (checkWordLength(description.value, 'Description')) {
            return false;
        }
    }
	
	
	
    if ((nameMsg && !validateField(name, nameMsg, "*"))
        | (!validateField(price, priceMsg, "*"))) {
        return false;
    }

    var anumber = /(^\d+$)|(^\d+\.\d+$)/;
    if (!anumber.test(price.value)) {
        priceMsg.innerHTML = "Invalid";
        return false;
    }
    form.submit();

}

/**
 * Called from Productform.jsp
 * 
 * @param form
 *            form object
 * @return false to stop submit or submit this form.
 */
function verifyEmail(field, showAlert){

    var status = true;
    var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
    if (field.value.search(emailRegEx) == -1) {

        if (showAlert) {
            alert("Please enter a valid email address.");
        } else {
            alert_message = alert_message+"\nEmail address";
        }
        status = false;
    }


    return status;
}

function validateEmailSMSForm(form) {

    var name = document.getElementsByName("emailSMSGroup.name")[0];
    var nameMsg = document.getElementById("lblName");

    var description = document.getElementsByName("emailSMSGroup.description")[0];

	
	
    if (name.value != "" && name.value != null) {
        if (checkWordLength(name.value, 'Group Name')) {
            return false;
        }
    }
	
	
    if (description.value != "" && description.value != null) {
        if (checkWordLength(description.value, 'Description')) {
            return false;
        }
    }

	
	
	
    if (nameMsg && !validateField(name, nameMsg, "*")) {

        return false;
    }

    form.submit();

}

/**
 * Called from securitynewspreferences.jsp
 * 
 * @param form
 *            form object
 * @return false to stop submit or submit this form.
 */

function securityNewsPreference(form) {

    var name = document.getElementsByName("categoryProfile.name")[0];
    var nameMsg = document.getElementById("lblName");

    if (nameMsg && !validateField(name, nameMsg, "*")) {

        return false;
    }

    form.submit();

}
/**
 * Called from viewwidget.jsp. Checks for empty field.
 * 
 * @param form
 * @return
 */
function validateWidgetFunctionality(form) {

    // Product Name
    var desc = document.getElementsByName("description")[0];
    var descMsg = document.getElementById("lblWidgetFunctionality");

    if (!validateField(desc, descMsg, "*")) {

        return false;
    }

    form.submit();

}

/**
 * Called from widgetform.jsp
 * 
 * @param form
 * @return
 */
function validateWidgetForm(form) {

    // Product Name

    var name = document.getElementsByName("widget.name")[0];
    var nameMsg = document.getElementById("lblName");

    var price = document.getElementsByName("widget.price")[0];
    var priceMsg = document.getElementById("lblPrice");
    var errorSpanMsg = document.getElementById("errorSpan");

    var url = document.getElementsByName("widget.url")[0];
    var urlMsg = document.getElementById("lblURL");

    var image = document.getElementsByName("icon")[0];
    var imageMsg = document.getElementById("lblICON");

    var description = document.getElementsByName("widget.description")[0];
	
    if (name.value != "" && name.value != null) {
        if (checkWordLength(name.value, 'Widget Name')) {
            return false;
        }
    }

    if (description.value != "" && description.value != null) {
        if (checkWordLength(description.value, 'Description')) {
            return false;
        }
    }
	
	
    var anumber = /(^\d+$)|(^\d+\.\d+$)/

    if ((nameMsg && !validateField(name, nameMsg, "*"))
        | !validateField(price, priceMsg, "*")
        | !validateField(image, imageMsg, "*")
        | !validateField(url, urlMsg, "*")) {
        return false;
    }

    if (image) {
        if (!validateImageFile(image)) {
            return false;
        }
    }
    if (!anumber.test(price.value)) {
        priceMsg.innerHTML = "Invalid";
        return false;
    }

    form.submit();

}

/**
 * Called from userform.jsp
 * 
 * @param form
 *            form object
 * @return false to stop submit or submit this form.
 */

function validateUserForm(form) {

    document.getElementById("userDiv").style.display = "none";

    var username = document.getElementsByName("user.username")[0];
    var usernameMsg = document.getElementById("lblUsername");

    var password = document.getElementsByName("user.password")[0];
    var passwordMsg = document.getElementById("lblPassword");

    var confirmpassword = document.getElementsByName("user.confirmpassword")[0];
    var confirmpasswordMsg = document.getElementById("lblConfirmPassword");

    var firstName = document.getElementsByName("user.firstName")[0];
    var firstNameMsg = document.getElementById("lblFirstName");

    var lastName = document.getElementsByName("user.lastName")[0];
    var lastNameMsg = document.getElementById("lblLastName");

    var phone = document.getElementsByName("user.phone")[0];
    var phoneMsg = document.getElementById("lblPhone");

    var email = document.getElementsByName("user.email")[0];
    var emailMsg = document.getElementById("lblEmail");

    var address = document.getElementsByName("user.address")[0];
    var addressMsg = document.getElementById("lblAddress");

    var country = document.getElementsByName("user.country")[0];
    var countryMsg = document.getElementById("lblCountry");

    var company = document.getElementsByName("user.companyId")[0];
    var companyMsg = document.getElementById("lblCompanyId");

    if ((usernameMsg && !validateField(username, usernameMsg, "*"))
        | (password && !validateField(password, passwordMsg, "*"))
        | (confirmpassword && !validateField(confirmpassword,
            confirmpasswordMsg, "*"))
        | !validateField(firstName, firstNameMsg, "*")
        | !validateField(lastName, lastNameMsg, "*")
        | !validateField(phone, phoneMsg, "*")

        | !validateCountry(country, countryMsg, "*")

        | !validateCountry(company, companyMsg, "*")
        | !validateField(email, emailMsg, "*")
        | !validateCountry(country, countryMsg, "*")
        | !validateField(address, addressMsg, "*")) {
        alert("Please fill all mandatory fields.");

        return false;
    }
    /*
	 * if(!validatePhoneAndFax(phone)){ phoneMsg.innerHTML="*"; return false; }
	 */
    if (password && password.value != confirmpassword.value) {
        confirmpasswordMsg.innerHTML = "Passwords do not match!";
        return false;
    }
    form.submit();

}

/**
 * Called from ContractForm.jsp
 * 
 * @param form
 *            form object
 * @return false to stop submit or submit this form.
 */

function validateContractForm(form) {

    // Name
    var name = document.getElementsByName("contract.name")[0];
    var nameMsg = document.getElementById("lblName");

    // Duration
    var duration = document.getElementsByName("contract.duration")[0];
    var durationMsg = document.getElementById("lblDuration");

    // Minimum Users
    var minimumUsers = document.getElementsByName("contract.minimumUsers")[0];
    var minimumUsersMsg = document.getElementById("lblMinimumUsers");

    // Unit Price
    var unitPrice = document.getElementsByName("contract.unitPrice")[0];
    var unitPriceMsg = document.getElementById("lblUnitPrice");

    // Discount Rate
    var discountRate = document.getElementsByName("contract.discountRate")[0];
    var discountRateMsg = document.getElementById("lblDiscountRate");

    // Minimum user for Discount
    var minUsersForDiscount = document
    .getElementsByName("contract.minimumUsersForDiscount")[0];
    var minUsersForDiscountMsg = document
    .getElementById("lblMinimumUsersForDiscount");

    var description = document.getElementsByName("contract.description")[0];

	
    if (name.value != "" && name.value != null) {
        if (checkWordLength(name.value, 'Contract Name')) {
            return false;
        }
    }
	
	
    if (description.value != "" && description.value != null) {
        if (checkWordLength(description.value, 'Description')) {
            return false;
        }
    }
	
	
	
	
    if (// (nameMsg && !validateField(name, nameMsg, "*"))|
        !validateField(duration, durationMsg, "*")
        | !validateField(minimumUsers, minimumUsersMsg, "*")
        | !validateField(unitPrice, unitPriceMsg, "*")
        | !validateField(discountRate, discountRateMsg, "*")
        | !validateField(minUsersForDiscount, minUsersForDiscountMsg, "*")) {

        return false;
    }

    // check if values filled are numeric
    var valid = true;

    if (!isNumeric(duration, true)) {

        durationMsg.innerHTML = "Invalid";
        valid = false;
    }
    if (!isNumeric(minimumUsers, true)) {

        minimumUsersMsg.innerHTML = "Invalid";
        valid = false;

    }

    // check if values filled are currency
    if (!validateCurrency(unitPrice)) {

        unitPriceMsg.innerHTML = "Invalid";
        valid = false;

    }
    if (!validateCurrency(discountRate)) {

        discountRateMsg.innerHTML = "Invalid";
        valid = false;

    }

    if (!isNumeric(minUsersForDiscount, true)) {

        minUsersForDiscountMsg.innerHTML = "Invalid";
        valid = false;

    }
    if (!valid) {

        return false;
    }
    var errorSpanMsg = document.getElementById("errorSpan");
    // checking checkboxes exist with this name
    if (form.widgetId) {
        // checking checkboxes for to see if atleast one widget is selected
        var checkboxes = form.widgetId;
        var checkedFound = false;

        for (i = 0; i < checkboxes.length; i++) {
            if (checkboxes[i].checked == true) {
                checkedFound = true;
                break;
            }
        }

        if (!checkedFound) {
            errorSpanMsg.innerHTML = "Please select atleast one widget!";
            return false;
        }
    }
    // END -- checking checkboxes for to see if atleast one widget is selected

    form.submit();

}

/**
 * Called from license/modify.jsp
 * 
 * @param form
 * @return
 */
function validateLicenseForm(form) {

    // Duration
    var duration = document.getElementsByName("license.duration")[0];
    var durationMsg = document.getElementById("lblDuration");

    // Minimum Users
    var noOfUsers = document.getElementsByName("license.noOfUsers")[0];
    var noOfUsersMsg = document.getElementById("lblNoOfUsers");

    // check if values filled are numeric
    var valid = true;

    if (!isNumeric(duration, true)) {

        durationMsg.innerHTML = "Invalid";
        valid = false;
    } else {
        durationMsg.innerHTML = "";
    }

    if (!isNumeric(noOfUsers, true)) {

        noOfUsersMsg.innerHTML = "Invalid";
        valid = false;

    } else {
        noOfUsersMsg.innerHTML = "";
    }

    if (!valid) {

        return false;
    }

    form.submit();

}

/**
 * Called from company.jsp
 * 
 * @param form
 *            form object
 * @return false to stop submit or submit this form.
 */

function validateCompanyForm(form) {

    // Name
    var name = document.getElementsByName("company.name")[0];
    var nameMsg = document.getElementById("lblCompanyname");

    // Address
    var address = document.getElementsByName("company.address")[0];
    var addressMsg = document.getElementById("lblAddress");

    // Company city
    var city = document.getElementsByName("company.city")[0];
    var cityMsg = document.getElementById("lblCity");

    var country = document.getElementsByName("company.country")[0];
    var countryMsg = document.getElementById("lblCountry");

    var phone = document.getElementsByName("company.phone")[0];
    var phoneMsg = document.getElementById("lblPhone");

    var url = document.getElementsByName("company.url")[0];
    var urlMsg = document.getElementById("lblUrl");

    if ((nameMsg && !validateField(name, nameMsg, "*"))
        | !validateField(address, addressMsg, "*")
        | !validateField(city, cityMsg, "*")
        | !validateCountry(country, countryMsg, "*")
        | !validateField(phone, phoneMsg, "*")
        | !validateField(url, urlMsg, "*")) {

        return false;
    }
    /*
	 * if(!validatePhoneAndFax(phone)){
	 * 
	 * phoneMsg.innerHTML="*"; return false; }
	 */
    form.submit();

}

/**
 * Called from groupform.jsp
 * 
 * @param form
 *            form object
 * @return false to stop submit or submit this form.
 */

function validateGroupForm(form) {

    // Name
    var name = document.getElementsByName("group.name")[0];

    var nameMsg = document.getElementById("lblGroupName");

    var description = document.getElementsByName("group.description")[0];

	
    if (name.value != "" && name.value != null) {
        if (checkWordLength(name.value, 'Group Name')) {
            return false;
        }
    }
	
    if (description.value != "" && description.value != null) {
        if (checkWordLength(description.value, 'Description')) {
            return false;
        }
    }
	
    if (!validateField(name, nameMsg, "*")) {
        return false;
    }

	
    form.submit();

}


var xmlObjectForCheckingUsernameUnique;
function checkUsernameUnique (field) {

    if (validateUserName(field, true)) {

        xmlObjectForCheckingUsernameUnique = getXmlHttpObject();
        var url = 'checkUserOrEmail.jsp?check=username&username='+field.value;
        sendAJAXRquest(xmlObjectForCheckingUsernameUnique, url,
            'GET', checkUsernameUniqueResponse,
            null);

    }

}
function checkUsernameUniqueResponse () {

    if (xmlObjectForCheckingUsernameUnique.readyState==4) {
        alert (xmlObjectForCheckingUsernameUnique.responseText);
    }
}

var xmlObjectForCheckingEmail;
function checkEmailUnique(field) {

    if (verifyEmail(field, true)) {
        xmlObjectForCheckingEmail = getXmlHttpObject();
        var url = 'checkUserOrEmail.jsp?check=email&email='+field.value;
        sendAJAXRquest(xmlObjectForCheckingEmail, url,
            'GET', checkEmailUniqueResponse,
            null);
    }
}

function checkEmailUniqueResponse() {

    if (xmlObjectForCheckingEmail.readyState==4) {
        alert (xmlObjectForCheckingEmail.responseText);
    }
}

function validateUserName(field, showAlert) {

    // Name
    var name = field;
	
    if (name.value.length == 0 || name.value == "") {

        if (showAlert) {
            alert("Please enter username.");
        } else {
            alert_message = alert_message+"\nUsername";
        }

        return false;
    } else if (trim(name.value).length < 6) {

        if (showAlert) {

            alert("Username length cannot be less than 6 characters.");
                    
        } else {
            alert_message = alert_message+"\nUsername length cannot be less than 6 characters.";
        }
		
        return false;
    }

    return true;

}

function validateEmailSMSField(form) {

    var check = document.getElementById("check");

    if (check.checked) {
        if (check.name == "file") {
            var file = document.getElementById("file");
            if (file.value == "" || file.value == null) {
                alert("Please select file.");
                return false;
            }
        }
        if (check.name == "carrier") {
            var carrier = document.getElementById("carrierId");
            var smsnumber = document.getElementById("dataEmailSMS");

            if (smsnumber.value == "" || smsnumber.value == null) {
                alert("Please enter cell number.");
                return false;
            }
            if (smsnumber.value.length < 9) {
                alert("Sms number can not be less than 9 digits.");
                return false;
            }
            if (smsnumber.value.length > 20) {
                alert("Sms number can not be greater than 25 digits.");
                return false;
            }

            if (carrier.value <= 0) {
                alert("Please select carrier.");
                return false;
            }

            if (smsnumber.value.charAt(0) == '1') {
                alert('Please don\'t precede a number with 1 when you click on \na checkbox to indicate that this is a US number since \nall SMSs are sent via an email to US numbers');
                return false;
            }
        }
    } else {
        if (check.name == "file") {
            var email = document.getElementById("dataEmailSMS");

            if (email.value == "" || email.value == null) {
                alert("Please enter an email address.");
                return false;
            }

        } else if (check.name == "carrier") {
            var sms = document.getElementById("dataEmailSMS");

            if (sms.value == "" || sms.value == null) {
                alert("Please enter cell number.");
                return false;
            }
            if (sms.value.length < 9) {
                alert("Sms number can not be less than 9 digits.");
                return false;
            }
            if (sms.value.length > 20) {
                alert("Sms number can not be greater than 20 digits.");
                return false;
            }
        }

    }

    form.submit();
    return true;
}

/**
 * 
 * @param field
 *            form field object
 * @param label
 *            related form label/span tag of this field
 * @param text
 *            text to display
 * @return true if field is not empty, otherwise sets label text and returns
 *         false
 */
function validateField(field, text, checkNumber, fieldName) {

    //alert ("Checking field");

    if (field.value == "" | trim(field.value).length == 0) {
        //alert(text);
        alert_message = alert_message+"\n"+text;

        return false;
    }

    //alert ("checkNumber is: "+checkNumber+ " for field: "+field.name);
    if (checkNumber) {
        var a = containsNumber(field, fieldName, false);
            
        return !a;
    }
        
    return true;

}

/**
 * validates the Form Field
 * 
 * @param form
 *            Form Object
 * @param field
 * @return
 */
function validateFormField(form, field) {
    return true;
}

/**
 * Checks whether field contains value that is a URL.
 * 
 * @param field
 * @return true if URL
 */
function validateURL(field) {
    return /^(ftp|https?):\/\/+(www\.)?[a-z0-9\-\.]{3,}\.[a-z]{3}$/
    .test(field.value);
}

/**
 * 
 * @param form
 *            field object
 * @return false if null or blank else returns true
 */

function validateBlank(field) {

    if (field == null || field.value == "") {

        return false;

    }

    return true;

}

/**
 * Checks whether the field is numeric
 * 
 * @param field
 * @return true if contents of a field. Returns false also when field is empty.
 */
function isNumeric(field, showAlert) {

    var ValidChars = "0123456789";
    var IsNumber = true;
    var Char;
    var sText = field.value;
    if (trim(sText).length > 0) {
        for (i = 0; i < sText.length && IsNumber == true; i++) {
            Char = sText.charAt(i);
            if (ValidChars.indexOf(Char) == -1) {

                if (showAlert) {
                    alert("For phone number, only enter numbers");
                } else {
                    alert_message = alert_message + "\nFor phone number, only enter numbers";
                }
                IsNumber = false;
            }
        }
        return IsNumber;
    }

    if (showAlert) {
        alert("Provide a phone number");
    } else {
        alert_message = alert_message + "\nPhone number";
    }

    return false;

}

/**
 * Checks whether the field contains a number
 * 
 * @param field
 * @return true if number exist of the field. Returns false also when field is
 *         empty or does not have a number.
 */

function containsNumber(field, fieldName, showAlert) {

    var ValidChars = "0123456789";
    var IsNumber = false;
    var Char;
    var sText = field.value;

    if (trim(sText).length > 0) {
        for (i = 0; i < sText.length; i++) {
            Char = sText.charAt(i);
            if (ValidChars.indexOf(Char) > -1) {
                IsNumber = true;
                if (showAlert) {
                alert(fieldName+" should only contain letters!");
                } else {
                    alert_message = alert_message +"\n"+fieldName+" should only contain letters!";
                }
                field.focus();
                break;
            }
        }

    }
    return IsNumber;

}
/**
 * Validates a field against phone and fax with allowed 0-9 and a dash.
 * 
 * @param field
 * @return
 */
function validatePhoneAndFax(field) {

    var ValidChars = "0123456789-";
    var IsNumber = true;
    var Char;
    var sText = field.value;
    if (sText.length > 0) {
        for (i = 0; i < sText.length && IsNumber == true; i++) {
            Char = sText.charAt(i);
            if (ValidChars.indexOf(Char) == -1) {
                IsNumber = false;
            }
        }
        return IsNumber;
    }
    return false;

}

/**
 * 
 * @param field
 * @return true if format is in currency
 */
function validateCurrency(field) {

    var ValidChars = "0123456789.";
    var dotExists = false;
    var isCurrency = true;
    var Char;
    var sText = field.value;
    if (sText.length > 0) {
        for (i = 0; i < sText.length && isCurrency == true; i++) {
            Char = sText.charAt(i);

            if (dotExists && Char == '.') {
                isCurrency = false;
                break;
            }

            if (!dotExists && Char == '.') {
                dotExists = true;
            }

            if (ValidChars.indexOf(Char) == -1) {
                isCurrency = false;
            }
        }
        return isCurrency;
    }
    return false;

}

/**
 * Function to trim field value
 * 
 * @param str
 *            field value to be trimmed
 * @return string value
 */
function trimString(str) {
    str = str.replace(/^\s+/, '');
    for ( var i = str.length - 1; i >= 0; i--) {
        if (/\S/.test(str.charAt(i))) {
            str = str.substring(0, i + 1);
            break;
        }
    }
    return str;
}

/**
 * Function to trim field value. Use were regular expression is not supported.
 * 
 * @param str
 *            field value to be trimmed
 * @return string value
 *         http://blog.stevenlevithan.com/archives/faster-trim-javascript
 */
function trim(str) {
    var whitespace = ' \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000';
    for ( var i = 0; i < str.length; i++) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(i);
            break;
        }
    }
    for (i = str.length - 1; i >= 0; i--) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(0, i + 1);
            break;
        }
    }
    return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}

function checkUnchekcCategoryCheckbox(groupCheckbox, counter, checkbox) {

    var checkboxGroup = document.getElementsByName(counter + 'Value')[0];
    var startGroup = document.getElementsByName(counter + 'StartPos')[0];

    var preferencesChk = document.securityNewsPreferences.preferences;

    if (checkbox.checked) {
        groupCheckbox.checked = true;
    } else {
        for (i = startGroup.value; i <= checkboxGroup.value - 1; i++) {
            if (preferencesChk[i].checked == true) {
                groupCheckbox.checked = true;
                break;
            } else {
                groupCheckbox.checked = false;
            }

        }
    }
}

function checkUncheckSubCategoryCheckboxes(checkboxes) {

    var checkboxGroup = document.getElementsByName(checkboxes.name + 'Value')[0];
    var startGroup = document.getElementsByName(checkboxes.name + 'StartPos')[0];

    var preferencesChk = document.securityNewsPreferences.preferences;

    for (i = startGroup.value; i <= checkboxGroup.value - 1; i++) {
        if (checkboxes.checked) {
            preferencesChk[i].checked = true;
        // preferencesChk[i].disabled = false;

        } else {
            preferencesChk[i].checked = false;
        // preferencesChk[i].disabled = false;
        }
    }
}

function validateCountry(country, countryLabel, msg) {
    countryLabel.innerHTML = '';
    if (country.value == "0") {
        countryLabel.innerHTML = msg;
        return false;
    }
    return true;
}

function enterPressed(e, whichEvent) {
    if (!e)
        e = window.event;
    var code = (e.keyCode) ? e.keyCode : e.which;

    if (code == 13) // Enter
    {
        if (whichEvent == 'username') {
            document.getElementsByName("loginPassword")[0].focus();
        } else if (whichEvent == 'password') {
            validateLogin(document.loginform);
        }
    }
}
/**
 * Method to check whether it is an image file
 * 
 * @param inputField
 * @return
 */
function validateImageFile(inputField)

{

    if (inputField.value == "") {
        alert('You must select an image in order to upload!');

        return false;
    }

    var result = inputField.value.lastIndexOf('.');

    if (result < 0) {
        alert('Invalid image. Please upload a file ending with\nJPG, JPEG, BMP, GIF or PNG.');
        return false;
    }

    var ext = inputField.value.substr(result + 1).toLowerCase();

    switch (ext)

    {
        case 'jpeg':
        case 'jpg':
        case 'gif':
        case 'png':
        case 'bmp':
            break;

        default:

            // Not one of our happy extensions

            alert('Invalid image. Please upload a file ending with \nJPG, JPEG, GIF or PNG.');
            // displayPhotoError("invalid image. please upload a file ending with
            // JPG, JPEG, BMP, GIF or PNG.");
            return false;
    }
    // hidePhotoError();
    return true;

}

function checkWordLength(txt,fieldName) {
    var arry = txt.split(" ");
    for (i = 0; i < arry.length; i++) {
        if (arry[i].length > 35) {
            alert("In "+fieldName+" field you have entered a text that contains a word ("+arry[i].length+" characters) which is longer in length than allowed by the system, please enter the text again.");
            return true;
        }
    }
    return false;
}

