/**
 * FORM framework scripts
 */

/**
 * formSelectShowHide shows labels over empty <select> fields
 * Input:   OBJECT of 'this' reference from the <select>
 */
function formSelectShowHide(o) {
    if(o.value == '') {
        if (-1 !== o.className.indexOf('formLabel')) { //if class was label
            o.className = o.className.substring(0, o.className.length - 10)
            o.className += ' formField'; //make it field
        } else { //class was field
            o.className = o.className.substring(0, o.className.length - 10)
            o.className += ' formLabel'; //make it label
        }
    } else {
        //o.className = o.className.substring(0, o.className.length - 10)
        //o.className += ' formField'; //make it field
        //alert('Make field');
    }
}

/**
 * formShowHide shows labels over empty fields or populated fields over labels
 * Input:   OTHER of either a field or a label from a pair
 */
function formShowHide(o) {
    if (!o) alert('formShowHide error.');
    if (-1 === o.className.indexOf('formField')) { //if label was focussed
        var field = document.getElementById(o.id.substring(0, o.id.length - 5));
        var label = o;
        field.style.display='inline'; //show only the field
        label.style.display='none';
        field.focus();
        formFocusSet(field);
    } else { //if field was blurred
        var field = o;
        var label = document.getElementById(o.id + 'Label');
        if (field.value == '') {
            field.style.display = 'none'; //field empty, show only the label
            label.style.display = 'inline';
        } else {
            label.style.display = 'none'; //field populated, show only the field
            field.style.display = 'inline';
        }
    }
}

/**
 * FORM HIGHLIGHTER will apply a throbbing red background to a form field
 */
function formHighlight(id) {
    //give label red flashing background forever (highlights empty fields)
    document.getElementById(id+'Label').style.backgroundImage="url('/framework/form.gif')";
    
    //give field red flashing background but remove highlight on change
    var obj=document.getElementById(id);
    
    obj.style.background="url('/framework/form.gif')";
    obj.onchange=function() {
        obj.style.background='';
    };
}

/**
 * formFocusSet will record the id of the field whose last focus was held
 */
function formFocusSet(obj) {
    document.getElementById('formFocus').value = obj.id;
}

/**
 * formEnter will onclick() the id when ENTER key is pressed, (easy submit)
 */
function formEnter(e, id) {
    e ? e : window.event
    
    if(13 == e.keyCode) {
        //enter was pressed, so get id of object to trigger onclick()
        document.getElementById(id).onclick();
        
        //IE prevent it sounding a goddamned beep
        return false;
    }
    
    //cover both cases?
    return true;
}
