/*IE margin fix */
IEmarginFix = { list : [], ss : null, needsFixed: (function() { var ua = navigator.userAgent; return /msie [5-8]\./i.test(ua) && !/mac/i.test(ua) && document.compatMode != "CSS1Compat" && window.attachEvent && document.styleSheets.length > 0; })(), init : function() { if(IEmarginFix.needsFixed) { this.ss = document.styleSheets; var auto, lop, list, s, i, a; auto = []; lop = []; list = []; s = this.getRules(); for(i=0; i<s.length; i++) { if( this.checkMargin(s[i][1]) ) { auto[auto.length] = s[i][0]; } else if( this.checkLopsided(s[i][1]) ) { lop[lop.length] = s[i][0]; } } for(i=0; a = auto[i]; i++) { this.ss[this.ss.length-1].addRule(a, "margin-left : expression( IEmarginFix.autoFix(this) );"); } for(i=0; a = lop[i]; i++) { this.ss[this.ss.length-1].addRule(a, "margin-left : expression( IEmarginFix.lopsidedFix(this) );"); } this.list = auto.length > 0 ? lop.length > 0 ? auto.concat(lop) : auto : lop; window.attachEvent("onload", IEmarginFix.checkInline); } }, autoFix : function(elm) { var rslt = "auto", w = elm.currentStyle.width; var id = elm.id ? "#" + elm.id : elm.className ? elm.tagName + "." + elm.className : elm.tagName; if(w.indexOf("%") != -1) { rslt = ( 100 - parseInt(w) )/2 + "%"; IEmarginFix.ss[IEmarginFix.ss.length-1].addRule(id, "margin-left : " + rslt + "; margin-right : " + rslt + "; width : 100%"); } else IEmarginFix.ss[IEmarginFix.ss.length-1].addRule(id, "margin-left : expression( IEmarginFix.pxAutoFix(this) );"); return rslt; }, pxAutoFix : function(elm) { var rslt, par = elm.parentNode; rslt = par.clientWidth > 0 ? par.clientWidth : par.scrollWidth; rslt = (rslt - elm.offsetWidth) / 2; return Math.max(rslt, 0); }, lopsidedFix : function(elm) { var par = elm.parentNode, parWidth, rslt; parWidth = par.clientWidth > 0 ? par.clientWidth : par.scrollWidth; rslt = parWidth - elm.offsetWidth; if( elm.currentStyle.marginRight.indexOf("px") != -1 ) { rslt -= parseInt( elm.currentStyle.marginRight ); } else if( elm.currentStyle.marginRight.indexOf("%") != -1 ) { rslt -= parseInt(elm.currentStyle.marginRight) * 0.01 * parWidth; } rslt -= ( parseInt(par.currentStyle.paddingLeft) + parseInt(par.currentStyle.paddingRight) ); return rslt; }, checkInline : function() { var i, a, elm, blk, list = [], auto = IEmarginFix.list; for(i=0; a = auto[i]; i++) { if( a.indexOf(".") != -1 ) { list = list.concat( IEmarginFix.getClass( a.substring(a.indexOf(".")+1) ) ); } else if( a.charAt(0) == '#' ) { list[list.length] = document.all[a.substring(1)]; } else { elm = document.getElementsByTagName(a); if(elm.length > 0) { for(i=0; i < elm.length; i++) { list = list.concat( elm.item(i) ); } } } } for(i=0; i<list.length; i++) { elm = list[i]; if(elm && elm.style) { blk = IEmarginFix.getStyle(elm, "display"); if(blk != "block" && ( IEmarginFix.ie50 ? !IEmarginFix.ie50check(elm.tagName) : blk != "list-item" ) ) { elm.style.margin = 0; } } } }, checkMargin : function(str) { return ( str.search(/position\s*:\s*absolute/i) == -1 && ( str.match(/margin\s*:\s*auto(;|$)/i) || str.match(/margin\s*:\s*\S+\s+auto(;|$)/i) || ( str.match(/margin-left\s*:\s*auto/i) && str.match(/margin-right\s*:\s*auto/i) ) || str.match(/margin\s*:\s*\S+\s+auto\s+\S+(;|$)/i) || str.match(/margin\s*:\s*\S+\s+auto\s+\S+\s+auto/i) ) ); }, checkLopsided : function(str) { return ( str.search(/position\s*:\s*absolute/i) == -1 && ( str.match(/margin-left\s*:\s*auto/i) && str.match(/margin-right\s*:\s*\d+(px|%)?/i) || str.match(/margin-left\s*:\s*auto/i) && !str.match(/margin-right/i) ) ); }, getClass : function(cls) { var el, r, i; el = document.all ? document.all : document.getElementsByTagName('*'); r = []; for(i=0; el[i]; i++) { if(el[i].className == cls) { r[r.length] = el[i]; } } if(r.length==0) { r = null; } return r; }, getRules : function(wh) { var s = null; if(document.styleSheets && document.styleSheets.length) { var i, j, k, m, x, y, is = true, screen = true; s = []; for(i=0; i < document.styleSheets.length; i++) { j = document.styleSheets.item(i); if(wh) { is = (j.title || j.id) == wh; } if( typeof j.media == "string" && j.media.length > 0 && !j.media.match(/^(screen)|(media)$/i) ) { screen = false; } else { screen = true; } if(!j.disabled && screen && is) { if(j.rules) { if(j.imports && j.imports.length) { for(k=0; k < j.imports.length; k++) { for(x=0; y = j.imports[k].rules[x]; x++) { s[s.length] = [y.selectorText, y.style.cssText]; } } } for(k=0; m = j.rules[k]; k++) { s[s.length] = [m.selectorText, m.style.cssText]; } } else { return null; } } if(wh && is) { break; } else { is = true; } } } return s; }, getStyle : function(obj,sty) { var sty2 = IEmarginFix.compactStyle(sty); var r = obj.style[sty2]; if(r=='') { if(document.defaultView) { r = document.defaultView.getComputedStyle(obj,'').getPropertyValue(sty); } else r = obj.currentStyle[sty2]; } if(!r) { r = null; } return r; }, compactStyle : function(str) { var s = str.split('-'); var o = [s[0]]; for(i=1;(j=s[i]);i++) { o[o.length] = j.charAt(0).toUpperCase(); o[o.length] = j.substring(1) }; return o.join(''); } }; IEmarginFix.init(); 

/* Browser selector */
function css_browser_selector(u){var ua = u.toLowerCase(),is=function(t){return ua.indexOf(t)>-1;},g='gecko',w='webkit',s='safari',h=document.getElementsByTagName('html')[0],b=[(!(/opera|webtv/i.test(ua))&&/msie\s(\d)/.test(ua))?('ie ie'+RegExp.$1):is('firefox/2')?g+' ff2':is('firefox/3.5')?g+' ff3 ff3_5':is('firefox/3')?g+' ff3':is('gecko/')?g:/opera(\s|\/)(\d+)/.test(ua)?'opera opera'+RegExp.$2:is('konqueror')?'konqueror':is('chrome')?w+' chrome':is('iron')?w+' iron':is('applewebkit/')?w+' '+s+(/version\/(\d+)/.test(ua)?' '+s+RegExp.$1:''):is('mozilla/')?g:'',is('j2me')?'mobile':is('iphone')?'iphone':is('ipod')?'ipod':is('mac')?'mac':is('darwin')?'mac':is('webtv')?'webtv':is('win')?'win':is('freebsd')?'freebsd':(is('x11')||is('linux'))?'linux':'','js']; c = b.join(' '); h.className += ' '+c; return c;}; css_browser_selector(navigator.userAgent);


