Created
September 17, 2011 15:29
-
-
Save jnwheeler44/1224045 to your computer and use it in GitHub Desktop.
Handy CSS3PIE mixins
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@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; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!--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