jQuery.extend({_commafy:function(d){return d.replace(/(\D?)(\d{4,})/g,function(a,b,c){return(/[.\w]/).test(b)?a:b+c.replace(/\d(?=(?:\d\d\d)+(?!\d))/g,'$&,')})},_DimensionCount:function(a){var c=0;for(var i=0;i<a.length;i++){if(a[i].constructor==Array){c++}}return c},Abs:function(n){return Math.abs(n)},ArrayAppend:function(a,v){return a.push(v)},ArrayPrepend:function(a,v){return a.unshift(v)},ArraySort:function(a,c,d){var e;if(c.toUpperCase()=='TEXTNOCASE'){if(!d||d.toUpperCase()!="DESC"){e=function(a,b){a=a.toUpperCase();b=b.toUpperCase();if(a<b){return-1}else if(a>b){return 1}else{return 0}}}else{e=function(a,b){a=a.toUpperCase();b=b.toUpperCase();if(a>b){return-1}else if(a<b){return 1}else{return 0}}}}else if(c.toUpperCase()=='TEXT'){if(!d||d.toUpperCase()!="DESC"){e=function(a,b){if(a<b){return-1}else if(a>b){return 1}else{return 0}}}else{e=function(a,b){if(a>b){return-1}else if(a<b){return 1}else{return 0}}}}else if(c.toUpperCase()=='NUMERIC'){if(!d||d.toUpperCase()!="DESC"){e=function(a,b){return a-b}}else{e=function(a,b){return b-a}}}return a.sort(e)},ArrayToList:function(a,d){if(!d){d=","}var b=/[,]/gi;return a.toString().replace(b,d)},ArrayLen:function(a){return a.length},Ceiling:function(n){return Math.ceil(n)},Compare:function(a,b){if(a==b){return 0}if(a>b){return 1}else{return-1}},CompareNoCase:function(a,b){return this.Compare(a.toUpperCase(),b.toUpperCase())},CreateDate:function(y,m,d){var a=new Date();a.setFullYear(y);a.setMonth(m-1);a.setDate(d);a.setHours(0);a.setMinutes(0);a.setSeconds(0);return a},CreateDateTime:function(y,m,d,h,n,s){var a=new Date();a.setFullYear(y);a.setMonth(m-1);a.setDate(d);a.setHours(h);a.setMinutes(n);a.setSeconds(s);return a},CreateTime:function(h,n,s){var a=new Date();a.setFullYear(1899);a.setMonth(11);a.setDate(30);a.setHours(h);a.setMinutes(n);a.setSeconds(s);return a},CreateODBCDate:function(d){var a="invalid date object";var b,month,day;if(isNaN(Date.parse(d))){return a}b=d.getFullYear();month=d.getMonth()+1;month=(month<10)?"0"+month:month;day=d.getDate();day=(day<10)?"0"+day:day;return"{d '"+b+"-"+month+"-"+day+"'}"},CreateODBCDateTime:function(d){var a="invalid date object";var b,month,day,hours,minutes,seconds;if(isNaN(Date.parse(d))){return a}b=d.getFullYear();month=d.getMonth()+1;month=(month<10)?"0"+month:month;day=d.getDate();day=(day<10)?"0"+day:day;hours=d.getHours();minutes=d.getMinutes();seconds=d.getSeconds();return"{ts '"+b+"-"+month+"-"+day+" "+hours+":"+minutes+":"+seconds+"'}"},CreateODBCTime:function(d){var a="invalid date object";var b,minutes,seconds;if(isNaN(Date.parse(d))){return a}b=d.getHours();minutes=d.getMinutes();seconds=d.getSeconds();return"{t '"+b+":"+minutes+":"+seconds+"'}"},DateDiff:function(a,b,c){var d=new Date(b);var e=new Date(c);var f=e.valueOf()-d.valueOf();var g=new Date(f);var h=e.getUTCFullYear()-d.getUTCFullYear();var i=e.getUTCMonth()-d.getUTCMonth()+(h!==0?h*12:0);var j=i/3;var k=f;var l=f/1000;var m=l/60;var n=m/60;var o=n/24;var p=o/7;var q=0;switch(a.toLowerCase()){case"yyyy":return h;case"q":return j;case"m":return i;case"y":return o;case"d":return o;case"w":return o;case"ww":return p;case"h":return n;case"n":return m;case"s":return l;case"ms":return k;default:return"invalid interval: '"+a+"'"}},DateFormat:function(d,c){var e=function(a,b){if(!b){b=2}a=String(a);for(var i=0,zeros='';i<(b-a.length);i++){zeros+='0'}return zeros+a};return c.replace(/"[^"]*"|'[^']*'|\b(?:d{1,4}|m{1,4}|yy(?:yy)?|([hHMstT])\1?|[lLZ])\b/g,function(a){switch(a){case'd':return d.getDate();case'dd':return e(d.getDate());case'ddd':return['Sun','Mon','Tue','Wed','Thr','Fri','Sat'][d.getDay()];case'dddd':return['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'][d.getDay()];case'm':return d.getMonth()+1;case'mm':return e(d.getMonth()+1);case'mmm':return['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'][d.getMonth()];case'mmmm':return['January','February','March','April','May','June','July','August','September','October','November','December'][d.getMonth()];case'yy':return String(d.getFullYear()).substr(2);case'yyyy':return d.getFullYear();case'h':return d.getHours()%12||12;case'hh':return e(d.getHours()%12||12);case'H':return d.getHours();case'HH':return e(d.getHours());case'M':return d.getMinutes();case'MM':return e(d.getMinutes());case's':return d.getSeconds();case'ss':return e(d.getSeconds());case'l':return e(d.getMilliseconds(),3);case'L':var m=d.getMilliseconds();if(m>99){m=Math.round(m/10)}return e(m);case'tt':return d.getHours()<12?'am':'pm';case't':return d.getHours()<12?'a':'p';case'TT':return d.getHours()<12?'AM':'PM';case'T':return d.getHours()<12?'A':'P';case'Z':return d.toUTCString().match(/[A-Z]+$/);default:return a.substr(1,a.length-2)}})},DatePart:function(a,d){var b;switch(a){case"yyyy":return d.getFullYear();case"q":var m=d.getMonth()+1;switch(m){case 1:case 2:case 3:return 1;case 4:case 5:case 6:return 2;case 7:case 8:case 9:return 3;case 10:case 11:case 12:return 4}case"m":m=d.getMonth()+1;m=(m<10)?"0"+m:m;return m;case"y":b=this.CreateDate(d.getFullYear(),1,1);return Math.ceil(this.DateDiff("d",b,d));case"d":var c=d.getDate();c=(c<10)?"0"+c:c;return c;case"w":return d.getDay()+1;case"ww":b=this.CreateDate(d.getFullYear(),1,1);return Math.round(this.DateDiff("d",b,d)/7);case"h":return d.getHours();case"n":return d.getMinutes();case"s":return d.getSeconds();case"l":return d.getMilliseconds()}},DecimalFormat:function(n){return(this._commafy(n.toFixed(2)))},DollarFormat:function(n){var a=n.toString().replace(/\$|\,/g,'');a=a.toString().replace('(','-');a=a.toString().replace(')','');if(isNaN(a)){a=0}var b=(a==(a=Math.abs(n)));a=Math.floor(a*100+0.50000000001);var c=a%100;a=Math.floor(a/100).toString();if(c<10){c="0"+c}a+="."+c;a=this._commafy(a);return(((b)?'':'(')+'$'+a+((b)?'':')'))},Find:function(a,s){return s.toString().indexOf(a)+1},FindNoCase:function(a,s){return this.Find(a.toUpperCase(),s.toUpperCase())},Insert:function(a,s,p){s+="";return s.slice(0,p)+a+s.slice(p,s.length)},IsArray:function(a,b){if(b){nod=this._DimensionCount(a);if(nod==b){return true}return false}if(a.constructor==Array){return true}return false},IsBoolean:function(v){if(v.constructor==Boolean){return true}return false},IsDate:function(d){var a=/^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;var b=d.toString().match(a);if(b===null){return false}var c=b[1];var e=b[3];var f=b[5];var g=(f%4===0&&(f%100!==0||f%400===0));if(c<1||c>12){return false}if(e<1||e>31){return false}if((c==4||c==6||c==9||c==11)&&e==31){return false}if(c==2){if(e>29||(e==29&&!g)){return false}}return true},IsDefined:function(o){if(typeof o!="undefined"){return true}return false},IsLeapYear:function(y){if((y/4)!=Math.floor(y/4)){return false}if((y/100)!=Math.floor(y/100)){return true}if((y/400)!=Math.floor(y/400)){return false}return true},IsNumeric:function(s){if(isNaN(s)){return false}return true},IsSimpleValue:function(v){if(this.IsString(v)){return true}if(this.IsNumeric(v)){return true}if(this.IsBoolean(v)){return true}if(this.IsDate(v)){return true}return false},IsString:function(s){if(s.constructor==String){return true}return false},IsStruct:function(s){if(s.constructor==Object){return true}return false},IsValid:function(t,v,r,m){t=t.toLowerCase();switch(t){case"any":return this.IsSimpleValue(v);case"array":return this.IsArray(v);case"date":return this.IsDate(v);case"boolean":return this.IsBoolean(v);case"email":return this.IsValid("regex",v,/(^[a-z]([a-z_\.]*)@([a-z_\.]*)([.][a-z]{3})$)|(^[a-z]([a-z_\.]*)@([a-z_\.]*)(\.[a-z]{3})(\.[a-z]{2})*$)/i);case"eurodate":return this.IsDate(v);case"float":return this.IsNumeric(v);case"guid":return this.IsValid("regex",v,/(^[0-9-a-fA-F]{8}-([0-9-a-fA-F]{4}-){3}[0-9-a-fA-F]{12}$)/);case"integer":return this.IsValid("regex",v,/(^-?\d\d*$)/);case"numeric":return this.IsNumeric(v);case"range":return(((v*1)>=r)&&((v*1)<=m))?true:false;case"regex":return v.toString().match(r)?true:false;case"regular_expression":return this.IsValid("regex",v,r);case"social_security_number":return this.IsValid("ssn",v);case"ssn":return this.IsValid("regex",v,/^([0-6]\d{2}|7[0-6]\d|77[0-2])([ \-]?)(\d{2})\2(\d{4})$/);case"string":return this.IsString(v);case"struct":return this.IsStruct(v);case"telephone":return this.IsValid("regex",v,/^(\([1-9]\d{2}\)\s?|[1-9]\d{2}[\.\-])?\d{3}[\.\-]\d{4}$/);case"time":return this.IsDate(v);case"url":return this.IsValid("regex",v,/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/i);case"uuid":return this.IsValid("regex",v,/(^[0-9-a-fA-F]{8}-([0-9-a-fA-F]{4}-){2}[0-9-a-fA-F]{15}$)/);case"variablename":return this.IsValid("regex",v,/(^[a-zA-Z_][0-9a-zA-Z_]*$)/);case"zipcode":return this.IsValid("regex",v,/(^\d{5}$)|(^\d{5}-\d{4}$)/);case"creditcard":if(!this.IsValid("range",v.length,13,16)){return false}var a=0;var i,digit;for(i=(2-(v.length%2));i<=v.length;i+=2){a+=parseInt(v.charAt(i-1),10)}for(i=(v.length%2)+1;i<v.length;i+=2){digit=parseInt(v.charAt(i-1),10)*2;a+=(digit<10)?digit:(digit-9)}return((a%10)===0)?true:false}},LCase:function(s){s+="";return s.toLowerCase()},Left:function(s,c){s+="";return s.slice(0,c)},Len:function(s){s+="";return s.length},ListAppend:function(l,v,d){l+="";if(!d){d=","}var r="";if(this.ListLen(l)){r=l+d+v}else{r=v}return r},ListChangeDelims:function(l,a,b){l+="";if(!b){b=","}var c="^,$,|,.,+,*,?,\,/";if(this.ListFind(c,b)){b="\\"+b}var d=new RegExp(b,"gi");return l.replace(d,a)},ListContains:function(l,a,d){l+="";if(!d){d=","}var b="^,$,|,.,+,*,?,\,/";if(this.ListFind(b,a)){a="\\"+a}l=l.split(d);var c=new RegExp(a,"g");for(var i=0;i<l.length;i++){if(c.test(l[i])){return i}}return false},ListContainsNoCase:function(l,a,d){l+="";if(!d){d=","}var b="^,$,|,.,+,*,?,\,/";if(this.ListFind(b,a)){a="\\"+a}l=l.split(d);var c=new RegExp(a,"gi");for(var i=0;i<l.length;i++){if(c.test(l[i])){return i}}return false},ListDeleteAt:function(l,p,d){l+="";if(!d){d=","}var i,posInList;var a=p-1;var b="";var r="";for(i=0;i<l.split(d).length;i++){if(i!=a){posInList=i+1;if(r.length){b=d}r+=b+this.ListGetAt(l,posInList,d)}}return r},ListFind:function(l,v,d){l+="";if(!d){d=","}var r=0;var a=l.split(d);for(var i=0;i<a.length;i++){if(a[i]==v){r=i+1;break}}return r},ListFindNoCase:function(l,v,d){l+="";if(!d){d=","}return this.ListFind(l.toUpperCase(),v.toUpperCase(),d)},ListFirst:function(l,d){l+="";if(!d){d=","}return l.split(d)[0]},ListGetAt:function(l,p,d){l+="";if(!d){d=","}return l.split(d)[p-1]},ListInsertAt:function(l,p,v,d){var a;l+="";if(!d){d=","}l=l.split(d);if(p===0){l.unshift(v)}else{a=l.splice(p);l.push(v);l=l.concat(a)}return this.ListChangeDelims(l.toString(),d,",")},ListLast:function(l,d){l+="";if(!d){d=","}l=l.split(d);return l[l.length-1]},ListLen:function(l,d){l+="";if(!d){d=","}if(l.length){return l.split(d).length}return 0},ListPrepend:function(l,v,d){l+="";if(!d){d=","}var r="";if(this.ListLen(l)){r=v+d+l}else{r=v}return r},ListRest:function(l,d){l+="";if(!d){d=","}l=l.split(d);l.splice(0,1);l=(l.length)?this.ArrayToList(l,d):"";return l},ListSetAt:function(l,p,v,d){l+="";if(!d){d=","}l=l.split(d);l[p-1]=v;return this.ListChangeDelims(l.toString(),d,",")},ListSort:function(l,a,b,d){l+="";if(!d){d=","}l=l.split(d);l=this.ArraySort(l,a,b);return this.ListChangeDelims(l.toString(),d,",")},ListToArray:function(l,d){l+="";var r,a,i;if(!d){d=","}r=[];a=l.split(d);return a},ListValueCount:function(l,v,d){var c=0;l+="";if(!d){d=","}l=l.split(d);for(var i=0;i<l.length;i++){if(l[i]==v){c++}}return c},ListValueCountNoCase:function(l,v,d){var c=0;l+="";if(!d){d=","}l=l.split(d);for(var i=0;i<l.length;i++){if(l[i].toUpperCase()==v.toUpperCase()){c++}}return c},LTrim:function(s){s+="";if(s.length){return s.replace(/^\s*/,'')}return''},Mid:function(s,a,c){s+="";a-=1;return s.slice(a,a+c)},Pad:function(s,n,a,b){if(arguments.length<=3){b="R"}if(arguments.length<=2){a=" "}if(arguments.length<=1){n=10}if(arguments.length===0){s=""}var c=s.length;var d=n-c;if(c>=n){return s}if(b=="R"||b=="Right"){return s+this.RepeatString(a,d)}return this.RepeatString(a,d)+s},Param:function(n,d){if(!this.IsDefined(n)){if(this.IsString(d)){eval("var "+n+" = '"+d+"';")}else{eval("var "+n+" = "+d+";")}}},RepeatString:function(s,n){var a="";for(var i=1;i<=n;i++){a+=s}return a},Replace:function(s,a,b,c){s+="";if(!c||c.toUpperCase()!="ALL"){c=""}else{c="g"}var d=new RegExp(a,c);return s.replace(d,b)},ReplaceNoCase:function(s,a,b,c){s+="";if(!c||c.toUpperCase()!="ALL"){c="i"}else{c="gi"}var d=new RegExp(a,c);return s.replace(d,b)},Reverse:function(s){s+="";var i=s.length;var r="";for(i;0<=i;i--){r+=s.charAt(i)}return r},Right:function(s,c){s+="";return s.slice(s.length-c,s.length)},Round:function(n,p){if(!isNaN(n.toFixed(p))){return n.toFixed(p)}return n},RTrim:function(s){s+="";if(s.length){return s.replace(/\s*$/,'')}return''},StructKeyArray:function(s){var k;var a=[];for(k in s){a.push(k)}return a},StructKeyExists:function(s,k){return!!s[k]},StructKeyList:function(s,d){var k;var a="";if(!d){d=","}for(k in s){a=this.ListAppend(a,k,d)}return a},TimeFormat:function(t,m){return this.DateFormat(t,m)},Trim:function(s){s+="";if(s.length){return s.replace(/^\s\s*/,'').replace(/\s\s*$/,'')}return''},UCase:function(s){return s.toString().toUpperCase()},URLDecode:function(s){return unescape(s)},URLEncodedFormat:function(s){return encodeURI(s)}});
