/**
Script: 		n2Select.js
Credits:		NN2LUV - http://nn2luv.com/
Framework:		Mootools 1.2.1 - mootools.net.

Script site:
	http://nn2luv.com/sugar/n2select/

Inspiration:
	- Ideas and mootools 1.11 code by [comboBoo.js, Bruno Torrinha]( www.torrinha.com)
	- Ideas of label click, key events and support HTML selects by [adamnfish]( http://www.mooforum.net/member/adamnfish/)
	- Ideas of key shortcut to option and code by [PJMODOS]( http://www.mooforum.net/member/PJMODOS/)

Discussion:
	http://www.mooforum.net/scripts12/n2select-select-with-mootools-former-mooselect-t744.html
*/


/**
* Another extend, check original, if not in extended put into extended, return extended
* Faster than $merge in some cases
*/
function $extendEx(original, extended) {
	for (var key in (original || {}))
		if (!$defined(extended[key])) extended[key] = original[key];

	return extended;
};


/**
* n2Select Class
*/
var n2Select = new Class({

	Implements: [Events, Options],

	options: {
		klass: 'n2Select',
		options: {
		/*
			value: {
				html: string,
				klass: string,
				disabled: boolean
			}
		*/
		},
		selected: false, // default selected value
		/*
		onChange: $empty(),
		*/
		show: 2 // minimum items to show on list
	},
	
	initialize: function(el, options) {
		this.setOptions(options);

		this.elm = $(el);
		this.open = false;
		
		// create custom select
		this.build();

		// we keep an array of our sellinks to hide when click out of them
		n2Select.anchors.push(this.sSelect);
		
		// we keep an array of our objects to re-position when window resize
		n2Select.instances.push(this);
		
		// add events
		this.addSEvents();
	},

	/* generator functions */
	build: function() {
		// generate object from select object & passed options
		this.gen();
		
		// check if selected a disabled item, if so selected first item
		if (this.options.selected === false) this.options.selected = this.elm.get('value');

		if (this.options.options[this.options.selected].disabled === true) {
			for (var op in this.options.options) 
				if (!this.options.options[op].group && !this.options.options[op].disabled) {
					this.options.selected = op;
					break;
				}

			this.elm.set('value', this.options.selected);
		}
		
		// position
		var el = this.elm,
			pos = this.elm.pos = this.pos(el),

		// styles
			styles = $extend(el.getStyles(''), {
				lineHeight: pos.height
			}),

		// options
			opt = this.options;
		
		minus = 25
		if(Browser.Engine.trident4) minus=0
		
		// select element
		this.sSelect = new Element('a', {
			'class': opt.klass + '-anchor',
			'styles': $extendEx(styles, {
				top: pos.top,
				left: pos.left,
				width: pos.width - minus,
				height: pos.height
			}),
			'href': 'javascript:void(0)'
		})
		.inject(this.elm, 'after');
		
		// more position
		pos.width += 5;
		pos.height += 2;

		// select list
		this.sList = new Element('div', {
			'class': opt.klass + '-list',
			'styles': $extendEx(styles, {
				top: pos.top + pos.height,
				left: pos.left,
				width: 250
			})
		})
		.set('tween', {duration: 150})
		.inject(this.sSelect, 'after');
		
		this.sScroll = new Fx.Scroll(this.sList, {link: 'cancel'});
		
		// IE6 select objects hack
		if (Browser.Engine.trident4) {
			this.sShim = IFrame({
				src: 'about:blank',
				frameBorder: 0,
				background: 'transparent',
				'styles': {
					top: pos.top + pos.height,
					left: pos.left,
					width: pos.width + 2,
					zIndex: 0
				}
			})
			.inject(this.sList, 'after');
		} else
			this.sShim = 0;
		
		// more position
		this.sList.pos = {
			below: pos.top + pos.height,
			above: pos.top - 2 // border-top-size + border-bottom-size
		};

		// item list
		var height = pos.height,
			cnt = 0;

		if (Browser.Engine.trident4)
			$extend(styles, {height: height});
		else
			$extend(styles, {minHeight: height, height: 'auto'});

		//for (var op in opt.options) {
		for (var i=0, l=opt.options.order.length; i<l; i++) { // this helps work with Google Chrome
			var op = opt.options.order[i],
				opp = opt.options[op],
				el2 = new Element('div', {
					'class':
						opt.klass + (cnt%2 ? '-odd' : '-even') + ' ' + 
						opt.klass + (opp.group === true ? '-group' : (opp.sub === true ? '-sub' : '-item')) + 
						(opp.disabled ? ' ' + opt.klass + '-disabled' : '') + 
						(opp.klass ? ' ' + opp.klass : '') + ' ' + 
						(!opp.group && !opp.disabled ? ' ' + opt.klass + '-selectable' : ''),
					'styles': styles,
					'html': opp.html
				})
				.inject(this.sList);
			if (opp.disabled) el2.set('html', el2.get('text'));
			if (opp.klass) el2.klass = opp.klass;
			el2.val = op;

			cnt++;

			if (op+'' === opt.selected+'') {
				this.over(el2);
				this.change(el2, true);
			}
			
			if (!opp.group && !opp.disabled) this.addIEvents(el2);
		}
		delete opt.options/*.order*/; // we may not need the options anymore
		
		// where to find our options
		this.regx = 'div[class*=' + this.options.klass + '-selectable]';

		$extend(this.sList, {
			cnt: cnt,
			ith: height,
			mih: height*opt.show,
			mah: height*cnt
		});

		// more position
		this.sList.pos.above -= this.sList.mah;
		if (this.sList.offsetWidth < pos.width) this.sList.setStyle('width', pos.width);

		// hide elements
		el.setStyle('visibility', 'hidden');
		el.setStyle('display', 'none');
		this.sList.setStyle('display', '');
		this.hide();
	},
	
	destroy: function(show) {
		this.removeSEvents();
		this.sSelect.destroy();

		this.sList.getChildren(this.regx).each(function(el) {
			this.removeIEvents(el);
			el.destroy();
		}.bind(this));
		this.sList.getChildren().destroy();
		this.sList.destroy();

		if (this.sShim) this.sShim.destroy();

		// show HTML select
		if (show) this.elm.setStyle('visibility', 'visible');
	},
	
	gen: function() {
		var R = {}, O = this.options.options, order = []; // it seems Google Chrome sorts options so we need and order array here to work with Google Chrome; IE, FF & Opera does not need this

		function gGrp(el) {
			var k = el.get('label');
		
			if (!O[k]) R[k] = {html: k}; else R[k] = O[k];
			if (el.get('disabled')) R[k].disabled = true;
			
			R[k].group = true;
			
			order.push(k);
		
			el.getElements('option').each(function(e) {
				gOpt(e, k, 1);
			});
		};
	
		function gOpt(el, par, sub) {
			var k = el.get('value');

			if (!O[k]) R[k] = {html: el.get('text')}; else R[k] = O[k];
			if (el.get('disabled')) R[k].disabled = true;
			if (sub && (R[par] && R[par]['disabled']) || (O[par] && O[par]['disabled'])) R[k].disabled = true;
			if (el.get('class')) R[k].klass = el.get('class');
			
			if (sub) R[k].sub = true;
			
			order.push(k);
		};
	
		this.elm.getChildren().each(function(el) {
			if (el.match('optgroup'))
				gGrp(el);
			else
				gOpt(el);
		});
		
		for (var op in O) if (!R[op]) {
			R[op] = O[op];
			
			order.push(op);
		}
		
		R.order = order;
		
		this.options.options = R;
	},
	/* generator functions */
	
	/* anchor functions */
	addSEvents: function() {
		this.sSelect
			.addEvents({
				click: this.click.bind(this),
				blur: this.hide.bind(this),
				keydown: this.key.bind(this)
			});
			//.addEvent((Browser.Engine.trident || Browser.Engine.webkit) ? 'keydown' : 'keypress', this.key.bind(this));
	},

	removeSEvents: function() {
		this.sSelect
			.removeEvents({
				click: this.click.bind(this),
				blur: this.hide.bind(this),
				keydown: this.key.bind(this)
			});
			//.removeEvent((Browser.Engine.trident || Browser.Engine.webkit) ? 'keydown' : 'keypress', this.key.bind(this));
	},

	click: function() {
		if (this.open) this.hide(); else this.show();
	},

	key: function(e) {
		if (e.key == 'tab') return true;

		e = new Event(e);// e.stop();

		var el = 0,
			funcs = {
				esc: 'hide',
				enter: 'click',
				up: 'prev',
				down: 'next',
				36: 'first',
				35: 'last'
			};
			
		switch (e.key) {
			case 'esc':
			case 'enter':
				e.stop();
				this[funcs[e.key]]();
			break;
		
			default:
				switch (e.key) {
					case 'up':
					case 'down':
						e.stop();
						el = this[funcs[e.key]]();
					break;
				}

				switch (e.code) {
					case 36:
					case 35:
						e.stop();
						el = this[funcs[e.code]]();
					break;
				}

				// key shortcut to item
				if (!el) {
					var i, curr, list = this.sList.getElements(this.regx);
					for (i = 0, curr = this.next(); i < list.length; i++, curr = curr.getNext(this.regx)) {
						if (!curr) curr = this.first();
						if (e.key == curr.get('text').charAt(0).toLowerCase()) {
							el = curr;
							break;
						}
					}
				}

				if (el) {
					e.stop();
					this.over(el);
					this.change(el);
				} else if (e.key.length == 1) {
					e.stop();
				}
			break;
		}
	},
	
	first: function() {
		return this.sList.getFirst(this.regx);
	},
	
	last: function() {
		return this.sList.getLast(this.regx);
	},
	
	next: function() {
		return this.selected.getNext(this.regx);
	},
	
	prev: function() {
		return this.selected.getPrevious(this.regx);
	},
	/* anchor functions */
	
	/* list functions */
	show: function() {
		if (n2Select.active !== 0) n2Select.active.hide();
		n2Select.active = this;
		
		// more position
		var pos = 'below', height = window.getSize().y + window.getScroll().y - this.sList.pos[pos], items = this.sList.cnt;
		
		if (height >= this.sList.mih) {
			if (height < this.sList.mah) {
				items = Math.floor(height/this.sList.ith);
			}
		} else {
			pos = 'above';
		}

		pos = {
			top: this.sList.pos[pos],
			height: items*this.sList.ith
		};
		
		this.sList.setStyles(pos);
		
		// IE6 select objects hack
		if (this.sShim) this.sShim.setStyles(pos).set('opacity', 1);

		this.open = true;
		this.sList.tween('opacity', 1);
	},

	hide: function() {
		this.open = false;
		this.sList.tween('opacity', 0);
		
		// IE6 select objects hack
		if (this.sShim) this.sShim.set('opacity', 0);

		n2Select.active = 0;
	},
	/* list functions */
	
	/* item functions */
	over: function(el) {
		var k = this.options.klass + '-selected';
		
		if (this.selected) this.selected.removeClass(k);
		this.selected = el.addClass(k);
	},
	
	change: function(el, first) {
		var opt = el.val;
		
		if ((this.options.selected != opt) || first) {
			this.sSelect.set('html', el.get('html'));

			if (this.sSelect.klass) {
				this.sSelect.removeClass(this.sSelect.klass);
				this.sSelect.klass = 0;
			}
			
			if (el.klass) {
				this.sSelect.addClass(el.klass);
				this.sSelect.klass = el.klass;
			}
			
			this.sScroll.toElement(el);
			
			this.options.selected = opt;
			this.elm.set('value', opt);
		
			this.fireEvent('change', opt);
		}
	},

	select: function(el) {
		this.hide();
		this.change(el);
	},

	addIEvents: function(el) {
		el.addEvents({
			mouseenter: this.over.bind(this, el),
			click: this.select.bind(this, el)
		});
	},

	removeIEvents: function(el) {
		el.removeEvents({
			mouseenter: this.over.bind(this, el),
			click: this.select.bind(this, el)
		});
	},
	/* item functions */

	/* re-position functions */
	pos: function(el) {
		return el.getCoordinates();
		
		/*
		var orgWidth = el.getStyle('width');
		el.setStyles({'position':'absolute', 'width':el.offsetWidth});
			
		var pos = el.getCoordinates();
		pos.left -= el.getStyle('margin-left').toInt();
		pos.top -= el.getStyle('margin-top').toInt();

		el.setStyles({'position':'relative', 'width':orgWidth});
		
		return pos;
		*/
	},
	
	repos: function() {
		var p2 = this.pos(this.elm),
			p1 = this.elm.pos,
			dx = p2.left - p1.left,
			dy = p2.top - p1.top;
			
		[this.sSelect, this.sList, this.sShim].each(function(el) {
			if (el) el.setStyles({
				top: el.getStyle('top').toInt() + dy,
				left: el.getStyle('left').toInt() + dx
			});
		});
		
		this.elm.pos = p2;
	}
	/* re-position functions */
});

