/*! NV Forms v2.0 <http://nvinteractive.co.nz>
	Copyright (c) NV Interactive
	
	References:
		utilities.2.1.js
		swfobject.js
		jquery-1.2.6.js
		
	Release Notes:
		2.0
		-- rewrote for jQuery
		
*/

nv_forms = function() {

    var TYPES = ":password, :text, textarea";

    var init = function() {

        $(TYPES)
			.bind("focus", _focus)
			.bind("blur", _blur)
			.filter(":password").each(initPasswordField);

        $(".error").closest(".field").addClass("field-error");


        /*
        for(var t=0; t<types.length; t++){
        var fields = getElement
        sBySelector(types[t]);
	
			for (i=0; i<fields.length; i++) {
        var node = fields[i];
        if (node.type == "text" || node.type == "password" || node.type == "textarea" || node.type.indexOf("select") >= 0) {
        if(node.type == "password"){
        initPasswordField(node);
        initField(node);
        }else{
        initField(node);
        }
        }
				
			}
        }*/
        //$(".form").bind("keydown", keydown);


    }

    var keydown = function(evt) {

        if (evt.keyCode == 13) {
            var default_buttons = $(".default_button", $(this));
            if (default_buttons.length == 0) {
                return false;
            }
            var default_button = default_buttons[0];
            if (default_button.tagName == 'INPUT') {
                $(default_button).click();
            } else if (default_button.tagName == "A") {
                var js = default_button.href.replace("javascript:", "");
                eval(js);
            }

            return false;
        }
    }


    function initPasswordField() {


        var iv = $(this).attr("initialvalue");
        if (iv == undefined) return;
        iv = iv == undefined ? "" : iv;

        var openField = document.createElement("input");

        with (openField) {
            type = "text";
            value = iv;
            id = "open_" + this.id;
        }

        openField.obscuredField = this;
        this.openField = openField;

        $(this).replaceWith(openField);
        $(openField)
			.bind("focus", _focus)
			.bind("blur", _blur);

        this.ispassword = true;
        openField.ispassword = true;

    }


    function _focus(evt) {
        var field = this;

        $(this).removeClass("invalid");

        /* Password Field Code */
        if (this.ispassword) {
            if (this.obscuredField) {
                $(this).replaceWith(this.obscuredField);
                field = this.obscuredField;
                $(field)
					.bind("focus", _focus)
					.bind("blur", _blur)
					.addClass("field");
            }
        }

        if (field.value == $(field).attr("initialvalue")) field.value = "";
        field.select();


        /* Add Focus Classes */
        $(field)
			.addClass("focus")
			.parents().filter("fieldset").addClass("focus");


    }

    function _blur() {

        var field = this;

        /* Password Field */
        if (this.ispassword) {
            if (this.openField && this.value == "") {
                $(this).replaceWith(this.openField);
                field = this.openField;
                $(field)
					.bind("focus", _focus)
					.bind("blur", _blur);
            }
        }


        /* Remove Focus Class */
        if (field.value == "" && $(field).attr("initialvalue")) field.value = $(field).attr("initialvalue");
        $(field)
			.removeClass("focus")
			.parents().filter("fieldset").removeClass("focus");

    }

    return {
        /* Public API
        */
        init: init
    }

} ();

$(document).ready(nv_forms.init);
