Skip to content

Instantly share code, notes, and snippets.

@jnwheeler44
Created September 17, 2011 15:29
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jnwheeler44/1224045 to your computer and use it in GitHub Desktop.
Save jnwheeler44/1224045 to your computer and use it in GitHub Desktop.
Handy CSS3PIE mixins
@mixin pie {
position: relative;
zoom: 1;
behavior: url(/stylesheets/PIE-new.htc);
}
@mixin border-radius($measurements: 5px) {
-moz-border-radius: $measurements;
-webkit-border-radius: $measurements;
border-radius: $measurements;
@include pie;
}
@mixin box-shadow($measurements: 0 1px 3px rgba(0,0,0,0.5)) {
-moz-box-shadow: $measurements;
-webkit-box-shadow: $measurements;
box-shadow: $measurements;
@include pie;
}
@mixin multi-box_shadow($m1: inset 0 1px 3px #fff, $m2: inset 0 -15px #cbe6f2, $m3: 0 0 3px #8ec1da) {
-moz-box-shadow: $m1, $m2, $m3;
-webkit-box-shadow: $m1, $m2, $m3;
box-shadow: $m1, $m2, $m3;
@include pie;
}
@mixin linear-gradient($from: #fff, $to: #ccc) {
background: -webkit-gradient(linear, 0 0, 0 bottom, from($from), to($to));
background: -moz-linear-gradient(top, $from, $to);
background: linear-gradient($from, $to);
-pie-background: linear-gradient($from, $to);
@include pie;
}
@mixin opacity($opacity: 95) {
-moz-opacity: $opacity / 100;
opacity: $opacity / 100;
filter: alpha(opacity=$opacity);
}
@mixin shiny-box {
@include multi-box-shadow(inset 0 3px 4px #fff, inset 0 -1px 2px #646060, 0 0 3px #8ec1da);
}
@mixin shiny-box-hover {
@include multi-box-shadow(inset 0 3px 4px #fff, inset 0 -2px 3px #646060, 0 0 3px #8ec1da);
}
@mixin strike {
text-decoration: line-through;
}
@mixin fauxInvisible {
position:absolute !important;
margin-left: -10000px !important;
}
<!--PIE:CSS3 rendering for IE Version 1.0beta3 http:Dual-licensed for use under the Apache License Version 2.0 or the General Public License(GPL)Version 2.--><PUBLIC:COMPONENT lightWeight="true"><PUBLIC:ATTACH EVENT="oncontentready"FOR="element"ONEVENT="init()"/><PUBLIC:ATTACH EVENT="ondocumentready"FOR="element"ONEVENT="init()"/><PUBLIC:ATTACH EVENT="ondetach"FOR="element"ONEVENT="cleanup()"/><script type="text/javascript">var doc=element.document;var PIE=window['PIE'];if(!PIE){PIE=window['PIE']={CSS_PREFIX:'-pie-',STYLE_PREFIX:'Pie',CLASS_PREFIX:'pie_',tableCellTags:{'TD':1,'TH':1}};try{doc.execCommand('BackgroundImageCache',false,true)}catch(e){}PIE.ieVersion=function(){var v=4,div=doc.createElement('div'),all=div.getElementsByTagName('i');while(div.innerHTML='<!--[if gt IE '+(++v)+']><i></i><![endif]-->',all[0]){}return v}();if(PIE.ieVersion===6){PIE.CSS_PREFIX=PIE.CSS_PREFIX.replace(/^-/,'')}PIE.ie8DocMode=PIE.ieVersion===8&&doc.documentMode;PIE.Util={createVmlElement:function(tag){var vmlPrefix='css3vml',vmlDoc=PIE._vmlCreatorDoc;if(!vmlDoc){vmlDoc=PIE._vmlCreatorDoc=doc.createDocumentFragment();vmlDoc.namespaces.add(vmlPrefix,'urn:schemas-microsoft-com:vml')}return vmlDoc.createElement(vmlPrefix+':'+tag)},getUID:function(obj){return obj&&obj['_pieId']||(obj['_pieId']=+new Date()+Math.random())},merge:function(obj1){var i,len,p,objN,args=arguments;for(i=1,len=args.length;i<len;i++){objN=args[i];for(p in objN){if(objN.hasOwnProperty(p)){obj1[p]=objN[p]}}}return obj1},withImageSize:function(src,func,ctx){var sizes=PIE._imgSizes||(PIE._imgSizes={}),size=sizes[src],img;if(size){func.call(ctx,size)}else{img=new Image();img.onload=function(){size=sizes[src]={w:img.width,h:img.height};func.call(ctx,size);img.onload=null};img.src=src}}};PIE.Observable=function(){this.observers=[];this.indexes={}};PIE.Observable.prototype={observe:function(fn){var id=PIE.Util.getUID(fn),indexes=this.indexes,observers=this.observers;if(!(id in indexes)){indexes[id]=observers.length;observers.push(fn)}},unobserve:function(fn){var id=PIE.Util.getUID(fn),indexes=this.indexes;if(id&&id in indexes){delete this.observers[indexes[id]];delete indexes[id]}},fire:function(){var o=this.observers,i=o.length;while(i--){o[i]&&o[i]()}}};if(true){PIE.Heartbeat=new PIE.Observable();setInterval(function(){PIE.Heartbeat.fire()},250)}PIE.OnBeforeUnload=new PIE.Observable();window.attachEvent('onbeforeunload',function(){PIE.OnBeforeUnload.fire()});PIE.OnBeforeUnload.attachManagedEvent=function(target,name,handler){target.attachEvent(name,handler);this.observe(function(){target.detachEvent(name,handler)})};(function(){PIE.OnResize=new PIE.Observable();function resized(){PIE.OnResize.fire()}PIE.OnBeforeUnload.attachManagedEvent(window,'onresize',resized)})();(function(){PIE.OnScroll=new PIE.Observable();function scrolled(){PIE.OnScroll.fire()}PIE.OnBeforeUnload.attachManagedEvent(window,'onscroll',scrolled);PIE.OnResize.observe(scrolled)})();(function(){var elements;function beforePrint(){elements=PIE.Element.destroyAll()}function afterPrint(){if(elements){for(var i=0,len=elements.length;i<len;i++){PIE['attach'](elements[i])}elements=0}}PIE.OnBeforeUnload.attachManagedEvent(window,'onbeforeprint',beforePrint);PIE.OnBeforeUnload.attachManagedEvent(window,'onafterprint',afterPrint)})();PIE.Length=(function(){var lengthCalcEl=doc.createElement('length-calc'),s=lengthCalcEl.style,numCache={},unitCache={};s.position='absolute';s.top=s.left=-9999;function Length(val){this.val=val}Length.prototype={unitRE:/(px|em|ex|mm|cm|in|pt|pc|%)$/,getNumber:function(){var num=numCache[this.val],UNDEF;if(num===UNDEF){num=numCache[this.val]=parseFloat(this.val)}return num},getUnit:function(){var unit=unitCache[this.val],m;if(!unit){m=this.val.match(this.unitRE);unit=unitCache[this.val]=(m&&m[0])||'px'}return unit},isPercentage:function(){return this.getUnit()==='%'},pixels:function(el,pct100){var num=this.getNumber(),unit=this.getUnit();switch(unit){case"px":return num;case"%":return num*(typeof pct100==='function'?pct100():pct100)/100;case"em":return num*this.getEmPixels(el);case"ex":return num*this.getEmPixels(el)/2;default:return num*Length.conversions[unit]}},getEmPixels:function(el){var fs=el.currentStyle.fontSize,px;if(fs.indexOf('px')>0){return parseFloat(fs)}else{lengthCalcEl.style.width='1em';el.appendChild(lengthCalcEl);px=lengthCalcEl.offsetWidth;if(lengthCalcEl.parentNode!==el){el.removeChild(lengthCalcEl)}return px}}};Length.conversions=(function(){var units=['mm','cm','in','pt','pc'],vals={},parent=doc.documentElement,i=units.length,unit;parent.appendChild(lengthCalcEl);while(i--){unit=units[i];lengthCalcEl.style.width='100'+unit;vals[unit]=lengthCalcEl.offsetWidth/100}parent.removeChild(lengthCalcEl);return vals})();Length.ZERO=new Length('0');return Length})();PIE.BgPosition=(function(){var length_fifty=new PIE.Length('50%'),vert_idents={'top':1,'center':1,'bottom':1},horiz_idents={'left':1,'center':1,'right':1};function BgPosition(tokens){this.tokens=tokens}BgPosition.prototype={getValues:function(){if(!this._values){var tokens=this.tokens,len=tokens.length,identType=PIE.Tokenizer.Type,length_zero=PIE.Length.ZERO,type_ident=identType.IDENT,type_length=identType.LENGTH,type_percent=identType.PERCENT,type,value,vals=['left',length_zero,'top',length_zero];if(len===1){tokens.push({type:type_ident,value:'center'});len++}if(len===2){if(type_ident&(tokens[0].type|tokens[1].type)&&tokens[0].value in vert_idents&&tokens[1].value in horiz_idents){tokens.push(tokens.shift())}if(tokens[0].type&type_ident){if(tokens[0].value==='center'){vals[1]=length_fifty}else{vals[0]=tokens[0].value}}else if(tokens[0].isLengthOrPercent()){vals[1]=new PIE.Length(tokens[0].value)}if(tokens[1].type&type_ident){if(tokens[1].value==='center'){vals[3]=length_fifty}else{vals[2]=tokens[1].value}}else if(tokens[1].isLengthOrPercent()){vals[3]=new PIE.Length(tokens[1].value)}}else{}this._values=vals}return this._values},coords:function(el,width,height){var vals=this.getValues(),pxX=vals[1].pixels(el,width),pxY=vals[3].pixels(el,height);return{x:vals[0]==='right'?width-pxX:pxX,y:vals[2]==='bottom'?height-pxY:pxY}}};return BgPosition})();PIE.Angle=(function(){function Angle(val){this.val=val}Angle.prototype={unitRE:/[a-z]+$/i,getUnit:function(){return this._unit||(this._unit=this.val.match(this.unitRE)[0].toLowerCase())},degrees:function(){var deg=this._deg,u,n;if(deg===undefined){u=this.getUnit();n=parseFloat(this.val,10);deg=this._deg=(u==='deg'?n:u==='rad'?n/Math.PI*180:u==='grad'?n/400*360:u==='turn'?n*360:0)}return deg}};return Angle})();PIE.Color=(function(){function Color(val){this.val=val}Color.rgbaRE=/\s*rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d+|\d*\.\d+)\s*\)\s*/;Color.prototype={parse:function(){if(!this._color){var v=this.val,m=v.match(Color.rgbaRE);if(m){this._color='rgb('+m[1]+','+m[2]+','+m[3]+')';this._alpha=parseFloat(m[4])}else{this._color=v;this._alpha=(v==='transparent'?0:1)}}},value:function(el){this.parse();return this._color==='currentColor'?el.currentStyle.color:this._color},alpha:function(){this.parse();return this._alpha}};return Color})();PIE.Tokenizer=(function(){function Tokenizer(css){this.css=css;this.ch=0;this.tokens=[];this.tokenIndex=0}var Type=Tokenizer.Type={ANGLE:1,CHARACTER:2,COLOR:4,DIMEN:8,FUNCTION:16,IDENT:32,LENGTH:64,NUMBER:128,OPERATOR:256,PERCENT:512,STRING:1024,URL:2048};Tokenizer.Token=function(type,value){this.type=type;this.value=value};Tokenizer.Token.prototype={isLength:function(){return this.type&Type.LENGTH||(this.type&Type.NUMBER&&this.value==='0')},isLengthOrPercent:function(){return this.isLength()||this.type&Type.PERCENT}};Tokenizer.prototype={whitespace:/\s/,number:/^[\+\-]?(\d*\.)?\d+/,url:/^url\(\s*("([^"]*)"|'([^']*)'|([!#$%&*-~]*))\s*\)/i,ident:/^\-?[_a-z][\w-]*/i,string:/^("([^"]*)"|'([^']*)')/,operator:/^[\/,]/,hash:/^#[\w]+/,hashColor:/^#([\da-f]{6}|[\da-f]{3})/i,unitTypes:{'px':Type.LENGTH,'em':Type.LENGTH,'ex':Type.LENGTH,'mm':Type.LENGTH,'cm':Type.LENGTH,'in':Type.LENGTH,'pt':Type.LENGTH,'pc':Type.LENGTH,'deg':Type.ANGLE,'rad':Type.ANGLE,'grad':Type.ANGLE},colorNames:{'aqua':1,'black':1,'blue':1,'fuchsia':1,'gray':1,'green':1,'lime':1,'maroon':1,'navy':1,'olive':1,'purple':1,'red':1,'silver':1,'teal':1,'white':1,'yellow':1,'currentColor':1},colorFunctions:{'rgb':1,'rgba':1,'hsl':1,'hsla':1},next:function(forget){var css,ch,firstChar,match,type,val,me=this;function newToken(type,value){var tok=new Tokenizer.Token(type,value);if(!forget){me.tokens.push(tok);me.tokenIndex++}return tok}function failure(){me.tokenIndex++;return null}if(this.tokenIndex<this.tokens.length){return this.tokens[this.tokenIndex++]}while(this.whitespace.test(this.css.charAt(this.ch))){this.ch++}if(this.ch>=this.css.length){return failure()}ch=this.ch;css=this.css.substring(this.ch);firstChar=css.charAt(0);switch(firstChar){case'#':if(match=css.match(this.hashColor)){this.ch+=match[0].length;return newToken(Type.COLOR,match[0])}break;case'"':case"'":if(match=css.match(this.string)){this.ch+=match[0].length;return newToken(Type.STRING,match[2]||match[3]||'')}break;case"/":case",":this.ch++;return newToken(Type.OPERATOR,firstChar);case'u':if(match=css.match(this.url)){this.ch+=match[0].length;return newToken(Type.URL,match[2]||match[3]||match[4]||'')}}if(match=css.match(this.number)){val=match[0];this.ch+=val.length;if(css.charAt(val.length)==='%'){this.ch++;return newToken(Type.PERCENT,val+'%')}if(match=css.substring(val.length).match(this.ident)){val+=match[0];this.ch+=match[0].length;return newToken(this.unitTypes[match[0].toLowerCase()]||Type.DIMEN,val)}return newToken(Type.NUMBER,val)}if(match=css.match(this.ident)){val=match[0];this.ch+=val.length;if(val.toLowerCase()in this.colorNames){return newToken(Type.COLOR,val)}if(css.charAt(val.length)==='('){this.ch++;if(val.toLowerCase()in this.colorFunctions){function isNum(tok){return tok&&tok.type&Type.NUMBER}function isNumOrPct(tok){return tok&&(tok.type&(Type.NUMBER|Type.PERCENT))}function isValue(tok,val){return tok&&tok.value===val}function next(){return me.next(1)}if((val.charAt(0)==='r'?isNumOrPct(next()):isNum(next()))&&isValue(next(),',')&&isNumOrPct(next())&&isValue(next(),',')&&isNumOrPct(next())&&(val==='rgb'||val==='hsa'||(isValue(next(),',')&&isNum(next())))&&isValue(next(),')')){return newToken(Type.COLOR,this.css.substring(ch,this.ch))}return failure()}return newToken(Type.FUNCTION,val+'(')}return newToken(Type.IDENT,val)}this.ch++;return newToken(Type.CHARACTER,firstChar)},hasNext:function(){var next=this.next();this.prev();return!!next},prev:function(){return this.tokens[this.tokenIndex-- -2]},all:function(){while(this.next()){}return this.tokens},until:function(func,require){var list=[],t,hit;while(t=this.next()){if(func(t)){hit=true;this.prev();break}list.push(t)}return require&&!hit?null:list}};return Tokenizer})();PIE.BoundsInfo=function(el){this.targetElement=el};PIE.BoundsInfo.prototype={_locked:0,positionChanged:function(){var last=this._lastBounds,bounds;return!last||((bounds=this.getBounds())&&(last.x!==bounds.x||last.y!==bounds.y))},sizeChanged:function(){var last=this._lastBounds,bounds;return!last||((bounds=this.getBounds())&&(last.w!==bounds.w||last.h!==bounds.h))},getLiveBounds:function(){var rect=this.targetElement.getBoundingClientRect();return{x:rect.left,y:rect.top,w:rect.right-rect.left,h:rect.bottom-rect.top}},getBounds:function(){return this._locked?(this._lockedBounds||(this._lockedBounds=this.getLiveBounds())):this.getLiveBounds()},hasBeenQueried:function(){return!!this._lastBounds},lock:function(){++this._locked},unlock:function(){if(!--this._locked){if(this._lockedBounds)this._lastBounds=this._lockedBounds;this._lockedBounds=null}}};(function(){function cacheWhenLocked(fn){var uid=PIE.Util.getUID(fn);return function(){if(this._locked){var cache=this._lockedValues||(this._lockedValues={});return(uid in cache)?cache[uid]:(cache[uid]=fn.call(this))}else{return fn.call(this)}}}PIE.StyleInfoBase={_locked:0,newStyleInfo:function(proto){function StyleInfo(el){this.targetElement=el}PIE.Util.merge(StyleInfo.prototype,PIE.StyleInfoBase,proto);StyleInfo._propsCache={};return StyleInfo},getProps:function(){var css=this.getCss(),cache=this.constructor._propsCache;return css?(css in cache?cache[css]:(cache[css]=this.parseCss(css))):null},getCss:cacheWhenLocked(function(){var el=this.targetElement,ctor=this.constructor,s=el.style,cs=el.currentStyle,cssProp=this.cssProperty,styleProp=this.styleProperty,prefixedCssProp=ctor._prefixedCssProp||(ctor._prefixedCssProp=PIE.CSS_PREFIX+cssProp),prefixedStyleProp=ctor._prefixedStyleProp||(ctor._prefixedStyleProp=PIE.STYLE_PREFIX+styleProp.charAt(0).toUpperCase()+styleProp.substring(1));return s[prefixedStyleProp]||cs.getAttribute(prefixedCssProp)||s[styleProp]||cs.getAttribute(cssProp)}),isActive:cacheWhenLocked(function(){return!!this.getProps()}),changed:cacheWhenLocked(function(){var currentCss=this.getCss(),changed=currentCss!==this._lastCss;this._lastCss=currentCss;return changed}),cacheWhenLocked:cacheWhenLocked,lock:function(){++this._locked},unlock:function(){if(!--this._locked){delete this._lockedValues}}}})();PIE.BackgroundStyleInfo=PIE.StyleInfoBase.newStyleInfo({cssProperty:PIE.CSS_PREFIX+'background',styleProperty:PIE.STYLE_PREFIX+'Background',attachIdents:{'scroll':1,'fixed':1,'local':1},repeatIdents:{'repeat-x':1,'repeat-y':1,'repeat':1,'no-repeat':1},originIdents:{'padding-box':1,'border-box':1,'content-box':1},clipIdents:{'padding-box':1,'border-box':1},positionIdents:{'top':1,'right':1,'bottom':1,'left':1,'center':1},sizeIdents:{'contain':1,'cover':1},parseCss:function(css){var el=this.targetElement,cs=el.currentStyle,tokenizer,token,image,tok_type=PIE.Tokenizer.Type,type_operator=tok_type.OPERATOR,type_ident=tok_type.IDENT,type_color=tok_type.COLOR,tokType,tokVal,positionIdents=this.positionIdents,gradient,stop,props=null;function isBgPosToken(token){return token.isLengthOrPercent()||(token.type&type_ident&&token.value in positionIdents)}function sizeToken(token){return(token.isLengthOrPercent()&&new PIE.Length(token.value))||(token.value==='auto'&&'auto')}if(this.getCss3()){tokenizer=new PIE.Tokenizer(css);props={images:[]};image={};while(token=tokenizer.next()){tokType=token.type;tokVal=token.value;if(!image.type&&tokType&tok_type.FUNCTION&&tokVal==='linear-gradient('){gradient={stops:[],type:'linear-gradient'};stop={};while(token=tokenizer.next()){tokType=token.type;tokVal=token.value;if(tokType&tok_type.CHARACTER&&tokVal===')'){if(stop.color){gradient.stops.push(stop)}if(gradient.stops.length>1){PIE.Util.merge(image,gradient)}break}if(tokType&type_color){if(gradient.angle||gradient.gradientStart){token=tokenizer.prev();if(token.type!==type_operator){break}tokenizer.next()}stop={color:new PIE.Color(tokVal)};token=tokenizer.next();if(token.isLengthOrPercent()){stop.offset=new PIE.Length(token.value)}else{tokenizer.prev()}}else if(tokType&tok_type.ANGLE&&!gradient.angle&&!stop.color&&!gradient.stops.length){gradient.angle=new PIE.Angle(token.value)}else if(isBgPosToken(token)&&!gradient.gradientStart&&!stop.color&&!gradient.stops.length){tokenizer.prev();gradient.gradientStart=new PIE.BgPosition(tokenizer.until(function(t){return!isBgPosToken(t)},false))}else if(tokType&type_operator&&tokVal===','){if(stop.color){gradient.stops.push(stop);stop={}}}else{break}}}else if(!image.type&&tokType&tok_type.URL){image.url=tokVal;image.type='image'}else if(isBgPosToken(token)&&!image.size){tokenizer.prev();image.position=new PIE.BgPosition(tokenizer.until(function(t){return!isBgPosToken(t)},false))}else if(tokType&type_ident){if(tokVal in this.repeatIdents){image.repeat=tokVal}else if(tokVal in this.originIdents){image.origin=tokVal;if(tokVal in this.clipIdents){image.clip=tokVal}}else if(tokVal in this.attachIdents){image.attachment=tokVal}}else if(tokType&type_color&&!props.color){props.color=new PIE.Color(tokVal)}else if(tokType&type_operator){if(tokVal==='/'){token=tokenizer.next();tokType=token.type;tokVal=token.value;if(tokType&type_ident&&tokVal in this.sizeIdents){image.size=tokVal}else if(tokVal=sizeToken(token)){image.size={w:tokVal,h:sizeToken(tokenizer.next())||(tokenizer.prev()&&tokVal)}}}else if(tokVal===','&&image.type){props.images.push(image);image={}}}else{return null}}if(image.type){props.images.push(image)}}else{this.withActualBg(function(){var posX=cs.backgroundPositionX,posY=cs.backgroundPositionY,img=cs.backgroundImage,color=cs.backgroundColor;props={};if(color!=='transparent'){props.color=new PIE.Color(color)}if(img!=='none'){props.images=[{type:'image',url:new PIE.Tokenizer(img).next().value,repeat:cs.backgroundRepeat,position:new PIE.BgPosition(new PIE.Tokenizer(posX+' '+posY).all())}]}})}return(props&&(props.color||(props.images&&props.images[0])))?props:null},withActualBg:function(fn){var rs=this.targetElement.runtimeStyle,rsImage=rs.backgroundImage,rsColor=rs.backgroundColor,ret;if(rsImage)rs.backgroundImage='';if(rsColor)rs.backgroundColor='';ret=fn.call(this);if(rsImage)rs.backgroundImage=rsImage;if(rsColor)rs.backgroundColor=rsColor;return ret},getCss:PIE.StyleInfoBase.cacheWhenLocked(function(){return this.getCss3()||this.withActualBg(function(){var cs=this.targetElement.currentStyle;return cs.backgroundColor+' '+cs.backgroundImage+' '+cs.backgroundRepeat+' '+cs.backgroundPositionX+' '+cs.backgroundPositionY})}),getCss3:PIE.StyleInfoBase.cacheWhenLocked(function(){var el=this.targetElement;return el.style[this.styleProperty]||el.currentStyle.getAttribute(this.cssProperty)}),isPngFix:function(){var val=0,el;if(PIE.ieVersion<7){el=this.targetElement;val=(''+(el.style[PIE.STYLE_PREFIX+'PngFix']||el.currentStyle.getAttribute(PIE.CSS_PREFIX+'png-fix'))==='true')}return val},isActive:PIE.StyleInfoBase.cacheWhenLocked(function(){return(this.getCss3()||this.isPngFix())&&!!this.getProps()})});PIE.BorderStyleInfo=PIE.StyleInfoBase.newStyleInfo({sides:['Top','Right','Bottom','Left'],namedWidths:{thin:'1px',medium:'3px',thick:'5px'},parseCss:function(css){var w={},s={},c={},active=false,colorsSame=true,stylesSame=true,widthsSame=true;this.withActualBorder(function(){var el=this.targetElement,cs=el.currentStyle,i=0,style,color,width,lastStyle,lastColor,lastWidth,side,ltr;for(;i<4;i++){side=this.sides[i];ltr=side.charAt(0).toLowerCase();style=s[ltr]=cs['border'+side+'Style'];color=cs['border'+side+'Color'];width=cs['border'+side+'Width'];if(i>0){if(style!==lastStyle){stylesSame=false}if(color!==lastColor){colorsSame=false}if(width!==lastWidth){widthsSame=false}}lastStyle=style;lastColor=color;lastWidth=width;c[ltr]=new PIE.Color(color);width=w[ltr]=new PIE.Length(s[ltr]==='none'?'0':(this.namedWidths[width]||width));if(width.pixels(this.targetElement)>0){active=true}}});return active?{widths:w,styles:s,colors:c,widthsSame:widthsSame,colorsSame:colorsSame,stylesSame:stylesSame}:null},getCss:PIE.StyleInfoBase.cacheWhenLocked(function(){var el=this.targetElement,cs=el.currentStyle,css;if(!(el.tagName in PIE.tableCellTags&&el.offsetParent.currentStyle.borderCollapse==='collapse')){this.withActualBorder(function(){css=cs.borderWidth+'|'+cs.borderStyle+'|'+cs.borderColor})}return css}),withActualBorder:function(fn){var rs=this.targetElement.runtimeStyle,rsWidth=rs.borderWidth,rsColor=rs.borderColor,ret;if(rsWidth)rs.borderWidth='';if(rsColor)rs.borderColor='';ret=fn.call(this);if(rsWidth)rs.borderWidth=rsWidth;if(rsColor)rs.borderColor=rsColor;return ret}});(function(){PIE.BorderRadiusStyleInfo=PIE.StyleInfoBase.newStyleInfo({cssProperty:'border-radius',styleProperty:'borderRadius',parseCss:function(css){var p=null,x,y,tokenizer,token,length,hasNonZero=false;function newLength(v){return new PIE.Length(v)}if(css){tokenizer=new PIE.Tokenizer(css);function collectLengths(){var arr=[],num;while((token=tokenizer.next())&&token.isLengthOrPercent()){length=newLength(token.value);num=length.getNumber();if(num<0){return null}if(num>0){hasNonZero=true}arr.push(length)}return arr.length>0&&arr.length<5?{'tl':arr[0],'tr':arr[1]||arr[0],'br':arr[2]||arr[0],'bl':arr[3]||arr[1]||arr[0]}:null}if(x=collectLengths()){if(token){if(token.type&PIE.Tokenizer.Type.OPERATOR&&token.value==='/'){y=collectLengths()}}else{y=x}if(hasNonZero&&x&&y){p={x:x,y:y}}}}return p}});var ZERO=PIE.Length.ZERO,zeros={'tl':ZERO,'tr':ZERO,'br':ZERO,'bl':ZERO};PIE.BorderRadiusStyleInfo.ALL_ZERO={x:zeros,y:zeros}})();PIE.BorderImageStyleInfo=PIE.StyleInfoBase.newStyleInfo({cssProperty:'border-image',styleProperty:'borderImage',repeatIdents:{'stretch':1,'round':1,'repeat':1,'space':1},parseCss:function(css){var p=null,tokenizer,token,type,value,slices,widths,outsets,slashCount=0,cs,Type=PIE.Tokenizer.Type,IDENT=Type.IDENT,NUMBER=Type.NUMBER,LENGTH=Type.LENGTH,PERCENT=Type.PERCENT;if(css){tokenizer=new PIE.Tokenizer(css);p={};function isSlash(token){return token&&(token.type&Type.OPERATOR)&&(token.value==='/')}function isFillIdent(token){return token&&(token.type&IDENT)&&(token.value==='fill')}function collectSlicesEtc(){slices=tokenizer.until(function(tok){return!(tok.type&(NUMBER|PERCENT))});if(isFillIdent(tokenizer.next())&&!p.fill){p.fill=true}else{tokenizer.prev()}if(isSlash(tokenizer.next())){slashCount++;widths=tokenizer.until(function(tok){return!(token.type&(NUMBER|PERCENT|LENGTH))&&!((token.type&IDENT)&&token.value==='auto')});if(isSlash(tokenizer.next())){slashCount++;outsets=tokenizer.until(function(tok){return!(token.type&(NUMBER|LENGTH))})}}else{tokenizer.prev()}}while(token=tokenizer.next()){type=token.type;value=token.value;if(type&(NUMBER|PERCENT)&&!slices){tokenizer.prev();collectSlicesEtc()}else if(isFillIdent(token)&&!p.fill){p.fill=true;collectSlicesEtc()}else if((type&IDENT)&&this.repeatIdents[value]&&!p.repeat){p.repeat={h:value};if(token=tokenizer.next()){if((token.type&IDENT)&&this.repeatIdents[token.value]){p.repeat.v=token.value}else{tokenizer.prev()}}}else if((type&Type.URL)&&!p.src){p.src=value}else{return null}}if(!p.src||!slices||slices.length<1||slices.length>4||(widths&&widths.length>4)||(slashCount===1&&widths.length<1)||(outsets&&outsets.length>4)||(slashCount===2&&outsets.length<1)){return null}if(!p.repeat){p.repeat={h:'stretch'}}if(!p.repeat.v){p.repeat.v=p.repeat.h}function distributeSides(tokens,convertFn){return{t:convertFn(tokens[0]),r:convertFn(tokens[1]||tokens[0]),b:convertFn(tokens[2]||tokens[0]),l:convertFn(tokens[3]||tokens[1]||tokens[0])}}p.slice=distributeSides(slices,function(tok){return new PIE.Length((tok.type&NUMBER)?tok.value+'px':tok.value)});p.width=widths&&widths.length>0?distributeSides(widths,function(tok){return tok.type&(LENGTH|PERCENT)?new PIE.Length(tok.value):tok.value}):(cs=this.targetElement.currentStyle)&&{t:new PIE.Length(cs.borderTopWidth),r:new PIE.Length(cs.borderRightWidth),b:new PIE.Length(cs.borderBottomWidth),l:new PIE.Length(cs.borderLeftWidth)};p.outset=distributeSides(outsets||[0],function(tok){return tok.type&LENGTH?new PIE.Length(tok.value):tok.value})}return p}});PIE.BoxShadowStyleInfo=PIE.StyleInfoBase.newStyleInfo({cssProperty:'box-shadow',styleProperty:'boxShadow',parseCss:function(css){var props,Length=PIE.Length,Type=PIE.Tokenizer.Type,tokenizer;if(css){tokenizer=new PIE.Tokenizer(css);props={outset:[],inset:[]};function parseItem(){var token,type,value,color,lengths,inset,len;while(token=tokenizer.next()){value=token.value;type=token.type;if(type&Type.OPERATOR&&value===','){break}else if(token.isLength()&&!lengths){tokenizer.prev();lengths=tokenizer.until(function(token){return!token.isLength()})}else if(type&Type.COLOR&&!color){color=value}else if(type&Type.IDENT&&value==='inset'&&!inset){inset=true}else{return false}}len=lengths&&lengths.length;if(len>1&&len<5){(inset?props.inset:props.outset).push({xOffset:new Length(lengths[0].value),yOffset:new Length(lengths[1].value),blur:new Length(lengths[2]?lengths[2].value:'0'),spread:new Length(lengths[3]?lengths[3].value:'0'),color:new PIE.Color(color||'currentColor')});return true}return false}while(parseItem()){}}return props&&(props.inset.length||props.outset.length)?props:null}});PIE.VisibilityStyleInfo=PIE.StyleInfoBase.newStyleInfo({getCss:PIE.StyleInfoBase.cacheWhenLocked(function(){var cs=this.targetElement.currentStyle;return cs.visibility+'|'+cs.display}),parseCss:function(){var el=this.targetElement,rs=el.runtimeStyle,cs=el.currentStyle,rsVis=rs.visibility,csVis;rs.visibility='';csVis=cs.visibility;rs.visibility=rsVis;return{visible:csVis!=='hidden',displayed:cs.display!=='none'}},isActive:function(){return false}});PIE.RendererBase={newRenderer:function(proto){function Renderer(el,boundsInfo,styleInfos,parent){this.targetElement=el;this.boundsInfo=boundsInfo;this.styleInfos=styleInfos;this.parent=parent}PIE.Util.merge(Renderer.prototype,PIE.RendererBase,proto);return Renderer},isPositioned:false,needsUpdate:function(){return false},updateProps:function(){this.destroy();if(this.isActive()){this.draw()}},updatePos:function(){this.isPositioned=true},updateSize:function(){if(this.isActive()){this.draw()}else{this.destroy()}},addLayer:function(index,el){this.removeLayer(index);for(var layers=this._layers||(this._layers=[]),i=index+1,len=layers.length,layer;i<len;i++){layer=layers[i];if(layer){break}}layers[index]=el;this.getBox().insertBefore(el,layer||null)},getLayer:function(index){var layers=this._layers;return layers&&layers[index]||null},removeLayer:function(index){var layer=this.getLayer(index),box=this._box;if(layer&&box){box.removeChild(layer);this._layers[index]=null}},getShape:function(name,subElName,parent,group){var shapes=this._shapes||(this._shapes={}),shape=shapes[name],s;if(!shape){shape=shapes[name]=PIE.Util.createVmlElement('shape');if(subElName){shape.appendChild(shape[subElName]=PIE.Util.createVmlElement(subElName))}if(group){parent=this.getLayer(group);if(!parent){this.addLayer(group,doc.createElement('group'+group));parent=this.getLayer(group)}}parent.appendChild(shape);s=shape.style;s.position='absolute';s.left=s.top=0;s['behavior']='url(#default#VML)'}return shape},deleteShape:function(name){var shapes=this._shapes,shape=shapes&&shapes[name];if(shape){shape.parentNode.removeChild(shape);delete shapes[name]}return!!shape},getRadiiPixels:function(radii){var el=this.targetElement,bounds=this.boundsInfo.getBounds(),w=bounds.w,h=bounds.h,tlX,tlY,trX,trY,brX,brY,blX,blY,f;tlX=radii.x['tl'].pixels(el,w);tlY=radii.y['tl'].pixels(el,h);trX=radii.x['tr'].pixels(el,w);trY=radii.y['tr'].pixels(el,h);brX=radii.x['br'].pixels(el,w);brY=radii.y['br'].pixels(el,h);blX=radii.x['bl'].pixels(el,w);blY=radii.y['bl'].pixels(el,h);f=Math.min(w/(tlX+trX),h/(trY+brY),w/(blX+brX),h/(tlY+blY));if(f<1){tlX*=f;tlY*=f;trX*=f;trY*=f;brX*=f;brY*=f;blX*=f;blY*=f}return{x:{'tl':tlX,'tr':trX,'br':brX,'bl':blX},y:{'tl':tlY,'tr':trY,'br':brY,'bl':blY}}},getBoxPath:function(shrink,mult,radii){mult=mult||1;var r,str,bounds=this.boundsInfo.getBounds(),w=bounds.w*mult,h=bounds.h*mult,radInfo=this.styleInfos.borderRadiusInfo,floor=Math.floor,ceil=Math.ceil,shrinkT=shrink?shrink.t*mult:0,shrinkR=shrink?shrink.r*mult:0,shrinkB=shrink?shrink.b*mult:0,shrinkL=shrink?shrink.l*mult:0,tlX,tlY,trX,trY,brX,brY,blX,blY;if(radii||radInfo.isActive()){r=this.getRadiiPixels(radii||radInfo.getProps());tlX=r.x['tl']*mult;tlY=r.y['tl']*mult;trX=r.x['tr']*mult;trY=r.y['tr']*mult;brX=r.x['br']*mult;brY=r.y['br']*mult;blX=r.x['bl']*mult;blY=r.y['bl']*mult;str='m'+floor(shrinkL)+','+floor(tlY)+'qy'+floor(tlX)+','+floor(shrinkT)+'l'+ceil(w-trX)+','+floor(shrinkT)+'qx'+ceil(w-shrinkR)+','+floor(trY)+'l'+ceil(w-shrinkR)+','+ceil(h-brY)+'qy'+ceil(w-brX)+','+ceil(h-shrinkB)+'l'+floor(blX)+','+ceil(h-shrinkB)+'qx'+floor(shrinkL)+','+ceil(h-blY)+' x e'}else{str='m'+floor(shrinkL)+','+floor(shrinkT)+'l'+ceil(w-shrinkR)+','+floor(shrinkT)+'l'+ceil(w-shrinkR)+','+ceil(h-shrinkB)+'l'+floor(shrinkL)+','+ceil(h-shrinkB)+'xe'}return str},getBox:function(){var box=this.parent.getLayer(this.boxZIndex),s;if(!box){box=doc.createElement(this.boxName);s=box.style;s.position='absolute';s.top=s.left=0;this.parent.addLayer(this.boxZIndex,box)}return box},destroy:function(){this.parent.removeLayer(this.boxZIndex);delete this._shapes;delete this._layers}};PIE.RootRenderer=PIE.RendererBase.newRenderer({isActive:function(){var children=this.childRenderers;for(var i in children){if(children.hasOwnProperty(i)&&children[i].isActive()){return true}}return false},needsUpdate:function(){return this.styleInfos.visibilityInfo.changed()},updatePos:function(){if(this.isActive()){var el=this.getPositioningElement(),par=el,docEl,parRect,tgtCS=el.currentStyle,tgtPos=tgtCS.position,boxPos,s=this.getBox().style,cs,x=0,y=0,elBounds=this.boundsInfo.getBounds();if(tgtPos==='fixed'&&PIE.ieVersion>6){x=elBounds.x;y=elBounds.y;boxPos=tgtPos}else{do{par=par.offsetParent}while(par&&(par.currentStyle.position==='static'));if(par){parRect=par.getBoundingClientRect();cs=par.currentStyle;x=elBounds.x-parRect.left-(parseFloat(cs.borderLeftWidth)||0);y=elBounds.y-parRect.top-(parseFloat(cs.borderTopWidth)||0)}else{docEl=doc.documentElement;x=elBounds.x+docEl.scrollLeft-docEl.clientLeft;y=elBounds.y+docEl.scrollTop-docEl.clientTop}boxPos='absolute'}s.position=boxPos;s.left=x;s.top=y;s.zIndex=tgtPos==='static'?-1:tgtCS.zIndex;this.isPositioned=true}},updateSize:function(){},updateVisibility:function(){var vis=this.styleInfos.visibilityInfo.getProps();this.getBox().style.display=(vis.visible&&vis.displayed)?'':'none'},updateProps:function(){if(this.isActive()){this.updateVisibility()}else{this.destroy()}},getPositioningElement:function(){var el=this.targetElement;return el.tagName in PIE.tableCellTags?el.offsetParent:el},getBox:function(){var box=this._box,el;if(!box){el=this.getPositioningElement();box=this._box=doc.createElement('css3-container');this.updateVisibility();el.parentNode.insertBefore(box,el)}return box},destroy:function(){var box=this._box,par;if(box&&(par=box.parentNode)){par.removeChild(box)}delete this._box;delete this._layers}});PIE.BackgroundRenderer=PIE.RendererBase.newRenderer({boxZIndex:2,boxName:'background',needsUpdate:function(){var si=this.styleInfos;return si.backgroundInfo.changed()||si.borderRadiusInfo.changed()},isActive:function(){var si=this.styleInfos;return si.borderImageInfo.isActive()||si.borderRadiusInfo.isActive()||si.backgroundInfo.isActive()||(si.boxShadowInfo.isActive()&&si.boxShadowInfo.getProps().inset)},draw:function(){var bounds=this.boundsInfo.getBounds();if(bounds.w&&bounds.h){this.drawBgColor();this.drawBgImages()}},drawBgColor:function(){var props=this.styleInfos.backgroundInfo.getProps(),bounds=this.boundsInfo.getBounds(),el=this.targetElement,color=props&&props.color,shape,w,h,s,alpha;if(color&&color.alpha()>0){this.hideBackground();shape=this.getShape('bgColor','fill',this.getBox(),1);w=bounds.w;h=bounds.h;shape.stroked=false;shape.coordsize=w*2+','+h*2;shape.coordorigin='1,1';shape.path=this.getBoxPath(null,2);s=shape.style;s.width=w;s.height=h;shape.fill.color=color.value(el);alpha=color.alpha();if(alpha<1){shape.fill.opacity=alpha}}else{this.deleteShape('bgColor')}},drawBgImages:function(){var props=this.styleInfos.backgroundInfo.getProps(),bounds=this.boundsInfo.getBounds(),images=props&&props.images,img,shape,w,h,s,i;if(images){this.hideBackground();w=bounds.w;h=bounds.h;i=images.length;while(i--){img=images[i];shape=this.getShape('bgImage'+i,'fill',this.getBox(),2);shape.stroked=false;shape.fill.type='tile';shape.fillcolor='none';shape.coordsize=w*2+','+h*2;shape.coordorigin='1,1';shape.path=this.getBoxPath(0,2);s=shape.style;s.width=w;s.height=h;if(img.type==='linear-gradient'){this.addLinearGradient(shape,img)}else{shape.fill.src=img.url;this.positionBgImage(shape,i)}}}i=images?images.length:0;while(this.deleteShape('bgImage'+i++)){}},positionBgImage:function(shape,index){PIE.Util.withImageSize(shape.fill.src,function(size){var fill=shape.fill,el=this.targetElement,bounds=this.boundsInfo.getBounds(),elW=bounds.w,elH=bounds.h,si=this.styleInfos,border=si.borderInfo.getProps(),bw=border&&border.widths,bwT=bw?bw['t'].pixels(el):0,bwR=bw?bw['r'].pixels(el):0,bwB=bw?bw['b'].pixels(el):0,bwL=bw?bw['l'].pixels(el):0,bg=si.backgroundInfo.getProps().images[index],bgPos=bg.position?bg.position.coords(el,elW-size.w-bwL-bwR,elH-size.h-bwT-bwB):{x:0,y:0},repeat=bg.repeat,pxX,pxY,clipT=0,clipL=0,clipR=elW+1,clipB=elH+1,clipAdjust=PIE.ieVersion===8?0:1;pxX=Math.round(bgPos.x)+bwL+0.5;pxY=Math.round(bgPos.y)+bwT+0.5;fill.position=(pxX/elW)+','+(pxY/elH);if(repeat&&repeat!=='repeat'){if(repeat==='repeat-x'||repeat==='no-repeat'){clipT=pxY+1;clipB=pxY+size.h+clipAdjust}if(repeat==='repeat-y'||repeat==='no-repeat'){clipL=pxX+1;clipR=pxX+size.w+clipAdjust}shape.style.clip='rect('+clipT+'px,'+clipR+'px,'+clipB+'px,'+clipL+'px)'}},this)},addLinearGradient:function(shape,info){var el=this.targetElement,bounds=this.boundsInfo.getBounds(),w=bounds.w,h=bounds.h,fill=shape.fill,angle=info.angle,startPos=info.gradientStart,stops=info.stops,stopCount=stops.length,PI=Math.PI,UNDEF,startX,startY,endX,endY,startCornerX,startCornerY,endCornerX,endCornerY,vmlAngle,vmlGradientLength,vmlColors,deltaX,deltaY,lineLength,stopPx,vmlOffsetPct,p,i,j,before,after;function perpendicularIntersect(x1,y1,angle,x2,y2){if(angle===0||angle===180){return[x2,y1]}else if(angle===90||angle===270){return[x1,y2]}else{var a1=Math.tan(-angle*PI/180),c1=a1*x1-y1,a2=-1/a1,c2=a2*x2-y2,d=a2-a1,endX=(c2-c1)/d,endY=(a1*c2-a2*c1)/d;return[endX,endY]}}function findCorners(){startCornerX=(angle>=90&&angle<270)?w:0;startCornerY=angle<180?h:0;endCornerX=w-startCornerX;endCornerY=h-startCornerY}function normalizeAngle(){while(angle<0){angle+=360}angle=angle%360}function distance(p1,p2){var dx=p2[0]-p1[0],dy=p2[1]-p1[1];return Math.abs(dx===0?dy:dy===0?dx:Math.sqrt(dx*dx+dy*dy))}if(startPos){startPos=startPos.coords(el,w,h);startX=startPos.x;startY=startPos.y}if(angle){angle=angle.degrees();normalizeAngle();findCorners();if(!startPos){startX=startCornerX;startY=startCornerY}p=perpendicularIntersect(startX,startY,angle,endCornerX,endCornerY);endX=p[0];endY=p[1]}else if(startPos){endX=w-startX;endY=h-startY}else{startX=startY=endX=0;endY=h}deltaX=endX-startX;deltaY=endY-startY;if(angle===UNDEF){angle=(!deltaX?(deltaY<0?90:270):(!deltaY?(deltaX<0?180:0):-Math.atan2(deltaY,deltaX)/PI*180));normalizeAngle();findCorners()}vmlAngle=(angle%90)?Math.atan2(deltaX*w/h,deltaY)/PI*180:(angle+90);vmlAngle+=180;vmlAngle=vmlAngle%360;lineLength=distance([startX,startY],[endX,endY]);vmlGradientLength=distance([startCornerX,startCornerY],perpendicularIntersect(startCornerX,startCornerY,angle,endCornerX,endCornerY));vmlColors=[];vmlOffsetPct=distance([startX,startY],perpendicularIntersect(startX,startY,angle,startCornerX,startCornerY))/vmlGradientLength*100;stopPx=[];for(i=0;i<stopCount;i++){stopPx.push(stops[i].offset?stops[i].offset.pixels(el,lineLength):i===0?0:i===stopCount-1?lineLength:null)}for(i=1;i<stopCount;i++){if(stopPx[i]===null){before=stopPx[i-1];j=i;do{after=stopPx[++j]}while(after===null);stopPx[i]=before+(after-before)/(j-i+1)}stopPx[i]=Math.max(stopPx[i],stopPx[i-1])}for(i=0;i<stopCount;i++){vmlColors.push((vmlOffsetPct+(stopPx[i]/vmlGradientLength*100))+'% '+stops[i].color.value(el))}fill['angle']=vmlAngle;fill['type']='gradient';fill['method']='sigma';fill['color']=stops[0].color.value(el);fill['color2']=stops[stopCount-1].color.value(el);fill['colors'].value=vmlColors.join(',')},hideBackground:function(){var rs=this.targetElement.runtimeStyle;rs.backgroundImage='url(about:blank)';rs.backgroundColor='transparent'},destroy:function(){PIE.RendererBase.destroy.call(this);var rs=this.targetElement.runtimeStyle;rs.backgroundImage=rs.backgroundColor=''}});PIE.BorderRenderer=PIE.RendererBase.newRenderer({boxZIndex:4,boxName:'border',childlessElements:{'TABLE':1,'INPUT':1,'TEXTAREA':1,'SELECT':1,'OPTION':1,'IMG':1,'HR':1,'FIELDSET':1},inputButtonTypes:{'submit':1,'button':1,'reset':1},needsUpdate:function(){var si=this.styleInfos;return si.borderInfo.changed()||si.borderRadiusInfo.changed()},isActive:function(){var si=this.styleInfos;return(si.borderImageInfo.isActive()||si.borderRadiusInfo.isActive()||si.backgroundInfo.isActive())&&si.borderInfo.isActive()},draw:function(){var el=this.targetElement,cs=el.currentStyle,props=this.styleInfos.borderInfo.getProps(),bounds=this.boundsInfo.getBounds(),w=bounds.w,h=bounds.h,side,shape,stroke,s,segments,seg,i,len;if(props){this.hideBorder();segments=this.getBorderSegments(2);for(i=0,len=segments.length;i<len;i++){seg=segments[i];shape=this.getShape('borderPiece'+i,seg.stroke?'stroke':'fill',this.getBox());shape.coordsize=w*2+','+h*2;shape.coordorigin='1,1';shape.path=seg.path;s=shape.style;s.width=w;s.height=h;shape.filled=!!seg.fill;shape.stroked=!!seg.stroke;if(seg.stroke){stroke=shape.stroke;stroke['weight']=seg.weight+'px';stroke.color=seg.color.value(el);stroke['dashstyle']=seg.stroke==='dashed'?'2 2':seg.stroke==='dotted'?'1 1':'solid';stroke['linestyle']=seg.stroke==='double'&&seg.weight>2?'ThinThin':'Single'}else{shape.fill.color=seg.fill.value(el)}}while(this.deleteShape('borderPiece'+i++)){}}},hideBorder:function(){var el=this.targetElement,cs=el.currentStyle,rs=el.runtimeStyle,tag=el.tagName,isIE6=PIE.ieVersion===6,sides,side,i;if((isIE6&&tag in this.childlessElements)||tag==='BUTTON'||(tag==='INPUT'&&el.type in this.inputButtonTypes)){rs.borderWidth='';sides=this.styleInfos.borderInfo.sides;for(i=sides.length;i--;){side=sides[i];rs['padding'+side]='';rs['padding'+side]=(new PIE.Length(cs['padding'+side])).pixels(el)+(new PIE.Length(cs['border'+side+'Width'])).pixels(el)+(!PIE.ieVersion===8&&i%2?1:0)}rs.borderWidth=0}else if(isIE6){if(el.childNodes.length!==1||el.firstChild.tagName!=='ie6-mask'){var cont=doc.createElement('ie6-mask'),s=cont.style,child;s.visibility='visible';s.zoom=1;while(child=el.firstChild){cont.appendChild(child)}el.appendChild(cont);rs.visibility='hidden'}}else{rs.borderColor='transparent'}},getBorderSegments:function(mult){var el=this.targetElement,bounds,elW,elH,borderInfo=this.styleInfos.borderInfo,segments=[],floor,ceil,wT,wR,wB,wL,round=Math.round,borderProps,radiusInfo,radii,widths,styles,colors;if(borderInfo.isActive()){borderProps=borderInfo.getProps();widths=borderProps.widths;styles=borderProps.styles;colors=borderProps.colors;if(borderProps.widthsSame&&borderProps.stylesSame&&borderProps.colorsSame){if(colors['t'].alpha()>0){wT=widths['t'].pixels(el);wR=wT/2;segments.push({path:this.getBoxPath({t:wR,r:wR,b:wR,l:wR},mult),stroke:styles['t'],color:colors['t'],weight:wT})}}else{mult=mult||1;bounds=this.boundsInfo.getBounds();elW=bounds.w;elH=bounds.h;wT=round(widths['t'].pixels(el));wR=round(widths['r'].pixels(el));wB=round(widths['b'].pixels(el));wL=round(widths['l'].pixels(el));var pxWidths={'t':wT,'r':wR,'b':wB,'l':wL};radiusInfo=this.styleInfos.borderRadiusInfo;if(radiusInfo.isActive()){radii=this.getRadiiPixels(radiusInfo.getProps())}floor=Math.floor;ceil=Math.ceil;function radius(xy,corner){return radii?radii[xy][corner]:0}function curve(corner,shrinkX,shrinkY,startAngle,ccw,doMove){var rx=radius('x',corner),ry=radius('y',corner),deg=65535,isRight=corner.charAt(1)==='r',isBottom=corner.charAt(0)==='b';return(rx>0&&ry>0)?(doMove?'al':'ae')+(isRight?ceil(elW-rx):floor(rx))*mult+','+(isBottom?ceil(elH-ry):floor(ry))*mult+','+(floor(rx)-shrinkX)*mult+','+(floor(ry)-shrinkY)*mult+','+(startAngle*deg)+','+(45*deg*(ccw?1:-1)):((doMove?'m':'l')+(isRight?elW-shrinkX:shrinkX)*mult+','+(isBottom?elH-shrinkY:shrinkY)*mult)}function line(side,shrink,ccw,doMove){var start=(side==='t'?floor(radius('x','tl'))*mult+','+ceil(shrink)*mult:side==='r'?ceil(elW-shrink)*mult+','+floor(radius('y','tr'))*mult:side==='b'?ceil(elW-radius('x','br'))*mult+','+floor(elH-shrink)*mult:floor(shrink)*mult+','+ceil(elH-radius('y','bl'))*mult),end=(side==='t'?ceil(elW-radius('x','tr'))*mult+','+ceil(shrink)*mult:side==='r'?ceil(elW-shrink)*mult+','+ceil(elH-radius('y','br'))*mult:side==='b'?floor(radius('x','bl'))*mult+','+floor(elH-shrink)*mult:floor(shrink)*mult+','+floor(radius('y','tl'))*mult);return ccw?(doMove?'m'+end:'')+'l'+start:(doMove?'m'+start:'')+'l'+end}function addSide(side,sideBefore,sideAfter,cornerBefore,cornerAfter,baseAngle){var vert=side==='l'||side==='r',sideW=pxWidths[side],beforeX,beforeY,afterX,afterY;if(sideW>0&&styles[side]!=='none'&&colors[side].alpha()>0){beforeX=pxWidths[vert?side:sideBefore];beforeY=pxWidths[vert?sideBefore:side];afterX=pxWidths[vert?side:sideAfter];afterY=pxWidths[vert?sideAfter:side];if(styles[side]==='dashed'||styles[side]==='dotted'){segments.push({path:curve(cornerBefore,beforeX,beforeY,baseAngle+45,0,1)+curve(cornerBefore,0,0,baseAngle,1,0),fill:colors[side]});segments.push({path:line(side,sideW/2,0,1),stroke:styles[side],weight:sideW,color:colors[side]});segments.push({path:curve(cornerAfter,afterX,afterY,baseAngle,0,1)+curve(cornerAfter,0,0,baseAngle-45,1,0),fill:colors[side]})}else{segments.push({path:curve(cornerBefore,beforeX,beforeY,baseAngle+45,0,1)+line(side,sideW,0,0)+curve(cornerAfter,afterX,afterY,baseAngle,0,0)+(styles[side]==='double'&&sideW>2?curve(cornerAfter,afterX-floor(afterX/3),afterY-floor(afterY/3),baseAngle-45,1,0)+line(side,ceil(sideW/3*2),1,0)+curve(cornerBefore,beforeX-floor(beforeX/3),beforeY-floor(beforeY/3),baseAngle,1,0)+'x '+curve(cornerBefore,floor(beforeX/3),floor(beforeY/3),baseAngle+45,0,1)+line(side,floor(sideW/3),1,0)+curve(cornerAfter,floor(afterX/3),floor(afterY/3),baseAngle,0,0):'')+curve(cornerAfter,0,0,baseAngle-45,1,0)+line(side,0,1,0)+curve(cornerBefore,0,0,baseAngle,1,0),fill:colors[side]})}}}addSide('t','l','r','tl','tr',90);addSide('r','t','b','tr','br',0);addSide('b','r','l','br','bl',-90);addSide('l','b','t','bl','tl',-180)}}return segments},destroy:function(){PIE.RendererBase.destroy.call(this);this.targetElement.runtimeStyle.borderColor=''}});PIE.BorderImageRenderer=PIE.RendererBase.newRenderer({boxZIndex:5,pieceNames:['t','tr','r','br','b','bl','l','tl','c'],needsUpdate:function(){return this.styleInfos.borderImageInfo.changed()},isActive:function(){return this.styleInfos.borderImageInfo.isActive()},draw:function(){var props=this.styleInfos.borderImageInfo.getProps(),bounds=this.boundsInfo.getBounds(),box=this.getBox(),el=this.targetElement,pieces=this.pieces;PIE.Util.withImageSize(props.src,function(imgSize){var elW=bounds.w,elH=bounds.h,widths=props.width,widthT=widths.t.pixels(el),widthR=widths.r.pixels(el),widthB=widths.b.pixels(el),widthL=widths.l.pixels(el),slices=props.slice,sliceT=slices.t.pixels(el),sliceR=slices.r.pixels(el),sliceB=slices.b.pixels(el),sliceL=slices.l.pixels(el);function setSizeAndPos(piece,w,h,x,y){var s=pieces[piece].style;s.width=w;s.height=h;s.left=x;s.top=y}setSizeAndPos('tl',widthL,widthT,0,0);setSizeAndPos('t',elW-widthL-widthR,widthT,widthL,0);setSizeAndPos('tr',widthR,widthT,elW-widthR,0);setSizeAndPos('r',widthR,elH-widthT-widthB,elW-widthR,widthT);setSizeAndPos('br',widthR,widthB,elW-widthR,elH-widthB);setSizeAndPos('b',elW-widthL-widthR,widthB,widthL,elH-widthB);setSizeAndPos('bl',widthL,widthB,0,elH-widthB);setSizeAndPos('l',widthL,elH-widthT-widthB,0,widthT);setSizeAndPos('c',elW-widthL-widthR,elH-widthT-widthB,widthL,widthT);function setCrops(sides,crop,val){for(var i=0,len=sides.length;i<len;i++){pieces[sides[i]]['imagedata'][crop]=val}}setCrops(['tl','t','tr'],'cropBottom',(imgSize.h-sliceT)/imgSize.h);setCrops(['tl','l','bl'],'cropRight',(imgSize.w-sliceL)/imgSize.w);setCrops(['bl','b','br'],'cropTop',(imgSize.h-sliceB)/imgSize.h);setCrops(['tr','r','br'],'cropLeft',(imgSize.w-sliceR)/imgSize.w);if(props.repeat.v==='stretch'){setCrops(['l','r','c'],'cropTop',sliceT/imgSize.h);setCrops(['l','r','c'],'cropBottom',sliceB/imgSize.h)}if(props.repeat.h==='stretch'){setCrops(['t','b','c'],'cropLeft',sliceL/imgSize.w);setCrops(['t','b','c'],'cropRight',sliceR/imgSize.w)}pieces['c'].style.display=props.fill?'':'none'},this)},getBox:function(){var box=this.parent.getLayer(this.boxZIndex),s,piece,i,pieceNames=this.pieceNames,len=pieceNames.length;if(!box){box=doc.createElement('border-image');s=box.style;s.position='absolute';this.pieces={};for(i=0;i<len;i++){piece=this.pieces[pieceNames[i]]=PIE.Util.createVmlElement('rect');piece.appendChild(PIE.Util.createVmlElement('imagedata'));s=piece.style;s['behavior']='url(#default#VML)';s.position="absolute";s.top=s.left=0;piece['imagedata'].src=this.styleInfos.borderImageInfo.getProps().src;piece.stroked=false;piece.filled=false;box.appendChild(piece)}this.parent.addLayer(this.boxZIndex,box)}return box}});PIE.BoxShadowOutsetRenderer=PIE.RendererBase.newRenderer({boxZIndex:1,boxName:'outset-box-shadow',needsUpdate:function(){var si=this.styleInfos;return si.boxShadowInfo.changed()||si.borderRadiusInfo.changed()},isActive:function(){var boxShadowInfo=this.styleInfos.boxShadowInfo;return boxShadowInfo.isActive()&&boxShadowInfo.getProps().outset[0]},draw:function(){var me=this,el=this.targetElement,box=this.getBox(),styleInfos=this.styleInfos,shadowInfos=styleInfos.boxShadowInfo.getProps().outset,radii=styleInfos.borderRadiusInfo.getProps(),len=shadowInfos.length,i=len,j,bounds=this.boundsInfo.getBounds(),w=bounds.w,h=bounds.h,clipAdjust=PIE.ieVersion===8?1:0,corners=['tl','tr','br','bl'],corner,shadowInfo,shape,fill,ss,xOff,yOff,spread,blur,shrink,color,alpha,path,totalW,totalH,focusX,focusY,isBottom,isRight;function getShadowShape(index,corner,xOff,yOff,color,blur,path){var shape=me.getShape('shadow'+index+corner,'fill',box,len-index),fill=shape.fill;shape['coordsize']=w*2+','+h*2;shape['coordorigin']='1,1';shape['stroked']=false;shape['filled']=true;fill.color=color.value(el);if(blur){fill['type']='gradienttitle';fill['color2']=fill.color;fill['opacity']=0}shape.path=path;ss=shape.style;ss.left=xOff;ss.top=yOff;ss.width=w;ss.height=h;return shape}while(i--){shadowInfo=shadowInfos[i];xOff=shadowInfo.xOffset.pixels(el);yOff=shadowInfo.yOffset.pixels(el);spread=shadowInfo.spread.pixels(el),blur=shadowInfo.blur.pixels(el);color=shadowInfo.color;shrink=-spread-blur;if(!radii&&blur){radii=PIE.BorderRadiusStyleInfo.ALL_ZERO}path=this.getBoxPath({t:shrink,r:shrink,b:shrink,l:shrink},2,radii);if(blur){totalW=(spread+blur)*2+w;totalH=(spread+blur)*2+h;focusX=blur*2/totalW;focusY=blur*2/totalH;if(blur-spread>w/2||blur-spread>h/2){for(j=4;j--;){corner=corners[j];isBottom=corner.charAt(0)==='b';isRight=corner.charAt(1)==='r';shape=getShadowShape(i,corner,xOff,yOff,color,blur,path);fill=shape.fill;fill['focusposition']=(isRight?1-focusX:focusX)+','+(isBottom?1-focusY:focusY);fill['focussize']='0,0';shape.style.clip='rect('+((isBottom?totalH/2:0)+clipAdjust)+'px,'+(isRight?totalW:totalW/2)+'px,'+(isBottom?totalH:totalH/2)+'px,'+((isRight?totalW/2:0)+clipAdjust)+'px)'}}else{shape=getShadowShape(i,'',xOff,yOff,color,blur,path);fill=shape.fill;fill['focusposition']=focusX+','+focusY;fill['focussize']=(1-focusX*2)+','+(1-focusY*2)}}else{shape=getShadowShape(i,'',xOff,yOff,color,blur,path);alpha=color.alpha();if(alpha<1){shape.fill.opacity=alpha}}}}});PIE.ImgRenderer=PIE.RendererBase.newRenderer({boxZIndex:6,boxName:'imgEl',needsUpdate:function(){var si=this.styleInfos;return this.targetElement.src!==this._lastSrc||si.borderRadiusInfo.changed()},isActive:function(){var si=this.styleInfos;return si.borderRadiusInfo.isActive()||si.backgroundInfo.isPngFix()},draw:function(){this.hideActualImg();var shape=this.getShape('img','fill',this.getBox()),fill=shape.fill,bounds=this.boundsInfo.getBounds(),w=bounds.w,h=bounds.h,borderProps=this.styleInfos.borderInfo.getProps(),borderWidths=borderProps&&borderProps.widths,el=this.targetElement,src=el.src,round=Math.round,s;shape.stroked=false;fill.type='frame';fill.src=src;fill.position=(0.5/w)+','+(0.5/h);shape.coordsize=w*2+','+h*2;shape.coordorigin='1,1';shape.path=this.getBoxPath(borderWidths?{t:round(borderWidths['t'].pixels(el)),r:round(borderWidths['r'].pixels(el)),b:round(borderWidths['b'].pixels(el)),l:round(borderWidths['l'].pixels(el))}:0,2);s=shape.style;s.width=w;s.height=h;this._lastSrc=src},hideActualImg:function(){this.targetElement.runtimeStyle.filter='alpha(opacity=0)'},destroy:function(){PIE.RendererBase.destroy.call(this);this.targetElement.runtimeStyle.filter=''}});PIE.Element=(function(){var wrappers={},lazyInitCssProp=PIE.CSS_PREFIX+'lazy-init',hoverClass=' '+PIE.CLASS_PREFIX+'hover',hoverClassRE=new RegExp('\\b'+PIE.CLASS_PREFIX+'hover\\b','g'),ignorePropertyNames={'background':1,'bgColor':1,'display':1};function addListener(el,type,handler){el.attachEvent(type,handler)}function removeListener(el,type,handler){el.detachEvent(type,handler)}function Element(el){var renderers,boundsInfo=new PIE.BoundsInfo(el),styleInfos,styleInfosArr,ancestors,initializing,initialized,eventsAttached,delayed,destroyed;function init(){if(!initialized){var docEl,bounds,lazy=el.currentStyle.getAttribute(lazyInitCssProp)==='true',rootRenderer;if(!initializing){initializing=1;el.runtimeStyle.zoom=1;initFirstChildPseudoClass()}boundsInfo.lock();if(lazy&&(bounds=boundsInfo.getBounds())&&(docEl=doc.documentElement||doc.body)&&(bounds.y>docEl.clientHeight||bounds.x>docEl.clientWidth||bounds.y+bounds.h<0||bounds.x+bounds.w<0)){if(!delayed){delayed=1;PIE.OnScroll.observe(init)}}else{initialized=1;delayed=initializing=0;PIE.OnScroll.unobserve(init);styleInfos={backgroundInfo:new PIE.BackgroundStyleInfo(el),borderInfo:new PIE.BorderStyleInfo(el),borderImageInfo:new PIE.BorderImageStyleInfo(el),borderRadiusInfo:new PIE.BorderRadiusStyleInfo(el),boxShadowInfo:new PIE.BoxShadowStyleInfo(el),visibilityInfo:new PIE.VisibilityStyleInfo(el)};styleInfosArr=[styleInfos.backgroundInfo,styleInfos.borderInfo,styleInfos.borderImageInfo,styleInfos.borderRadiusInfo,styleInfos.boxShadowInfo,styleInfos.visibilityInfo];rootRenderer=new PIE.RootRenderer(el,boundsInfo,styleInfos);var childRenderers=[new PIE.BoxShadowOutsetRenderer(el,boundsInfo,styleInfos,rootRenderer),new PIE.BackgroundRenderer(el,boundsInfo,styleInfos,rootRenderer),new PIE.BorderRenderer(el,boundsInfo,styleInfos,rootRenderer),new PIE.BorderImageRenderer(el,boundsInfo,styleInfos,rootRenderer)];if(el.tagName==='IMG'){childRenderers.push(new PIE.ImgRenderer(el,boundsInfo,styleInfos,rootRenderer))}rootRenderer.childRenderers=childRenderers;renderers=[rootRenderer].concat(childRenderers);initAncestorPropChangeListeners();if(true){PIE.Heartbeat.observe(update)}update(1)}if(!eventsAttached){eventsAttached=1;addListener(el,'onmove',handleMoveOrResize);addListener(el,'onresize',handleMoveOrResize);addListener(el,'onpropertychange',propChanged);addListener(el,'onmouseenter',mouseEntered);addListener(el,'onmouseleave',mouseLeft);PIE.OnResize.observe(handleMoveOrResize);PIE.OnBeforeUnload.observe(removeEventListeners)}boundsInfo.unlock()}}function handleMoveOrResize(){if(boundsInfo&&boundsInfo.hasBeenQueried()){update()}}function update(force){if(!destroyed){if(initialized){var i,len;lockAll();if(force||boundsInfo.positionChanged()){for(i=0,len=renderers.length;i<len;i++){renderers[i].updatePos()}}if(force||boundsInfo.sizeChanged()){for(i=0,len=renderers.length;i<len;i++){renderers[i].updateSize()}}unlockAll()}else if(!initializing){init()}}}function propChanged(){var i,len,renderer,e=event;if(!destroyed&&!(e&&e.propertyName in ignorePropertyNames)){if(initialized){lockAll();for(i=0,len=renderers.length;i<len;i++){renderer=renderers[i];if(!renderer.isPositioned){renderer.updatePos()}if(renderer.needsUpdate()){renderer.updateProps()}}unlockAll()}else if(!initializing){init()}}}function addHoverClass(){el.className+=hoverClass}function removeHoverClass(){el.className=el.className.replace(hoverClassRE,'')}function mouseEntered(){setTimeout(addHoverClass,0)}function mouseLeft(){setTimeout(removeHoverClass,0)}function ancestorPropChanged(){var name=event.propertyName;if(name==='className'||name==='id'){propChanged()}}function lockAll(){boundsInfo.lock();for(var i=styleInfosArr.length;i--;){styleInfosArr[i].lock()}}function unlockAll(){for(var i=styleInfosArr.length;i--;){styleInfosArr[i].unlock()}boundsInfo.unlock()}function removeEventListeners(){if(eventsAttached){if(ancestors){for(var i=0,len=ancestors.length,a;i<len;i++){a=ancestors[i];removeListener(a,'onpropertychange',ancestorPropChanged);removeListener(a,'onmouseenter',mouseEntered);removeListener(a,'onmouseleave',mouseLeft)}}removeListener(el,'onmove',update);removeListener(el,'onresize',update);removeListener(el,'onpropertychange',propChanged);removeListener(el,'onmouseenter',mouseEntered);removeListener(el,'onmouseleave',mouseLeft);PIE.OnBeforeUnload.unobserve(removeEventListeners);eventsAttached=0}}function destroy(){if(!destroyed){var i,len;removeEventListeners();destroyed=1;if(renderers){for(i=0,len=renderers.length;i<len;i++){renderers[i].destroy()}}if(true){PIE.Heartbeat.unobserve(update)}PIE.OnResize.unobserve(update);renderers=boundsInfo=styleInfos=styleInfosArr=ancestors=el=null}}function initAncestorPropChangeListeners(){var watch=el.currentStyle.getAttribute(PIE.CSS_PREFIX+'watch-ancestors'),i,a;if(watch){ancestors=[];watch=parseInt(watch,10);i=0;a=el.parentNode;while(a&&(watch==='NaN'||i++<watch)){ancestors.push(a);addListener(a,'onpropertychange',ancestorPropChanged);addListener(a,'onmouseenter',mouseEntered);addListener(a,'onmouseleave',mouseLeft);a=a.parentNode}}}function initFirstChildPseudoClass(){var tmpEl=el,isFirst=1;while(tmpEl=tmpEl.previousSibling){if(tmpEl.nodeType===1){isFirst=0;break}}if(isFirst){el.className+=' '+PIE.CLASS_PREFIX+'first-child'}}this.init=init;this.update=update;this.destroy=destroy;this.el=el}Element.getInstance=function(el){var id=PIE.Util.getUID(el);return wrappers[id]||(wrappers[id]=new Element(el))};Element.destroy=function(el){var id=PIE.Util.getUID(el),wrapper=wrappers[id];if(wrapper){wrapper.destroy();delete wrappers[id]}};Element.destroyAll=function(){var els=[],wrapper;if(wrappers){for(var w in wrappers){if(wrappers.hasOwnProperty(w)){wrapper=wrappers[w];els.push(wrapper.el);wrapper.destroy()}}wrappers={}}return els};return Element})();PIE['attach']=function(el){if(PIE.ieVersion<9){PIE.Element.getInstance(el).init()}};PIE['detach']=function(el){PIE.Element.destroy(el)}}var p=window['PIE'],el=element;function init(){if(doc.media!=='print'){p['attach'](el)}}function cleanup(){p['detach'](el);p=el=0}if(el.readyState==='complete'){init()}</script></PUBLIC:COMPONENT>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment