
// W3C DOM
if (document.getElementById && document.createElement) {
}

// DHTML
if (document.getElementById || document.all || document.layers) {
}

function getObj(name)
{
    if( document.getElementById ) {
        this.obj = document.getElementById( name );
    }
    else if( document.all ) {
        this.obj = document.all[name];
    }
    else if( document.layers ) {
        this.obj = getObjNN4( document, name );
    }

    if( this.obj ) {
        if( document.getElementById ) {
            this.style = document.getElementById( name ).style;
        }
        else if( document.all ) {
            this.style = document.all[name].style;
        }
        else if( document.layers ) {
            this.style = this.obj;
        }
    }
}

function getObjNN4(obj,name)
{
    var x = obj.layers;
    var foundLayer;
    for (var i=0;i<x.length;i++) {
        if (x[i].id == name) {
            foundLayer = x[i];
        }
        else if (x[i].layers.length) {
            var tmp = getObjNN4(x[i],name);
        }
        if (tmp) {
            foundLayer = tmp;
        }
    }
    return foundLayer;
}

var tohide = new Array();

function clearHide(s)
{
    if( tohide[s] ) {
        window.clearTimeout( tohide[s] );
        tohide[s] = false;
    }
}  

function show(s) {
    clearHide(s);
    new getObj(s).style.visibility = "visible";
}

function hide(s,time) {
    clearHide(s);
    if( time ) {
        tohide[s] = window.setTimeout('timedhide("' + s + '")',time);
    }
    else {
        new getObj(s).style.visibility = "hidden";
    }
}

function timedhide(s) {
    if( tohide[s] ) {
        new getObj(s).style.visibility = "hidden";
    }
    clearHide(s);
}

picarray = new Array();

function getimage(name)
{
    if( picarray[name] ) {
        return picarray[name];
    }
    else {
        img = new Image();
        img.src = name;
        picarray[name] = img;
        return img;
    }
}

function setimagesrc(img,name)
{
    img.src = getimage( name ).src;
}

function imageover(img)
{
    var name = img.src;
    setimagesrc( img, name.substring(0,name.length-5) + "o" + name.substring(name.length-4, name.length) );
}

function imageout(img)
{
    var name = img.src;
    setimagesrc( img, name.substring(0,name.length-5) + "n" + name.substring(name.length-4, name.length) );
}

function mouseover(imgname)
{
    if( document.images ) {
        imageover( document.images[imgname] );
    }
}

function mouseout(imgname)
{
    if( document.images ) {
        imageout( document.images[imgname] );
    }
}

function mouseoveranchor(anchor)
{
    imageover(anchor.firstChild)
}

function mouseoutanchor(anchor)
{
    imageout(anchor.firstChild)
}

function showanchorimage(anchor)
{
    setimagesrc( anchor.firstChild, "imgs/" + anchor.id + "_o.png" );
}

function hideanchorimage(anchor)
{
    setimagesrc( anchor.firstChild, "imgs/trans.png" );
}


// FORMVAL

var messages = new Array();
var fieldkey;
var fieldlabel;
var inputfield;

function Message(label,valid,message) {
    this.label = label;
    this.valid = valid;
    this.message = message;
}

function setFieldMessage(fieldkey,label,valid,message)
{
    messages[fieldkey] = new Message(label,valid,message);
}

function displayMessages()
{
    var sitemessage = "";
    var alertmessage = "";
    var valid = true;
    for( key in messages ) {
        var messageHtml = new getObj(key + "_message");
        if( ! messages[key].valid ) {
            valid = false;
        }
        if( messageHtml.obj ) {
            messageHtml.obj.innerHTML = messages[key].message;
        }
        else {
            if( messages[key].message != "" ) {
                var tmp = messages[key].label + ": " + messages[key].message;
                sitemessage += tmp + "<br />";
                alertmessage += tmp + "\n";
            }
        }
    }
    if( alertmessage != "" ) {
        messageHtml = new getObj("formval_message");
        if( messageHtml.obj ) {
            messageHtml.obj.innerHTML = sitemessage;
        }
        else {
            alert( alertmessage );
        }
    }
    messages = new Array();
    return valid;
}

