//-----------------------------------------------------------------------------
// Vert Studios Function Library
// Date: December 22, 2010
// File: vertlib.min.js
// Author: Joseph McCullough , @Joe_Query, http://www.vertstudios.com
// Purpose: Contains all the small plugins/functions used throughout our
//          larger plugins.
// Feel free to use this library for commercial purposes!
// Check http://www.vertstudios.com/vertlib.js for un-minified version.
// WARNING: Do NOT obfuscate defined global variables
//-----------------------------------------------------------------------------

window.vertstudios=true;function isset(c){if((typeof c=='undefined')||(c===null)||(c==="")){return false;}else{return true;}}var Regex={};Regex.pattern=function(){return{int:"\\d+",float:"\\d*\\.\\d+",mailstrings:"(content\\-type|mime\\-version|multipart\\/mixed|Content\\-Transfer\\-Encoding|bcc|cc|to|headers):",email:"[\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,4}",html:"<([a-zA-Z][a-zA-Z0-9]*)\\b[^>]*>.*?<\\/\\1>",url:"([-a-z0-9+.]*(:|:\\/\\/))?([\\w_-]+\\.)+[a-zA-Z]{2,}[-%\\$_.+!*'(),;\\/?:@=&\\w#]*",zip:"^((\\d{5}-\\d{4})|(\\d{5})|([A-Z]\\d[A-Z]\\s\\d[A-Z]\\d))",alpha:"[a-zA-Z]+",num:"\\d+",bbcode:"\\[([a-zA-Z][a-zA-Z0-9]*)\\b[^\\]]*\\].*?\\[\\/\\1\\]",usphone:"(1\\s*[-\\/\\.]?)?(\\((\\d{3})\\)|(\\d{3}))\\s*[-\\/\\.]?\\s*(\\d{3})\\s*[-\\/\\.]?\\s*(\\d{4})\\s*(([xX]|[eE][xX][tT])[-.:]?\\s*(\\d+))*",usaddress:"\\d+\\s[-\\w.,\\s#:]+",fullname:"[a-zA-Z]+\\s+([-a-zA-Z.'\\s]|[0-9](nd|rd|th))+",name:"[-a-zA-Z.'\\s]+",lastname:"([-a-zA-Z.'\\s]|[0-9](nd|rd|th))+"};};Regex.description=function(){return{int:"Integer",float:"Float",mailstrings:"Mail Strings",email:"Email",html:"HTML",url:"URL",zip:"Zip Code",alpha:"Alphabetic Character",num:"Number",bbcode:"BB Code",usphone:"Phone",usaddress:"Address",name:"Name",fullname:"Name",lastname:"Last Name",message:"Message"};};Regex.example=function(){return {name: "John Doe",usphone: "903-555-5555",email: "myemail@gmail.com",html: "<b>HTML</b>",url: "www.vertstudios.com",zip: "75701",alpha: "abcdefg",num: "99095",bbcode: "[B]BBCODE[/B]",usaddress: "1800 East Barbara Street",fullname: "John Doe",lastname: "Doe 2nd",int: "111",float: "111.50",mailstrings: "to:bcc:",message: "No HTML or BB Code."};};Regex.is=function(c,d){c=Regex.getType(c);pattern=Regex.pattern()[c];var e=new RegExp("\x5e"+pattern+"\x24");return e.test(d);};Regex.isNot=function(c,d){return!Regex.is(c,d);};Regex.has=function(c,d){c=Regex.getType(c);pattern=Regex.pattern()[c];var e=new RegExp(pattern);return e.test(d);};Regex.hasNot=function(c,d){return!Regex.has(c,d);};Regex.hasAny=function(c,d){c=Regex.getArray(c);var e=false;for(var i=0;i<c.length;i++){type=Regex.getType(c[i]);if(Regex.has(type,d)){e=true;}}return e;};Regex.hasNone=function(c,d){return!Regex.hasAny(c,d);};Regex.getDescription=function(c){c=Regex.getType(c);return Regex.description()[c];};Regex.getExample=function(c){c=Regex.getType(c);return Regex.example()[c];};Regex.getArray=function(c){c=c.replace("\x20","");return c.split("\x2c");};Regex.getType=function(c){return c.toLowerCase().replace(/[^a-z]+/,"");};var GetSet={};GetSet.override=function(c,d){var e=c;for(var i in d){if(!(e[i])){e[i]=d[i];}}};GetSet.getters=function(c){var d={prefix:"get",camel:true};GetSet.override(c,d);c.prefix=(c.prefix==="none")?"":c.prefix;var e;for(var i in c.obj){if(c.camel&&c.prefix!==""){e=i.charAt(0).toUpperCase()+i.substr(1);}else{e=i;}(function(i){c.scope[c.prefix+e]=function(){return c.obj[i];};})(i);}};GetSet.setters=function(c){var d={prefix:"set",camel:true};GetSet.override(c,d);c.prefix=(c.prefix==="none")?"":c.prefix;var e;for(var i in c.obj){if(c.camel&&c.prefix!==""){e=i.charAt(0).toUpperCase()+i.substr(1);}else{e=i;}(function(i){c.scope[c.prefix+e]=function(f){c.obj[i]=f;};})(i);}};function POST(c,d){var e="";this.set=function(f,g){var h=new RegExp(f+"=[a-zA-Z0-9%]*");var k=h.exec(e);if(k){e=e.replace(k,f+"\x3d"+g);}else{if((e.length>0)&&(e.substr(-1)!="\x26")){e+="\x26";}e+=(f+"\x3d"+g);}};this.callback=function(f){d=f;};this.serialize=function(f){e+=($(f).serialize());};this.getResponse=function(){if(isset(c)&&isset(e)&&isset(d)){jQuery.ajax({type:"POST",url:c,data:e,success:function(f){d(f);},error:function(f){d(f);}});}};}function Form(c,d){c=(typeof c==='undefined')?$("form"):c;var e=this;var f={id:$(c),URL:$(c).attr("action"),hasAny:null,hasNone:null,invalidClass:"invalid",requiredClass:"required",inputs:$(c).find('input[type="text"], textarea')};settings=jQuery.extend(f,d);GetSet.getters({obj:settings,scope:e,prefix:"none"});GetSet.setters({obj:settings,scope:e});var g=false;e.addAJAX=function(){g=true;};var h=false;this.forceInvalid=function(){h=true;};e.valid=function(m){var n=$(m).val();var name=$(m).attr('name');var o;var p=$(m).hasClass(settings.requiredClass);if(h){h=false;return false;}if(typeof m==='undefined'){var q=0;$(settings.inputs).each(function(){if(e.invalid($(this))){q++;}});return!q;}else{if(!n){if(p){return false;}else{return true;}}var r=false;if(isset(settings.hasAny)){for(var i=0;i<settings.hasAny.length;i++){if($(m).equalTo($(settings.hasAny[i].id))){r=settings.hasAny[i].types;}}}var s=false;if(isset(settings.hasNone)){for(var i=0;i<settings.hasNone.length;i++){if($(m).equalTo($(settings.hasNone[i].id))){s=settings.hasNone[i].types;}}}if(r){o=Regex.hasAny(r,n);}else if(s){o=Regex.hasNone(s,n);}else{o=Regex.is(name,n);}return o;}};e.validate=e.valid;e.invalid=function(m){if(typeof m==='undefined'){var n=$();$(settings.inputs).each(function(){if(e.invalid($(this))){n=$(n).add($(this));}});return n;}else{return!e.validate(m);}};e.clear=function(){jQuery(settings.id).find(':input').not(':button, :submit, :reset, :hidden').val('').removeAttr('checked').removeAttr('selected').removeClass(settings.invalidClass);jQuery(settings.id).find('textarea').val('');};var k={};k.successResponse="thanks";k.invalidResponse="invalid";k.errorResponse="error";GetSet.getters({obj:k,scope:e});GetSet.setters({obj:k,scope:e});var l={};l.success=function(){$("#confirmation").html("<h4>Your message was sent successfully.</h4>");e.clear();};l.serverInvalid=function(){$("#confirmation").html("<h4>Message not sent. Please verify your information.</h4>");};l.clientInvalid=function(m){$("#confirmation").html("<h4>Please verify your information.</h4>");$(m).addClass(settings.invalidClass);};l.error=function(m){$("#confirmation").html("<h4>Server Error. Please try again.</h4>");};l.send=function(){$("#confirmation").html("<h4>Sending...</h4>");};l.doCallback=function(m){if(m==k.successResponse){l.success();}else if(m==k.invalidResponse){l.serverInvalid();}else{l.error(m);}};GetSet.setters({obj:l,scope:e,prefix:"on"});e.mail=function(){var m=new POST(settings.URL,function(n){l.doCallback(n);});m.serialize(settings.id);if(g){m.set("AJAX","true");}m.getResponse();};e.quickform=function(){$(settings.inputs).focusout(function(){if(e.invalid($(this))||(!$(this).val()&&$(this).hasClass(settings.requiredClass))){$(this).addClass(settings.invalidClass);}else{$(this).removeClass(settings.invalidClass);}});$(settings.inputs).keyup(function(){if($(this).hasClass(settings.invalidClass)){if(e.valid($(this))){$(this).removeClass(settings.invalidClass);}}});$(settings.id).submit(function(){if(e.valid()){l.send();e.addAJAX();e.mail();}else{l.clientInvalid($(e.invalid()));}return false;});};}