n2Select.anchors = [];
n2Select.active = 0;
n2Select.instances = [];

// hide when click out of our sellinks
window.addEvent('domready', function() {
	window.document.addEvent('click', function(e) {
		if ((!n2Select.anchors.contains(e.target)) && (n2Select.active !== 0)) {
			n2Select.active.hide();
			n2Select.active = 0;
		}
	});

	window.addEvent('resize', function() {
		n2Select.instances.each(function(el) {
			el.repos();
		});
	});
});

var Milkbox=new Class({Implements:[Options,Events],options:{overlayOpacity:0.7,topPosition:50,initialWidth:250,initialHeight:250,canvasBorderWidth:"0px",canvasBorderColor:"#000000",canvasPadding:"0px",resizeDuration:500,resizeTransition:"sine:in:out",autoPlay:false,autoPlayDelay:7,removeTitle:false,autoSize:true,maxHeight:0,imageOfText:"of",onXmlGalleries:$empty,onClosed:$empty,onFileReady:$empty},initialize:function(options){this.setOptions(options);this.autoPlayBkup={autoPlayDelay:this.options.autoPlayDelay,autoPlay:this.options.autoPlay};this.fullOptionsBkup={};this.galleries=[];this.families=[];this.xmlFiles=[];this.loadedImages=[];this.currentFile=null;this.currentIndex=null;this.currentGallery=null;this.currentRequest=null;this.currentResponse=null;this.mode=null;this.closed=true;this.busy=true;this.paused=true;this.fileReady=false;this.eventsok=false;this.first=true;this.activated=false;this.intObj=null;this.formtags=null;this.prepareGalleries();if(this.options.overlayOpacity==0){this.options.overlayOpacity=0.0001;}this.saveOptions();if(this.galleries.length==0){return;}this.initMilkbox(true);},initMilkbox:function(checkTags){if(checkTags){this.formtags=$$("select","textarea");}this.prepareHTML();this.prepareEffects();this.prepareEvents();this.activated=true;},openMilkbox:function(gallery,index){this.closed=false;if(this.formtags&&this.formtags.length!=0){this.formtags.setStyle("display","none");}this.overlay.setStyles({top:-$(window).getScroll().y,height:$(window).getScrollSize().y+$(window).getScroll().y});this.center.setStyle("top",$(window).getScroll().y+this.options.topPosition);this.currentGallery=gallery;this.currentIndex=index;this.overlay.tween("opacity",this.options.overlayOpacity);if(gallery.length==1){this.mode="singleFile";this.loadFile(gallery[index],index);}else{this.mode="fileGallery";var playpauseWidth=0;$$(this.prev,this.next,this.count).setStyle("display","block");if(this.options.autoPlay){this.playpause.setStyle("display","block");playpauseWidth=this.playpause.getSize().x;}var border=this.center.getStyle("border-right-width").toInt();var navWidth=this.prev.getSize().x+this.next.getSize().x+this.close.getSize().x+playpauseWidth+border;this.navigation.setStyle("width",navWidth);this.description.setStyle("margin-right",navWidth);var next=(index!=gallery.length-1)?gallery[index+1]:gallery[0];var prev=(index!=0)?gallery[index-1]:gallery[gallery.length-1];var preloads=(prev==next)?[prev]:[prev,next];this.loadFile(gallery[index],preloads);}},loadFile:function(fileObj,preloads){this.fileReady=false;var swf=this.checkFileType(fileObj,"swf");if(!swf){if(!this.loadedImages.contains(fileObj.retrieve("href"))){this.center.addClass("mbLoading");}this.loadImage(fileObj.retrieve("href"));}else{this.loadSwf(fileObj);}if(preloads){this.preloadFiles(preloads);}},preloadFiles:function(preloads){preloads.each(function(fileObj,index){var swf=this.checkFileType(fileObj.retrieve("href"),"swf");if(!swf){this.preloadImage(fileObj.retrieve("href"));}},this);},loadImage:function(file){var imageAsset=new Asset.image(file,{onload:function(img){if(!this.loadedImages.contains(file)){this.loadedImages.push(file);}this.currentFile=img;this.loadAux(this.currentFile);}.bindWithEvent(this)});},preloadImage:function(file){if(!this.loadedImages.contains(file)){var imageAsset=new Asset.image(file,{onload:function(img){this.loadedImages.push(file);}.bindWithEvent(this)});}},loadSwf:function(swf){var swfObj=new Swiff(swf.retrieve("href"),{width:swf.retrieve("width").toInt(),height:swf.retrieve("height").toInt(),params:{wMode:"opaque",swLiveConnect:"false"}});this.currentFile=swfObj;this.loadAux(swf);},loadAux:function(file){this.fileReady=true;this.fireEvent("fileReady");$$(this.description,this.navigation).setStyle("visibility","hidden");this.navigation.setStyle("height","");$$(this.next,this.prev,this.close).setStyle("backgroundPosition","0 0");this.showFile(file);},showFile:function(file){if(this.closed){return;}var fileSize=new Hash();var centerSize=new Hash();var targetSize,canvasSize;var canvasAddSize,gap,b,p,d;targetSize=canvasSize={};canvasAddSize=gap=b=p=d=0;if(this.options.canvasBorderWidth.toInt()!=0&&this.canvas.getStyle("borderWidth").toInt()==0){b=this.options.canvasBorderWidth+" solid "+this.options.canvasBorderColor;this.canvas.setStyle("border",b);}if(this.options.canvasPadding.toInt()!=0&&this.canvas.getStyle("padding").toInt()==0){p=this.options.canvasPadding;this.canvas.setStyle("padding",p);}canvasSize=this.canvas.getSize();canvasAddSize=this.canvas.getStyle("borderWidth").toInt()*2+this.canvas.getStyle("padding").toInt()*2;this.canvas.setStyles({opacity:0,width:"",height:""});if(!file.retrieve("width")){fileSize=fileSize.extend(file.getProperties("width","height")).map(function(item){return item.toInt();});if(this.options.autoSize){fileSize=this.computeSize(fileSize);file.setProperties({width:fileSize.width,height:fileSize.height});}}else{fileSize.extend({height:file.retrieve("height").toInt(),width:file.retrieve("width").toInt()});}centerSize=centerSize.extend(this.center.getStyles("width","height")).map(function(item){return item.toInt();});if(fileSize.width!=centerSize.width){targetSize.width=fileSize.width+canvasAddSize;targetSize.marginLeft=-(targetSize.width/2).round();}gap=(canvasSize.y-canvasAddSize>0)?centerSize.height-canvasSize.y:0;targetSize.height=fileSize.height+canvasAddSize+gap;this.canvas.setStyles({width:fileSize.width,height:fileSize.height});this.center.removeClass("mbLoading");if(this.first){d=500;this.first=false;}(function(){this.center.morph(targetSize);}).delay(d,this);},computeSize:function(oSize){var size=oSize;var wSize=window.getSize();var baseSize={width:wSize.x-60,height:wSize.y-68-this.options.topPosition*2};var ratio;var check;var max=Math.max(baseSize.height,baseSize.width);if(max==baseSize.width){ratio=max/size.width;check="height";}else{ratio=max/size.height;check="width";}ratio=(ratio<=1)?ratio:1;size=size.map(function(item){return Math.floor(item*ratio);});ratio=(baseSize[check]/size[check]<=1)?baseSize[check]/size[check]:1;size=size.map(function(item){return Math.floor(item*ratio);});if(this.options.maxHeight>0){ratio=(this.options.maxHeight/size.height<1)?this.options.maxHeight/size.height:1;size=size.map(function(item){return Math.floor(item*ratio);});}return size;},showGallery:function(opt){if(!opt||!opt.gallery){return;}var fileIndex=($chk(opt.index))?opt.index:0;var g=this.getGallery(opt.gallery);var auto=false;var d;if(opt.autoplay||(g.options&&g.options.autoplay)){auto=true;}if(g!=-1&&!this.opened){if(auto){d=(opt&&opt.delay)?opt.delay:(g.options&&g.options.delay)?g.options.delay:this.autoPlayDelay;this.startAutoPlay({gallery:g,index:fileIndex,delay:d});}else{this.openMilkbox(g,fileIndex);}}},addGalleries:function(xmlfile){this.currentRequest=new Request({method:"get",autoCancel:true,url:xmlfile,onRequest:function(){}.bindWithEvent(this),onSuccess:function(text,xml){var t=text.replace(/(<a.+)\/>/gi,"$1></a>");this.setGalleries(new Element("div",{html:t}),xmlfile);}.bindWithEvent(this),onFailure:function(transport){alert("Milkbox :: addGalleries: XML file path error or local Ajax test: please test addGalleries() on-line");}});this.currentRequest.send();},setGalleries:function(container,xmlfile){if(!this.xmlFiles.contains(xmlfile)){this.xmlFiles.push(xmlfile);}var c=container;var galleries=c.getElements(".gallery");var links=[];var aplist=[];galleries.each(function(gallery,i){var obj={gallery:gallery.getProperty("name"),autoplay:Boolean(gallery.getProperty("autoplay")),delay:Number(gallery.getProperty("delay"))};var l=gallery.getChildren("a");var lx=l.map(function(link){return link.setProperty("rel","milkbox["+obj.gallery+"]");});links.push(lx);if(obj.autoplay){aplist.push(obj);}});this.prepareGalleries(links.flatten());this.setAutoPlay(aplist);if(!this.activated){this.initMilkbox();}this.fireEvent("xmlGalleries");},checkFileType:function(file,type){var href=null;if($type(file)!="string"){href=file.retrieve("href");}else{href=file;}var regexp=new RegExp(".("+type+")$","i");return href.split("?")[0].test(regexp);},getGallery:function(gallery){var f=null;if(gallery.test(/^milkbox/i)){f=this.families;}else{f=this.families.map(function(item){var trimmed=item.trim();var name=trimmed.slice(0,trimmed.length).substr(8);var cleanName=name.replace(/(.+)]$/,"$1");return cleanName;});}var i=f.indexOf(gallery);var g=(i!=-1)?this.galleries[i]:i;return g;},setFileProps:function(fileObj,propString){var s=propString.split(",");s.each(function(p,i){var clean=p.trim().split(":");fileObj.store(clean[0].trim(),clean[1].trim());},this);},changeOptions:function(obj){if(!obj){return;}this.setOptions(obj);this.center.get("morph").setOptions({transition:this.options.resizeTransition,duration:this.options.resizeDuration});},saveOptions:function(obj){if($chk(obj)){this.fullOptionsBkup=obj;}else{this.fullOptionsBkup=this.options;}},restoreOptions:function(){this.setOptions(this.fullOptionsBkup);var b=this.options.canvasBorderWidth+" solid "+this.options.canvasBorderColor;this.canvas.setStyles({border:b,padding:this.options.canvasPadding});this.center.get("morph").setOptions({transition:this.options.resizeTransition,duration:this.options.resizeDuration});},reloadGalleries:function(){this.galleries=[];this.families=[];this.formtags=$$("select","textarea");if(!this.activated){this.initMilkbox(false);}this.prepareGalleries();this.removeGalleriesEvents();this.setGalleriesEvents();if(this.xmlFiles.length==0){return;}this.xmlFiles.each(function(xmlfile,index){this.addGalleries(xmlfile);}.bind(this));},setAutoPlay:function(list){var l=($type(list)=="object")?[list]:list;l.each(function(item){var g=this.getGallery(item.gallery);if(g==-1){return;}var a=(item.autoplay==true)?item.autoplay:false;var d=($chk(item.delay)&&a)?item.delay:this.options.autoPlayDelay;g.options={autoplay:a,delay:d};},this);},startAutoPlay:function(opt){var g=-1;var i,d;if(opt&&opt.gallery){if($type(opt.gallery)=="array"){g=opt.gallery;}else{if($type(opt.gallery)=="string"){g=this.getGallery(opt.gallery);}}}if(g==-1){g=this.galleries[0];}d=(opt&&opt.delay&&($type(opt.delay)=="number"))?opt.delay*1000:(g.options&&g.options.delay)?g.options.delay*1000:this.options.autoPlayDelay*1000;i=(opt&&opt.index&&($type(opt.index)=="number"))?opt.index:0;if(d<this.options.resizeDuration*2){d=this.options.resizeDuration*2;}this.options.autoPlayDelay=d/1000;if(!this.options.autoPlay){this.setOptions({autoPlay:true,autoPlayDelay:this.options.autoPlayDelay});}if(this.closed){this.openMilkbox(g,i);if(this.mode!="fileGallery"){return;}this.addEvent("fileReady",function(){this.intObj=this.next_prev_aux.periodical(d,this,[null,"next"]);this.removeEvents("fileReady");}.bindWithEvent(this));}else{if(!this.closed){this.next_prev_aux(null,"next");}this.intObj=this.next_prev_aux.periodical(d,this,[null,"next"]);}this.paused=false;},stopAutoPlay:function(){if(this.intObj){$clear(this.intObj);this.intObj=null;}this.playpause.setStyle("backgroundPosition","0 -44px");this.paused=true;},removeGalleriesEvents:function(){this.galleries.each(function(gallery){$$(gallery).removeEvents("click");},this);},setGalleriesEvents:function(){this.galleries.each(function(gallery){$$(gallery).addEvent("click",function(e){var button=($(e.target).match("a"))?$(e.target):$(e.target).getParent("a");e.preventDefault();var g=this.getGallery(button.rel);if(g.options&&g.options.autoplay){this.setOptions({autoPlay:g.options.autoplay,autoPlayDelay:g.options.delay});}if(this.options.autoPlay){this.startAutoPlay({gallery:gallery,index:gallery.indexOf(button)});}else{this.openMilkbox(gallery,gallery.indexOf(button));}}.bindWithEvent(this));},this);},prepareEvents:function(xml){this.setGalleriesEvents();this.next.addEvent("click",this.next_prev_aux.bindWithEvent(this,"next"));this.prev.addEvent("click",this.next_prev_aux.bindWithEvent(this,"prev"));$$(this.next,this.prev,this.close).addEvents({mouseover:function(){this.setStyle("backgroundPosition","0 -22px");},mouseout:function(){this.setStyle("backgroundPosition","0 0");}});$(window.document).addEvent("keydown",function(e){if(this.mode!="fileGallery"||this.busy==true){return;}if(e.key=="right"||e.key=="space"){this.next_prev_aux(e,"next");}else{if(e.key=="left"){this.next_prev_aux(e,"prev");}else{if(e.key=="esc"){this.closeMilkbox();}}}}.bindWithEvent(this));this.playpause.addEvents({mouseover:function(e){if(this.paused==false){this.playpause.setStyle("backgroundPosition","0 -22px");}else{this.playpause.setStyle("backgroundPosition","0 -66px");}}.bindWithEvent(this),mouseout:function(){if(this.paused==false){this.playpause.setStyle("backgroundPosition","0 0");}else{this.playpause.setStyle("backgroundPosition","0 -44px");}}.bindWithEvent(this),click:function(){if(this.paused==false){this.stopAutoPlay();this.paused=true;this.playpause.setStyle("backgroundPosition","0 -66px");}else{var d=(this.currentGallery.options&&this.currentGallery.options.delay)?this.currentGallery.options.delay:this.options.autoPlayDelay;this.startAutoPlay({gallery:this.currentGallery,index:this.currentIndex+1,delay:d});this.paused=false;this.playpause.setStyle("backgroundPosition","0 0");}}.bindWithEvent(this)});this.overlay.get("tween").addEvent("onComplete",function(){if(this.overlay.getStyle("opacity")==this.options.overlayOpacity){this.center.tween("opacity",1);}else{if(this.overlay.getStyle("opacity")==0){this.overlay.setStyles({height:0,top:""});}}}.bindWithEvent(this));this.center.get("morph").addEvent("onComplete",function(){if($type(this.currentFile)=="element"){this.canvas.grab(this.currentFile);}else{(function(){this.canvas.grab(this.currentFile);}).delay(500,this);}this.canvas.tween("opacity",1);var d=(!(this.mode=="showThisImage"))?this.currentGallery[this.currentIndex].retrieve("title"):this.specialDescription;if($chk(d)){this.description.innerHTML=d;}if(this.mode=="fileGallery"){this.count.appendText((this.currentIndex+1)+" "+this.options.imageOfText+" "+this.currentGallery.length);}var currentCenterHeight=this.center.getStyle("height").toInt();this.navigation.setStyle("height",this.bottom.getStyle("height").toInt());var bottomSize=this.bottom.getSize().y;var targetOffset=(currentCenterHeight>this.canvas.getSize().y)?(this.bottom.getSize().y+this.canvas.getSize().y)-currentCenterHeight:bottomSize;this.bottom.setStyle("display","none");this.center.retrieve("setFinalHeight").start(currentCenterHeight,currentCenterHeight+targetOffset);}.bindWithEvent(this));this.center.retrieve("setFinalHeight").addEvent("onComplete",function(){this.bottom.setStyles({visibility:"visible",display:"block"});$$(this.description,this.navigation).setStyle("visibility","visible");var scrollSize=$(window).getScrollSize().y;var scrollTop=$(window).getScroll().y;this.overlay.setStyles({height:scrollSize+scrollTop,top:-scrollTop});this.busy=false;}.bindWithEvent(this));window.addEvent("resize",function(){if(this.overlay.getStyle("opacity")==0){return;}var scrollSize=$(window).getScrollSize().y;var scrollTop=$(window).getScroll().y;this.overlay.setStyles({height:scrollSize+scrollTop,top:-scrollTop});}.bindWithEvent(this));$$(this.overlay,this.close).addEvent("click",this.closeMilkbox.bindWithEvent(this));this.eventsok=true;},next_prev_aux:function(e,direction){if(e){e.preventDefault();this.stopAutoPlay();}else{if(this.busy||!this.fileReady){return;}}this.busy=true;var i,_i;if(direction=="next"){i=(this.currentIndex!=this.currentGallery.length-1)?this.currentIndex+=1:this.currentIndex=0;_i=(this.currentIndex!=this.currentGallery.length-1)?this.currentIndex+1:0;}else{i=(this.currentIndex!=0)?this.currentIndex-=1:this.currentIndex=this.currentGallery.length-1;_i=(this.currentIndex!=0)?this.currentIndex-1:this.currentGallery.length-1;}this.canvas.empty();this.description.empty();this.count.empty();this.loadFile(this.currentGallery[i],[this.currentGallery[_i]]);},prepareEffects:function(){this.overlay.set("tween",{duration:"short",link:"cancel"});this.center.set("tween",{duration:"short",link:"chain"});this.center.set("morph",{duration:this.options.resizeDuration,link:"chain",transition:this.options.resizeTransition});this.center.store("setFinalHeight",new Fx.Tween(this.center,{property:"height",duration:"short"}));this.canvas.set("tween",{link:"chain"});},prepareGalleries:function(responseElements){var milkbox_a=[];var a_tags=(responseElements)?responseElements:$$("a");a_tags.each(function(a){if(a.rel&&a.rel.test(/^milkbox/i)&&a.href.split("?")[0].test(/\.(gif|jpg|jpeg|png|swf)$/i)){if(a.rel.length>7&&!this.families.contains(a.rel)){this.families.push(a.rel);}milkbox_a.push(a);}},this);milkbox_a.each(function(a){$(a).store("href",a.href);$(a).store("rel",a.rel);$(a).store("title",a.title);if(this.checkFileType(a.href,"swf")){this.setFileProps($(a),a.rev);}if(this.options.removeTitle){$(a).removeProperty("title");}if(a.rel.length>7){this.families.each(function(f,i){if(a.rel==f){var gMounted=false;var index;this.galleries.each(function(g,k){if(g[0].rel==f){gMounted=true;index=k;return;}});if(gMounted==true){this.galleries[index].push($(a));}else{this.galleries.push([$(a)]);}}},this);}else{this.galleries.push([$(a)]);}},this);},prepareHTML:function(){this.overlay=new Element("div",{id:"mbOverlay",styles:{opacity:0,visibility:"visible",height:0,overflow:"hidden"}}).inject($(document.body));this.center=new Element("div",{id:"mbCenter",styles:{width:this.options.initialWidth,height:this.options.initialHeight,marginLeft:-(this.options.initialWidth/2),opacity:0}}).inject($(document.body));this.canvas=new Element("div",{id:"mbCanvas"}).inject(this.center);this.bottom=new Element("div",{id:"mbBottom"}).inject(this.center).setStyle("visibility","hidden");this.navigation=new Element("div",{id:"mbNavigation"}).setStyle("visibility","hidden");this.description=new Element("div",{id:"mbDescription"}).setStyle("visibility","hidden");this.bottom.adopt(this.navigation,this.description,new Element("div",{"class":"mbClear"}));this.close=new Element("a",{id:"mbCloseLink"});this.next=new Element("a",{id:"mbNextLink"});this.prev=new Element("a",{id:"mbPrevLink"});this.playpause=new Element("a",{id:"mbPlayPause"});this.count=new Element("span",{id:"mbCount"});$$(this.next,this.prev,this.count,this.playpause).setStyle("display","none");this.navigation.adopt(this.close,this.next,this.prev,this.playpause,new Element("div",{"class":"mbClear"}),this.count);},closeMilkbox:function(){this.cancelAllEffects();this.stopAutoPlay();this.setOptions(this.autoPlayBkup);this.currentFile=null;this.currentIndex=null;this.currentGallery=null;this.currentRequest=null;this.currentResponse=null;$$(this.prev,this.next,this.playpause,this.count).setStyle("display","none");this.playpause.setStyle("backgroundPosition","0 0");var border=this.center.getStyle("border-right-width").toInt();var navWidth=this.close.getSize().x+border;this.navigation.setStyles({width:navWidth,height:"",visibility:"hidden"});this.description.setStyle("margin-right",navWidth);this.description.empty();this.bottom.setStyles({visibility:"hidden",display:""});this.canvas.setStyles({opacity:0,width:"",height:""});this.canvas.empty();this.count.empty();this.center.setStyles({opacity:0,width:this.options.initialWidth,height:this.options.initialHeight,marginLeft:-(this.options.initialWidth/2)});this.overlay.tween("opacity",0);if(this.formtags&&this.formtags.length!=0){this.formtags.setStyle("display","");}this.mode=null;this.closed=true;this.first=true;this.fileReady=false;this.fireEvent("closed");},cancelAllEffects:function(){this.overlay.get("tween").cancel();this.center.get("morph").cancel();this.center.get("tween").cancel();this.center.retrieve("setFinalHeight").cancel();this.canvas.get("tween").cancel();}});
var Cufon=(function(){var m=function(){return m.replace.apply(null,arguments)};var x=m.DOM={ready:(function(){var C=false,E={loaded:1,complete:1};var B=[],D=function(){if(C){return}C=true;for(var F;F=B.shift();F()){}};if(document.addEventListener){document.addEventListener("DOMContentLoaded",D,false);window.addEventListener("pageshow",D,false)}if(!window.opera&&document.readyState){(function(){E[document.readyState]?D():setTimeout(arguments.callee,10)})()}if(document.readyState&&document.createStyleSheet){(function(){try{document.body.doScroll("left");D()}catch(F){setTimeout(arguments.callee,1)}})()}q(window,"load",D);return function(F){if(!arguments.length){D()}else{C?F():B.push(F)}}})(),root:function(){return document.documentElement||document.body}};var n=m.CSS={Size:function(C,B){this.value=parseFloat(C);this.unit=String(C).match(/[a-z%]*$/)[0]||"px";this.convert=function(D){return D/B*this.value};this.convertFrom=function(D){return D/this.value*B};this.toString=function(){return this.value+this.unit}},addClass:function(C,B){var D=C.className;C.className=D+(D&&" ")+B;return C},color:j(function(C){var B={};B.color=C.replace(/^rgba\((.*?),\s*([\d.]+)\)/,function(E,D,F){B.opacity=parseFloat(F);return"rgb("+D+")"});return B}),fontStretch:j(function(B){if(typeof B=="number"){return B}if(/%$/.test(B)){return parseFloat(B)/100}return{"ultra-condensed":0.5,"extra-condensed":0.625,condensed:0.75,"semi-condensed":0.875,"semi-expanded":1.125,expanded:1.25,"extra-expanded":1.5,"ultra-expanded":2}[B]||1}),getStyle:function(C){var B=document.defaultView;if(B&&B.getComputedStyle){return new a(B.getComputedStyle(C,null))}if(C.currentStyle){return new a(C.currentStyle)}return new a(C.style)},gradient:j(function(F){var G={id:F,type:F.match(/^-([a-z]+)-gradient\(/)[1],stops:[]},C=F.substr(F.indexOf("(")).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);for(var E=0,B=C.length,D;E<B;++E){D=C[E].split("=",2).reverse();G.stops.push([D[1]||E/(B-1),D[0]])}return G}),quotedList:j(function(E){var D=[],C=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,B;while(B=C.exec(E)){D.push(B[3]||B[1])}return D}),recognizesMedia:j(function(G){var E=document.createElement("style"),D,C,B;E.type="text/css";E.media=G;try{E.appendChild(document.createTextNode("/**/"))}catch(F){}C=g("head")[0];C.insertBefore(E,C.firstChild);D=(E.sheet||E.styleSheet);B=D&&!D.disabled;C.removeChild(E);return B}),removeClass:function(D,C){var B=RegExp("(?:^|\\s+)"+C+"(?=\\s|$)","g");D.className=D.className.replace(B,"");return D},supports:function(D,C){var B=document.createElement("span").style;if(B[D]===undefined){return false}B[D]=C;return B[D]===C},textAlign:function(E,D,B,C){if(D.get("textAlign")=="right"){if(B>0){E=" "+E}}else{if(B<C-1){E+=" "}}return E},textShadow:j(function(F){if(F=="none"){return null}var E=[],G={},B,C=0;var D=/(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;while(B=D.exec(F)){if(B[0]==","){E.push(G);G={};C=0}else{if(B[1]){G.color=B[1]}else{G[["offX","offY","blur"][C++]]=B[2]}}}E.push(G);return E}),textTransform:(function(){var B={uppercase:function(C){return C.toUpperCase()},lowercase:function(C){return C.toLowerCase()},capitalize:function(C){return C.replace(/\b./g,function(D){return D.toUpperCase()})}};return function(E,D){var C=B[D.get("textTransform")];return C?C(E):E}})(),whiteSpace:(function(){var D={inline:1,"inline-block":1,"run-in":1};var C=/^\s+/,B=/\s+$/;return function(H,F,G,E){if(E){if(E.nodeName.toLowerCase()=="br"){H=H.replace(C,"")}}if(D[F.get("display")]){return H}if(!G.previousSibling){H=H.replace(C,"")}if(!G.nextSibling){H=H.replace(B,"")}return H}})()};n.ready=(function(){var B=!n.recognizesMedia("all"),E=false;var D=[],H=function(){B=true;for(var K;K=D.shift();K()){}};var I=g("link"),J=g("style");function C(K){return K.disabled||G(K.sheet,K.media||"screen")}function G(M,P){if(!n.recognizesMedia(P||"all")){return true}if(!M||M.disabled){return false}try{var Q=M.cssRules,O;if(Q){search:for(var L=0,K=Q.length;O=Q[L],L<K;++L){switch(O.type){case 2:break;case 3:if(!G(O.styleSheet,O.media.mediaText)){return false}break;default:break search}}}}catch(N){}return true}function F(){if(document.createStyleSheet){return true}var L,K;for(K=0;L=I[K];++K){if(L.rel.toLowerCase()=="stylesheet"&&!C(L)){return false}}for(K=0;L=J[K];++K){if(!C(L)){return false}}return true}x.ready(function(){if(!E){E=n.getStyle(document.body).isUsable()}if(B||(E&&F())){H()}else{setTimeout(arguments.callee,10)}});return function(K){if(B){K()}else{D.push(K)}}})();function s(D){var C=this.face=D.face,B={"\u0020":1,"\u00a0":1,"\u3000":1};this.glyphs=D.glyphs;this.w=D.w;this.baseSize=parseInt(C["units-per-em"],10);this.family=C["font-family"].toLowerCase();this.weight=C["font-weight"];this.style=C["font-style"]||"normal";this.viewBox=(function(){var F=C.bbox.split(/\s+/);var E={minX:parseInt(F[0],10),minY:parseInt(F[1],10),maxX:parseInt(F[2],10),maxY:parseInt(F[3],10)};E.width=E.maxX-E.minX;E.height=E.maxY-E.minY;E.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")};return E})();this.ascent=-parseInt(C.ascent,10);this.descent=-parseInt(C.descent,10);this.height=-this.ascent+this.descent;this.spacing=function(L,N,E){var O=this.glyphs,M,K,G,P=[],F=0,J=-1,I=-1,H;while(H=L[++J]){M=O[H]||this.missingGlyph;if(!M){continue}if(K){F-=G=K[H]||0;P[I]-=G}F+=P[++I]=~~(M.w||this.w)+N+(B[H]?E:0);K=M.k}P.total=F;return P}}function f(){var C={},B={oblique:"italic",italic:"oblique"};this.add=function(D){(C[D.style]||(C[D.style]={}))[D.weight]=D};this.get=function(H,I){var G=C[H]||C[B[H]]||C.normal||C.italic||C.oblique;if(!G){return null}I={normal:400,bold:700}[I]||parseInt(I,10);if(G[I]){return G[I]}var E={1:1,99:0}[I%100],K=[],F,D;if(E===undefined){E=I>400}if(I==500){I=400}for(var J in G){if(!k(G,J)){continue}J=parseInt(J,10);if(!F||J<F){F=J}if(!D||J>D){D=J}K.push(J)}if(I<F){I=F}if(I>D){I=D}K.sort(function(M,L){return(E?(M>=I&&L>=I)?M<L:M>L:(M<=I&&L<=I)?M>L:M<L)?-1:1});return G[K[0]]}}function r(){function D(F,G){if(F.contains){return F.contains(G)}return F.compareDocumentPosition(G)&16}function B(G){var F=G.relatedTarget;if(!F||D(this,F)){return}C(this,G.type=="mouseover")}function E(F){C(this,F.type=="mouseenter")}function C(F,G){setTimeout(function(){var H=d.get(F).options;m.replace(F,G?h(H,H.hover):H,true)},10)}this.attach=function(F){if(F.onmouseenter===undefined){q(F,"mouseover",B);q(F,"mouseout",B)}else{q(F,"mouseenter",E);q(F,"mouseleave",E)}}}function u(){var C=[],D={};function B(H){var E=[],G;for(var F=0;G=H[F];++F){E[F]=C[D[G]]}return E}this.add=function(F,E){D[F]=C.push(E)-1};this.repeat=function(){var E=arguments.length?B(arguments):C,F;for(var G=0;F=E[G++];){m.replace(F[0],F[1],true)}}}function A(){var D={},B=0;function C(E){return E.cufid||(E.cufid=++B)}this.get=function(E){var F=C(E);return D[F]||(D[F]={})}}function a(B){var D={},C={};this.extend=function(E){for(var F in E){if(k(E,F)){D[F]=E[F]}}return this};this.get=function(E){return D[E]!=undefined?D[E]:B[E]};this.getSize=function(F,E){return C[F]||(C[F]=new n.Size(this.get(F),E))};this.isUsable=function(){return !!B}}function q(C,B,D){if(C.addEventListener){C.addEventListener(B,D,false)}else{if(C.attachEvent){C.attachEvent("on"+B,function(){return D.call(C,window.event)})}}}function v(C,B){var D=d.get(C);if(D.options){return C}if(B.hover&&B.hoverables[C.nodeName.toLowerCase()]){b.attach(C)}D.options=B;return C}function j(B){var C={};return function(D){if(!k(C,D)){C[D]=B.apply(null,arguments)}return C[D]}}function c(F,E){var B=n.quotedList(E.get("fontFamily").toLowerCase()),D;for(var C=0;D=B[C];++C){if(i[D]){return i[D].get(E.get("fontStyle"),E.get("fontWeight"))}}return null}function g(B){return document.getElementsByTagName(B)}function k(C,B){return C.hasOwnProperty(B)}function h(){var C={},B,F;for(var E=0,D=arguments.length;B=arguments[E],E<D;++E){for(F in B){if(k(B,F)){C[F]=B[F]}}}return C}function o(E,M,C,N,F,D){var K=document.createDocumentFragment(),H;if(M===""){return K}var L=N.separate;var I=M.split(p[L]),B=(L=="words");if(B&&t){if(/^\s/.test(M)){I.unshift("")}if(/\s$/.test(M)){I.push("")}}for(var J=0,G=I.length;J<G;++J){H=z[N.engine](E,B?n.textAlign(I[J],C,J,G):I[J],C,N,F,D,J<G-1);if(H){K.appendChild(H)}}return K}function l(D,M){var C=D.nodeName.toLowerCase();if(M.ignore[C]){return}var E=!M.textless[C];var B=n.getStyle(v(D,M)).extend(M);var F=c(D,B),G,K,I,H,L,J;if(!F){return}for(G=D.firstChild;G;G=I){K=G.nodeType;I=G.nextSibling;if(E&&K==3){if(H){H.appendData(G.data);D.removeChild(G)}else{H=G}if(I){continue}}if(H){D.replaceChild(o(F,n.whiteSpace(H.data,B,H,J),B,M,G,D),H);H=null}if(K==1){if(G.firstChild){if(G.nodeName.toLowerCase()=="cufon"){z[M.engine](F,null,B,M,G,D)}else{arguments.callee(G,M)}}J=G}}}var t=" ".split(/\s+/).length==0;var d=new A();var b=new r();var y=new u();var e=false;var z={},i={},w={autoDetect:false,engine:null,forceHitArea:false,hover:false,hoverables:{a:true},ignore:{applet:1,canvas:1,col:1,colgroup:1,head:1,iframe:1,map:1,optgroup:1,option:1,script:1,select:1,style:1,textarea:1,title:1,pre:1},printable:true,selector:(window.Sizzle||(window.jQuery&&function(B){return jQuery(B)})||(window.dojo&&dojo.query)||(window.Ext&&Ext.query)||(window.YAHOO&&YAHOO.util&&YAHOO.util.Selector&&YAHOO.util.Selector.query)||(window.$$&&function(B){return $$(B)})||(window.$&&function(B){return $(B)})||(document.querySelectorAll&&function(B){return document.querySelectorAll(B)})||g),separate:"words",textless:{dl:1,html:1,ol:1,table:1,tbody:1,thead:1,tfoot:1,tr:1,ul:1},textShadow:"none"};var p={words:/\s/.test("\u00a0")?/[^\S\u00a0]+/:/\s+/,characters:"",none:/^/};m.now=function(){x.ready();return m};m.refresh=function(){y.repeat.apply(y,arguments);return m};m.registerEngine=function(C,B){if(!B){return m}z[C]=B;return m.set("engine",C)};m.registerFont=function(D){if(!D){return m}var B=new s(D),C=B.family;if(!i[C]){i[C]=new f()}i[C].add(B);return m.set("fontFamily",'"'+C+'"')};m.replace=function(D,C,B){C=h(w,C);if(!C.engine){return m}if(!e){n.addClass(x.root(),"cufon-active cufon-loading");n.ready(function(){n.addClass(n.removeClass(x.root(),"cufon-loading"),"cufon-ready")});e=true}if(C.hover){C.forceHitArea=true}if(C.autoDetect){delete C.fontFamily}if(typeof C.textShadow=="string"){C.textShadow=n.textShadow(C.textShadow)}if(typeof C.color=="string"&&/^-/.test(C.color)){C.textGradient=n.gradient(C.color)}else{delete C.textGradient}if(!B){y.add(D,arguments)}if(D.nodeType||typeof D=="string"){D=[D]}n.ready(function(){for(var F=0,E=D.length;F<E;++F){var G=D[F];if(typeof G=="string"){m.replace(C.selector(G),C,true)}else{l(G,C)}}});return m};m.set=function(B,C){w[B]=C;return m};return m})();Cufon.registerEngine("canvas",(function(){var b=document.createElement("canvas");if(!b||!b.getContext||!b.getContext.apply){return}b=null;var a=Cufon.CSS.supports("display","inline-block");var e=!a&&(document.compatMode=="BackCompat"||/frameset|transitional/i.test(document.doctype.publicId));var f=document.createElement("style");f.type="text/css";f.appendChild(document.createTextNode(("cufon{text-indent:0;}@media screen,projection{cufon{display:inline;display:inline-block;position:relative;vertical-align:middle;"+(e?"":"font-size:1px;line-height:1px;")+"}cufon cufontext{display:-moz-inline-box;display:inline-block;width:0;height:0;overflow:hidden;text-indent:-10000in;}"+(a?"cufon canvas{position:relative;}":"cufon canvas{position:absolute;}")+"}@media print{cufon{padding:0;}cufon canvas{display:none;}}").replace(/;/g,"!important;")));document.getElementsByTagName("head")[0].appendChild(f);function d(p,h){var n=0,m=0;var g=[],o=/([mrvxe])([^a-z]*)/g,k;generate:for(var j=0;k=o.exec(p);++j){var l=k[2].split(",");switch(k[1]){case"v":g[j]={m:"bezierCurveTo",a:[n+~~l[0],m+~~l[1],n+~~l[2],m+~~l[3],n+=~~l[4],m+=~~l[5]]};break;case"r":g[j]={m:"lineTo",a:[n+=~~l[0],m+=~~l[1]]};break;case"m":g[j]={m:"moveTo",a:[n=~~l[0],m=~~l[1]]};break;case"x":g[j]={m:"closePath"};break;case"e":break generate}h[g[j].m].apply(h,g[j].a)}return g}function c(m,k){for(var j=0,h=m.length;j<h;++j){var g=m[j];k[g.m].apply(k,g.a)}}return function(V,w,P,t,C,W){var k=(w===null);if(k){w=C.getAttribute("alt")}var A=V.viewBox;var m=P.getSize("fontSize",V.baseSize);var B=0,O=0,N=0,u=0;var z=t.textShadow,L=[];if(z){for(var U=z.length;U--;){var F=z[U];var K=m.convertFrom(parseFloat(F.offX));var I=m.convertFrom(parseFloat(F.offY));L[U]=[K,I];if(I<B){B=I}if(K>O){O=K}if(I>N){N=I}if(K<u){u=K}}}var Z=Cufon.CSS.textTransform(w,P).split("");var E=V.spacing(Z,~~m.convertFrom(parseFloat(P.get("letterSpacing"))||0),~~m.convertFrom(parseFloat(P.get("wordSpacing"))||0));if(!E.length){return null}var h=E.total;O+=A.width-E[E.length-1];u+=A.minX;var s,n;if(k){s=C;n=C.firstChild}else{s=document.createElement("cufon");s.className="cufon cufon-canvas";s.setAttribute("alt",w);n=document.createElement("canvas");s.appendChild(n);if(t.printable){var S=document.createElement("cufontext");S.appendChild(document.createTextNode(w));s.appendChild(S)}}var aa=s.style;var H=n.style;var j=m.convert(A.height);var Y=Math.ceil(j);var M=Y/j;var G=M*Cufon.CSS.fontStretch(P.get("fontStretch"));var J=h*G;var Q=Math.ceil(m.convert(J+O-u));var o=Math.ceil(m.convert(A.height-B+N));n.width=Q;n.height=o;H.width=Q+"px";H.height=o+"px";B+=A.minY;H.top=Math.round(m.convert(B-V.ascent))+"px";H.left=Math.round(m.convert(u))+"px";var r=Math.max(Math.ceil(m.convert(J)),0)+"px";if(a){aa.width=r;aa.height=m.convert(V.height)+"px"}else{aa.paddingLeft=r;aa.paddingBottom=(m.convert(V.height)-1)+"px"}var X=n.getContext("2d"),D=j/A.height;X.scale(D,D*M);X.translate(-u,-B);X.save();function T(){var x=V.glyphs,ab,l=-1,g=-1,y;X.scale(G,1);while(y=Z[++l]){var ab=x[Z[l]]||V.missingGlyph;if(!ab){continue}if(ab.d){X.beginPath();if(ab.code){c(ab.code,X)}else{ab.code=d("m"+ab.d,X)}X.fill()}X.translate(E[++g],0)}X.restore()}if(z){for(var U=z.length;U--;){var F=z[U];X.save();X.fillStyle=F.color;X.translate.apply(X,L[U]);T()}}var q=t.textGradient;if(q){var v=q.stops,p=X.createLinearGradient(0,A.minY,0,A.maxY);for(var U=0,R=v.length;U<R;++U){p.addColorStop.apply(p,v[U])}X.fillStyle=p}else{X.fillStyle=P.get("color")}T();return s}})());Cufon.registerEngine("vml",(function(){var e=document.namespaces;if(!e){return}e.add("cvml","urn:schemas-microsoft-com:vml");e=null;var b=document.createElement("cvml:shape");b.style.behavior="url(#default#VML)";if(!b.coordsize){return}b=null;var h=(document.documentMode||0)<8;document.write(('<style type="text/css">cufoncanvas{text-indent:0;}@media screen{cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}cufoncanvas{position:absolute;text-align:left;}cufon{display:inline-block;position:relative;vertical-align:'+(h?"middle":"text-bottom")+";}cufon cufontext{position:absolute;left:-10000in;font-size:1px;}a cufon{cursor:pointer}}@media print{cufon cufoncanvas{display:none;}}</style>").replace(/;/g,"!important;"));function c(i,j){return a(i,/(?:em|ex|%)$|^[a-z-]+$/i.test(j)?"1em":j)}function a(l,m){if(m==="0"){return 0}if(/px$/i.test(m)){return parseFloat(m)}var k=l.style.left,j=l.runtimeStyle.left;l.runtimeStyle.left=l.currentStyle.left;l.style.left=m.replace("%","em");var i=l.style.pixelLeft;l.style.left=k;l.runtimeStyle.left=j;return i}function f(l,k,j,n){var i="computed"+n,m=k[i];if(isNaN(m)){m=k.get(n);k[i]=m=(m=="normal")?0:~~j.convertFrom(a(l,m))}return m}var g={};function d(p){var q=p.id;if(!g[q]){var n=p.stops,o=document.createElement("cvml:fill"),i=[];o.type="gradient";o.angle=180;o.focus="0";o.method="sigma";o.color=n[0][1];for(var m=1,l=n.length-1;m<l;++m){i.push(n[m][0]*100+"% "+n[m][1])}o.colors=i.join(",");o.color2=n[l][1];g[q]=o}return g[q]}return function(ac,G,Y,C,K,ad,W){var n=(G===null);if(n){G=K.alt}var I=ac.viewBox;var p=Y.computedFontSize||(Y.computedFontSize=new Cufon.CSS.Size(c(ad,Y.get("fontSize"))+"px",ac.baseSize));var y,q;if(n){y=K;q=K.firstChild}else{y=document.createElement("cufon");y.className="cufon cufon-vml";y.alt=G;q=document.createElement("cufoncanvas");y.appendChild(q);if(C.printable){var Z=document.createElement("cufontext");Z.appendChild(document.createTextNode(G));y.appendChild(Z)}if(!W){y.appendChild(document.createElement("cvml:shape"))}}var ai=y.style;var R=q.style;var l=p.convert(I.height),af=Math.ceil(l);var V=af/l;var P=V*Cufon.CSS.fontStretch(Y.get("fontStretch"));var U=I.minX,T=I.minY;R.height=af;R.top=Math.round(p.convert(T-ac.ascent));R.left=Math.round(p.convert(U));ai.height=p.convert(ac.height)+"px";var F=Y.get("color");var ag=Cufon.CSS.textTransform(G,Y).split("");var L=ac.spacing(ag,f(ad,Y,p,"letterSpacing"),f(ad,Y,p,"wordSpacing"));if(!L.length){return null}var k=L.total;var x=-U+k+(I.width-L[L.length-1]);var ah=p.convert(x*P),X=Math.round(ah);var O=x+","+I.height,m;var J="r"+O+"ns";var u=C.textGradient&&d(C.textGradient);var o=ac.glyphs,S=0;var H=C.textShadow;var ab=-1,aa=0,w;while(w=ag[++ab]){var D=o[ag[ab]]||ac.missingGlyph,v;if(!D){continue}if(n){v=q.childNodes[aa];while(v.firstChild){v.removeChild(v.firstChild)}}else{v=document.createElement("cvml:shape");q.appendChild(v)}v.stroked="f";v.coordsize=O;v.coordorigin=m=(U-S)+","+T;v.path=(D.d?"m"+D.d+"xe":"")+"m"+m+J;v.fillcolor=F;if(u){v.appendChild(u.cloneNode(false))}var ae=v.style;ae.width=X;ae.height=af;if(H){var s=H[0],r=H[1];var B=Cufon.CSS.color(s.color),z;var N=document.createElement("cvml:shadow");N.on="t";N.color=B.color;N.offset=s.offX+","+s.offY;if(r){z=Cufon.CSS.color(r.color);N.type="double";N.color2=z.color;N.offset2=r.offX+","+r.offY}N.opacity=B.opacity||(z&&z.opacity)||1;v.appendChild(N)}S+=L[aa++]}var M=v.nextSibling,t,A;if(C.forceHitArea){if(!M){M=document.createElement("cvml:rect");M.stroked="f";M.className="cufon-vml-cover";t=document.createElement("cvml:fill");t.opacity=0;M.appendChild(t);q.appendChild(M)}A=M.style;A.width=X;A.height=af}else{if(M){q.removeChild(M)}}ai.width=Math.max(Math.ceil(p.convert(k*P)),0);if(h){var Q=Y.computedYAdjust;if(Q===undefined){var E=Y.get("lineHeight");if(E=="normal"){E="1em"}else{if(!isNaN(E)){E+="em"}}Y.computedYAdjust=Q=0.5*(a(ad,E)-parseFloat(ai.height))}if(Q){ai.marginTop=Math.ceil(Q)+"px";ai.marginBottom=Q+"px"}}return y}})());