function formvalfield( key, label )
{
    if( ! document.getElementById ) {
        return false;
    }
    else {
        fieldkey = key;
        fieldlabel = label;
        setFieldMessage( fieldkey, fieldlabel, true, "" );
        inputfield = new getObj( fieldkey );
        if( ! inputfield.obj ) {
            setFieldMessage( fieldkey, fieldlabel, false, "Field is missing (" + fieldkey + ")" );
            return false;
        }
    }
    return true;
}

function required( required, message )
{
    if( inputfield.obj.value.length == 0 ) {
        if( required ) {
            setFieldMessage( fieldkey, fieldlabel, false, message );
        }
        return false;
    }
    return true;
}

function trim()
{
    var s = inputfield.obj.value;
    while (s.charAt( 0 ) == " ") {
        s = s.substring(1, s.length);
    }
    while (s.charAt(s.length - 1) == " ") {
        s = s.substring(0, s.length-1);
    }
    inputfield.obj.value = s;
    return true;
}

function minlength( min, message )
{
    if( inputfield.obj.value.length < min ) {
        setFieldMessage( fieldkey, fieldlabel, false, message );
        return false;
    }
    return true;
}

function maxlength( max, message )
{
    if( inputfield.obj.value.length > max ) {
        setFieldMessage( fieldkey, fieldlabel, false, message );
        return false;
    }
    return true;
}

function equalsField( equalsfieldkey, message )
{
    var equalsfield = new getObj( equalsfieldkey );
    if( inputfield.obj.value != equalsfield.obj.value ) {
        setFieldMessage( fieldkey, fieldlabel, false, message );
        return false;
    }
    return true;
}

/** OLD FORMVAL 
function checkField( fieldKey, label, required, requiredMessage )
{
    if( ! document.getElementById ) {
        return true;
    }

    var inputfield = new getObj( fieldKey );
    if( ! inputfield.obj ) {
        setFieldMessage( fieldKey, label, "Field is missing (" + fieldKey + ")" );
        return false;
    }
    if( inputfield.obj.value.length == 0 ) {
        if( required ) {
            setFieldMessage( fieldKey, label, requiredMessage );
            return false;
        }
    }
    setFieldMessage( fieldKey, label, "" );
    return true;
}

function checkStringField( fieldKey, label, required, requiredMessage, minLength, minLengthMessage, maxLength, maxLengthMessage )
{
    if( ! document.getElementById ) {
        return true;
    }

    if( checkField( fieldKey, label, required, requiredMessage ) ) {
        var inputfield = new getObj( fieldKey );
        if( inputfield.obj.value.length > 0 && inputfield.obj.value.length < minLength ) {
            setFieldMessage( fieldKey, label, minLengthMessage );
            return false;
        }
        else if( inputfield.obj.value.length > maxLength ) {
            setFieldMessage( fieldKey, label, maxLengthMessage );
            return false;
        }
        return true;
    }
    else {
        return false;
    }
}

function checkIntField( fieldKey, label, required, requiredMessage, minValue, minValueMessage, maxValue, maxValueMessage )
{
    if( ! document.getElementById ) {
        return true;
    }

    if( checkField( fieldKey, label, required, requiredMessage ) ) {
        var inputfield = new getObj( fieldKey );
        if( parseInt( inputfield.obj.value ) < minValue ) {
            setFieldMessage( fieldKey, label, minValueMessage );
            return false;
        }
        else if( parseInt( inputfield.obj.value ) > maxValue ) {
            setFieldMessage( fieldKey, label, maxValueMessage );
            return false;
        }
        return true;
    }
    else {
        return false;
    }
}

function checkDateField( fieldKey, label, required, requiredMessage, minDate, minDateMessage, maxDate, maxDateMessage )
{
    if( ! document.getElementById ) {
        return true;
    }

    // Date checking is much to complicated in JavaScript for differnt locales.
    return checkField( fieldKey, label, required, requiredMessage );
}

function checkBooleanField( fieldKey, label, required, requiredMessage, minDate, minDateMessage, maxDate, maxDateMessage )
{
    if( ! document.getElementById ) {
        return true;
    }

    // Nothing to do?
    return checkField( fieldKey, label, required, requiredMessage );
}
*/
