﻿function enableValidation(formid)
{
    jQuery("#"+ formid).attr("autocomplete","off");
    
    jQuery.validator.addMethod('usdate', function (value, el, params)
    {
        //var re = /(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d/;
        //return this.optional(el) || re.test(value)
        return this.optional(el) || isValidDate(value, "MDY")
        }, 'Enter a valid date.');

    jQuery.validator.addMethod('email', function (value, el, params) {
        return this.optional(el) || /^([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})(\]?)$/.test(value);
        }, 'Enter a valid email address.');
    // add custom validation rules
	    jQuery.validator.addClassRules({
	        fullname: {required: true,rangelength: [5, 350]},
		    name: {required: true,rangelength: [5, 50]},
		    username: {required: true,minlength: 3,remote: "/CheckUsername.ashx"},
            email: {required: true,minlength: 5,remote: "/CheckEmail.ashx",email:true},
            email2: {required: true,minlength: 5,email:true},
		    address: {required: true,minlength: 5},
		    city: {required: true,minlength: 5},
		    state: {required: true,state: true},
		    postalCode: {required: true},
		    password: {required: true,minlength: 5},
	        password2: {required: true,minlength: 5},
	        password_confirm: {required: true,minlength: 5,equalTo: ".password"},
	        passwordo: {required: false,minlength: 5},
	        password2o: {required: false,minlength: 5},
	        password_confirmo: {required: false,minlength: 5,equalTo: ".passwordo"},
	        usdate:{usdate:true}
	    });

    // validate
    var validator = jQuery("#"+ formid).validate({
	    debug: false,
	    messages: {
	        fullname: "Enter name ",
	        name: "*",
	        firstname: "Enter your firstname",
	        lastname: "Enter your lastname",
	        username: {
		        required: "Enter a username",
		        minlength: jQuery.format("Enter at least {0} characters"),
		        remote: "already in use"
	        },
	        password: {
		        required: "Provide a password",
		        rangelength: jQuery.format("Enter at least {0} characters")
	        },
	        password2: {
		        required: "Provide a password",
		        rangelength: jQuery.format("Enter at least {0} characters")
	        },
	        password_confirm: {
		        required: "Repeat your password",
		        minlength: jQuery.format("Enter at least {0} characters"),
		        equalTo: "Enter the same password as above"
	        },
	        email: {
		        required: "Please enter a valid email address",
		        minlength: "Please enter a valid email address",
		        remote: jQuery.format("{0} is already in use")
	        },
	        dateformat: "Choose your preferred dateformat",
	        terms: " "
            }, 
            success: function (label) {
		        jQuery(label).html('Valid.').parent('label').children().addClass('valid');
	        }
    //			    ,errorPlacement: function(error, element) 
    //			    {
    //			        if ( element.is(":radio") )
    //				        error.appendTo( element.parent().next().next() );
    //			        else if ( element.is(":checkbox") )
    //				        error.appendTo ( element.next() );
    //			        else
    //				        error.appendTo( element.parent().next() );
    //		         }

    });
    
    jQuery("#"+ formid).validate();
}
   
function clickButtonIfEnter(e, btn)
{
    var iKeyCode;
    if (window.event) 
        iKeyCode = window.event.keyCode;
    else if (e) 
        iKeyCode = e.which;

    if(iKeyCode)
    {
        if (iKeyCode==13)
        {        
            btn.click();
            return false;
        }
    }
    return;
}

function ignoreEnter(e)
{
    var iKeyCode;
    if (window.event) 
        iKeyCode = window.event.keyCode;
    else if (e) 
        iKeyCode = e.which;

    if(iKeyCode)
    {
        if (iKeyCode==13)
        {        
            return false;
        }
    }
    return;
}
function validateEmail(emailValue)
{
	//var emailValue=document.getElementById(email).value;
	if(jQuery.trim(emailValue)=='')
	{
	    alert("Enter Email Address");
	    return false;
	}
	//var re=/^((?:(?:(?:[a-zA-Z0-9][\.\-\+_]?)*)[a-zA-Z0-9])+)\@((?:(?:(?:[a-zA-Z0-9][\.\-_]?){0,62})[a-zA-Z0-9])+)\.([a-zA-Z0-9]{2,6})\s*$/;
	var re =/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
	if(re.test(emailValue)==false)
	{
		alert("Invalid Email Address");
		return false;
	}
}
function validateZip(t, showAlert)
{
    if(t.length!=5)
    {
        if(showAlert) alert("Zip code length not equal to 5.");
        return false;
    }
    else
    {
        return true;
    }
}
function validatePhone(t)
{
   if(t.length!=10)
   {
    alert("phone number length not equal to 10.");
    return false;
   }
   else
   {
    return true;
   }
}

function _IsDate(value)
{
    var ok = false;
    var reg2 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/;
    reg2= /(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d/;
    var d= value.match(new RegExp( ".(" + reg2 + ")$", "i"));
    alert(d);
}

function isValidDate(dateStr, format)
{

//check if 2nd parameter contains valid value or not
//if not valid then set default format = "MDY"
if (format == null) { format = "MDY" }
format = format.toUpperCase();
if (format.length != 3) { format = "MDY" }
if ( (format.indexOf("M") == -1) ||
(format.indexOf("D") == -1) ||
(format.indexOf("Y") == -1)
)
{ format = "MDY" }

if (format.substring(0, 1) == "Y")
{ // If the year is first
var reg1 = /^\d{2}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
var reg2 = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
}
else if (format.substring(1, 2) == "Y")
{ // If the year is second
var reg1 = /^\d{1,2}(\-|\/|\.)\d{2}\1\d{1,2}$/
var reg2 = /^\d{1,2}(\-|\/|\.)\d{4}\1\d{1,2}$/
}
else
{ // The year must be third
var reg1 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{2}$/
var reg2 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
}

// If it doesn’t conform to the right format
//(with either a 2 digit year or 4 digit year), fail
if ( (reg1.test(dateStr) == false) &&
(reg2.test(dateStr) == false)
)
{ return false; }

// Split into 3 parts based on what the divider was
var parts = dateStr.split(RegExp.$1);

// Check to see if the 3 parts end up making a valid date
//extract month part
if (format.substring(0, 1) == "M") { var mm = parts[0]; }
else if (format.substring(1, 2) == "M") { var mm = parts[1]; }
else { var mm = parts[2]; }

//extract day part
if (format.substring(0, 1) == "D") { var dd = parts[0]; }
else if (format.substring(1, 2) == "D") { var dd = parts[1]; }
else { var dd = parts[2]; }

//extract Year part
if (format.substring(0, 1) == "Y") { var yy = parts[0]; }
else if (format.substring(1, 2) == "Y") { var yy = parts[1]; }
else { var yy = parts[2]; }

//if year is in 2 digit
//00-49 are assumed to be 21st century and 50-99 are assumed to be 20th century
if (parseFloat(yy) <= 50)
{ yy = (parseFloat(yy) + 2000).toString(); }
if (parseFloat(yy) <= 99) { yy = (parseFloat(yy) + 1900).toString(); }

var dt = new Date(parseFloat(yy), parseFloat(mm)-1, parseFloat(dd), 0, 0, 0, 0);

if (parseFloat(dd) != dt.getDate()) { return false; }

if (parseFloat(mm)-1 != dt.getMonth()) { return false; }

return true;

}