/*! 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() {
		
		/* Buttons 
		$(":text, :password").addClass("field");
		$(":button, :submit").addClass("button");
		$(":file").addClass("file");*/

        $(TYPES)
			.bind("focus", _focus)
			.bind("blur", _blur)
			.filter(":password").each(initPasswordField);

        /*
        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);