(function(c){c.fn.arrayShift=function(d,e,f){var g=c.makeArray(c(this));for(var i=0;i<arguments.length;i++){if(isNaN(arguments[i])){if(arguments[i]=="first"){arguments[i]=0;}else if(arguments[i]=="last"){arguments[i]=g.length-1;}}else{arguments[i]=parseInt(arguments[i],10);}}var h=g[d];if(d>e){for(i=d;i>e;i--){g[i]=g[i-1];}g[e]=h;}else if(d<e){for(i=d;i<e;i++){g[i]=g[i+1];}g[e]=h;}if(typeof f=='function'){f.call(this);}return c(g);};c.fn.getIndexOf=function(d){var e=false;var f=c(this);var i=0;c(d).each(function(){if(c(this).equalTo(c(f))){e=i;}i++;});return e;};c.fn.equalTo=function(d){isEqual=!c(this).not(c(d)).length;return isEqual;};c.fn.fakeFloat=function(d){var e={direction:"left",margin:0,offset:0,speed:0},f=c.extend(e,c.fn.fakeFloat.defaults,d);var i=0;var g=0;c(this).each(function(){g=c(this).width();if(f.direction=="left"){c(this).animate({"left":((f.margin)+g)*i+(f.offset)+'px'},f.speed);}else{c(this).animate({"right":((f.margin)+g)*i+(f.offset)+'px'},f.speed);}i++;});return this;};c.fn.frontpush=function(d){var e=c(this).length;var f=c.makeArray(c(this));for(var i=0;i<e;i++){d.push("");}for(i=(d.length),j=0;i>e;i--){j=i-1;d[j]=d[j-e];}for(i=0;i<e;i++){d[i]=f[i];}return c(d);};c.fn.swap=function(d,e){var f=c.makeArray(c(this));var g=f[d];f[d]=f[e];f[e]=g;return c(f);};})(jQuery);

