function initiate_form() {
    var a_list = document.getElementsByTagName( "a" );

    for( var i = 0; i < a_list.length; i++ ) {
        if( a_list.item( i ).className.indexOf( "file_attach" ) > -1 ) {
            addEvent( a_list.item( i ), "click", attachFiles );
        }
    }

    f = document.getElementsByTagName( "form" ).item( 0 );
    addEvent( window, "unload", clearValues );
    loadValues();
}

function saveValues() {
    var fields = getAllFields( f );

    for( var k = 0; k < fields.length; k++ ) {
        if( fields[ k ].id.toUpperCase() != "BTNSUBMIT" ) {
            cm.addCookie( fields[ k ].id, getFieldValue( fields[ k ] ) );
		}
	}
}

function clearValues() {
    for( var i = 0; i < cm.length; i++ ) {
        cm.removeCookie( i );
    }
}

function loadValues() {
    var fields = getAllFields( f );

    for( var i = 0; i < fields.length; i++ ) {
        var val = cm.getCookieValue( fields[ i ].id );

        if( val != undefined ) {
            setField( fields[ i ].id, val );
        }
    }

    clearValues();
}

function getAllFields( form ) {
    var elements = [ "input", "select", "textarea" ];
    var fields = new Array();

    for( var i = 0; i < elements.length; i++ ) {
        var els = form.getElementsByTagName( elements[ i ] );

        for( var j = 0; j < els.length; j++ ) {
            fields.push( els.item( j ) );
        }
    }

    return fields;
}

function getFieldValue( field ) {
    var type = getFieldType( field.id );
    var value;

    switch( type ) {
        case "text":
            value = field.value;
            break;
        case "checkbox":
            value = ( field.checked ) ? "checked" : "unchecked";
            break;
        case "radio":
            value = ( field.checked ) ? "checked" : "unchecked";
            break;
        case "select":
            value = field.selectedIndex;
            break;
        case "textarea":
            value = field.value;
            break;
        default:
            value = false;
    }

    return value;
}

function getFieldType( id ) {
    var field = document.getElementById( id );
    var type = field.nodeName.toLowerCase();

    if( type == "input" ) {
        type = field.type.toLowerCase();
	}

    return type;
}

function setField( id, val ) {
    var field = document.getElementById( id );
    var type = getFieldType( id );

    switch( type ) {
        case "text":
            field.value = val;
            break;
        case "checkbox":
            field.checked = ( val == "checked" ) ? true : false;
            break;
        case "radio":
            field.checked = ( val == "checked" ) ? true : false;
            break;
        case "select":
            field.selectedIndex = val;
            break;
        case "textarea":
            field.value = val;
            break;
        default:
	}
}

function attachFiles( e ) {
    e = getEventObject( e );

    if( e ) {
        var el = getEventTarget( e );

        if( el ) {
            var newWin;

            saveValues();
            newWin = window.open( el.href, "attach", "width=540,height=400" );

            e.returnValue = false;
            if( e.preventDefault ) {
                e.preventDefault();
            };
		}
    }
}

var cm = new CookieManager( 1, "agentexchange.com", "/" );
var f;

addEvent( window, "load", initiate_form );