﻿$(function(){
    $("div[id*='contentpane']").click(function(){
        validateAll();
    }).keydown(function(event){
        if(event.keyCode == 9) {
            validateAll();
        }
    });
    
    $("form").submit(function () {
        var flag = validateAll();
        if(flag) {
            return false;   // prevent the submit of the form
        } 
    });
    
    /*
        return true when validation fail somewhere
    */
    function validateAll()
    {
        var flag, rtnFlag = false;
        $(":text").each(function(){
            if(this.id.indexOf("Email") > -1) {
                flag = (this.value.match(/([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})/) == null);
                MessageProcess($(this), flag, "Wrong email format, please try again."); 
                rtnFlag = flag || rtnFlag;
            }
/*
            else if(this.id.indexOf("Postcode") > -1) {
                flag = (this.value.match(/(^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y0-9][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) {0,1}[0-9][A-Za-z]{2})$)/) == null);
                MessageProcess($(this), flag, "Wrong Postcode format, please try again."); 
                rtnFlag = flag || rtnFlag;
            }
*/
            else if(this.id.indexOf("Telephone") > -1) {
                flag = (this.value.match(/(\s*\(?0\d{4}\)?(\s*|-)\d{3}(\s*|-)\d{3}\s*)|(\s*\(?0\d{3}\)?(\s*|-)\d{3}(\s*|-)\d{4}\s*)|(\s*(7|8)(\d{7}|\d{3}(\-|\s{1})\d{4})\s*)/) == null);
                MessageProcess($(this), flag, "Wrong Telephone format, please try again."); 
                rtnFlag = flag || rtnFlag;
            }
        });
        
        $("select[id*='TitleDropDownList']").each(function(){
            var value = this.options[this.selectedIndex].value;
            if (value == 'None') {
                rtnFlag = true;
                MessageProcess($(this), true, "");
            }
            else {
                MessageProcess($(this), false, "");
            }
        });
        
        if (rtnFlag) {
            $("input[type='submit']").each(function(){
                this.disabled = true;
            });
        }
        else {
            $("input[type='submit']").attr("disabled", false);
        }
        if(!rtnFlag) {  /* all pass validation */
            $("#ErrorMessages").hide();
        }
        return rtnFlag;
    }
    
    function MessageProcess(element, flag, message)
    {
        if(flag) {
            element.next().text("*").css("color", "red").css("visibility", "visible");
            $("#ErrorMessages").text("there were some errors found in completing the form, please amend the items marked with a *");
	    $("#ErrorMessages").show();
        }
        else {
            element.next().text("*").css("visibility", "hidden");
        }
    }
});

