/**
 * Internet Explorer Select Width and Style Bug Workaround.
 * 
 * Copyright (c) 2010 Ewen Elder
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 * @author: Ewen Elder <glomainn at yahoo dot co dot uk> <ewen at jainaewen dot com>
 * @version: 1.0
**/ 
(function($){$.ieSelectStyle={version:'0.9 beta'};$.fn.ieSelectStyle=function(d){var b,A,c,J,a,i,n;a=document;b=$(this);J=window.XMLHttpRequest;i=true;n=false;c=n;d=$.extend({},$.ieSelectStyle.defaults,d);A={B:function(){var z,y,x;if(!a.all){return n}return b.each(function(){y=$(this);if(y.attr('multiple')||y.attr('size')>0){return n}if(a.documentMode&&a.documentMode>7){c=i}if(!y.attr('id').length){y.attr('id',String((new Date()).getTime()).replace(/\D/gi,'').substr(8))}z=A.I(y);if(d.width!==''){y.css('width',d.x)}if(c){x=y.innerWidth()}else{x=A.M(y,z)}y.data('z',x);A.C(y,z);if(d.applyStyle){A.H(y)}if(d.applyWidth){A.D(y);y.bind('dblclick mousedown change blur',function(w){A.E(w)});y.bind('mousedown mouseup mouseover mouseout blur change',function(w){A.G(w)})}if(!J&&($.fn.bgIframe||$.fn.bgiframe)){$('#'+y.attr('id')+'-container').find('span').bgiframe()}})},C:function(z,y){var x,w,v,u,t=0,s=0,r=0,q=0,p='none',o='none',m='none',l='none';if(!J){v='ie6'}else if(J&&!c){v='ie7'}else if(c){v='ie8'}z.after('<span id="'+z.attr('id')+'-container" class="'+d.containerClassName+' '+(!d.applyStyle?d.noStyleClassName:'')+' '+v+'">'+(!d.applyStyle?'<span></span>':'')+'</span>');if(d.applyStyle){x='#'+z.attr('id')+'-container'}else{x='#'+z.attr('id')+'-container.'+d.noStyleClassName+' span'}$(x).append(z);if(d.applyStyle||c){t=(z.css('paddingTop')!=='0px'?A.N(z.css('paddingTop'))-(c?1:2):0);s=(z.css('paddingRight')!=='0px'?A.N(z.css('paddingRight')):0);r=(z.css('paddingBottom')!=='0px'?A.N(z.css('paddingBottom')):0);q=(z.css('paddingLeft')!=='0px'?A.N(z.css('paddingLeft'))-(c?0:1):0);w=z.css('backgroundColor')!=='transparent'?z.css('backgroundColor'):'#fff';try{p=z.css('borderTopWidth')+' '+y.style.borderTopStyle+' '+z.css('borderTopColor');o=z.css('borderRightWidth')+' '+y.style.borderRightStyle+' '+z.css('borderRightColor');m=z.css('borderBottomWidth')+' '+y.style.borderBottomStyle+' '+z.css('borderBottomColor');l=z.css('borderLeftWidth')+' '+y.style.borderLeftStyle+' '+z.css('borderLeftColor')}catch(err){}z.css({border:'none'})}$('#'+z.attr('id')+'-container.'+d.noStyleClassName+' > span').css({display:'block',overflow:'hidden'});z.data('z',(z.data('z')-(c?s+q:0)));$('#'+z.attr('id')+'-container').css({position:z.css('position')==='static'?'relative':z.css('position'),display:'block',top:z.css('top'),right:z.css('right'),bottom:z.css('bottom'),left:z.css('left'),overflow:'hidden',width:(z.data('z')+(!d.applyStyle||c?0:1)),padding:t+' '+s+' '+r+' '+q,margin:(z.css('marginTop')!=='auto'?z.css('marginTop'):0)+' '+(z.css('marginRight')!=='auto'?z.css('marginRight'):0)+' '+(z.css('marginBottom')!=='auto'?z.css('marginBottom'):0)+' '+(z.css('marginLeft')!=='auto'?z.css('marginLeft'):0),borderTop:p,borderRight:o,borderBottom:m,borderLeft:l,background:w});z.css({position:'relative',top:!d.applyStyle||c?'auto':-1,left:!d.applyStyle||c?'auto':-1,bottom:'auto',right:'auto',zIndex:1,width:(z.data('z')+(!d.applyStyle||c?0:3)),padding:0,margin:0});u=z.parent().parent();if(!d.applyStyle){u=u.parent()}if(!u.css('hasLayout')){u.css('height','1%')}if(d.containerCSS!==''){$('#'+z.attr('id')+'-container').css(d.containerCSS)}if(!J&&($.fn.bgIframe||$.fn.bgiframe)){$('#'+z.attr('id')+'-container span').bgiframe()}},D:function(z){var y,x,w,v,u,t,s,r,q,p,o,m,l;u=z.attr('id');p=u+'-'+d.overlayClassName;z.after('<a id="'+p+'" class="'+d.overlayClassName+'"><span></span></a>');q=$('#'+p);q.bind('mousedown',function(){setTimeout(function(){z.focus()},1)});v=$('#'+z.attr('id')+'-container');w=q.children('span').width();y=v.css('backgroundColor');x=z.css('borderRightStyle')!=='none'?A.N(z.css('borderRightWidth')):0;o=A.N(v.css('paddingRight'));m=A.N(v.css('paddingLeft'));s=(z.outerWidth()-w-(!d.applyStyle||c?0:2))+(c?m:0);l=w+o;t=z.outerHeight();q.css({position:'absolute',display:'none',top:c?z.position().top:'auto',left:s,zIndex:2,width:l,height:t,margin:r,borderRight:x,backgroundColor:y});if(d.overlayCSS!==''){q.css(d.overlayCSS)}},E:function(z){var y,x,w,v,u,t,s;y=$(z.target);x=y.attr('id');w=y.offset();v=$('#'+x+'-'+d.overlayClassName);u=z.pageX;t=z.pageY;s=z.type;if(s==='change'||s==='blur'||s==='dblclick'||(s==='mousedown'&&v.css('display')==='block'&&w.left<u&&(w.left+y.data('z'))>u&&w.top<t&&(w.top+y.outerHeight())>t)){return A.F(z)}if(v.css('display')==='none'){v.css('display','block')}if(!y.data('y')){y.css('width','auto');if(y.outerWidth()<y.parent().innerWidth()){y.css('width',y.data('z'));y.data('y',i)}}},F:function(z){var y=$(z.target);if(!y.data('y')){setTimeout(function(){y.css({width:(y.data('z')+(!d.applyStyle||c?0:3))}).siblings('a.'+d.overlayClassName).css('display','none')},1)}},G:function(z){var y,x,w,v,u,t;y=$(z.target);x=y.offset();w=$('a#'+y.attr('id')+'-'+d.overlayClassName);v=z.pageX;u=z.pageY;t=z.type;if(!w.length){return n}if(x.left<v&&(x.left+y.data('z'))>v&&x.top<u&&(x.top+y.outerHeight())>u){if(t==='mousedown'){w.removeClass().addClass(d.overlayClassName+' '+d.overlayClassName+'-mousedown')}else if(t==='mouseover'){w.removeClass().addClass(d.overlayClassName+' '+d.overlayClassName+'-hover')}}else{w.removeClass().addClass(d.overlayClassName)}},H:function(z){var y;if(c){return n}$('#'+z.attr('id')+'-container').append('<span id="'+z.attr('id')+'-border-mask"></span>');$('#'+z.attr('id')+'-border-mask').append('<span class="a"></span><span class="b"></span><span class="c"></span><span class="d"></span>').append(z).css({position:'relative',display:'block',top:1,width:z.outerWidth()-2,height:z.outerHeight()-2,overflow:'hidden'});y='#'+z.attr('id')+'-border-mask span.';$(y+'a,'+y+'b,'+y+'c,'+y+'d').css({position:'absolute',display:'block',top:0,left:0,zIndex:2,width:(z.outerWidth()-19),height:2,backgroundColor:z.css('backgroundColor')});$(y+'b').css({top:'auto',bottom:0});$(y+'c').css({top:2,width:2,height:(z.outerHeight()-6)});$(y+'d').css({top:2,left:'auto',right:17,width:2,height:(z.outerHeight()-6)})},I:function(z){var y,x,w,v,u;y=a.styleSheets;v=[];x=[];x[0]=0;x[1]='';for(w=0;w<y.length;w++){v=v.concat(A.J(z,y[w].rules))}for(w=0;w<v.length;w++){if(!$(v[w][0]).length){continue}u=A.K(v[w][0]);if(u>x[0]){x[0]=u;x[1]=v[w][1]}}return x[1]},J:function(z,y){var x,w,v,u;u=[];for(w=0;w<y.length;w++){v=y[w].selectorText.toLowerCase();x=A.L(z,v);if((y[w].style.borderTopStyle!==''||y[w].style.borderRightStyle!==''||y[w].style.borderBottomStyle!==''||y[w].style.borderLeftStyle!=='')&&(A.O(v,z.attr('id'))>-1||A.O(v,z.attr('tagName').toLowerCase())>-1||A.O(v,'.')>-1||x)){u.push([v,y[w]])}}return u},K:function(z){var y,x,w;y=z.split(' ');x=0;for(w=0;w<y.length;w++){if(y[w].substr(0,1)==='#'&&A.O(y[w],'.')===-1){x=x+100}else if(y[w].substr(0,1)==='.'&&A.O(y[w],'#')===-1){x=x+(10*(y[w].split('.').length-1))}else if(A.O(y[w],'#')>-1&&A.O(y[w],'.')>-1){x=x+100;x=x+(10*(y[w].split('.').length-1));if(y[w].substr(0,1)!=='#'&&y[w].substr(0,1)!=='.'){x=x+1}}else if(A.O(y[w],'#')!==-1){x=x+101;x=x+(10*(y[w].split('.').length-1))}else if(A.O(y[w],'.')!==-1){x=x+1;x=x+(10*(y[w].split('.').length-1))}else if(y[w]!==''&&y[w]!==' '&&A.O(y[w],'*')===-1&&A.O(y[w],'+')===-1&&A.O(y[w],'>')===-1){x=x+1}if(A.O(y[w],':')>-1){x=x+1}}return x},L:function(z,y){var x,w;x=z.attr('className').split(' ');if(!x.length){return n}for(w=0;w<x.length;w++){if(A.O(y,'.'+x[w])>-1){return w}}},M:function(z,y){var x,w,v;try{w=y.estyle.borderLeftStyle!=='none'?A.N(z.css('borderRightWidth')):0;x=y.style.borderRightStyle!=='none'?A.N(z.css('borderLeftWidth')):0}catch(err){w=0;x=0}if(d.applyStyle){v=(z.outerWidth()-A.N(z.css('paddingLeft'))-A.N(z.css('paddingRight'))-w-x)}else{v=z.outerWidth()}return v},N:function(z){return+z.replace('px','')},O:function(z,y){return z.indexOf(y)}};return A.B()};$.ieSelectStyle.defaults={width:'',containerClassName:'ie-select-width-container',overlayClassName:'ie-select-width-overlay',noStyleClassName:'no-style',containerCSS:'',overlayCSS:'',applyWidth:true,applyStyle:true}})(jQuery);
