$.fn.validate_input_data=function(){var element=$(this);jQuery.fn.isMandatory=function(){var r=new RegExp('\\bmandatory\\b');return r.test($(this).attr('class'));};jQuery.fn.skipValidation=function(){var r=new RegExp('\\bskip_validation\\b');return r.test($(this).attr('class'));};jQuery.fn.checkInputType=function(className){var r=new RegExp('\\b'+className+'\\b');return r.test($(this).attr('class'));};jQuery.fn.isEmpty=function(val){return(/^\s*$/).test(val);};jQuery.fn.trim=function(){return this.replace(/^\s+|\s+$/g,"");};function invalid_char_check(allowed_chars,value){var in_array;var invalid_chrs=[];var chr='';for(var n=0;n<=value.length-1;n++){chr=value.charAt(n);in_array=jQuery.inArray(chr,allowed_chars);if(in_array==-1){invalid_chrs.push(chr);}}
return invalid_chrs;}
var value='';var message=false;var elementName=element.data('inputname');var skip_validate=false;var alpha=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];var numeric=['1','2','3','4','5','6','7','8','9','0'];var alphanumeric=alpha.concat(numeric);element.removeClass('errorInput');var isMandatory=element.isMandatory();if(isMandatory&&element.val()==''){element.addClass('errorInput');return{"value":false,"message":elementName+' cannot be blank'};}else if(!isMandatory&&element.val()==''){skip_validate=true;}
if(elementName==undefined)
{skip_validate=true;}
else
{value=element.val().replace(/^\s+|\s+$/g,"");}
switch(true){case element.checkInputType('date'):if(!skip_validate){if(value.length>10){value=false;message=elementName+' is too long';element.addClass('errorInput');}else{var datePattern=/\d{1,2}\/\d\d?\/\d{4}/;if(!datePattern.test(value)){value=false;message='Invalid date. Please use mm/dd/yyyy format';element.addClass('errorInput');}}}else{value='';}
break;case element.checkInputType('time'):if(!skip_validate){if(value.length>7){value=false;message=elementName+' is too long';element.addClass('errorInput');}else{var timePattern=/\d{1,2}\:\d{2}[A-Za-z]{2}/;if(!timePattern.test(value)){value=false;message='Invalid date. Please use hh:mm format';element.addClass('errorInput');}}}else{value='';}
break;case element.checkInputType('offercode'):if(value.length>10){value=false;message=elementName+' is too long';element.addClass('errorInput');}
break;case element.checkInputType('password'):if(value.length>1&&value.length<6){value=false;message=elementName+' is too short';element.addClass('errorInput');}
break;case element.checkInputType('name'):var name_allowed=alpha;name_allowed.push('-');name_allowed.push(',');name_allowed.push('-');name_allowed.push('.');name_allowed.push(' ');var invalid_chrs=invalid_char_check(name_allowed,value);if(invalid_chrs.length>0){value=false;message='Invalid characters in '+elementName+': '+invalid_chrs.join(' ');element.addClass('errorInput');}else{if(value.length>30){value=false;message=elementName+' is too long.';element.addClass('errorInput');}
else
{value=value.replace(/\'+/g,'').replace(/,+/g,'');}}
break;case element.checkInputType('email'):var regex=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
var ret=value.match(regex);if(!ret){value=false;message='Invalid email address';element.addClass('errorInput');}else{if(value.length>255){value=false;message=elementName+' is too long';element.addClass('errorInput');}}
break;case element.checkInputType('phone'):var phone_allowed=numeric;phone_allowed.push('(');phone_allowed.push(')');phone_allowed.push('-');phone_allowed.push('.');phone_allowed.push(' ');if(value.length>0)
{var invalid_chrs=invalid_char_check(phone_allowed,value);if(invalid_chrs.length>0){value=false;message='Invalid characters in '+elementName+'. Allowed:'+phone_allowed.join('');element.addClass('errorInput');}else{value=value.replace(/[^0-9]+/g,'');}
if(value.length>20){value=false;message=elementName+' is too long.';element.addClass('errorInput');}
if(value.length<10){value=false;message=elementName+' is not long enough.';element.addClass('errorInput');}}
if(value.length<7&&value.length>1){value=false;message=elementName+' is not long enough.';element.addClass('errorInput');}
break;case element.checkInputType('address'):var address_allowed=alphanumeric;address_allowed.push('-');address_allowed.push('#');address_allowed.push("'");address_allowed.push('.');address_allowed.push(',');address_allowed.push(' ');var invalid_chrs=invalid_char_check(address_allowed,value);if(invalid_chrs.length>0){value=false;message='Invalid characters in '+elementName+': '+invalid_chrs.join(' ');element.addClass('errorInput');}else{if(value.length>50){value=false;message=elementName+' is too long';element.addClass('errorInput');}
else if(value.length<3&&value.length>0){value=false;message='Provide full '+elementName;element.addClass('errorInput');}}
break;case element.checkInputType('city'):var city_allowed=alpha;city_allowed.push('.');city_allowed.push(',');city_allowed.push('-');city_allowed.push("'");city_allowed.push(' ');var invalid_chrs=invalid_char_check(city_allowed,value);if(invalid_chrs.length>0){value=false;message='Invalid characters in '+elementName+': '+invalid_chrs.join(' ');element.addClass('errorInput');}else{if(value.length>30){value=false;message=elementName+' is too long';element.addClass('errorInput');}
else if(value.length<3&&value.length>0){value=false;message='Provide full '+elementName;element.addClass('errorInput');}
else{value=value.replace(/\'+/g,'');}}
break;case element.checkInputType('state'):var state_allowed=alpha;var invalid_chrs=invalid_char_check(state_allowed,value);if(invalid_chrs.length>0){value=false;message='Invalid characters in '+elementName+': '+invalid_chrs.join(' ');element.addClass('errorInput');}else{if(value.length!=2){value=false;message='Invalid '+elementName;element.addClass('errorInput');}}
break;case element.checkInputType('zip'):var invalid_chrs=invalid_char_check(numeric,value);if(invalid_chrs.length>0){value=false;message='Invalid '+elementName;element.addClass('errorInput');}else{if(value.length!=5){value=false;message='Invalid '+elementName;element.addClass('errorInput');}}
break;case element.checkInputType('ziplong'):var invalid_chrs=invalid_char_check(numeric,value);if(invalid_chrs.length>0){value=false;message='Invalid '+elementName;element.addClass('errorInput');}else{if(value.length<5||value.length>11){value=false;message='Invalid '+elementName;element.addClass('errorInput');}}
break;case element.checkInputType('creditcard'):var cc_allowed=numeric;cc_allowed.push('-');cc_allowed.push('.');cc_allowed.push(' ');var invalid_chrs=invalid_char_check(cc_allowed,value);if(invalid_chrs.length>0){value=false;message='Invalid '+elementName;element.addClass('errorInput');}else{if(value.length>20){value=false;message=elementName+' is too long';element.addClass('errorInput');}else{if(value.length<15){value=false;message=elementName+' is too short';element.addClass('errorInput');}else{value=value.replace(/[^0-9]+/g,'');}}}
break;case element.checkInputType('country'):var country_allowed=alpha;country_allowed.push('.');country_allowed.push(',');country_allowed.push('-');country_allowed.push("'");country_allowed.push(' ');var invalid_chrs=invalid_char_check(country_allowed,value);if(invalid_chrs.length>0){value=false;message='Invalid characters in '+elementName+': '+invalid_chrs.join(' ');element.addClass('errorInput');}else{if(value.length>30){value=false;message=elementName+' is too long';element.addClass('errorInput');}
else if(value.length<3&&value.length>0){value=false;message='Provide full '+elementName;element.addClass('errorInput');}
else{value=value.replace(/\'+/g,'');}}
break;case element.checkInputType('number_of_guests'):var invalid_chrs=invalid_char_check(numeric,value);if(invalid_chrs.length>0||value.length>2){value=false;message='Invalid '+elementName;element.addClass('errorInput');}
break;case element.checkInputType('comments'):if(value.length>500){value=false;message=elementName+' too long. Max: 500 characters';element.addClass('errorInput');}
break;case element.checkInputType('confirmation_number'):if(value.length>50){value=false;message=elementName+' too long. Max: 50 characters';element.addClass('errorInput');}
break;default:value=element.val();}
var json={"value":value,"message":message};return json;}
