/* * * jqtransform * by mathieu vilaplana mvilaplana@dfc-e.com * designer ghyslain armand garmand@dfc-e.com * * * version 1.0 25.09.08 * version 1.1 06.08.09 * add event click on checkbox and radio * auto calculate the size of a select element * can now, disabled the elements * correct bug in ff if click on select (overflow=hidden) * no need any more preloading !! * ******************************************** */ (function($){ var defaultoptions = {preloadimg:true}; var jqtransformimgpreloaded = false; var jqtransformpreloadhoverfocusimg = function(strimgurl) { //guillemets to remove for ie strimgurl = strimgurl.replace(/^url\((.*)\)/,'$1').replace(/^\"(.*)\"$/,'$1'); var imghover = new image(); imghover.src = strimgurl.replace(/\.([a-za-z]*)$/,'-hover.$1'); var imgfocus = new image(); imgfocus.src = strimgurl.replace(/\.([a-za-z]*)$/,'-focus.$1'); }; /*************************** labels ***************************/ var jqtransformgetlabel = function(objfield){ var selfform = $(objfield.get(0).form); var olabel = objfield.next(); if(!olabel.is('label')) { olabel = objfield.prev(); if(olabel.is('label')){ var inputname = objfield.attr('id'); if(inputname){ olabel = selfform.find('label[for="'+inputname+'"]'); } } } if(olabel.is('label')){return olabel.css('cursor','pointer');} return false; }; /* hide all open selects */ var jqtransformhideselect = function(otarget){ var ulvisible = $('.jqtransformselectwrapper ul:visible'); ulvisible.each(function(){ var oselect = $(this).parents(".jqtransformselectwrapper:first").find("select").get(0); //do not hide if click on the label object associated to the select if( !(otarget && oselect.olabel && oselect.olabel.get(0) == otarget.get(0)) ){$(this).hide();} }); }; /* check for an external click */ var jqtransformcheckexternalclick = function(event) { if ($(event.target).parents('.jqtransformselectwrapper').length === 0) { jqtransformhideselect($(event.target)); } }; /* apply document listener */ var jqtransformadddocumentlistener = function (){ $(document).mousedown(jqtransformcheckexternalclick); }; /* add a new handler for the reset action */ var jqtransformreset = function(f){ var sel; $('.jqtransformselectwrapper select', f).each(function(){sel = (this.selectedindex<0) ? 0 : this.selectedindex; $('ul', $(this).parent()).each(function(){$('a:eq('+ sel +')', this).click();});}); $('a.jqtransformcheckbox, a.jqtransformradio', f).removeclass('jqtransformchecked'); $('input:checkbox, input:radio', f).each(function(){if(this.checked){$('a', $(this).parent()).addclass('jqtransformchecked');}}); }; /*************************** buttons ***************************/ $.fn.jqtransinputbutton = function(){ return this.each(function(){ var newbtn = $('