// cform - Contractor form
// Constants
//  Contractor form input names of registration part
var cformReglbls = [
        'login',
        'password',
        'passwordconfirm',
        'email',
        'captcha'
        ];
var cformRegCardlbls = [
        'login',
        'password',
        'email'
        ];

// Contractor form input names of adding card part
var cformCardlbls = [
        'phone',
        'phone-code',
        'site',
        'contactperson',
        'contactemail',
        'position',
        'companyname',
        'city',
        'address',
        'subwaystation',
        'workdirection',
        'shortdescription',
        'detaileddescription'
        ];


function clear(lbls) {
    for (var i = 0; i < lbls.length; i++) {
        try {
            var elem = document.getElementById(lbls[i]);
            elem.value = '';
            var mdiv = document.getElementById(lbls[i] + "Msg");
            mdiv.innerHTML = '';
        } catch(e) {

        }
    }
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function refreshCaptcha(captchaId) {
    var path = document.getElementById(captchaId).src;
    //var newpath = path.substring(0, path.lastIndexOf("/"));
    var newpath = ctxPath + "/Captcha.jpg?date=" + new Date();
    document.getElementById(captchaId).src = newpath;
}

function cleanMessages() {
    clear(cformReglbls);
    clear(cformCardlbls);
    clear(remindPasswordlbls);
    clear(uformlbls);
    document.getElementById("registrationmsg").innerHTML = '';
    //document.getElementById("contractorformmsg").innerHTML = '';
    document.getElementById("userformmsg").innerHTML = '';
    document.getElementById("remindpasswordmsg").innerHTML = '';
    //document.getElementById("workdirection").options[0].selected = true;
}

function init(what) {
    cleanMessages();

    if(what == 'user'){
        disableUserRegistrationPart(false);
        refreshCaptcha('captchauimg');
    }else if(what == 'contractor'){
        disableRegistrationPart(false);
        refreshCaptcha('captchaimg');
    }else if(what == 'password'){
        disableRemindPasswordForm(false);
        refreshCaptcha('captcharimg');
    }
    //disableContactsAndInfoParts(true);
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function disableContactsAndInfoParts(disable) {
    for (var j = 0; j < cformCardlbls.length; j++) {
        try {
            document.getElementById(cformCardlbls[j]).disabled = disable;
        } catch(e) {
        }
    }
    document.getElementById("addcard").disabled = disable;
    document.getElementById("addvipcard").disabled = disable;
}

function disableRegistrationPart(disable) {
    for (var j = 0; j < cformReglbls.length; j++) {
        try {
            document.getElementById(cformReglbls[j]).disabled = disable;
        } catch(e) {
        }
    }
    document.getElementById("registrate").disabled = disable;
}

function setVoidMessages(lbls) {
    for (var i = 0; i < lbls.length; i++) {
        var mdiv = document.getElementById(lbls[i] + "Msg");
        mdiv.innerHTML = '';
    }
}

// Validate Contractor form's registrate action
function validateCFormRegistration() {
    dwr.util.useLoadingMessage();
    var form = new Array(cformReglbls.length);
    for (var j = 0; j < cformReglbls.length; j++) {
        form[j] = {name:cformReglbls[j], value:dwr.util.getValue(cformReglbls[j])};
    }
    ContractorForm.registrate(form, function(fields) {
        var field;
        var length = fields.length;
        if (length > 2) {
            for (var i = 0; i < length; i++) {
                field = fields[i];
                dwr.util.setValue(field.name, field.value);
                var message = field.message;
                var mdiv = document.getElementById(field.name + "Msg");
                mdiv.className = "bp_invalid";
                mdiv.innerHTML = message;
            }
            refreshCaptcha('captchaimg');
            disableRegistrationPart(false);
        } else {

            var msg = document.getElementById("registrationmsg");
            msg.innerHTML = fields[0];
            var status = fields[1];
            msg.className = "bp_valid";
            setVoidMessages(cformReglbls);
            if (status == "succ") {
                disableRegistrationPart(true);
                //disableContactsAndInfoParts(false);
            } else if (status == "fail") {
                disableRegistrationPart(false);
                //disableContactsAndInfoParts(true);
            }
            //document.getElementById("captchablock1").innerHTML = '';
            //document.getElementById("captchablock2").innerHTML = '';
            //document.getElementById("captchablock3").innerHTML = '';
        }
    });
}


// Validate Contractor form's add card  action
function validateCFormAddCard() {

    dwr.util.useLoadingMessage();

    var cformlbls = mergeArrays(cformRegCardlbls, cformCardlbls);
    var form = new Array(cformlbls.length);

    for (var j = 0; j < cformlbls.length; j++) {
        form[j] = {name:cformlbls[j], value:dwr.util.getValue(cformlbls[j])};
    }

    ContractorForm.addCard(form, function(fields) {
        var field;
        var length = fields.length;
        if (length > 2) {
            for (var i = 0; i < fields.length; i++) {
                field = fields[i];
                dwr.util.setValue(field.name, field.value);
                var message = field.message;
                var mdiv = document.getElementById(field.name + "Msg");
                mdiv.className = "bp_invalid";
                mdiv.innerHTML = message;
            }
        } else {
            var msg = document.getElementById("contractorformmsg");
            document.getElementById("registrationmsg").innerHTML = "";
            msg.className = "bp_valid";
            msg.innerHTML = fields[0];
            setVoidMessages(cformCardlbls);
            disableContactsAndInfoParts(true);
        }
    }

            );
}


// Validate Contractor form's add card  action
function validateCFormAddVipCard() {

    dwr.util.useLoadingMessage();
    var cformlbls = mergeArrays(cformRegCardlbls, cformCardlbls);
    var form = new Array(cformlbls.length);
    for (var j = 0; j < cformlbls.length; j++) {
        form[j] = {name:cformlbls[j], value:dwr.util.getValue(cformlbls[j])};
    }
    ContractorForm.addVipCard(form, function(fields) {
        var field;
        var length = fields.length;
        if (length > 2) {
            for (var i = 0; i < fields.length; i++) {
                field = fields[i];
                dwr.util.setValue(field.name, field.value);
                var message = field.message;
                var mdiv = document.getElementById(field.name + "Msg");
                mdiv.className = "bp_invalid";
                mdiv.innerHTML = message;
            }
        } else {
            var msg = document.getElementById("contractorformmsg");
            document.getElementById("registrationmsg").innerHTML = "";
            setVoidMessages(cformCardlbls);
            msg.className = "bp_valid";
            msg.innerHTML = fields[0];
            disableContactsAndInfoParts(true);
        }
    }

            );
}

function mergeArrays(arr1, arr2) {
    if ((arr1 instanceof Array) && (arr2 instanceof Array)) {
        var result = new Array(arr1.length + arr2.length);
        for (var i = 0; i < arr1.length; i++)
            result[i] = arr1[i];
        for (var i = 0; i < arr2.length; i++)
            result[i + arr1.length] = arr2[i];
        return result;
    }
}

var selectedReg = 'contractor';

function setSelectedReg(reg){
    selectedReg = reg;
}
