/* Copyright (c) 2007 Paul Bakaus (paul.bakaus@googlemail.com) and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * $LastChangedDate: 2007-12-20 08:43:48 -0600 (Thu, 20 Dec 2007) $
 * $Rev: 4257 $
 *
 * Version: 1.2
 *
 * Requires: jQuery 1.2+
 */
(function($){$.dimensions={version:'1.2'};$.each(['Height','Width'],function(i,name){$.fn['inner'+name]=function(){if(!this[0])return;var torl=name=='Height'?'Top':'Left',borr=name=='Height'?'Bottom':'Right';return this.is(':visible')?this[0]['client'+name]:num(this,name.toLowerCase())+num(this,'padding'+torl)+num(this,'padding'+borr);};$.fn['outer'+name]=function(options){if(!this[0])return;var torl=name=='Height'?'Top':'Left',borr=name=='Height'?'Bottom':'Right';options=$.extend({margin:false},options||{});var val=this.is(':visible')?this[0]['offset'+name]:num(this,name.toLowerCase())+num(this,'border'+torl+'Width')+num(this,'border'+borr+'Width')+num(this,'padding'+torl)+num(this,'padding'+borr);return val+(options.margin?(num(this,'margin'+torl)+num(this,'margin'+borr)):0);};});$.each(['Left','Top'],function(i,name){$.fn['scroll'+name]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(name=='Left'?val:$(window)['scrollLeft'](),name=='Top'?val:$(window)['scrollTop']()):this['scroll'+name]=val;}):this[0]==window||this[0]==document?self[(name=='Left'?'pageXOffset':'pageYOffset')]||$.boxModel&&document.documentElement['scroll'+name]||document.body['scroll'+name]:this[0]['scroll'+name];};});$.fn.extend({position:function(){var left=0,top=0,elem=this[0],offset,parentOffset,offsetParent,results;if(elem){offsetParent=this.offsetParent();offset=this.offset();parentOffset=offsetParent.offset();offset.top-=num(elem,'marginTop');offset.left-=num(elem,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&$.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return $(offsetParent);}});function num(el,prop){return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0;};})(jQuery);
/*
 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
 *
 * Uses the built in easing capabilities added In jQuery 1.1
 * to offer multiple easing options
 *
 * TERMS OF USE - jQuery Easing
 * 
 * Open source under the BSD License. 
 * 
 * Copyright � 2008 George McGinley Smith
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list 
 * of conditions and the following disclaimer in the documentation and/or other materials 
 * provided with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to endorse 
 * or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE. 
 *
*/

// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];

jQuery.extend( jQuery.easing,
{
	def: 'easeOutQuad',
	swing: function (x, t, b, c, d) {
		//alert(jQuery.easing.default);
		return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
	},
	easeInQuad: function (x, t, b, c, d) {
		return c*(t/=d)*t + b;
	},
	easeOutQuad: function (x, t, b, c, d) {
		return -c *(t/=d)*(t-2) + b;
	},
	easeInOutQuad: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t + b;
		return -c/2 * ((--t)*(t-2) - 1) + b;
	},
	easeInCubic: function (x, t, b, c, d) {
		return c*(t/=d)*t*t + b;
	},
	easeOutCubic: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t + 1) + b;
	},
	easeInOutCubic: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t + b;
		return c/2*((t-=2)*t*t + 2) + b;
	},
	easeInQuart: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t + b;
	},
	easeOutQuart: function (x, t, b, c, d) {
		return -c * ((t=t/d-1)*t*t*t - 1) + b;
	},
	easeInOutQuart: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
		return -c/2 * ((t-=2)*t*t*t - 2) + b;
	},
	easeInQuint: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t*t + b;
	},
	easeOutQuint: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t*t*t + 1) + b;
	},
	easeInOutQuint: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
		return c/2*((t-=2)*t*t*t*t + 2) + b;
	},
	easeInSine: function (x, t, b, c, d) {
		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
	},
	easeOutSine: function (x, t, b, c, d) {
		return c * Math.sin(t/d * (Math.PI/2)) + b;
	},
	easeInOutSine: function (x, t, b, c, d) {
		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
	},
	easeInExpo: function (x, t, b, c, d) {
		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
	},
	easeOutExpo: function (x, t, b, c, d) {
		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
	},
	easeInOutExpo: function (x, t, b, c, d) {
		if (t==0) return b;
		if (t==d) return b+c;
		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
	},
	easeInCirc: function (x, t, b, c, d) {
		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
	},
	easeOutCirc: function (x, t, b, c, d) {
		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
	},
	easeInOutCirc: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
	},
	easeInElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
	},
	easeOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
	},
	easeInOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
	},
	easeInBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*(t/=d)*t*((s+1)*t - s) + b;
	},
	easeOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
	},
	easeInOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158; 
		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
	},
	easeInBounce: function (x, t, b, c, d) {
		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
	},
	easeOutBounce: function (x, t, b, c, d) {
		if ((t/=d) < (1/2.75)) {
			return c*(7.5625*t*t) + b;
		} else if (t < (2/2.75)) {
			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
		} else if (t < (2.5/2.75)) {
			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
		} else {
			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
		}
	},
	easeInOutBounce: function (x, t, b, c, d) {
		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
	}
});

/*
 *
 * TERMS OF USE - EASING EQUATIONS
 * 
 * Open source under the BSD License. 
 * 
 * Copyright � 2001 Robert Penner
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list 
 * of conditions and the following disclaimer in the documentation and/or other materials 
 * provided with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to endorse 
 * or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE. 
 *
 */
// Delay Plugin for jQuery
// - http://www.evanbot.com
// - � 2008 Evan Byrne

jQuery.fn.delay = function(time,func){
	return this.each(function(){
		setTimeout(func,time);
	});
};
/**
 * @author Alexander Farkas
 * v. 1.02
 */
