(function(n){n.uniform={options:{selectClass:"selector",radioClass:"radio",checkboxClass:"checker",fileClass:"uploader",filenameClass:"filename",fileBtnClass:"action",fileDefaultText:"No file selected",fileBtnText:"Choose File",checkedClass:"checked",focusClass:"focus",disabledClass:"disabled",buttonClass:"button",activeClass:"active",hoverClass:"hover",useID:!0,idPrefix:"uniform",resetSelector:!1,autoHide:!0,selectAutoWidth:!1},elements:[]},n.support.selectOpacity=n.browser.msie&&n.browser.version<7?!1:!0,n.fn.uniform=function(t){function s(t){$el=n(t),$el.addClass($el.attr("type")),i(t)}function o(t){n(t).addClass("uniform"),i(t)}function f(r){var u=n(r),f=n("<div>"),o=n("<span>"),e;f.addClass(t.buttonClass),t.useID&&u.attr("id")!=""&&f.attr("id",t.idPrefix+"-"+u.attr("id")),u.is("a")||u.is("button")?e=u.text():(u.is(":submit")||u.is(":reset")||u.is("input[type=button]"))&&(e=u.attr("value")),e=e==""?u.is(":reset")?"Reset":"Submit":e,o.html(e),u.css("opacity",0),u.wrap(f),u.wrap(o),f=u.closest("div"),o=u.closest("span"),u.is(":disabled")&&f.addClass(t.disabledClass),f.bind({"mouseenter.uniform":function(){f.addClass(t.hoverClass)},"mouseleave.uniform":function(){f.removeClass(t.hoverClass),f.removeClass(t.activeClass)},"mousedown.uniform touchbegin.uniform":function(){f.addClass(t.activeClass)},"mouseup.uniform touchend.uniform":function(){f.removeClass(t.activeClass)},"click.uniform touchend.uniform":function(t){if(n(t.target).is("span")||n(t.target).is("div"))if(r[0].dispatchEvent){var i=document.createEvent("MouseEvents");i.initEvent("click",!0,!0),r[0].dispatchEvent(i)}else r[0].click()}}),r.bind({"focus.uniform":function(){f.addClass(t.focusClass)},"blur.uniform":function(){f.removeClass(t.focusClass)}}),n.uniform.noSelect(f),i(r)}function h(r){var f=n(r),u=n("<div />"),e=n("<span />"),h=f.width(),o,s;!f.css("display")=="none"&&t.autoHide&&u.hide(),u.addClass(t.selectClass),t.useID&&r.attr("id")!=""&&u.attr("id",t.idPrefix+"-"+r.attr("id")),o=f.find(":selected:first"),o.length==0&&(o=f.find("option:first")),e.html(o.html()),f.css("opacity",0),f.wrap(u),f.before(e),u=f.parent("div"),e=f.siblings("span"),t.selectAutoWidth&&(s=parseInt(u.css("paddingLeft"),10),e.css("width",h-s-15+"px")),f.bind({"change.uniform":function(){e.text(f.find(":selected").html()),u.removeClass(t.activeClass)},"focus.uniform":function(){u.addClass(t.focusClass)},"blur.uniform":function(){u.removeClass(t.focusClass),u.removeClass(t.activeClass)},"mousedown.uniform touchbegin.uniform":function(){u.addClass(t.activeClass)},"mouseup.uniform touchend.uniform":function(){u.removeClass(t.activeClass)},"click.uniform touchend.uniform":function(){u.removeClass(t.activeClass)},"mouseenter.uniform":function(){u.addClass(t.hoverClass)},"mouseleave.uniform":function(){u.removeClass(t.hoverClass),u.removeClass(t.activeClass)},"keyup.uniform":function(){e.text(f.find(":selected").html())}}),f.attr("disabled")&&u.addClass(t.disabledClass),n.uniform.noSelect(e),i(f)}function u(r){var e=n(r),u=n("<div />"),f=n("<span />");!e.css("display")=="none"&&t.autoHide&&u.hide(),u.addClass(t.checkboxClass),t.useID&&r.attr("id")!=""&&u.attr("id",t.idPrefix+"-"+r.attr("id")),n(r).wrap(u),n(r).wrap(f),f=r.parent(),u=f.parent(),n(r).css("opacity",0).bind({"focus.uniform":function(){u.addClass(t.focusClass)},"blur.uniform":function(){u.removeClass(t.focusClass)},"click.uniform touchend.uniform":function(){n(r).attr("checked")?f.addClass(t.checkedClass):f.removeClass(t.checkedClass)},"mousedown.uniform touchbegin.uniform":function(){u.addClass(t.activeClass)},"mouseup.uniform touchend.uniform":function(){u.removeClass(t.activeClass)},"mouseenter.uniform":function(){u.addClass(t.hoverClass)},"mouseleave.uniform":function(){u.removeClass(t.hoverClass),u.removeClass(t.activeClass)}}),n(r).attr("checked")&&f.addClass(t.checkedClass),n(r).attr("disabled")&&u.addClass(t.disabledClass),i(r)}function r(r){var e=n(r),u=n("<div />"),f=n("<span />");!e.css("display")=="none"&&t.autoHide&&u.hide(),u.addClass(t.radioClass),t.useID&&r.attr("id")!=""&&u.attr("id",t.idPrefix+"-"+r.attr("id")),n(r).wrap(u),n(r).wrap(f),f=r.parent(),u=f.parent(),n(r).css("opacity",0).bind({"focus.uniform":function(){u.addClass(t.focusClass)},"blur.uniform":function(){u.removeClass(t.focusClass)},"click.uniform touchend.uniform":function(){if(n(r).attr("checked")){var i=t.radioClass.split(" ")[0];n("."+i+" span."+t.checkedClass+":has([name='"+n(r).attr("name")+"'])").removeClass(t.checkedClass),f.addClass(t.checkedClass)}else f.removeClass(t.checkedClass)},"mousedown.uniform touchend.uniform":function(){n(r).is(":disabled")||u.addClass(t.activeClass)},"mouseup.uniform touchbegin.uniform":function(){u.removeClass(t.activeClass)},"mouseenter.uniform touchend.uniform":function(){u.addClass(t.hoverClass)},"mouseleave.uniform":function(){u.removeClass(t.hoverClass),u.removeClass(t.activeClass)}}),n(r).attr("checked")&&f.addClass(t.checkedClass),n(r).attr("disabled")&&u.addClass(t.disabledClass),i(r)}function e(r){var u=n(r),f=n("<div />"),e=n("<span>"+t.fileDefaultText+"</span>"),s=n("<span>"+t.fileBtnText+"</span>"),h,o;!u.css("display")=="none"&&t.autoHide&&f.hide(),f.addClass(t.fileClass),e.addClass(t.filenameClass),s.addClass(t.fileBtnClass),t.useID&&u.attr("id")!=""&&f.attr("id",t.idPrefix+"-"+u.attr("id")),u.wrap(f),u.after(s),u.after(e),f=u.closest("div"),e=u.siblings("."+t.filenameClass),s=u.siblings("."+t.fileBtnClass),u.attr("size")||(h=f.width(),u.attr("size",h/10)),o=function(){var n=u.val();n===""?n=t.fileDefaultText:(n=n.split(/[\/\\]+/),n=n[n.length-1]),e.text(n)},o(),u.css("opacity",0).bind({"focus.uniform":function(){f.addClass(t.focusClass)},"blur.uniform":function(){f.removeClass(t.focusClass)},"mousedown.uniform":function(){n(r).is(":disabled")||f.addClass(t.activeClass)},"mouseup.uniform":function(){f.removeClass(t.activeClass)},"mouseenter.uniform":function(){f.addClass(t.hoverClass)},"mouseleave.uniform":function(){f.removeClass(t.hoverClass),f.removeClass(t.activeClass)}}),n.browser.msie?u.bind("click.uniform.ie7",function(){setTimeout(o,0)}):u.bind("change.uniform",o),u.attr("disabled")&&f.addClass(t.disabledClass),n.uniform.noSelect(e),n.uniform.noSelect(s),i(r)}function i(t){t=n(t).get(),t.length>1?n.each(t,function(t,i){n.uniform.elements.push(i)}):n.uniform.elements.push(t)}t=n.extend(n.uniform.options,t);var c=this;return t.resetSelector!=!1&&n(t.resetSelector).mouseup(function(){function t(){n.uniform.update(c)}setTimeout(t,10)}),n.uniform.restore=function(t){t==undefined&&(t=n(n.uniform.elements)),n(t).each(function(){n(this).is(":checkbox")?n(this).unwrap().unwrap():n(this).is("select")?(n(this).siblings("span").remove(),n(this).unwrap()):n(this).is(":radio")?n(this).unwrap().unwrap():n(this).is(":file")?(n(this).siblings("span").remove(),n(this).unwrap()):n(this).is("button, :submit, :reset, a, input[type='button']")&&n(this).unwrap().unwrap(),n(this).unbind(".uniform"),n(this).css("opacity","1");var i=n.inArray(n(t),n.uniform.elements);n.uniform.elements.splice(i,1)})},n.uniform.noSelect=function(t){function i(){return!1}n(t).each(function(){this.onselectstart=this.ondragstart=i,n(this).mousedown(i).css({MozUserSelect:"none"})})},n.uniform.update=function(i){i==undefined&&(i=n(n.uniform.elements)),i=n(i),i.each(function(){var r=n(this),f,e,u;r.is("select")?(f=r.siblings("span"),u=r.parent("div"),u.removeClass(t.hoverClass+" "+t.focusClass+" "+t.activeClass),f.html(r.find(":selected").html()),r.is(":disabled")?u.addClass(t.disabledClass):u.removeClass(t.disabledClass)):r.is(":checkbox")?(f=r.closest("span"),u=r.closest("div"),u.removeClass(t.hoverClass+" "+t.focusClass+" "+t.activeClass),f.removeClass(t.checkedClass),r.is(":checked")&&f.addClass(t.checkedClass),r.is(":disabled")?u.addClass(t.disabledClass):u.removeClass(t.disabledClass)):r.is(":radio")?(f=r.closest("span"),u=r.closest("div"),u.removeClass(t.hoverClass+" "+t.focusClass+" "+t.activeClass),f.removeClass(t.checkedClass),r.is(":checked")&&f.addClass(t.checkedClass),r.is(":disabled")?u.addClass(t.disabledClass):u.removeClass(t.disabledClass)):r.is(":file")?(u=r.parent("div"),e=r.siblings(t.filenameClass),btnTag=r.siblings(t.fileBtnClass),u.removeClass(t.hoverClass+" "+t.focusClass+" "+t.activeClass),e.text(r.val()),r.is(":disabled")?u.addClass(t.disabledClass):u.removeClass(t.disabledClass)):(r.is(":submit")||r.is(":reset")||r.is("button")||r.is("a")||i.is("input[type=button]"))&&(u=r.closest("div"),u.removeClass(t.hoverClass+" "+t.focusClass+" "+t.activeClass),r.is(":disabled")?u.addClass(t.disabledClass):u.removeClass(t.disabledClass))})},this.each(function(){if(n.support.selectOpacity){var t=n(this);t.is("select")?t.attr("multiple")!=!0&&(t.attr("size")==undefined||t.attr("size")<=1)&&h(t):t.is(":checkbox")?u(t):t.is(":radio")?r(t):t.is(":file")?e(t):t.is(":text, :password, input[type='email']")?s(t):t.is("textarea")?o(t):(t.is("a")||t.is(":submit")||t.is(":reset")||t.is("button")||t.is("input[type=button]"))&&f(t)}})}})(jQuery)
