function initializeForms()
{
    var forms = document.getElementsByTagName("form");
    for (var i = 0; i < forms.length; i++)
    {
        if (handleCSS("check", forms[i], "validateme")) {
            Form.initialize(forms[i]);
        }
    }
}

var Form = {
    initialize: function(elem){
        var container = elem;
        validation_fields = Form.getValidationFields(container);
        // Form.setFocus(container);
        addEvent(container, "submit", function(e){Form.validate(e)}, false);
    },
    setFocus: function(elem)
    {
        var all_inputs = elem.getElementsByTagName("input");
        for (var i = 0; i < all_inputs.length; i++)
        {
            var current_input = all_inputs[i];
            if (current_input.type != "hidden")
            {
                current_input.focus();
                return;                
            }
        }
    },
    getValidationFields: function(elem)
    {
        var formitems = elem.getElementsByTagName("p");
        var _validation_fields = new Array();
        for (var i = 0; i < formitems.length; i++)
        {
            var current_formitem = formitems[i];
            if (!handleCSS("check", current_formitem, "validate")) continue;
            
            var current_input = current_formitem.getElementsByTagName("input")[0];
            if (!current_input) current_input = current_formitem.getElementsByTagName("textarea")[0];
            if (!current_input) current_input = null;
            if (current_input)
            {
                _validation_fields.push(new Array(current_formitem, current_input));
            }
        }
        return _validation_fields;
    },
    validate: function(e)
    {
        var validationerrors = 0;
        for (var i = 0; i < validation_fields.length; i++)
        {
            var is_required = handleCSS("check", validation_fields[i][0], "required");
            var is_email    = handleCSS("check", validation_fields[i][0], "email");
            var is_url      = handleCSS("check", validation_fields[i][0], "url");
            var input_value = validation_fields[i][1].value;
            
            if (is_required && (input_value == "" || input_value.length < 2))
            {
                Form.showErrorMessage(validation_fields[i]);
                validationerrors++;
            } else {
                Form.removeErrorMessage(validation_fields[i]);
            }
            if (is_url)
            {
                var filter = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
                if (input_value != "" && !filter.test(input_value)) {
                    Form.removeErrorMessage(validation_fields[i]);
                    Form.showErrorMessage(validation_fields[i], "is_url");
                } else {
                    Form.removeErrorMessage(validation_fields[i]);
                }
            }
            if (is_email)
            {
                var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
                if (!filter.test(input_value)) {
                    Form.removeErrorMessage(validation_fields[i]);
                    Form.showErrorMessage(validation_fields[i], "is_email");
                } else {
                    Form.removeErrorMessage(validation_fields[i]);
                }
            }
            
        }
        if(validationerrors != 0) stopEvent(e);
    },
    showErrorMessage: function(elem, param)
    {
        // check if error message already exists
        if (elem[0].getElementsByTagName("span")[0] && handleCSS("check", elem[0].getElementsByTagName("span")[0], "errormessage")) return false;
        var error_container = document.createElement("span");
        error_container.className = "errormessage";
        switch(param)
        {
            case "is_email":
                var message = "Please enter a valid email address.";
                break;
            case "is_url":
                var message = "Please enter a valid website address.";
                break;
            default:
                var message = "This is a required field.";
                break;
        }
        error_message = document.createTextNode(message);
        error_container.appendChild(error_message);
        elem[0].appendChild(error_container);
    },
    removeErrorMessage: function(elem)
    {
        var item = elem[0];
        var message = item.getElementsByTagName("span")[0];
        if (message) {
            item.removeChild(message);
        }
    },
    getLanguage: function()
    {
        var uri = location.href;
        if (uri.indexOf("../d/index.html") > -1) {
            return "d";
        } else {
            return "e";
        }
    }
}

addEvent(window, "load", initializeForms, false);