(function($) {
	$.extend($.fx.step,{
	    backgroundPosition: function(fx) {
            if (fx.state === 0 && typeof fx.end == 'string') {
                var start = $.curCSS(fx.elem,'backgroundPosition');
                start = toArray(start);
                fx.start = [start[0],start[2]];
                var end = toArray(fx.end);
                fx.end = [end[0],end[2]];
                fx.unit = [end[1],end[3]];
			}
            var nowPosX = [];
            nowPosX[0] = ((fx.end[0] - fx.start[0]) * fx.pos) + fx.start[0] + fx.unit[0];
            nowPosX[1] = ((fx.end[1] - fx.start[1]) * fx.pos) + fx.start[1] + fx.unit[1];
            fx.elem.style.backgroundPosition = nowPosX[0]+' '+nowPosX[1];

           function toArray(strg){
               strg = strg.replace(/left|top/g,'0px');
               strg = strg.replace(/right|bottom/g,'100%');
               strg = strg.replace(/([0-9\.]+)(\s|\)|$)/g,"$1px$2");
               var res = strg.match(/(-?[0-9\.]+)(px|\%|em|pt)\s(-?[0-9\.]+)(px|\%|em|pt)/);
               return [parseFloat(res[1],10),res[2],parseFloat(res[3],10),res[4]];
           }
        }
	});
})(jQuery);
/**
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('r.5=w(k,d,a){4(m d!=\'H\'){a=a||{};4(d===p){d=\'\';a.3=-1}2 g=\'\';4(a.3&&(m a.3==\'n\'||a.3.u)){2 f;4(m a.3==\'n\'){f=G E();f.C(f.B()+(a.3*z*s*s*v))}o{f=a.3}g=\'; 3=\'+f.u()}2 b=a.7?\'; 7=\'+(a.7):\'\';2 e=a.9?\'; 9=\'+(a.9):\'\';2 l=a.t?\'; t\':\'\';6.5=[k,\'=\',K(d),g,b,e,l].I(\'\')}o{2 h=p;4(6.5&&6.5!=\'\'){2 c=6.5.F(\';\');D(2 i=0;i<c.8;i++){2 j=r.A(c[i]);4(j.q(0,k.8+1)==(k+\'=\')){h=y(j.q(k.8+1));x}}}J h}};',47,47,'||var|expires|if|cookie|document|path|length|domain|||||||||||||typeof|number|else|null|substring|jQuery|60|secure|toUTCString|1000|function|break|decodeURIComponent|24|trim|getTime|setTime|for|Date|split|new|undefined|join|return|encodeURIComponent'.split('|'),0,{}))

/*
 * nyroModal - jQuery Plugin
 * http://nyromodal.nyrodev.com
 *
 * Copyright (c) 2008 Cedric Nirousset (nyrodev.com)
 * Licensed under the MIT license
 *
 * $Date: 2008-10-22 (Wed, 22 Oct 2008) $
 * $version: 1.3.0
 */
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('4X(8($){j 2t=($.2u.4Y&&43($.2u.44.4Z(0,1))<7);j 14=$(\'14\');j 3;j 1M=m;j 1y;j 21;j 4={3h:m,1a:m,15:m,O:m,1b:m,10:m,1c:m,1z:B,U:B,E:B,c:B,k:B,D:B,2v:m,v:B,2w:1N 3i()};j 1d={6:m,b:m};$.1e.16=8(f){5(!F)r m;r F.2x(8(){5(F.22.2y()==\'1m\'){$(F).51(8(e){5(F.45==\'46/1m-G\'){1n($.J(f,{o:F}));r y}e.1o();1n($.J(f,{o:F}));r m})}q{$(F).1f(8(e){e.1o();1n($.J(f,{o:F}));r m})}})};$.1e.1O=8(f){5(!F.1A)1n(f);r F.2x(8(){1n($.J(f,{o:F}))})};$.1O=8(f){1n(f)};$.52=8(f,11,1B){M(f,11,1B);5(!11&&4.1a){5(f.23)3.2z(4,3,8(){});5((4.15&&!4.O&&!4.10)&&(f.6||f.b)){2A(y);5(1M)4.k.l({12:\'\'});3.2B(4,3,8(){5(1M)4.k.l({12:\'24\'});5($.1p(3.3j))3.3j(4,3)})}}};$.53=8(){1q()};$.26=8(){j 1P=28(1);5(1P)r 1P.1O(3);r m};$.29=8(){j 1P=28(-1);5(1P)r 1P.1O(3);r m};$.1e.16.f={C:m,4:m,z:\'\',o:\'\',2a:\'\',3k:B,2C:\'54\',2D:\'16\',k:B,23:\'#55\',1r:{},1s:{56:\'57\'},6:B,b:B,47:1Q,48:49,58:y,3l:y,13:20,4a:\'[^\\.]\\.(59|5a|5b|5c|5d|5e)\\s*$\',3m:\'3n\',4b:y,4c:y,l:{U:{2E:2b,12:\'24\',2F:0,2G:0,b:\'2b%\',6:\'2b%\'},D:{2E:5f,12:\'24\',2F:\'50%\',2G:\'50%\'},2c:{},k:{1g:\'1C\'},E:{2E:5g,12:\'24\',2F:\'50%\',2G:\'50%\',K:\'-2H\',L:\'-2H\'}},2d:{n:\'<n S="D"></n>\',1r:\'<n S="D"></n>\',1m:\'<n S="D"></n>\',3o:\'<n S="D"></n>\',1t:\'<n S="4d"></n>\',V:\'<n S="4d"><a W="#" S="29">5h</a><a W="#"  S="26">5i</a></n>\',1s:\'<n S="5j"></n>\',P:\'<n S="5k"></n>\',4e:\'<n S="D"></n>\'},4f:\'<a W="#" S="2I" 1h="5l" 1D="5m">4g</a>\',3p:\'.16\',2J:\'.2I\',4h:\'<a W="#" S="2I">5n</a>\',4i:\'1c\',4j:\'5o 5p k 5q 5r 5s.<3q />5t 5u 5v 5w.<3q /><a W="#" S="2I">4g</a>\',3r:B,2K:2K,1R:1R,3s:B,2L:2L,1E:B,3t:B,2e:2e,2M:2M,2N:2N,2O:2O,2f:2f,2B:2B,3j:B,2z:2z,1u:B};8 1n(f){5(4.1b||4.10||4.O)r;C(\'1n\');4.3h=y;3u(f);4.1c=m;4.2v=m;4.15=m;4.2w=1N 3i();3.z=4k();5($.1p(3.3k))3.3k(3);o=3.o;p=3.p;5(3.z==\'1s\'){3.3v=m;M({1g:\'1v\'},\'l\',\'k\');3.k=\'<4l 5x="5y:5z-5A-5B-5C-5D" 6="\'+3.6+\'" b="\'+3.b+\'"><2P T="5E" 1S="\'+p+\'"></2P>\';j c=\'\';$.2x(3.1s,8(T,3w){3.k+=\'<2P T="\'+T+\'" 1S="\'+3w+\'"></2P>\';c+=\' \'+T+\'="\'+3w+\'"\'});3.k+=\'<4m 1F="\'+p+\'" z="5F/x-5G-5H" 6="\'+3.6+\'" b="\'+3.b+\'"\'+c+\'></4m></4l>\'}5(o){5(3.z==\'1m\'){j G=$(o).5I();G.2Q({T:3.2D,1S:1});5(3.Q)G.2Q({T:3.2C,1S:3.Q.1T(1)});$.1r($.J({},3.1r,{p:p,G:G,z:o.5J,4n:3x,1c:17}));C(\'4o 4p 2g: \'+o.2h);1i()}q 5(3.z==\'3o\'){1w();o.2R=\'3y\';o.2h=p;$(o).2S(\'<3z z="1v" T="\'+3.2D+\'" 1S="1" />\');5(3.Q)$(o).2S(\'<3z z="1v" T="\'+3.2C+\'" 1S="\'+3.Q.1T(1)+\'" />\');4.c.H(\'<P 4q="0" 4r="0" T="3y"></P>\');$(\'P\',4.c).l({6:3.6,b:3.b}).1c(17).2T(3A);C(\'4o 5K 2g: \'+o.2h);1i();18()}q 5(3.z==\'1t\'||3.z==\'V\'){j 1D=o.1D||3.3m;1w();4.c.H(\'<1U 1h="4s" />\').3B(\'1U\').1j(\'3C\',1D);C(\'3n 2g: \'+p);$(\'1U\',4.c).1c(17).2T(8(){C(\'3n 5L: \'+F.1F);$(F).3D(\'2T\');j w=4.c.6();j h=4.c.b();M({6:w,b:h,2U:w,2V:h});M({1g:\'1v\'},\'l\',\'k\');4.15=y;5(4.1b||4.10)18()}).1j(\'1F\',p);1i()}q 5(3.z==\'P\'){1w();4.c.H(\'<P 4q="0" 4r="0" 1F="\'+p+\'" T="3y"></P>\');C(\'5M 2g: \'+p);$(\'P\',4.c).2W(0).l({6:\'2b%\',b:\'2b%\'});3.3l=m;4.15=y;1i()}q 5(3.z){C(\'4t: \'+3.z);1w();4.c.H(3.k);j w=4.c.6();j h=4.c.b();j n=$(3.z);5(n.1A){M({z:\'n\'});w=n.6();h=n.b();5(1y)21=1y;1y=n;4.c.1x(n.1G())}M({6:w,b:h});5(4.c.H())4.15=y;q 17();1i();18()}q{C(\'4p 2g: \'+p);M({z:\'1r\'});j G={};5(3.Q){G=3.1r.G||{};G[3.2C]=3.Q.1T(1)}$.1r($.J({},3.1r,{p:p,4n:3x,1c:17,G:G}));1i()}}q 5(3.k){C(\'4t: \'+3.z);M({z:\'4e\'});1w();4.c.H($(\'<n/>\').H(3.k).1G());5(4.c.H())4.15=y;q 17();1i()}q{}}8 3u(f){C(\'3u\');3=$.J({},$.1e.16.f,f);3.Q=\'\';3.2X=0;3.2Y=0;3.3v=y;3E()}8 M(f,11,1B){5(4.3h){5(11&&1B){$.J(3[11][1B],f)}q 5(11){$.J(3[11],f)}q{$.J(3,f)}}q{5(11&&1B){$.J($.1e.16.f[11][1B],f)}q 5(11){$.J($.1e.16.f[11],f)}q{$.J($.1e.16.f,f)}}}8 3F(){5(2t){5(1H.3G){3.1I=1H.3G.4u;3.1J=1H.3G.2Z}q{3.1I=1H.14.4u;3.1J=1H.14.2Z}}q{3.1I=0;3.1J=0}}8 3E(){3F();3.L=-(3.6+3.2X)/2+3.1I;3.K=-(3.b+3.2Y)/2+3.1J}8 30(){3F();j 1k=1V(4.E);3.31=-(4.E.b()+1k.h.X+1k.h.13)/2+3.1J;3.32=-(4.E.6()+1k.w.X+1k.w.13)/2+3.1I}8 1w(){C(\'1w\');5(!4.1z){5(3.C)M({5N:\'5O\'},\'l\',\'U\');j 3H=\'\';5(2t){14.l({b:14.b()+\'t\',6:14.6()+\'t\',12:\'5P\',1g:\'1v\'});$(\'H\').l({1g:\'1v\'});M({12:\'3I\',b:\'4v%\',6:\'4v%\',2F:3.1J+\'t\',2G:3.1I+\'t\'},\'l\',\'U\');M({12:\'3I\'},\'l\',\'E\');M({12:\'3I\'},\'l\',\'D\');3H=$(\'<P 1h="5Q"></P>\').l($.J({},3.l.U,{1l:0,2E:50,X:\'5R\'}))}14.1x($(\'<n 1h="4w"><n 1h="4x"></n><n 1h="4y"><n 1h="4z"></n></n><n 1h="4A"></n><n 1h="4B"></n></n>\').Y());4.1z=$(\'#4w\').1K();4.U=$(\'#4x\').l($.J({33:3.23},3.l.U)).5S(3H);5(!3.4)4.U.1f(1q);4.E=$(\'#4B\').l(3.l.E).Y();4.v=$(\'#4y\').l(3.l.D).Y();4.k=$(\'#4z\');4.c=$(\'#4A\').Y();5($.1p($.1e.4C)){4.k.4C(8(e,d){j 2i=4.k.4D(0);5((d>0&&2i.2Z==0)||(d<0&&2i.5T-2i.2Z==2i.5U)){e.1o();e.5V()}})}$(1H).4E(3J);4.k.l({6:\'1C\',b:\'1C\'});4.v.l({6:\'1C\',b:\'1C\'})}}8 1i(){C(\'1i\');5(!4.1a){1w();4.O=y;3.2K(4,3,3K)}q{4.O=y;4.10=y;3.2M(4,3,8(){2j();4.O=m;18()})}}8 3J(e){5(e.2k==27){5(!3.4)1q()}q 5(3.z==\'V\'&&4.1a&&4.15&&!4.O&&!4.10){5(e.2k==39||e.2k==40){e.1o();$(\'.26\',4.k).2W(0).4F(\'1f\');r m}q 5(e.2k==37||e.2k==38){e.1o();$(\'.29\',4.k).2W(0).4F(\'1f\');r m}}}8 4k(){5(3.3L){j c=3.3L;5(!3.k)3.o=y;3.3L=B;r c}j o=3.o;j p;5(o&&o.22){3.p=p=o.22.2y()==\'1m\'?o.2h:o.W;5(o.5W==\'4\')3.4=y;5(o.2R&&o.2R.2y()==\'5X\'||(o.3M&&o.3M.3N(/:\\d*$/,\'\')!=1W.34.3M.3N(/:\\d*$/,\'\'))){r\'P\'}q 5(o.22.2y()==\'1m\'){M(3O(p));5(o.45==\'46/1m-G\')r\'3o\';r\'1m\'}}q{p=3.p;5(!3.k)3.o=y;5(!p)r B;j 4G=1N 3P("^5Y://","g");5(p.5Z(4G))r\'P\'}j 1t=1N 3P(3.4a,\'i\');5(1t.4H(p)){5(o&&o.35)r\'V\';q r\'1t\'}j 1s=1N 3P(\'[^\\.]\\.(1s)\\s*$\',\'i\');5(1s.4H(p))r\'1s\';j c=3O(p);M(c);5(!c.p)r c.Q}8 3O(p){j A={p:B,Q:B};5(p){j 2a=3Q(p);j 4I=3Q(1W.34.W);j 4J=1W.34.W.1T(0,1W.34.W.1A-4I.1A);j 3R=p.1T(0,p.1A-2a.1A);5(3R==4J){A.Q=2a}q{A.p=3R;A.Q=2a}}r A}8 17(){C(\'17\');4.1c=y;5(!4.1a)r;5($.1p(3.3r))3.3r(4,3);4.E.60(3.4i).H(3.4j);$(3.2J,4.E).1f(1q);30();4.E.l({K:3.31+\'t\',L:3.32+\'t\'})}8 36(){C(\'36\');5(!4.c.H())r;4.k.H(4.c.1G());4.c.3S();3T();5($.1p(3.3s))3.3s(4,3);4.k.1x(4.2w);j 3a=$.J({},3);5(1d.6)3a.6=B;5(1d.b)3a.b=B;$(3.2J,4.v).1f(1q);$(3.3p,4.v).16(3a)}8 3T(){C(\'3T\');j 2d=$(3.2d[3.z]);4.k.1x(2d.3U().2l());4.v.61(2d);5(3.z==\'V\'){j 3b=28(-1);5(3b){$(\'.29\',4.v).1j(\'W\',3b.1j(\'W\')).1f(8(e){e.1o();3b.1O(3);r m})}q{$(\'.29\',4.v).2l()}j 3c=28(1);5(3c){$(\'.26\',4.v).1j(\'W\',3c.1j(\'W\')).1f(8(e){e.1o();3c.1O(3);r m})}q{$(\'.26\',4.v).2l()}}2A()}8 28(3V){5(3.z==\'V\'){5(!3.4c)3V*=-1;j V=$(\'[35="\'+3.o.35+\'"]\');j 4K=V.2m(3.o);j 2m=4K+3V;5(2m>=0&&2m<V.1A)r V.2W(2m)}r m}8 2A(4L){C(\'2A\');5(!4.D)4.D=4.v.3U(\':62\');1d.6=m;1d.b=m;5(3.3l&&(!3.6||!3.b)){4.v.l({1l:0}).1K();j c={6:\'1C\',b:\'1C\'};5(3.6)c.6=3.6;5(3.b)c.b=3.b;4.k.l(c);5(!3.6){3.6=4.k.6();1d.6=y}5(!3.b){3.b=4.k.b();1d.b=y}4.v.Y().l({1l:1})}3.6=1L.4M(3.6,3.47);3.b=1L.4M(3.b,3.48);j 2n=1V(4.v);j 2o=1V(4.D);j 19=1V(4.k);j c={k:{6:3.6,b:3.b},2c:{6:3.6+19.w.R,b:3.b+19.h.R},D:{6:3.6+19.w.R+2o.w.R,b:3.b+19.h.R+2o.h.R}};5(3.3v){j 3d=$(1W).b()-3.13*2-2n.h.X-(c.D.b-3.b);j 3e=$(1W).6()-3.13*2-2n.w.X-(c.D.6-3.6);5(c.k.b>3d||c.k.6>3e){5(3.z==\'1t\'||3.z==\'V\'){j 2p=c.k.6-3.2U;j 2q=c.k.b-3.2V;5(2q<0)2q=0;5(2p<0)2p=0;j 2r=3d-2q;j 2s=3e-2p;j 3W=1L.3X(2r/3.2V,2s/3.2U);2r=1L.4N(3.2V*3W);2s=1L.4N(3.2U*3W);$(\'1U#4s\',4.k).l({b:2r+\'t\',6:2s+\'t\'});c.k.b=2r+2q;c.k.6=2s+2p}q{c.k.b=1L.3X(c.k.b,3d);c.k.6=1L.3X(c.k.6,3e)}c.2c={6:c.k.6+19.w.R,b:c.k.b+19.h.R};c.D={6:c.k.6+19.w.R+2o.w.R,b:c.k.b+19.h.R+2o.h.R}}}4.k.l($.J({},c.k,3.l.k));4.D.l($.J({},c.2c,3.l.2c));5(!4L){4.v.l($.J({},c.D,3.l.D));5(3.z==\'1t\'||3.z==\'V\'){j 1D=$(\'1U\',4.k).1j(\'3C\');$(\'1U\',4.k).4O(\'3C\');5(1D!=3.3m){j 3f=$(\'<n>\'+1D+\'</n>\');4.k.1x(3f);5(3.4b){j 4P=1V(3f);3f.l({6:(c.k.6+19.w.13-4P.w.R)+\'t\'})}}}5(!3.4)4.v.2S(3.4f)}c.D.2X=2n.w.X;c.D.2Y=2n.h.X;M(c.D);3E()}8 1q(e){C(\'1q\');5(e)e.1o();5(4.1z&&4.1a){4.1a=m;4.O=y;4.2v=y;5(4.1b||4.10){3.2f(4,3,8(){4.E.Y();4.1b=m;4.10=m;3.1R(4,3,1u)})}q{5(1M)4.k.l({12:\'\'});4.D.l({1g:\'1v\'});4.k.l({1g:\'1v\'});5($.1p(3.3t)){3.3t(4,3,8(){3.2e(4,3,8(){2j();3.1R(4,3,1u)})})}q{3.2e(4,3,8(){2j();3.1R(4,3,1u)})}}}5(e)r m}8 18(){C(\'18\');5(4.1a&&!4.O){5(4.15){5(4.c.H()){4.O=y;5(4.10){36();3.2N(4,3,8(){4.E.Y();4.10=m;4.1b=m;1E()})}q{3.2f(4,3,8(){4.E.Y();4.1b=m;36();30();3.2L(4,$.J({},3),1E)})}}}q 5(!4.1b&&!4.10){4.O=y;4.1b=y;5(4.1c)17();q 4.E.H(3.4h);$(3.2J,4.E).1f(1q);30();3.2O(4,3,8(){4.O=m;18()})}}}8 3x(G){C(\'63: \'+F.p);4.c.H(3.Q?3Y($(\'<n>\'+G+\'</n>\').3B(3.Q).1G()):3Y(G));5(4.c.H()){4.15=y;18()}q 17()}8 3A(){C(\'3A\');3.o.2h+=3.Q;3.o.2R=\'\';$(\'3z[T=\'+3.2D+\']\',3.o).2l();j P=4.c.3U(\'P\');j 4Q=P.3D(\'2T\').1G().3B(3.Q||\'14\').64(\'4R[1F]\');P.1j(\'1F\',\'65:66\');4.c.H(4Q.H());5(4.c.H()){4.15=y;18()}q 17()}8 2j(){C(\'2j\');4.O=m;5(21){21.1x(4.k.1G());21=B}q 5(1y){1y.1x(4.k.1G());1y=B}4.k.3S();4.v.3S().4O(\'67\');5(4.2v||4.10)4.v.Y();4.v.l(3.l.D).1x(4.k);18()}8 1u(){C(\'1u\');$(1H).3D(\'4E\',3J);4.O=m;4.1z.2l();4.1z=B;5(2t){14.l({b:\'\',6:\'\',12:\'\',1g:\'\'});$(\'H\').l({1g:\'\'})}5($.1p(3.1u))3.1u(4,3)}8 3K(){C(\'3K\');4.1a=y;4.O=m;18()}8 1E(){C(\'1E\');4.O=m;4.v.l({1l:\'\'});1M=$.2u.68&&69($.2u.44)<1.9&&3.z!=\'V\'&&3.z!=\'1t\';5(1M)4.k.l({12:\'24\'});5($.1p(3.1E))3.1E(4,3);5(1d.6)M({6:B});5(1d.b)M({b:B})}8 3Q(p){5(4S p==\'4T\'){j 3Z=p.6a(\'#\');5(3Z>-1)r p.1T(3Z)}r\'\'}8 3Y(G){5(4S G==\'4T\')G=G.3N(/<\\/?(H|6b|14)([^>]*)>/6c,\'\');j c=1N 3i();$.2x($.6d({0:G},F.6e),8(){5($.22(F,"4R")){5(!F.1F||$(F).1j(\'35\')==\'6f\')4.2w.2Q(F)}q c.2Q(F)});r c}8 1V(N){N=N.4D(0);j A={h:{3g:Z(N,\'K\')+Z(N,\'6g\'),X:Z(N,\'6h\')+Z(N,\'6i\'),13:Z(N,\'6j\')+Z(N,\'6k\')},w:{3g:Z(N,\'L\')+Z(N,\'6l\'),X:Z(N,\'6m\')+Z(N,\'6n\'),13:Z(N,\'6o\')+Z(N,\'6p\')}};A.h.1k=A.h.3g+A.h.X;A.w.1k=A.w.3g+A.w.X;A.h.4U=A.h.13+A.h.X;A.w.4U=A.w.13+A.w.X;A.h.R=A.h.1k+A.h.13;A.w.R=A.w.1k+A.w.13;r A}8 Z(N,T){j A=43($.6q(N,T,y));5(6r(A))A=0;r A}8 C(4V){5(3&&3.C&&4.1z)4.U.2S(4V+\'<3q />\')}8 2K(u,f,I){u.U.l({1l:0}).4W(6s,0.6t,I)}8 1R(u,f,I){u.U.41(49,I)}8 2O(u,f,I){u.E.l({K:f.31+\'t\',L:f.32+\'t\',1l:0}).1K().1X({1l:1},{1Y:I,1Z:1Q})}8 2f(u,f,I){I()}8 2L(u,f,I){u.E.l({K:f.31+\'t\',L:f.32+\'t\'}).1K().1X({6:f.6+\'t\',b:f.b+\'t\',K:(f.K)+\'t\',L:(f.L)+\'t\'},{1Z:42,1Y:8(){u.v.l({6:f.6+\'t\',b:f.b+\'t\',K:(f.K)+\'t\',L:(f.L)+\'t\'}).1K();u.E.41(6u,I)}})}8 2e(u,f,I){u.v.1X({b:\'2H\',6:\'2H\',K:(-(25+3.2Y)/2+3.1J)+\'t\',L:(-(25+3.2X)/2+3.1I)+\'t\'},{1Z:42,1Y:8(){u.v.Y();I()}})}8 2M(u,f,I){u.E.l({K:u.v.l(\'K\'),L:u.v.l(\'L\'),b:u.v.l(\'b\'),6:u.v.l(\'6\'),1l:0}).1K().4W(1Q,1,8(){u.v.Y();I()})}8 2N(u,f,I){u.v.Y().l({6:f.6+\'t\',L:f.L+\'t\',b:f.b+\'t\',K:f.K+\'t\',1l:1});u.E.1X({6:f.6+\'t\',L:f.L+\'t\',b:f.b+\'t\',K:f.K+\'t\'},{1Y:8(){u.v.1K();u.E.41(1Q,8(){u.E.Y();I()})},1Z:42})}8 2B(u,f,I){u.v.1X({6:f.6+\'t\',L:f.L+\'t\',b:f.b+\'t\',K:f.K+\'t\'},{1Y:I,1Z:1Q})}8 2z(u,f,I){5(!$.6v.6w.33){u.U.l({33:f.23});I()}q u.U.1X({33:f.23},{1Y:I,1Z:1Q})}$($.1e.16.f.3p).16()});',62,405,'|||currentSettings|modal|if|width||function|||height|tmp|||settings||||var|content|css|false|div|from|url|else|return||px|elts|contentWrapper|||true|type|ret|null|debug|wrapper|loading|this|data|html|callback|extend|marginTop|marginLeft|setCurrentSettings|elm|anim|iframe|selector|total|class|name|bg|gallery|href|border|hide|getCurCSS|transition|deep1|position|padding|body|dataReady|nyroModal|loadingError|showContentOrLoading|outerContent|ready|loadingShown|error|resized|fn|click|overflow|id|showModal|attr|outer|opacity|form|processModal|preventDefault|isFunction|removeModal|ajax|swf|image|endRemove|hidden|initModal|append|contentElt|full|length|deep2|auto|title|endShowContent|src|contents|document|marginScrollLeft|marginScrollTop|show|Math|fixFF|new|nyroModalManual|link|400|hideBackground|value|substring|img|getOuter|window|animate|complete|duration||contentEltLast|nodeName|bgColor|fixed||nyroModalNext||getGalleryLink|nyroModalPrev|hash|100|wrapper2|wrap|hideContent|hideLoading|Load|action|elt|endHideContent|keyCode|remove|index|outerWrapper|outerWrapper2|diffW|diffH|calcH|calcW|isIE6|browser|closing|scripts|each|toLowerCase|updateBgColor|calculateSize|resize|selIndicator|formIndicator|zIndex|top|left|50px|nyroModalClose|closeSelector|showBackground|showContent|showTransition|hideTransition|showLoading|param|push|target|prepend|load|imgWidth|imgHeight|eq|borderW|borderH|scrollTop|setMarginloading|marginTopLoading|marginLeftLoading|backgroundColor|location|rel|fillContent||||currentSettingsNew|linkPrev|linkNext|maxHeight|maxWidth|divTitle|margin|started|Array|endResize|processHandler|autoSizable|defaultImgAlt|Image|formData|openSelector|br|handleError|endFillContent|beforeHideContent|setDefaultCurrentSettings|resizable|val|ajaxLoaded|nyroModalIframe|input|formDataLoaded|find|alt|unbind|setMargin|setMarginScroll|documentElement|iframeHideIE|absolute|keyHandler|endBackground|forceType|hostname|replace|extractUrlSel|RegExp|getHash|req|empty|wrapContent|children|dir|ratio|min|filterScripts|hashPos||fadeOut|350|parseInt|version|enctype|multipart|minWidth|minHeight|300|regexImg|setWidthImgTitle|rtl|wrapperImg|manual|closeButton|Close|contentLoading|errorClass|contentError|fileType|object|embed|success|Form|Ajax|frameborder|hspace|nyroModalImg|Content|scrollLeft|110|nyroModalFull|nyroModalBg|nyroModalWrapper|nyroModalContent|nyrModalTmp|nyroModalLoading|mousewheel|get|keydown|trigger|reg1|test|hashLoc|curLoc|currentIndex|resizing|max|floor|removeAttr|outerDivTitle|iframeContent|script|typeof|string|inner|msg|fadeTo|jQuery|msie|substr||submit|nyroModalSettings|nyroModalRemove|nyroModalSel|000000|wmode|transparent|resizeable|jpg|jpeg|png|tiff|gif|bmp|101|102|Prev|Next|wrapperSwf|wrapperIframe|closeBut|close|Cancel|The|requested|cannot|be|loaded|Please|try|again|later|classid|clsid|D27CDB6E|AE6D|11cf|96B8|444553540000|movie|application|shockwave|flash|serializeArray|method|Data|Loaded|Iframe|color|white|static|nyroModalIframeHideIe|none|before|scrollHeight|clientHeight|stopPropagation|rev|_blank|http|match|addClass|wrapInner|first|AjaxLoaded|not|about|blank|style|mozilla|parseFloat|indexOf|head|gi|clean|ownerDocument|forceLoad|marginBottom|borderTopWidth|borderBottomWidth|paddingTop|paddingBottom|marginRight|borderLeftWidth|borderRightWidth|paddingLeft|paddingRight|curCSS|isNaN|500|75|200|fx|step'.split('|'),0,{}));
// bigTarget.js - A jQuery Plugin
// Version 1.0.1
// Written by Leevi Graham - Technical Director - Newism Web Design & Development
// http://newism.com.au
// Notes: Tooltip code from fitted.js - http://www.trovster.com/lab/plugins/fitted/
// create closure
(function($) {
  // plugin definition
  $.fn.bigTarget = function(options) {
    debug(this);
    // build main options before element iteration
    var opts = $.extend({}, $.fn.bigTarget.defaults, options);
    // iterate and reformat each matched element
    return this.each(function() {
      // set the anchor attributes
      var $a = $(this);
      var href = $a.attr('href');
      var title = $a.attr('title');
      // build element specific options
      var o = $.meta ? $.extend({}, opts, $a.data()) : opts;
      // update element styles
      $a.parents(o.clickZone)
        .hover(function() {
          $h = $(this);
          $h.addClass(o.hoverClass);
          if(typeof o.title != 'undefined' && o.title === true && title != '') {
            $h.attr('title',title);
          }
        }, function() {
          
          $h.removeClass(o.hoverClass);
          if(typeof o.title != 'undefined' && o.title === true && title != '') {
            $h.removeAttr('title');
          }
        })
        // click
        .click(function() {
          if(getSelectedText() == "")
          {
            if($a.is('[rel*=external]')){
              window.open(href);
              return false;
            }
            else {
              //$a.click(); $a.trigger('click');
              window.location = href;
            }
          }
        });
    });
  };
  // private function for debugging
  function debug($obj) {
    if (window.console && window.console.log)
    window.console.log('bigTarget selection count: ' + $obj.size());
  };
  // get selected text
  function getSelectedText(){
    if(window.getSelection){
      return window.getSelection().toString();
    }
    else if(document.getSelection){
      return document.getSelection();
    }
    else if(document.selection){
      return document.selection.createRange().text;
    }
  };
  // plugin defaults
  $.fn.bigTarget.defaults = {
    hoverClass  : 'hover',
    clickZone : 'li:eq(0)',
    title   : true
  };
// end of closure
})(jQuery);
/*
 * jQuery Media Plugin for converting elements into rich media content.
 *
 * Examples and documentation at: http://malsup.com/jquery/media/
 * Copyright (c) 2007-2008 M. Alsup
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 * @author: M. Alsup
 * @version: 0.85 (07-FEB-2009)
 * @requires jQuery v1.1.2 or later
 * $Id: jquery.media.js 2460 2007-07-23 02:53:15Z malsup $
 *
 * Supported Media Players:
 *    - Flash
 *    - Quicktime
 *    - Real Player
 *    - Silverlight
 *    - Windows Media Player
 *    - iframe
 *
 * Supported Media Formats:
 *   Any types supported by the above players, such as:
 *     Video: asf, avi, flv, mov, mpg, mpeg, mp4, qt, smil, swf, wmv, 3g2, 3gp
 *     Audio: aif, aac, au, gsm, mid, midi, mov, mp3, m4a, snd, rm, wav, wma
 *     Other: bmp, html, pdf, psd, qif, qtif, qti, tif, tiff, xaml
 *
 * Thanks to Mark Hicken and Brent Pedersen for helping me debug this on the Mac!
 * Thanks to Dan Rossi for numerous bug reports and code bits!
 */
