// textarea max length
function limitmaxlength(text,max_length){
    if (text.value && text.value.length > max_length) {
        text.value=text.value.substring(0,max_length);

        alert('Ad Text is too long and has been truncated to 255 characters long. Please scroll down to review');

        return false;
    }

    return true;
}

// validates that the field value string has one or more characters in it
function isNotEmpty(elem,mess_id,mess_text) {
    var str = elem.value;
    var re = /.+/;
    if(!str.match(re)) {
        document.getElementById(mess_id).innerHTML=mess_text;
        return false;
    } else {
        return true;
    }
}

//validates that the entry is a positive or negative number
function isNumber(elem,mess_id,mess_text) {
    var str = elem.value;
    var re = /^[-]?\d*\.?\d*$/;
    str = str.toString();
    if (!str.match(re)) {
        document.getElementById(mess_id).innerHTML=mess_text;
        return false;
    }
    return true;
}

// validates that the entry is 16 characters long when
// input field's maxlength attribute is set to 16
function isLen16(elem,mess_id,mess_text) {
    var str = elem.value;
    var re = /\b.{16}\b/;
    if (!str.match(re)) {
        document.getElementById(mess_id).innerHTML=mess_text;
        return false;
    } else {
        return true;
    }
}

// validates that the entry is formatted as an email address
function isEMailAddr(elem,mess_id,mess_text) {
    var str = elem.value;
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
    if (!str.match(re)) {
        document.getElementById(mess_id).innerHTML=mess_text;
        return false;
    } else {
        return true;
    }
}


// validates that the entry is formatted as domain name
function isDomainName(elem,mess_id,mess_text) {
    var str = elem.value;
    var re = /^([\w-]+\.)+[a-zA-Z]{2,7}[\w/\.\?=]*$/;
    if (!str.match(re)) {
        document.getElementById(mess_id).innerHTML=mess_text;
        return false;
    } else {
        return true;
    }
}

// Read the name, id, type, and value of one form control element
// as requested by form2ArrayString()
function formObj2String(obj) {
    var output = "{";
    if (obj.name) {
        output += "name:'" + obj.name + "',";
    }
    if (obj.id) {
        output += "id:'" + obj.id + "',";
    }
    output += "type:'" + obj.type + "',";
    switch (obj.type) {
        case "radio":
            if (obj.name) {
                obj = document.forms[0].elements[obj.name];
                var radioVal = "value:false,index:-1";
                for (var i = 0; i < obj.length; i++) {
                    if (obj[i].checked) {
                        radioVal = "value:true,index:" + i;
                        i = obj.length;
                    }
                }
                output += radioVal;
            } else {
                output += "value:" + obj.checked;
            }
            break;
        case "checkbox":
            output += "value:" + obj.checked;
            break;
        case "select-one":
            output += "value:" + obj.selectedIndex;
            break;
        case "select-multiple":
            output += "value:" + obj.selectedIndex;
            break;
        case "text":
            output += "value:'" + escape(obj.value) + "'";
            break;
        case "textarea":
            output += "value:'" + escape(obj.value) + "'";
            break;
        case "password":
            output += "value:'" + escape(obj.value) + "'";
            break;
        case "hidden":
            output += "value:'" + escape(obj.value) + "'";
            break;
        default:
            output += "";
    }
    output += "}"
    return output;
}

function formObj2Param(obj) {
    var output = "";
    if (obj.name) {
        output += obj.name;
    }
    switch (obj.type) {
        case "radio":
            if (obj.name) {
                obj = document.forms[0].elements[obj.name];
                var radioVal = "value:false,index:-1";
                for (var i = 0; i < obj.length; i++) {
                    if (obj[i].checked) {
                        radioVal = "value:true,index:" + i;
                        i = obj.length;
                    }
                }
                output += radioVal;
            } else {
                output += "=" + obj.checked;
            }
            break;
        case "checkbox":
            output += "=" + obj.checked;
            break;
        case "select-one":
            output += "=" + obj.selectedIndex;
            break;
        case "select-multiple":
            output += "=" + obj.selectedIndex;
            break;
        case "text":
            output += "=" + encodeURIComponent(obj.value);
            break;
        case "textarea":
            output += "=" + encodeURIComponent(obj.value);
            break;
        case "password":
            output += "=" + encodeURIComponent(obj.value);
            break;
        case "hidden":
            output += "=" + encodeURIComponent(obj.value);
            break;
        default:
            output += "";
    }
    return output;
}

function formSerialize(form) {
    var elem, lastName = "";
    var output = "";
    for (var i = 0; i < form.elements.length; i++) {
        elem = form.elements[i];
        if (elem.name && (elem.name != lastName)) {
            output += formObj2Param(form.elements[i]) + "&";
            lastName = elem.name;
        }
    }
    return output;
}

// Distribute form control values from another source to the
// controls in this page's form, whose names/ids match those
// of the original form controls
function string2FormObj(form, str) {
    var elem, objArray = eval(str);
    for (var i = 0; i < objArray.length; i++) {
        elem = (objArray[i].name) ? form.elements[objArray[i].name] :
            document.getElementById(objArray[i].id);
        switch (objArray[i].type) {
            case "radio":
                if (objArray[i].name && objArray[i].value && objArray[i].index >= 0) {
                    elem = elem[objArray[i].index];
                }
                elem.checked = objArray[i].value;
                break;
            case "checkbox":
                elem.checked = objArray[i].value;
                break;
            case "select-one":
                elem.selectedIndex = objArray[i].value;
                break;
            case "select-multiple":
                elem.selectedIndex = objArray[i].value;
                break;
            default:
                elem.value = unescape(objArray[i].value);
        }
    }
}

