/* Validate.js, version 1.0.2
*  (c) 2006-2010 achraf bouyakhsass <mutation[at]mutationevent.com>
* 
*  This software is licensed under the CC-GNU GPL
*  http://creativecommons.org/licenses/GPL/2.0/
*
*  For more details
*  http://www.mutationevent.com/project/validate.js
*
*  Package to validate various data :
*  isEqual
*  hasValidChars
*  isSimpleIP
*  isAlphaLatin
*  isNotEmpty
*  isIntegerInRange
*  isNum
*  isEMailAddr
*  isZipCode
*  isDate
*  isMD5
*  isURL
*  isGuid
*  isISBN
*  isSSN
*  isDecimal
*  isplatform
*  addRules
*  Apply
*/

var Class={create:function(){return function(){this.initialize.apply(this,arguments)}}};function getValue(a){return document.getElementById(a).value}var Validate=Class.create();Validate.prototype={initialize:function(){this.error_array=[];this.rules_array=[];this.e=true},hasValidChars:function(c,a,b){function d(e){return e.replace(new RegExp("([\\\\-])","g"),"\\$1")}return new RegExp("^["+d(a)+"]+$",(!b?"i":"")).test(c)},isSimpleIP:function(a){ipRegExp=/^(([0-2]*[0-9]+[0-9]+)\.([0-2]*[0-9]+[0-9]+)\.([0-2]*[0-9]+[0-9]+)\.([0-2]*[0-9]+[0-9]+))$/;return ipRegExp.test(a)},isAlphaLatin:function(a){alphaRegExp=/^[0-9a-z]+$/i;return alphaRegExp.test(a)},isNotEmpty:function(a){return/\S/.test(a)},isEmpty:function(a){return !/\S/.test(a)},isIntegerInRange:function(d,a,c){var b=Number(d);if(isNaN(b)){return false}if(b!=Math.round(b)){return false}return(b>=a&&b<=c)},isNum:function(a){numRegExp=/^[0-9]+$/;return numRegExp.test(a)},isEMailAddr:function(a){emailRegExp=/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.([a-z]){2,4})$/;return emailRegExp.test(a)},isZipCode:function(a,b){if(!a){return false}if(!b){format="US"}switch(b){case"US":zpcRegExp=/^\d{5}$|^\d{5}-\d{4}$/;break;case"MA":zpcRegExp=/^\d{5}$/;break;case"CA":zpcRegExp=/^[A-Z]\d[A-Z] \d[A-Z]\d$/;break;case"DU":zpcRegExp=/^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/;break;case"FR":zpcRegExp=/^\d{5}$/;break;case"Monaco":zpcRegExp=/^(MC-)\d{5}$/;break}return zpcRegExp.test(a)},isDate:function(a,b){if(!a){return false}if(!b){b="FR"}switch(b){case"FR":RegExpformat=/^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/([2][0]|[1][9])\d{2})$/;break;case"US":RegExpformat=/^([2][0]|[1][9])\d{2}\-([0]\d|[1][0-2])\-([0-2]\d|[3][0-1])$/;break;case"SHORTFR":RegExpformat=/^([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/\d{2}$/;break;case"SHORTUS":RegExpformat=/^\d{2}\-([0]\d|[1][0-2])\-([0-2]\d|[3][0-1])$/;break;case"dd MMM yyyy":RegExpformat=/^([0-2]\d|[3][0-1])\s(Jan(vier)?|Fév(rier)?|Mars|Avr(il)?|Mai|Juin|Juil(let)?|Aout|Sep(tembre)?|Oct(obre)?|Nov(ember)?|Dec(embre)?)\s([2][0]|[1][19])\d{2}$/;break;case"MMM dd, yyyy":RegExpformat=/^(J(anuary|u(ne|ly))|February|Ma(rch|y)|A(pril|ugust)|(((Sept|Nov|Dec)em)|Octo)ber)\s([0-2]\d|[3][0-1])\,\s([2][0]|[1][9])\d{2}$/;break}return RegExpformat.test(a)},isMD5:function(a){if(!a){return false}md5RegExp=/^[a-f0-9]{32}$/;return md5RegExp.test(a)},isURL:function(a){if(!a){return false}a=a.toLowerCase();urlRegExp=/^(((ht|f)tp(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/;return urlRegExp.test(a)},isGuid:function(a){if(!a){return false}GuidRegExp=/^[{|\(]?[0-9a-fA-F]{8}[-]?([0-9a-fA-F]{4}[-]?){3}[0-9a-fA-F]{12}[\)|}]?$/;return GuidRegExp.test(a)},isISBN:function(a){if(!a){return false}ISBNRegExp=/ISBN\x20(?=.{13}$)\d{1,5}([- ])\d{1,7}\1\d{1,6}\1(\d|X)$/;return ISBNRegExp.test(a)},isSSN:function(a){if(!a){return false}ssnRegExp=/^\d{3}-\d{2}-\d{4}$/;return ssnRegExp.test(a)},isDecimal:function(a){if(!a){return false}decimalRegExp=/^-?(0|[1-9]{1}\d{0,})(\.(\d{1}\d{0,}))?$/;return decimalRegExp.test(a)},isplatform:function(a){if(!a){return false}var b;winRegExp=/\win/i;if(winRegExp.test(window.navigator.platform)){b="win"}macRegExp=/\mac/i;if(macRegExp.test(window.navigator.platform)){b="mac"}nixRegExp=/\unix|\linux|\sun/i;if(nixRegExp.test(window.navigator.platform)){b="nix"}if(a==b){return true}else{return false}},getValue:function(a){document.getElementById(a).value},addRules:function(a){this.rules_array.push(a)},check:function(){this.error_array=[];for(var a=0;a<this.rules_array.length;a++){switch(this.rules_array[a].option){case"ValidChars":if(!this.hasValidChars(getValue(this.rules_array[a].id),this.rules_array[a].chars,false)){this.error_array.push(this.rules_array[a].error);this.e=false}break;case"AlphaLatin":if(this.isAlphaLatin(getValue(this.rules_array[a].id))){this.error_array.push(this.rules_array[a].error);this.e=false}break;case"required":if(this.isEmpty(getValue(this.rules_array[a].id))){this.error_array.push(this.rules_array[a].error);this.e=false}break;case"integerRange":if(!this.isIntegerInRange(getValue(this.rules_array[a].id),this.rules_array[a].Min,this.rules_array[a].Max)){this.error_array.push(this.rules_array[a].error);this.e=false}break;case"Number":if(!this.isNum(getValue(this.rules_array[a].id))){this.error_array.push(this.rules_array[a].error);this.e=false}break;case"email":if(!this.isEMailAddr(getValue(this.rules_array[a].id))){this.error_array.push(this.rules_array[a].error);this.e=false}break;case"zipCode":if(!this.isZipCode(getValue(this.rules_array[a].id),this.rules_array[a].country)){this.error_array.push(this.rules_array[a].error);this.e=false}break;case"date":if(!this.isDate(getValue(this.rules_array[a].id),this.rules_array[a].format)){this.error_array.push(this.rules_array[a].error);this.e=false}break;case"url":if(!this.isURL(getValue(this.rules_array[a].id))){this.error_array.push(this.rules_array[a].error);this.e=false}break;case"Decimal":if(!this.isDecimal(getValue(this.rules_array[a].id))){this.error_array.push(this.rules_array[a].error);this.e=false}break}}},Apply:function(b){this.check();if(this.e){return true}else{var a=this.error_array;if(!b){alert(this.error_array.toString().replace(/\,/gi,"\n"))}else{document.getElementById(b).innerHTML=this.error_array.toString().replace(/\,/gi,"<br/>")}return false}}};