;(function($) {

/**
 * Chainable method for converting elements into rich media.
 *
 * @param options
 * @param callback fn invoked for each matched element before conversion
 * @param callback fn invoked for each matched element after conversion
 */
$.fn.media = function(options, f1, f2) {
    return this.each(function() {
        if (typeof options == 'function') {
            f2 = f1;
            f1 = options;
            options = {};
        }
        var o = getSettings(this, options);
        // pre-conversion callback, passes original element and fully populated options
        if (typeof f1 == 'function') f1(this, o);
        
        var r = getTypesRegExp();
        var m = r.exec(o.src) || [''];
        o.type ? m[0] = o.type : m.shift();
        for (var i=0; i < m.length; i++) {
            fn = m[i].toLowerCase();
            if (isDigit(fn[0])) fn = 'fn' + fn; // fns can't begin with numbers
            if (!$.fn.media[fn]) 
                continue;  // unrecognized media type
            // normalize autoplay settings
            var player = $.fn.media[fn+'_player'];
            if (!o.params) o.params = {};
            if (player) {
                var num = player.autoplayAttr == 'autostart';
                o.params[player.autoplayAttr || 'autoplay'] = num ? (o.autoplay ? 1 : 0) : o.autoplay ? true : false;
            }
            var $div = $.fn.media[fn](this, o);

            $div.css('backgroundColor', o.bgColor).width(o.width);
            // post-conversion callback, passes original element, new div element and fully populated options
            if (typeof f2 == 'function') f2(this, $div[0], o, player.name);
            break;
        }
    });
};

/**
 * Non-chainable method for adding or changing file format / player mapping
 * @name mapFormat
 * @param String format File format extension (ie: mov, wav, mp3)
 * @param String player Player name to use for the format (one of: flash, quicktime, realplayer, winmedia, silverlight or iframe
 */
$.fn.media.mapFormat = function(format, player) {
    if (!format || !player || !$.fn.media.defaults.players[player]) return; // invalid
    format = format.toLowerCase();
    if (isDigit(format[0])) format = 'fn' + format;
    $.fn.media[format] = $.fn.media[player];
    $.fn.media[format+'_player'] = $.fn.media.defaults.players[player];
};

// global defautls; override as needed
$.fn.media.defaults = {
    width:         400,
    height:        400,
    autoplay:      0,         // normalized cross-player setting
    bgColor:       '#ffffff', // background color
    params:        { wmode: 'transparent'},  // added to object element as param elements; added to embed element as attrs
    attrs:         {},        // added to object and embed elements as attrs
    flvKeyName:    'file',    // key used for object src param (thanks to Andrea Ercolino)
    flashvars:     {},        // added to flash content as flashvars param/attr
    flashVersion:  '7',       // required flash version
    expressInstaller: null,   // src for express installer
    
    // default flash video and mp3 player (@see: http://jeroenwijering.com/?item=Flash_Media_Player)
    flvPlayer:     'mediaplayer.swf',
    mp3Player:     'mediaplayer.swf',
    
    // @see http://msdn2.microsoft.com/en-us/library/bb412401.aspx
    silverlight: {
        inplaceInstallPrompt: 'true', // display in-place install prompt?
        isWindowless:         'true', // windowless mode (false for wrapping markup)
        framerate:            '24',   // maximum framerate
        version:              '0.9',  // Silverlight version
        onError:              null,   // onError callback
        onLoad:               null,   // onLoad callback
        initParams:           null,   // object init params
        userContext:          null    // callback arg passed to the load callback
    }
};

// Media Players; think twice before overriding
$.fn.media.defaults.players = {
    flash: {
        name:         'flash',
        types:        'flv,mp3,swf',
        oAttrs:   {
            classid:  'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000',
            type:     'application/x-oleobject',
            codebase: 'http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + $.fn.media.defaults.flashVersion
        },
        eAttrs: {
            type:         'application/x-shockwave-flash',
            pluginspage:  'http://www.adobe.com/go/getflashplayer'
        }        
    },
    quicktime: {
        name:         'quicktime',
        types:        'aif,aiff,aac,au,bmp,gsm,mov,mid,midi,mpg,mpeg,mp4,m4a,psd,qt,qtif,qif,qti,snd,tif,tiff,wav,3g2,3gp',
        oAttrs:   {
            classid:  'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
            codebase: 'http://www.apple.com/qtactivex/qtplugin.cab'
        },
        eAttrs: {
            pluginspage:  'http://www.apple.com/quicktime/download/'
        }
    },
    realplayer: {
        name:         'real',
        types:        'ra,ram,rm,rpm,rv,smi,smil',
        autoplayAttr: 'autostart',
        oAttrs:   {
            classid:  'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA'
        },
        eAttrs: {
            type:         'audio/x-pn-realaudio-plugin',
            pluginspage:  'http://www.real.com/player/'
        }
    },
    winmedia: {
        name:         'winmedia',
        types:        'asx,asf,avi,wma,wmv',
        autoplayAttr: 'autostart',
        oUrl:         'url',
        oAttrs:   {
            classid:  'clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6',
            type:     'application/x-oleobject'
        },
        eAttrs: {
            type:         $.browser.mozilla && isFirefoxWMPPluginInstalled() ? 'application/x-ms-wmp' : 'application/x-mplayer2',
            pluginspage:  'http://www.microsoft.com/Windows/MediaPlayer/'
        }        
    },
    // special cases
    iframe: {
        name:  'iframe',
        types: 'html,pdf'
    },
    silverlight: {
        name:  'silverlight',
        types: 'xaml'
    }
};

//
//  everything below here is private
//


// detection script for FF WMP plugin (http://www.therossman.org/experiments/wmp_play.html)
// (hat tip to Mark Ross for this script)
function isFirefoxWMPPluginInstalled() {
    var plugs = navigator.plugins;
    for (i = 0; i < plugs.length; i++) {
        var plugin = plugs[i];
        if (plugin['filename'] == 'np-mswmp.dll')
            return true;
    }
    return false;
}

var counter = 1;

for (var player in $.fn.media.defaults.players) {
    var types = $.fn.media.defaults.players[player].types;
    $.each(types.split(','), function(i,o) {
        if (isDigit(o[0])) o = 'fn' + o;
        $.fn.media[o] = $.fn.media[player] = getGenerator(player);
        $.fn.media[o+'_player'] = $.fn.media.defaults.players[player];
    });
};

function getTypesRegExp() {
    var types = '';
    for (var player in $.fn.media.defaults.players) {
        if (types.length) types += ',';
        types += $.fn.media.defaults.players[player].types;
    };
    return new RegExp('\\.(' + types.replace(/,/g,'|') + ')$\\b');
};

function getGenerator(player) {
    return function(el, options) {
        return generate(el, options, player);
    };
};

function isDigit(c) {
    return '0123456789'.indexOf(c) > -1;
};

// flatten all possible options: global defaults, meta, option obj
function getSettings(el, options) {
    options = options || {};
    var $el = $(el);
    var cls = el.className || '';
    // support metadata plugin (v1.0 and v2.0)
    var meta = $.metadata ? $el.metadata() : $.meta ? $el.data() : {};
    meta = meta || {};
    var w = meta.width  || parseInt(((cls.match(/w:(\d+)/)||[])[1]||0));
    var h = meta.height || parseInt(((cls.match(/h:(\d+)/)||[])[1]||0));
   
    if (w) meta.width  = w;
    if (h) meta.height = h;
    if (cls) meta.cls = cls;

    var a = $.fn.media.defaults;
    var b = options;
    var c = meta;

    var p = { params: { bgColor: options.bgColor || $.fn.media.defaults.bgColor } };
    var opts = $.extend({}, a, b, c);
    $.each(['attrs','params','flashvars','silverlight'], function(i,o) {
        opts[o] = $.extend({}, p[o] || {}, a[o] || {}, b[o] || {}, c[o] || {});
    });

    if (typeof opts.caption == 'undefined') opts.caption = $el.text();

    // make sure we have a source!
    opts.src = opts.src || $el.attr('href') || $el.attr('src') || 'unknown';
    return opts;
};

//
//  Flash Player
//

// generate flash using SWFObject library if possible
$.fn.media.swf = function(el, opts) {
    if (!window.SWFObject && !window.swfobject) {
        // roll our own
        if (opts.flashvars) {
            var a = [];
            for (var f in opts.flashvars)
                a.push(f + '=' + opts.flashvars[f]);
            if (!opts.params) opts.params = {};
            opts.params.flashvars = a.join('&');
        }
        return generate(el, opts, 'flash');
    }

    var id = el.id ? (' id="'+el.id+'"') : '';
    var cls = opts.cls ? (' class="' + opts.cls + '"') : '';
    var $div = $('<div' + id + cls + '>');

    // swfobject v2+
    if (window.swfobject) {
        $(el).after($div).appendTo($div);
        if (!el.id) el.id = 'movie_player_' + counter++;

        // replace el with swfobject content
        swfobject.embedSWF(opts.src, el.id, opts.width, opts.height, opts.flashVersion, 
            opts.expressInstaller, opts.flashvars, opts.params, opts.attrs);
    }
    // swfobject < v2
    else {
        $(el).after($div).remove();
        var so = new SWFObject(opts.src, 'movie_player_' + counter++, opts.width, opts.height, opts.flashVersion, opts.bgColor);
        if (opts.expressInstaller) so.useExpressInstall(opts.expressInstaller);    

        for (var p in opts.params)
            if (p != 'bgColor') so.addParam(p, opts.params[p]);
        for (var f in opts.flashvars)
            so.addVariable(f, opts.flashvars[f]);
        so.write($div[0]);
    }

    if (opts.caption) $('<div>').appendTo($div).html(opts.caption);
    return $div;
};

// map flv and mp3 files to the swf player by default
$.fn.media.flv = $.fn.media.mp3 = function(el, opts) {
    var src = opts.src;
    var player = /\.mp3\b/i.test(src) ? $.fn.media.defaults.mp3Player : $.fn.media.defaults.flvPlayer;
    var key = opts.flvKeyName;
    src = encodeURIComponent(src);
    opts.src = player;
    opts.src = opts.src + '?'+key+'=' + (src);
    var srcObj = {};
    srcObj[key] = src;
    opts.flashvars = $.extend({}, srcObj, opts.flashvars );
    return $.fn.media.swf(el, opts);
};

//
//  Silverlight
//
$.fn.media.xaml = function(el, opts) {
    if (!window.Sys || !window.Sys.Silverlight) {
        if ($.fn.media.xaml.warning) return;
        $.fn.media.xaml.warning = 1;
        alert('You must include the Silverlight.js script.');
        return;
    }

    var props = {
        width: opts.width,
        height: opts.height,
        background: opts.bgColor,
        inplaceInstallPrompt: opts.silverlight.inplaceInstallPrompt,
        isWindowless: opts.silverlight.isWindowless,
        framerate: opts.silverlight.framerate,
        version: opts.silverlight.version
    };
    var events = {
        onError: opts.silverlight.onError,
        onLoad: opts.silverlight.onLoad
    };

    var id1 = el.id ? (' id="'+el.id+'"') : '';
    var id2 = opts.id || 'AG' + counter++;
    // convert element to div
    var cls = opts.cls ? (' class="' + opts.cls + '"') : '';
    var $div = $('<div' + id1 + cls + '>');
    $(el).after($div).remove();
    
    Sys.Silverlight.createObjectEx({
        source: opts.src,
        initParams: opts.silverlight.initParams,
        userContext: opts.silverlight.userContext,
        id: id2,
        parentElement: $div[0],
        properties: props,
        events: events
    });

    if (opts.caption) $('<div>').appendTo($div).html(opts.caption);
    return $div;
};

//
// generate object/embed markup
//
function generate(el, opts, player) {
    var $el = $(el);
    var o = $.fn.media.defaults.players[player];
    
    if (player == 'iframe') {
        var o = $('<iframe' + ' width="' + opts.width + '" height="' + opts.height + '" >');
        o.attr('src', opts.src);
        o.css('backgroundColor', o.bgColor);
    }
    else if ($.browser.msie) {
        var a = ['<object width="' + opts.width + '" height="' + opts.height + '" '];
        for (var key in opts.attrs)
            a.push(key + '="'+opts.attrs[key]+'" ');
        for (var key in o.oAttrs || {}) {
            var v = o.oAttrs[key];
            if (key == 'codebase' && window.location.protocol == 'https')
                v = v.replace('http','https');
            a.push(key + '="'+v+'" ');
        }
        a.push('></ob'+'ject'+'>');
        var p = ['<param name="' + (o.oUrl || 'src') +'" value="' + opts.src + '">'];
        for (var key in opts.params)
            p.push('<param name="'+ key +'" value="' + opts.params[key] + '">');
        var o = document.createElement(a.join(''));
        for (var i=0; i < p.length; i++)
            o.appendChild(document.createElement(p[i]));
    }
    else {
        var a = ['<embed width="' + opts.width + '" height="' + opts.height + '" style="display:block"'];
        if (opts.src) a.push(' src="' + opts.src + '" ');
        for (var key in opts.attrs)
            a.push(key + '="'+opts.attrs[key]+'" ');
        for (var key in o.eAttrs || {})
            a.push(key + '="'+o.eAttrs[key]+'" ');
        for (var key in opts.params)
            if (key != 'wmode') // FF3/Quicktime borks on wmode
                a.push(key + '="'+opts.params[key]+'" ');
        a.push('></em'+'bed'+'>');
    }
    // convert element to div
    var id = el.id ? (' id="'+el.id+'"') : '';
    var cls = opts.cls ? (' class="' + opts.cls + '"') : '';
    var $div = $('<div' + id + cls + '>');
    $el.after($div).remove();
    ($.browser.msie || player == 'iframe') ? $div.append(o) : $div.html(a.join(''));
    if (opts.caption) $('<div>').appendTo($div).html(opts.caption);
    return $div;
};


})(jQuery);
