(function($){$.uniform={options:{selectClass:'selector',autoCompleteClass:'autocomplete',radioClass:'radio',checkboxClass:'checker',fileClass:'uploader',filenameClass:'filename',fileBtnClass:'action',fileDefaultText:'No file selected',fileBtnText:'Choose File',checkedClass:'checked',focusClass:'focus',disabledClass:'disabled',activeClass:'active',hoverClass:'hover',useID:true,idPrefix:'uniform',resetSelector:false},elements:[]};if($.browser.msie&&$.browser.version<7){$.selectOpacity=true;}else{$.selectOpacity=true;}
$.fn.uniform=function(options){options=$.extend($.uniform.options,options);var el=this;if(options.resetSelector!=false){$(options.resetSelector).mouseup(function(){function resetThis(){$.uniform.update(el);}
setTimeout(resetThis,10);});}
function doSelect(elem){var divTag=$('<div />'),spanTag=$('<span />');divTag.addClass(options.selectClass);if(options.useID){divTag.attr("id",options.idPrefix+"-"+elem.attr("id"));}
elem.css('opacity',0);elem.wrap(divTag);elem.before(spanTag);divTag=elem.parent("div");if(elem.attr("w")!=undefined){divTag.css('width',elem.attr("w"));if(elem.width()<divTag.width()){elem.css('width',divTag.width());}}
else{spanTag=elem.siblings("span");}
spanTag.html('<font style="width:'+(divTag.width()-21)+'px">'+elem.children(":selected").text()+'</font>');elem.change(function(){spanTag.children().text(elem.children(":selected").text());}).focus(function(){}).blur(function(){divTag.removeClass(options.focusClass);}).mousedown(function(){divTag.addClass(options.activeClass);}).mouseup(function(){divTag.removeClass(options.activeClass);}).hover(function(){divTag.addClass(options.hoverClass);},function(){divTag.removeClass(options.hoverClass);}).keypress(function(){spanTag.children().text(elem.children(":selected").text());});if($(elem).attr("disabled")){divTag.addClass(options.disabledClass);}
storeElement(elem);}
function doCheckbox(elem){var divTag=$('<div />'),spanTag=$('<span />');divTag.addClass(options.checkboxClass);if(options.useID){divTag.attr("id",options.idPrefix+"-"+elem.attr("id"));}
$(elem).wrap(divTag);$(elem).wrap(spanTag);if($(elem).attr("text")){spanTag=elem.parent().after("<font>"+$(elem).attr("text")+"</font>");}
else{spanTag=elem.parent().after("");}
divTag=spanTag.parent();$(elem).css("opacity",0).focus(function(){}).blur(function(){divTag.removeClass(options.focusClass);}).click(function(){if(!$(elem).attr("checked")){spanTag.removeClass(options.checkedClass);}else{spanTag.addClass(options.checkedClass);}}).mousedown(function(){divTag.addClass(options.activeClass);}).mouseup(function(){divTag.removeClass(options.activeClass);}).hover(function(){divTag.addClass(options.hoverClass);},function(){divTag.removeClass(options.hoverClass);});if($(elem).attr("checked")){spanTag.addClass(options.checkedClass);}
if($(elem).attr("disabled")){divTag.addClass(options.disabledClass);}
storeElement(elem);}
function doRadio(elem){var divTag=$('<div />'),spanTag=$('<span />');divTag.addClass(options.radioClass);if(options.useID){divTag.attr("id",options.idPrefix+"-"+elem.attr("id"));}
$(elem).wrap(divTag);$(elem).wrap(spanTag);if($(elem).attr("text")){spanTag=elem.parent().after("<font>"+$(elem).attr("text")+"</font>");}
else{spanTag=elem.parent().after("");}
divTag=spanTag.parent();$(elem).css("opacity",0).focus(function(){}).blur(function(){divTag.removeClass(options.focusClass);}).click(function(){if(!$(elem).attr("checked")){spanTag.removeClass(options.checkedClass);}else{$("."+options.radioClass+" span."+options.checkedClass+":has([name='"+$(elem).attr('name')+"'])").removeClass(options.checkedClass);spanTag.addClass(options.checkedClass);}}).mousedown(function(){if(!$(elem).is(":disabled")){divTag.addClass(options.activeClass);}}).mouseup(function(){divTag.removeClass(options.activeClass);}).hover(function(){divTag.addClass(options.hoverClass);},function(){divTag.removeClass(options.hoverClass);});if($(elem).attr("checked")){spanTag.addClass(options.checkedClass);}
if($(elem).attr("disabled")){divTag.addClass(options.disabledClass);}
storeElement(elem);}
function doFile(elem){$el=$(elem);var divTag=$('<div />'),filenameTag=$('<span>'+options.fileDefaultText+'</span>'),btnTag=$('<span>'+options.fileBtnText+'</span>');divTag.addClass(options.fileClass);filenameTag.addClass(options.filenameClass);btnTag.addClass(options.fileBtnClass);if(elem.attr("w")!=undefined){divTag.css('width',elem.attr("w"));}
if(options.useID){divTag.attr("id",options.idPrefix+"-"+$el.attr("id"));}
$el.wrap(divTag);$el.after(btnTag);$el.after(filenameTag);divTag=$el.closest("div");filenameTag=$el.siblings("."+options.filenameClass);btnTag=$el.siblings("."+options.fileBtnClass);var divWidth=divTag.width();filenameTag.width(divWidth-btnTag.width()-3);$el.css("width",divWidth);$el.attr("size",divWidth/10+20);$el.css("opacity",0).focus(function(){}).blur(function(){divTag.removeClass(options.focusClass);}).change(function(){var filename=this.value;filename=filename.split("/");filename=filename[(filename.length-1)];filenameTag.text(filename);if((($.validator!=undefined)&&(filename!=""))){var form=$(this).closest('form');$("#"+$(form).attr("id")+" label[for='"+$(this).attr("name")+"']&&[generated='true']").remove();$("#"+$(form).attr("id")+" label[for='"+$(this).attr("id")+"']&&[generated='true']").remove();}}).mousedown(function(){if(!$(elem).is(":disabled")){divTag.addClass(options.activeClass);}}).mouseup(function(){divTag.removeClass(options.activeClass);}).hover(function(){divTag.addClass(options.hoverClass);},function(){divTag.removeClass(options.hoverClass);});if($el.attr("disabled")){divTag.addClass(options.disabledClass);}
storeElement(elem);}
function doText(elem){if($(elem).attr("disabled")){elem.addClass(options.disabledClass);}
storeElement(elem);}
function doAutoComplete(elem){var divTag=$('<div />'),spanTag=$('<span />');divTag.addClass(options.selectClass+" "+options.autoCompleteClass).css("width",elem.attr("w"));if(options.useID){divTag.attr("id",options.idPrefix+"-"+elem.attr("id"));}
elem.wrap(divTag);elem.wrap(spanTag);elem.after('<span class="button" onClick="'+'if(!$(this).hasClass(\'disabled\')){$(\'#'+elem.attr("id")+'\').showAll();}'+'"></span>');divTag=elem.parent().parent("div");elem.css("width",divTag.width()-21);storeElement(elem);}
function storeElement(elem){elem=$(elem).get();if(elem.length>1){$.each(elem,function(i,val){$.uniform.elements.push(val);});}else{$.uniform.elements.push(elem);}}
$.uniform.update=function(elem){if(elem==undefined){elem=$($.uniform.elements);}
elem=$(elem);elem.each(function(){$e=$(this);if($e.is(":text")){if($e.attr("createAutocomplete")=="true"){divTag=$e.parent().parent("div");if($e.is(":disabled")){if($.validator!=undefined){divTag.removeClass($.validator.defaults["errorClass"]);var labelError=divTag.next();if(((labelError.attr("for")==$e.attr("name"))||(labelError.attr("for")==$e.attr("id")))&&(labelError.attr("generated")=="true")){labelError.hide();}}
divTag.addClass(options.disabledClass);divTag.find('span.button').addClass(options.disabledClass);}else{divTag.removeClass(options.disabledClass);divTag.find('span.button').removeClass(options.disabledClass);}}}
if($e.is("select")){spanTag=$e.siblings("span");divTag=$e.parent("div");divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass);spanTag.children().html($e.children(":selected").text());if($e.is(":disabled")){if($.validator!=undefined){divTag.removeClass($.validator.defaults["errorClass"]);var labelError=divTag.next();if(((labelError.attr("for")==$e.attr("name"))||(labelError.attr("for")==$e.attr("id")))&&(labelError.attr("generated")=="true")){labelError.hide();}}
divTag.addClass(options.disabledClass);}else{divTag.removeClass(options.disabledClass);}}else if(($e.is(":checkbox"))||($e.is(":radio"))){spanTag=$e.closest("span");divTag=$e.closest("div");divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass);spanTag.removeClass(options.checkedClass);if($e.is(":checked")){spanTag.addClass(options.checkedClass);}
if($e.is(":disabled")){divTag.addClass(options.disabledClass);divTag.find("font").addClass(options.disabledClass);var form=$e.closest('form');$("#"+$(form).attr("id")+" label[for='"+$e.attr("name")+"']&&[generated='true']").hide();$("#"+$(form).attr("id")+" label[for='"+$e.attr("id")+"']&&[generated='true']").hide();}else{divTag.removeClass(options.disabledClass);divTag.find("font").removeClass(options.disabledClass);}}else if($e.is(":file")){divTag=$e.parent("div");filenameTag=$e.siblings(options.filenameClass);btnTag=$e.siblings(options.fileBtnClass);divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass);filenameTag.text($e.val());if($e.is(":disabled")){divTag.addClass(options.disabledClass);if($.validator!=undefined){divTag.removeClass($.validator.defaults["errorClass"]);var labelError=divTag.next();if(((labelError.attr("for")==$e.attr("name"))||(labelError.attr("for")==$e.attr("id")))&&(labelError.attr("generated")=="true")){labelError.hide();}}}else{divTag.removeClass(options.disabledClass);}}else if(($e.is(":text"))||($e.is(":password"))||($e.is("textarea"))){if($e.is(":disabled")){$e.addClass(options.disabledClass);var labelError=$e.next();if(((labelError.attr("for")==$e.attr("name"))||(labelError.attr("for")==$e.attr("id")))&&(labelError.attr("generated")=="true")){labelError.hide();}}else{$e.removeClass(options.disabledClass);}}});}
return this.each(function(){if($.selectOpacity){var elem=$(this);if(elem.is(":text")){if(elem.attr("createAutocomplete")=="true"){doAutoComplete(elem);}}
if(elem.is("select")){if(elem.attr("multiple")!=true){doSelect(elem);}}else if(elem.is(":checkbox")){doCheckbox(elem);}else if(elem.is(":radio")){doRadio(elem);}else if(elem.is(":file")){doFile(elem);}else if((elem.is(":text"))||(elem.is(":password"))||(elem.is("textarea"))){doText(elem);}}});};})(jQuery);
