/*
Uniform v2.0 PRE
Copyright © 2009-2010 Josh Pyles / Pixelmatrix Design LLC
http://pixelmatrixdesign.com

Requires jQuery 1.4 or newer

Much thanks to Thomas Reynolds and Buck Wilson for their help and advice on this

Disabling text selection is made possible by Mathias Bynens <http://mathiasbynens.be/>
and his noSelect plugin. <http://github.com/mathiasbynens/noSelect-jQuery-Plugin>

Also, thanks to David Kaneda and Eugene Bond for their contributions to the plugin

License:
MIT License - http://www.opensource.org/licenses/mit-license.php

Enjoy!

*/
/*
 * jQuery UI Widget 1.8.5
 *
 * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 * http://docs.jquery.com/UI/Widget
 */
if(!$.hasOwnProperty("Widget")){(function(a,e){if(a.cleanData){var d=a.cleanData;a.cleanData=function(b){for(var g=0,f;(f=b[g])!=null;g++){a(f).triggerHandler("remove")}d(b)}}else{var c=a.fn.remove;a.fn.remove=function(b,f){return this.each(function(){if(!f){if(!b||a.filter(b,[this]).length){a("*",this).add([this]).each(function(){a(this).triggerHandler("remove")})}}return c.call(a(this),b,f)})}}a.widget=function(b,j,i){var h=b.split(".")[0],g;b=b.split(".")[1];g=h+"-"+b;if(!i){i=j;j=a.Widget}a.expr[":"][g]=function(f){return !!a.data(f,b)};a[h]=a[h]||{};a[h][b]=function(f,k){arguments.length&&this._createWidget(f,k)};j=new j;j.options=a.extend(true,{},j.options);a[h][b].prototype=a.extend(true,j,{namespace:h,widgetName:b,widgetEventPrefix:a[h][b].prototype.widgetEventPrefix||b,widgetBaseClass:g},i);a.widget.bridge(b,a[h][b])};a.widget.bridge=function(b,f){a.fn[b]=function(k){var j=typeof k==="string",i=Array.prototype.slice.call(arguments,1),g=this;k=!j&&i.length?a.extend.apply(null,[true,k].concat(i)):k;if(j&&k.substring(0,1)==="_"){return g}j?this.each(function(){var l=a.data(this,b);if(!l){throw"cannot call methods on "+b+" prior to initialization; attempted to call method '"+k+"'"}if(!a.isFunction(l[k])){throw"no such method '"+k+"' for "+b+" widget instance"}var h=l[k].apply(l,i);if(h!==l&&h!==e){g=h;return false}}):this.each(function(){var h=a.data(this,b);h?h.option(k||{})._init():a.data(this,b,new f(k,this))});return g}};a.Widget=function(b,f){arguments.length&&this._createWidget(b,f)};a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(b,g){a.data(g,this.widgetName,this);this.element=a(g);this.options=a.extend(true,{},this.options,a.metadata&&a.metadata.get(g)[this.widgetName],b);var f=this;this.element.bind("remove."+this.widgetName,function(){f.destroy()});this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(b,h){var g=b,f=this;if(arguments.length===0){return a.extend({},f.options)}if(typeof b==="string"){if(h===e){return this.options[b]}g={};g[b]=h}a.each(g,function(j,i){f._setOption(j,i)});return f},_setOption:function(b,f){this.options[b]=f;if(b==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(b,j,i){var h=this.options[b];j=a.Event(j);j.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase();i=i||{};if(j.originalEvent){b=a.event.props.length;for(var g;b;){g=a.event.props[--b];j[g]=j.originalEvent[g]}}this.element.trigger(j,i);return !(a.isFunction(h)&&h.call(this.element[0],j,i)===false||j.isDefaultPrevented())}}})(jQuery)}(function(d,e){d.support.selectOpacity=(!d.browser.msie||d.browser.version>6);d.uniform=function(){var g=this,f={},h=[];f.update=function(){d.each(h,function(){this.update()})};f.push=function(i){h.push(i)};f.clear=function(){h=[]};f.remove=function(i){d.each(h,function(j){if(this===i){h.splice(j,1)}})};f.restore=function(){d.each(h,function(){this.destroy()});f.clear()};return f}();d.fn.uniform=function(){var f=Array.prototype.slice.call(arguments);var g=function(l){var j=d(l),i=l.tagName,h=false;if((i==="SELECT")&&(j.attr("multiple")!==true)&&(j.attr("size")===e||(j.attr("size")<=1))){h="uniformSelect"}else{if(i==="INPUT"){var k=l.type;if(k==="text"||k==="password"||k==="email"){h="uniformInput"}else{if(k==="submit"||k==="reset"||k==="button"){h="uniformButton"}else{if(k==="search"){h="uniformSearch"}else{h="uniform"+k.charAt(0).toUpperCase()+k.slice(1)}}}}else{if(i==="TEXTAREA"){h="uniformTextarea"}else{if(i==="A"||i==="BUTTON"){h="uniformButton"}}}}return h};return d(this).each(function(){var h=d(this),i=g(this);if(i&&d.isFunction(d.fn[i])&&d.support.selectOpacity){h[i].apply(h,f)}})};var c=function(){};c.prototype=d.extend(true,new d.Widget(),{options:{selectClass:"selector",radioClass:"radio",checkboxClass:"checker",fileClass:"uploader",filenameClass:"filename",fileBtnClass:"action",fileDefaultText:"No file selected",fileBtnText:"Choose File",searchClass:"searcher",checkedClass:"checked",focusClass:"focus",disabledClass:"disabled",buttonClass:"button",activeClass:"active",hoverClass:"hover",useID:true,idPrefix:"uniform",autoHide:true,autoWidth:true},_setID:function(){if(this.options.useID===true&&this.element.attr("id")!==""){this.divTag.attr("id",this.options.idPrefix+"-"+this.element.attr("id"))}},_disableTextSelection:function(g){var h=function(){return false};d(g).each(function(){this.onselectstart=this.ondragstart=h;d(this).mousedown(h).css({MozUserSelect:"none"})})},destroy:function(){this.element.unbind(".uniform").css("opacity","1");d.uniform.remove(this);d.Widget.prototype.destroy.call(this)},_setOption:function(f,g){d.Widget.prototype._setOption.apply(this,arguments);this.update()}});var b=function(){};b.prototype=d.extend(true,new c(),{_init:function(){if(this.wrapped!==true){this.element.wrap("<div/>").before("<span/>");this.spanTag=this.element.prev("span");this.divTag=this.element.closest("div");this.element.css("opacity",0);this._setID(this.element);this.wrapped=true;d.uniform.push(this)}this.update()},update:function(){var f=this;this.divTag.removeClass();this.element.unbind(".uniform");this.divTag.unbind(".uniform");if(this.element.is(":disabled")){this.divTag.addClass(this.options.disabledClass)}this.divTag.bind({"mouseenter.uniform":function(){f.divTag.addClass(f.options.hoverClass)},"mouseleave.uniform":function(){f.divTag.removeClass(f.options.hoverClass).removeClass(f.options.activeClass)},"mousedown.uniform touchbegin.uniform":function(){f.divTag.addClass(f.options.activeClass)},"mouseup.uniform touchend.uniform":function(){f.divTag.removeClass(f.options.activeClass)}});this.element.bind({"focus.uniform":function(){f.divTag.addClass(f.options.focusClass)},"blur.uniform":function(){f.divTag.removeClass(f.options.focusClass)}})}});var a=function(){};a.prototype=d.extend(true,new b(),{_init:function(){if(this.wrapped!==true){this.element.wrap("<div/>").wrap("<span/>");this.spanTag=this.element.closest("span");this.divTag=this.element.closest("div");this.element.css("opacity",0);this._setID(this.element);this.wrapped=true;d.uniform.push(this)}this.update()},update:function(){b.prototype.update.call(this);var f=this;this.spanTag.removeClass();if(this.element[0].checked){this.spanTag.addClass(this.options.checkedClass)}this.element.bind("check.uniform",function(){f.element[0].checked=true;f.update()});this.element.bind("uncheck.uniform",function(){f.element[0].checked=false;f.update()})},destroy:function(){this.element.unwrap().unwrap();b.prototype.destroy.call(this)}});d.widget("uniform.uniformTextarea",c,{_init:function(){this.element.addClass("uniform")}});d.widget("uniform.uniformInput",c,{_init:function(){this.element.addClass(this.element.attr("type"))}});d.widget("uniform.uniformButton",b,{_init:function(){b.prototype._init.call(this);this._disableTextSelection(this.divTag)},update:function(){b.prototype.update.call(this);var i="",g=this.element[0].tagName,h=this.element[0].type,f=this;this.divTag.addClass(this.options.buttonClass);if(g=="A"||g=="BUTTON"){i=this.element.text()}else{if(g=="INPUT"){i=this.element.attr("value")}}i=(i==="")?(h==="reset")?"Reset":"Submit":i;this.spanTag.html(i);this.divTag.bind({"click.uniform touchend.uniform":function(k){if(d(k.target).is("span")||d(k.target).is("div")){if(f.element[0].dispatchEvent){var j=document.createEvent("MouseEvents");j.initEvent("click",true,true);f.element[0].dispatchEvent(j)}else{f.element[0].click()}}},"mousedown.uniform":function(j){if(d(j.target).is("div")||d(j.target).is("span")){f.element.mousedown()}},"mouseup.uniform":function(j){if(d(j.target).is("div")||d(j.target).is("span")){f.element.mouseup()}}});if(g=="INPUT"&&h=="reset"){this.element.bind({"click.uniform touchend.uniform":function(){setTimeout(d.uniform.update,10)}})}},destroy:function(){this.element.siblings("span").remove();this.element.unwrap();b.prototype.destroy.call(this)}});d.widget("uniform.uniformSelect",b,{_init:function(){b.prototype._init.call(this);this._disableTextSelection(this.spanTag)},update:function(){b.prototype.update.call(this);var f=this,i=this.element.width(),h=this.element.find(":selected:first");this.divTag.addClass(this.options.selectClass);if(this.options.autoWidth===true){if(i===0){var g=this.element.clone().show().css("opacity","0");i=g.appendTo("body").width();g.remove()}this.divTag.css("width",i+20)}if(h.length===0){h=this.element.find("option:first")}this.spanTag.html(h.html());this.element.bind({"change.uniform":function(){f.spanTag.html(f.element.find(":selected").html());f.divTag.removeClass(f.options.activeClass)},"click.uniform touchend.uniform":function(){f.divTag.removeClass(f.options.activeClass)},"keyup.uniform":function(){f.spanTag.html(f.element.find(":selected").html())}})},destroy:function(){this.element.siblings("span").remove();this.element.unwrap();b.prototype.destroy.call(this)}});d.widget("uniform.uniformCheckbox",a,{update:function(){var f=this;a.prototype.update.call(this);this.divTag.addClass(this.options.checkboxClass);this.element.bind({"click.uniform touchend.uniform":function(){if(!f.element.attr("checked")){f.spanTag.removeClass(f.options.checkedClass)}else{f.spanTag.addClass(f.options.checkedClass)}}})}});d.widget("uniform.uniformRadio",a,{update:function(){var f=this;a.prototype.update.call(this);this.divTag.addClass(this.options.radioClass);this.element.bind({"click.uniform touchend.uniform":function(){if(!f.element.attr("checked")){f.spanTag.removeClass(f.options.checkedClass)}else{var g=f.options.radioClass.split(" ")[0];d("input[name="+f.element.attr("name")+"]").closest("span").removeClass(f.options.checkedClass);f.spanTag.addClass(f.options.checkedClass)}}})}});d.widget("uniform.uniformFile",c,{_init:function(){if(this.wrapped!==true){var f=d("<span>"+this.options.fileBtnText+"</span>"),g=d("<span>"+this.options.fileDefaultText+"</span>");this.element.wrap("<div>").after(f).after(g);this.divTag=this.element.closest("div");this.filenameTag=this.element.next();this.btnTag=this.filenameTag.next();if(!this.element.css("display")==="none"&&this.options.autoHide){this.divTag.hide()}this.element.css("opacity",0);this._disableTextSelection(this.filenameTag);this._disableTextSelection(this.btnTag);this._setID(this.element);this.wrapped=true;d.uniform.push(this)}this.update()},update:function(){var g=this;var h=function(){var i=g.element.val();if(!i){i=g.options.fileDefaultText}else{i=i.split(/[\/\\]+/);i=i[(i.length-1)]}g.filenameTag.text(i)};this.element.unbind(".uniform");this.divTag.removeClass().addClass(this.options.fileClass);this.filenameTag.removeClass().addClass(this.options.filenameClass);this.btnTag.removeClass().addClass(this.options.fileBtnClass);if(!this.element.attr("size")){var f=this.divTag.width();this.element.attr("size",this.divWidth/10)}h();this.divTag.bind({"mouseenter.uniform":function(){g.divTag.addClass(g.options.hoverClass)},"mouseleave.uniform":function(){g.divTag.removeClass(g.options.hoverClass).removeClass(g.options.activeClass)},"mousedown.uniform touchbegin.uniform":function(){g.divTag.addClass(g.options.activeClass)},"mouseup.uniform touchend.uniform":function(){g.divTag.removeClass(g.options.activeClass)}});this.element.bind({"focus.uniform":function(){g.divTag.addClass(g.options.focusClass)},"blur.uniform":function(){g.divTag.removeClass(g.options.focusClass)}});if(d.browser.msie){this.element.bind("click.uniform.ie7",function(){setTimeout(h,0)})}else{this.element.bind("change.uniform",h)}if(this.element.attr("disabled")){this.divTag.addClass(this.options.disabledClass)}},destroy:function(){this.element.siblings("span").remove();this.element.unwrap();c.prototype.destroy.call(this)}});d.widget("uniform.uniformSearch",c,{_init:function(){if(this.wrapped!==true){var h=d("<div/>"),f=d("<span/>"),g=d("<a href='#'>X</a>");this.element.wrap(h).wrap(f).after(g);this.divTag=this.element.closest("div");this.spanTag=this.element.closest("span");this.btn=this.element.siblings("a");this.wrapped=true;this._setID(this.element);d.uniform.push(this)}this.update()},_clearQuery:function(){this.element.val("");this.btn.hide()},update:function(){var f=this;this.element.unbind(".uniform");this.divTag.unbind(".uniform");this.btn.unbind(".uniform");this.divTag.removeClass().addClass(this.options.searchClass);this.btn.hide();this.element.bind({"focus.uniform":function(){f.divTag.addClass(f.options.focusClass)},"blur.uniform":function(){f.divTag.removeClass(f.options.focusClass)},"keyup.uniform":function(){if(f.element.val()!==""){f.btn.show()}else{f.btn.hide()}}});this.divTag.bind("click.uniform",function(){f.element.focus()});this.btn.bind("click.uniform",function(){f._clearQuery();return false});if(this.element.attr("disabled")){this.divTag.addClass(this.options.disabledClass)}},destroy:function(){this.element.siblings("a").remove();this.element.unwrap().unwrap();c.prototype.destroy.call(this)}})})(jQuery);
