// ZSite CMS
// JavaScript runtime
// validation common functions
// (c) Zagporodnikov Anton 2007

// draws error box
function zsite_validation_drawerror(node_id)
{
    var errortext = "";

    if(zsite_validation_error == "invalid_character") errortext=ZLOCALE("this field contain invalid character");
    if(zsite_validation_error == "empty_string") errortext=ZLOCALE("this field cannot be empty");
    if(zsite_validation_error == "underscore_begin") errortext=ZLOCALE("this field cannot begin with underscore");
    if(zsite_validation_error == "number_begin") errortext=ZLOCALE("this field cannot begin with number");

    if(errortext == "") errortext = zsite_validation_error;
    
    zsite_validateerror_show(node_id, errortext);
}

function zsite_validation_hideerror()
{
    zsite_validateerror_hide();
}

//process validation
function zsite_validate(node_id, method)
{
    var validated = false;

    validated = eval("zsite_validate_"+method+"(dojo.byId('"+node_id+"').value)");
    //TODO: maybe using eval is not safe here
    //if(method == "variablename")
    //{
    //	validated = zsite_validate_variablename(dojo.byId(node_id).value);
    //}

    if(!validated)
    {
	zsite_validation_drawerror(node_id);
	dojo.byId(node_id).focus();
	dojo.byId(node_id).select();
    }
    else
    {
	zsite_validation_hideerror();
    }
    
    return validated;
}

//enables validation for the node
function zsite_enable_validation(node_id, method)
{
    //bind dojo actions
    var link = dojo.connect(dojo.byId(node_id), "onblur", null, function() { zsite_validate(node_id, method); } );
    dojo.byId(node_id).setAttribute("validatelink", link);
}

//enables validation for the node
function zsite_enable_validationlock(node_id, method, buttontolock)
{
    //make button disabled if default value is nonvalid
    //but not display any error
    var validated = eval("zsite_validate_"+method+"(dojo.byId('"+node_id+"').value)");
    if(!validated)
    {
	zsite_button_disable(buttontolock);
    }
    
    //bind dojo actions
    var link = dojo.connect(dojo.byId(node_id), "onblur", null, function() { if(zsite_validate(node_id, method)) { zsite_button_enable(buttontolock); } else { zsite_button_disable(buttontolock); } } );
    var link2 = dojo.connect(dojo.byId(node_id), "onchange", null, function() { if(zsite_validate(node_id, method)) { zsite_button_enable(buttontolock); } else { zsite_button_disable(buttontolock); } } );
    dojo.byId(node_id).setAttribute("validatelink", link);
    dojo.byId(node_id).setAttribute("validatelink2", link2);
}

function zsite_disable_validation(node_id)
{
    var link = dojo.byId(node_id).getAttribute("validatelink");
    if(link != "")
    {
	dojo.disconnect(link);
    }

    var link = dojo.byId(node_id).getAttribute("validatelink2");
    if(link != "")
    {
	dojo.disconnect(link);
    }
}
