if(typeof Shadowbox=="undefined") {
	throw"Unable to load Shadowbox, no base library adapter found."
}
(function(){
	var version="1.0";
	var options={
		assetURL:"",
		loadingImage:"/recursos/js/imagenes/loading.gif",
		animate:true,
		animSequence:"wh",
		flvPlayer:"flvplayer.swf",
		overlayColor:"#000",
		overlayOpacity:0.85,overlayBgImage:"images/overlay-85.png",
		listenOverlay:true,
		autoplayMovies:true,
		showMovieControls:true,
		resizeDuration:0.35,
		fadeDuration:0.35,
		displayNav:true,
		continuous:false,
		displayCounter:true,
		counterType:"default",
		viewportPadding:20,
		handleLgImages:"resize",
		initialHeight:160,
		initialWidth:320,
		enableKeys:true,
		keysClose:["c","q",27],
		keysNext:["n",39],
		keysPrev:["p",37],
		onOpen:null,
		onFinish:null,
		onChange:null,
		onClose:null,
		handleUnsupported:"link",
		skipSetup:false,
		
		text:{
			cancel:"Cancelar",
			loading:"cargando",
				close:'<img  src="/recursos/js/imagenes/close.png"/ alt="Cerrar">',
				next:'<img src="/recursos/js/imagenes/next.png"/ alt="Siguiente">',
				prev:'<img src="/recursos/js/imagenes/previous.png"/ alt="Anterior">',
			errors:{
				single:'You must install the <a href="{0}">{1}</a> browser plugin to view this content.',
				shared:'You must install both the <a href="{0}">{1}</a> and <a href="{2}">{3}</a> browser plugins to view this content.',
				either:'You must install either the <a href="{0}">{1}</a> or the <a href="{2}">{3}</a> browser plugin to view this content.'
			}
		},
		
		errors:{
			fla:{
				name:"Flash",url:"http://www.adobe.com/products/flashplayer/"},
				qt:{name:"QuickTime",url:"http://www.apple.com/quicktime/download/"},
				wmp:{name:"Windows Media Player",url:"http://www.microsoft.com/windows/windowsmedia/"},
				f4m:{name:"Flip4Mac",url:"http://www.flip4mac.com/wmv_download.htm"}
			},
			skin:{
				main:'<div id="shadowbox_overlay"></div><div id="shadowbox_container"><div id="shadowbox"><div id="shadowbox_title"><div id="shadowbox_title_inner"></div></div><div id="shadowbox_body"><div id="shadowbox_body_inner"></div><div id="shadowbox_loading"></div></div><div id="shadowbox_toolbar"><div id="shadowbox_toolbar_inner"></div></div></div></div>',
				loading:'<img src="{0}" alt="{1}" /><span><a href="javascript:Shadowbox.close();">{2}</a></span>',
				counter:'<div id="shadowbox_counter">{0}</div>',
				close:'<div id="shadowbox_nav_close"><a href="javascript:Shadowbox.close();">{0}</a></div>',
				next:'<div id="shadowbox_nav_next"><a href="javascript:Shadowbox.next();">{0}</a></div>',
				prev:'<div id="shadowbox_nav_previous"><a href="javascript:Shadowbox.previous();">{0}</a></div>'
			},
			ext:{
				img:["png","jpg","jpeg","gif","bmp"],qt:["dv","mov","moov","movie","mp4"],
				wmp:["asf","wm","wmv"],
				qtwmp:["avi","mpg","mpeg"],
				iframe:["asp","aspx","cgi","cfm","htm","html","pl","php","php3","php4","php5","phtml","rb","rhtml","shtml","txt","vbs"]
			}
	};
		
	var default_options=null;
	var SL=Shadowbox.lib;
	var RE={
		resize:/(img|swf|flv)/,
		overlay:/(img|iframe|html|inline)/,
		swf:/\.swf\s*$/i,
		flv:/\.flv\s*$/i,
		domain:/:\/\/(.*?)[:\/]/,
		inline:/#(.+)$/,
		rel:/^(light|shadow)box/i,
		gallery:/^(light|shadow)box\[(.*?)\]/i,
		unsupported:/^unsupported-(\w+)/,
		param:/\s*([a-z_]*?)\s*=\s*(.+)\s*/,
		empty:/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i
	};
	
	var cache=[];
	var current_gallery;
	var current;
	var optimal_height=options.initialHeight;
	var optimal_width=options.initialWidth;
	var current_height=0;
	var current_width=0;
	var preloader;
	var initialized=false;
	var activated=false;
	var drag;
	var draggable;
	var overlay_img_needed;
	var ua=navigator.userAgent.toLowerCase();
	var isStrict=document.compatMode=="CSS1Compat",isOpera=ua.indexOf("opera")>-1,isIE=ua.indexOf("msie")>-1,isIE7=ua.indexOf("msie 7")>-1,isBorderBox=isIE&&!isStrict,isSafari=(/webkit|khtml/).test(ua),isSafari3=isSafari&&!!(document.evaluate),isGecko=!isSafari&&ua.indexOf("gecko")>-1,isWindows=(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1),isMac=(ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1),isLinux=(ua.indexOf("linux")!=-1);
	var absolute_pos=isIE&&!isIE7;
	var plugins=null;
	
	if(navigator.plugins&&navigator.plugins.length){
		var detectPlugin=function(plugin_name){
			var detected=false;
			for(var i=0,len=navigator.plugins.length;i<len;++i){
				if(navigator.plugins[i].name.indexOf(plugin_name)>-1){
					detected=true;break
				}
			}
			return detected
		};
		var f4m=detectPlugin("Flip4Mac");
		var plugins={
			fla:detectPlugin("Shockwave Flash"),
			qt:detectPlugin("QuickTime"),
			wmp:!f4m&&detectPlugin("Windows Media"),
			f4m:f4m
		}
	}else{
		var detectPlugin=function(plugin_name){
			var detected=false;
			try{
				var axo=new ActiveXObject(plugin_name);
				if(axo){detected=true}
			}
			catch(e){}
			return detected
		};
		
		var plugins={
			fla:detectPlugin("ShockwaveFlash.ShockwaveFlash"),
			qt:detectPlugin("QuickTime.QuickTime"),
			wmp:detectPlugin("wmplayer.ocx"),
			f4m:false
		}
	}
	
	var apply=function(o,e){
		for(var p in e){o[p]=e[p]}
		return o
	};
	
	var isLink=function(el){
		return typeof el.tagName=="string"&&(el.tagName.toUpperCase()=="A"||el.tagName.toUpperCase()=="AREA")
	};
	
	SL.getViewportHeight=function(){
		var height=window.innerHeight;
		var mode=document.compatMode;
		
		if((mode||isIE)&&!isOpera){
			height=isStrict?document.documentElement.clientHeight:document.body.clientHeight
		}
		return height
	};
	
	SL.getViewportWidth=function(){
		var width=window.innerWidth;
		var mode=document.compatMode;
		if(mode||isIE){
			width=isStrict?document.documentElement.clientWidth:document.body.clientWidth
		}
		return width
	};
	
	SL.getDocumentHeight=function(){
		var scrollHeight=isStrict?document.documentElement.scrollHeight:document.body.scrollHeight;
		return Math.max(scrollHeight,SL.getViewportHeight())
		};
	
	SL.getDocumentWidth=function(){
		var scrollWidth=isStrict?document.documentElement.scrollWidth:document.body.scrollWidth;
		return Math.max(scrollWidth,SL.getViewportWidth())
	};
	
	var clearOpacity=function(el){
		if(isIE){
			if(typeof el.style.filter=="string"&&(/alpha/i).test(el.style.filter)){
				el.style.filter=""
			}
		}else{
			el.style.opacity="";
			el.style["-moz-opacity"]="";
			el.style["-khtml-opacity"]=""
		}
	};
	
	var fadeIn=function(el,endingOpacity,duration,callback){
		if(options.animate){
			SL.setStyle(el,"opacity",0);
			el.style.visibility="visible";
			SL.animate(el,{opacity:{to:endingOpacity}},duration,function(){
				if(endingOpacity==1){
					clearOpacity(el)
				}
				if(typeof callback=="function"){
					callback()
				}
			})
		}else{
			if(endingOpacity==1){
				clearOpacity(el)
			}else{
				SL.setStyle(el,"opacity",endingOpacity)
			}
			el.style.visibility="visible";
			if(typeof callback=="function"){
				callback()
			}
		}
	};
	
	var fadeOut=function(el,duration,callback){
		var cb=function(){
			el.style.visibility="hidden";
			clearOpacity(el);
			if(typeof callback=="function"){
				callback()
			}
		};
		if(options.animate){
			SL.animate(el,{opacity:{to:0}},duration,cb)
		}else{
			cb()
		}
	};
	
	var appendHTML=function(el,html){
		el=SL.get(el);
		if(el.insertAdjacentHTML){
			el.insertAdjacentHTML("BeforeEnd",html);
			return el.lastChild
		}
		if(el.lastChild){
			var range=el.ownerDocument.createRange();
			range.setStartAfter(el.lastChild);
			var frag=range.createContextualFragment(html);
			el.appendChild(frag);
			return el.lastChild
		}else{
			el.innerHTML=html;
			return el.lastChild
		}
	};
	
	var overwriteHTML=function(el,html){
		el=SL.get(el);
		el.innerHTML=html;
		return el.firstChild
	};
	
	var getComputedHeight=function(el){
		var h=Math.max(el.offsetHeight,el.clientHeight);
		if(!h){
			h=parseInt(SL.getStyle(el,"height"),10)||0;
			if(!isBorderBox){
				h+=parseInt(SL.getStyle(el,"padding-top"),10)+parseInt(SL.getStyle(el,"padding-bottom"),10)+parseInt(SL.getStyle(el,"border-top-width"),10)+parseInt(SL.getStyle(el,"border-bottom-width"),10)
			}
		}
		return h
	};
	
	var getComputedWidth=function(el){
		var w=Math.max(el.offsetWidth,el.clientWidth);
		if(!w){
			w=parseInt(SL.getStyle(el,"width"),10)||0;
			if(!isBorderBox){
				w+=parseInt(SL.getStyle(el,"padding-left"),10)+parseInt(SL.getStyle(el,"padding-right"),10)+parseInt(SL.getStyle(el,"border-left-width"),10)+parseInt(SL.getStyle(el,"border-right-width"),10)
			}
		}
		return w
	};
	var getPlayerType=function(url){
		if(RE.img.test(url)){
			return"img"
		}
		var match=url.match(RE.domain);
		var this_domain=match?document.domain==match[1]:false;
		if(url.indexOf("#")>-1&&this_domain){
			return"inline"
		}
		var q_index=url.indexOf("?");
		if(q_index>-1){
			url=url.substring(0,q_index)
		}
		if(RE.swf.test(url)){
			return plugins.fla?"swf":"unsupported-swf"
		}
		if(RE.flv.test(url)){
			return plugins.fla?"flv":"unsupported-flv"
		}if(RE.qt.test(url)){
			return plugins.qt?"qt":"unsupported-qt"
		}
		if(RE.wmp.test(url)){
			if(plugins.wmp){
				return"wmp"
			}else{
				if(plugins.f4m){
					return"qt"
				}else{
					return isMac?(plugins.qt?"unsupported-f4m":"unsupported-qtf4m"):"unsupported-wmp"
				}
			}
		}else{
			if(RE.qtwmp.test(url)){
				if(plugins.qt){
					return"qt"
				}else{
					if(plugins.wmp){
						return"wmp"
					}else{
						return isMac?"unsupported-qt":"unsupported-qtwmp"
					}
				}
			}else{
				if(!this_domain||RE.iframe.test(url)){
					return"iframe"
				}
			}
		}
		return"unsupported"
	};
	
	var handleClick=function(ev){
		var link;
		if(isLink(this)){
			link=this
		}else{
			link=SL.getTarget(ev);
			while(!isLink(link)&&link.parentNode){
				link=link.parentNode
			}
		}
		Shadowbox.open(link);
		if(current_gallery.length){
			SL.preventDefault(ev)
		}
	};

	var setupGallery=function(obj){
		var copy=apply({},obj);
		if(!obj.gallery){
			current_gallery=[copy];current=0
		}else{
			current_gallery=[];
			var index,ci;
			for(var i=0,len=cache.length;i<len;++i){
				ci=cache[i];
				if(ci.gallery){
					if(ci.content==obj.content&&ci.gallery==obj.gallery&&ci.title==obj.title){
						index=current_gallery.length
					}
					if(ci.gallery==obj.gallery){
						current_gallery.push(apply({},ci))
					}
				}
			}
			if(index==null){
				current_gallery.unshift(copy);
				index=0
			}
			current=index
		}
		var match,r;
		for(var i=0,len=current_gallery.length;i<len;++i){
			r=false;
			if(current_gallery[i].type=="unsupported"){
				r=true
			}else{
				if(match=RE.unsupported.exec(current_gallery[i].type)){
					if(options.handleUnsupported=="link"){
						current_gallery[i].type="html";
						var m;
						switch(match[1]){
							case"qtwmp":
								m=String.format(options.text.errors.either,options.errors.qt.url,options.errors.qt.name,options.errors.wmp.url,options.errors.wmp.name);
								break;
							case"qtf4m":
								m=String.format(options.text.errors.shared,options.errors.qt.url,options.errors.qt.name,options.errors.f4m.url,options.errors.f4m.name);
								break;
							default:
								if(match[1]=="swf"||match[1]=="flv"){
									match[1]="fla"
								}
								m=String.format(options.text.errors.single,options.errors[match[1]].url,options.errors[match[1]].name)
						}
						current_gallery[i]=apply(current_gallery[i],{height:160,width:320,content:'<div class="shadowbox_message">'+m+"</div>"})
					}else{
						r=true
					}
				}else{
					if(current_gallery[i].type=="inline"){
						var match=RE.inline.exec(current_gallery[i].content);
						if(match){
							var el;
							if(el=SL.get(match[1])){
								current_gallery[i].content=el.innerHTML
							}else{
								throw"No element found with id "+match[1]
							}
						}else{
							throw"No element id found for inline content"
						}
					}
				}
			}
			if(r){
				current_gallery.splice(i,1);
				if(i<current){
					--current
				}
				--i
			}
		}
	};

	var buildBars=function(){
		var link=current_gallery[current];
		if(!link){
			return
		}
		var title_i=SL.get("shadowbox_title_inner");
		title_i.innerHTML=(link.title)?link.title:"";
		var tool_i=SL.get("shadowbox_toolbar_inner");
		tool_i.innerHTML="";
		if(options.displayNav){
			tool_i.innerHTML=String.format(options.skin.close,options.text.close);
			if(current_gallery.length>1){
				if(options.continuous){
					appendHTML(tool_i,String.format(options.skin.next,options.text.next));
					appendHTML(tool_i,String.format(options.skin.prev,options.text.prev))
				}else{
					if((current_gallery.length-1)>current){
						appendHTML(tool_i,String.format(options.skin.next,options.text.next))
					}
					if(current>0){
						appendHTML(tool_i,String.format(options.skin.prev,options.text.prev))
					}
				}
			}
		}
		if(current_gallery.length>1&&options.displayCounter){
			var counter="";
			if(options.counterType=="skip"){
				for(var i=0,len=current_gallery.length;i<len;++i){
					counter+='<a href="javascript:Shadowbox.change('+i+');"';
					if(i==current){
						counter+=' class="shadowbox_counter_current"'
					}
					counter+=">"+(i+1)+"</a>"
				}
			}else{
				counter=(current+1)+" of "+current_gallery.length
			}
			appendHTML(tool_i,String.format(options.skin.counter,counter))
		}
	};

	var hideBars=function(callback){
		var title_m=getComputedHeight(SL.get("shadowbox_title"));
		var tool_m=0-getComputedHeight(SL.get("shadowbox_toolbar"));
		var title_i=SL.get("shadowbox_title_inner");
		var tool_i=SL.get("shadowbox_toolbar_inner");
		if(options.animate&&callback){
			SL.animate(title_i,{marginTop:{to:title_m}},0.2);
			SL.animate(tool_i,{marginTop:{to:tool_m}},0.2,callback)
		}else{
			SL.setStyle(title_i,"marginTop",title_m+"px");
			SL.setStyle(tool_i,"marginTop",tool_m+"px")
		}
	};

	var showBars=function(callback){
		var title_i=SL.get("shadowbox_title_inner");
		if(options.animate){
			if(title_i.innerHTML!=""){
				SL.animate(title_i,{marginTop:{to:0}},0.35)
			}
			SL.animate(SL.get("shadowbox_toolbar_inner"),{marginTop:{to:0}},0.35,callback)
		}else{
			if(title_i.innerHTML!=""){
				SL.setStyle(title_i,"margin-top","0px")
			}
			SL.setStyle(SL.get("shadowbox_toolbar_inner"),"margin-top","0px");
			callback()
		}
	};

	var resetDrag=function(){
		drag={x:0,y:0,start_x:null,start_y:null}
	};

	var toggleDrag=function(on){
		if(on){
			resetDrag();
			var styles=["position:absolute","cursor:"+(isGecko?"-moz-grab":"move")];
			styles.push(isIE?"background-color:#fff;filter:alpha(opacity=0)":"background-color:transparent");
			appendHTML("shadowbox_body_inner",'<div id="shadowbox_drag_layer" style="'+styles.join(";")+'"></div>');
			SL.addEvent(SL.get("shadowbox_drag_layer"),"mousedown",listenDrag)
		}else{
			var d=SL.get("shadowbox_drag_layer");
			if(d){
				SL.removeEvent(d,"mousedown",listenDrag);
				SL.remove(d)
			}
		}
	};

	var listenDrag=function(ev){
		drag.start_x=ev.clientX;
		drag.start_y=ev.clientY;
		draggable=SL.get("shadowbox_content");
		SL.addEvent(document,"mousemove",positionDrag);
		SL.addEvent(document,"mouseup",unlistenDrag);
		if(isGecko){
			SL.setStyle(SL.get("shadowbox_drag_layer"),"cursor","-moz-grabbing")
		}
	};

	var unlistenDrag=function(){
		SL.removeEvent(document,"mousemove",positionDrag);
		SL.removeEvent(document,"mouseup",unlistenDrag);
		if(isGecko){
			SL.setStyle(SL.get("shadowbox_drag_layer"),"cursor","-moz-grab")
		}
	};

	var positionDrag=function(ev){
		var move_y=ev.clientY-drag.start_y;
		drag.start_y=drag.start_y+move_y;
		drag.y=Math.max(Math.min(0,drag.y+move_y),current_height-optimal_height);
		SL.setStyle(draggable,"top",drag.y+"px");
		var move_x=ev.clientX-drag.start_x;
		drag.start_x=drag.start_x+move_x;
		drag.x=Math.max(Math.min(0,drag.x+move_x),current_width-optimal_width);
		SL.setStyle(draggable,"left",drag.x+"px")
	};

	var loadContent=function(){
		var obj=current_gallery[current];
		if(!obj){
			return
		}
		buildBars();
		switch(obj.type){
			case"img":
				preloader=new Image();
				preloader.onload=function(){
					var h=obj.height?parseInt(obj.height,10):preloader.height;
					var w=obj.width?parseInt(obj.width,10):preloader.width;
					resizeContent(h,w,function(dims){
						showBars(function(){
							setContent({tag:"img",height:dims.i_height,width:dims.i_width,src:obj.content,style:"position:absolute"});
							if(dims.enableDrag&&options.handleLgImages=="drag"){
								toggleDrag(true);
								SL.setStyle(SL.get("shadowbox_drag_layer"),{height:dims.i_height+"px",width:dims.i_width+"px"})
							}
							finishContent()
						})
					});
					preloader.onload=function(){}
				};
				preloader.src=obj.content;
				break;
			case"swf":
			case"flv":
			case"qt":
			case"wmp":
				var markup=Shadowbox.movieMarkup(obj);
				resizeContent(markup.height,markup.width,function(){
					showBars(function(){
						setContent(markup);
						finishContent()
					})
				});
				break;
			case"iframe":
				var h=obj.height?parseInt(obj.height,10):SL.getViewportHeight();
				var w=obj.width?parseInt(obj.width,10):SL.getViewportWidth();
				var content={tag:"iframe",name:"shadowbox_content",height:"100%",width:"100%",frameborder:"0",marginwidth:"0",marginheight:"0",scrolling:"auto"};
				resizeContent(h,w,function(dims){
					showBars(function(){
						setContent(content);
						var win=(isIE)?SL.get("shadowbox_content").contentWindow:window.frames["shadowbox_content"];
						win.location=obj.content;finishContent()
					})
				});
				break;
			case"html":
			case"inline":
				var h=obj.height?parseInt(obj.height,10):SL.getViewportHeight();
				var w=obj.width?parseInt(obj.width,10):SL.getViewportWidth();
				var content={tag:"div",cls:"html",html:obj.content};
				resizeContent(h,w,function(){
					showBars(function(){
						setContent(content);
						finishContent()
					})
				});
				break;
			default:
				throw"Shadowbox cannot open content of type "+obj.type
		}
		if(current_gallery.length>0){
			var next=current_gallery[current+1];
			if(!next){
				next=current_gallery[0]
			}
			if(next.type=="img"){
				var preload_next=new Image();
				preload_next.src=next.href
			}
			var prev=current_gallery[current-1];
			if(!prev){
				prev=current_gallery[current_gallery.length-1]
			}
			if(prev.type=="img"){
				var preload_prev=new Image();
				preload_prev.src=prev.href
			}
		}
	};

	var setContent=function(obj){
		var id="shadowbox_content";
		var content=SL.get(id);
		if(content){
			switch(content.tagName.toUpperCase()){
				case"OBJECT":
					var link=current_gallery[(obj?current-1:current)];
					if(link.type=="wmp"&&isIE){
						try{
							shadowbox_content.controls.stop();
							shadowbox_content.URL="non-existent.wmv";
							window.shadowbox_content=function(){}
						}catch(e){}
					}else{
						if(link.type=="qt"&&isSafari){
							try{
								document.shadowbox_content.Stop()
							}catch(e){}
							content.innerHTML=""
						}
					}
					setTimeout(function(){
						SL.remove(content)
					},10);
					break;
				case"IFRAME":
					SL.remove(content);
					if(isGecko){
						delete window.frames[id]
					}
					break;
				default:
					SL.remove(content)
			}
		}
		if(obj){
			if(!obj.id){
				obj.id=id
			}
			return appendHTML("shadowbox_body_inner",Shadowbox.createHTML(obj))
		}
		return null
	};

	var finishContent=function(){
		var obj=current_gallery[current];
		if(!obj){
			return
		}
		hideLoading(function(){
			listenKeyboard(true);
			if(options.onFinish&&typeof options.onFinish=="function"){
				options.onFinish(obj)
			}
		})
	};

	var resizeContent=function(height,width,callback){
		optimal_height=height;
		optimal_width=width;
		var resizable=RE.resize.test(current_gallery[current].type);
		var dims=getDimensions(optimal_height,optimal_width,resizable);
		if(callback){
			var cb=function(){
				callback(dims)
			};
			switch(options.animSequence){
				case"hw":
					adjustHeight(dims.height,dims.top,true,function(){
						adjustWidth(dims.width,true,cb)
					});
					break;
				case"wh":
					adjustWidth(dims.width,true,function(){
						adjustHeight(dims.height,dims.top,true,cb)
					});
					break;
				default:
					adjustWidth(dims.width,true);
					adjustHeight(dims.height,dims.top,true,cb)
			}
		}else{
			adjustWidth(dims.width,false);
			adjustHeight(dims.height,dims.top,false);
			if(options.handleLgImages=="resize"&&resizable){
				var content=SL.get("shadowbox_content");
				if(content){
					content.height=dims.i_height;content.width=dims.i_width
				}
			}
		}
	};

	var getDimensions=function(o_height,o_width,resizable){
		if(typeof resizable=="undefined"){
			resizable=false
		}
		var height=o_height=parseInt(o_height);
		var width=o_width=parseInt(o_width);
		var shadowbox_b=SL.get("shadowbox_body");
		var view_height=SL.getViewportHeight();
		var extra_height=parseInt(SL.getStyle(shadowbox_b,"border-top-width"),10)+parseInt(SL.getStyle(shadowbox_b,"border-bottom-width"),10)+parseInt(SL.getStyle(shadowbox_b,"margin-top"),10)+parseInt(SL.getStyle(shadowbox_b,"margin-bottom"),10)+getComputedHeight(SL.get("shadowbox_title"))+getComputedHeight(SL.get("shadowbox_toolbar"))+(2*options.viewportPadding);
		if((height+extra_height)>=view_height){
			height=view_height-extra_height
		}
		var view_width=SL.getViewportWidth();
		var extra_body_width=parseInt(SL.getStyle(shadowbox_b,"border-left-width"),10)+parseInt(SL.getStyle(shadowbox_b,"border-right-width"),10)+parseInt(SL.getStyle(shadowbox_b,"margin-left"),10)+parseInt(SL.getStyle(shadowbox_b,"margin-right"),10);
		var extra_width=extra_body_width+(2*options.viewportPadding);
		if((width+extra_width)>=view_width){
			width=view_width-extra_width
		}
		var enableDrag=false;
		var i_height=o_height;
		var i_width=o_width;
		var handle=options.handleLgImages;
		if(resizable&&(handle=="resize"||handle=="drag")){
			var change_h=(o_height-height)/o_height;
			var change_w=(o_width-width)/o_width;
			if(handle=="resize"){
				if(change_h>change_w){
					width=Math.round((o_width/o_height)*height)
				}else{
					if(change_w>change_h){
						height=Math.round((o_height/o_width)*width)
					}
				}
				i_width=width;
				i_height=height
			}else{
				var link=current_gallery[current];
				if(link){
					enableDrag=link.type=="img"&&(change_h>0||change_w>0)
				}
			}
		}
		return{height:height,width:width+extra_body_width,i_height:i_height,i_width:i_width,top:((view_height-(height+extra_height))/2)+options.viewportPadding,enableDrag:enableDrag}
	};

	var centerVertically=function(){
		var shadowbox=SL.get("shadowbox");
		var scroll=document.documentElement.scrollTop;
		var s_top=scroll+Math.round((SL.getViewportHeight()-(shadowbox.offsetHeight||0))/2);
		SL.setStyle(shadowbox,"top",s_top+"px")
	};

	var adjustHeight=function(height,top,animate,callback){
		height=parseInt(height);
		current_height=height;
		var sbi=SL.get("shadowbox_body_inner");
		if(animate&&options.animate){
			SL.animate(sbi,{height:{to:height}},options.resizeDuration,callback)
		}else{
			SL.setStyle(sbi,"height",height+"px");
			if(typeof callback=="function"){
				callback()
			}
		}
		if(absolute_pos){
			centerVertically();
			SL.addEvent(window,"scroll",centerVertically);
			top+=document.documentElement.scrollTop
		}
		var shadowbox=SL.get("shadowbox");
		if(animate&&options.animate){
			SL.animate(shadowbox,{top:{to:top}},options.resizeDuration)
		}else{
			SL.setStyle(shadowbox,"top",top+"px")
		}
	};

	var adjustWidth=function(width,animate,callback){
		width=parseInt(width);
		current_width=width;
		var shadowbox=SL.get("shadowbox");
		if(animate&&options.animate){
			SL.animate(shadowbox,{width:{to:width}},options.resizeDuration,callback)
		}else{
			SL.setStyle(shadowbox,"width",width+"px");
			if(typeof callback=="function"){
				callback()
			}
		}
	};

	var listenKeyboard=function(on){
		if(!options.enableKeys){
			return
		}
		if(on){
			document.onkeydown=handleKey
		}else{
			document.onkeydown=""
		}
	};

	var assertKey=function(valid,key,code){
		return(valid.indexOf(key)!=-1||valid.indexOf(code)!=-1)
	};

	var handleKey=function(e){
		var code=e?e.which:event.keyCode;
		var key=String.fromCharCode(code).toLowerCase();
		if(assertKey(options.keysClose,key,code)){
			Shadowbox.close()
		}else{
			if(assertKey(options.keysPrev,key,code)){
				Shadowbox.previous()
			}else{
				if(assertKey(options.keysNext,key,code)){
					Shadowbox.next()
				}
			}
		}
	};

	var toggleTroubleElements=function(on){
		var vis=(on?"visible":"hidden");
		var selects=document.getElementsByTagName("select");
		for(i=0,len=selects.length;i<len;++i){
			selects[i].style.visibility=vis
		}
		var objects=document.getElementsByTagName("object");
		for(i=0,len=objects.length;i<len;++i){
			objects[i].style.visibility=vis
		}
		var embeds=document.getElementsByTagName("embed");
		for(i=0,len=embeds.length;i<len;++i){
			embeds[i].style.visibility=vis
		}
	};

	var showLoading=function(){
		var loading=SL.get("shadowbox_loading");
		overwriteHTML(loading,String.format(options.skin.loading,options.assetURL+options.loadingImage,options.text.loading,options.text.cancel));
		loading.style.visibility="visible"
	};

	var hideLoading=function(callback){
		var t=current_gallery[current].type;
		var anim=(t=="img"||t=="html");
		var loading=SL.get("shadowbox_loading");
		if(anim){
			fadeOut(loading,0.35,callback)
		}else{
			loading.style.visibility="hidden";callback()
		}
	};

	var resizeOverlay=function(){
		var overlay=SL.get("shadowbox_overlay");
		SL.setStyle(overlay,{height:"100%",width:"100%"});
		SL.setStyle(overlay,"height",SL.getDocumentHeight()+"px");
		if(!isSafari3){
			SL.setStyle(overlay,"width",SL.getDocumentWidth()+"px")
		}
	};

	var checkOverlayImgNeeded=function(){
		if(!(isGecko&&isMac)){
			return false
		}
		for(var i=0,len=current_gallery.length;i<len;++i){
			if(!RE.overlay.exec(current_gallery[i].type)){
				return true
			}
		}
		return false
	};

	var toggleOverlay=function(callback){
		var overlay=SL.get("shadowbox_overlay");
		if(overlay_img_needed==null){
			overlay_img_needed=checkOverlayImgNeeded()
		}
		if(callback){
			resizeOverlay();
			if(overlay_img_needed){
				SL.setStyle(overlay,{visibility:"visible",backgroundColor:"transparent",backgroundImage:"url("+options.assetURL+options.overlayBgImage+")",backgroundRepeat:"repeat",opacity:1});
				callback()
			}else{
				SL.setStyle(overlay,{visibility:"visible",backgroundColor:options.overlayColor,backgroundImage:"none"});fadeIn(overlay,options.overlayOpacity,options.fadeDuration,callback)
			}
		}else{
			if(overlay_img_needed){
				SL.setStyle(overlay,"visibility","hidden")
			}else{
				fadeOut(overlay,options.fadeDuration)
			}overlay_img_needed=null
		}
	};

	Shadowbox.init=function(opts){
		//previene reinicialización, descomentar
		//if(initialized) return;
		options=apply(options,opts||{});
		appendHTML(document.body,options.skin.main);
		RE.img=new RegExp(".("+options.ext.img.join("|")+")s*$","i");
		RE.qt=new RegExp(".("+options.ext.qt.join("|")+")s*$","i");
		RE.wmp=new RegExp(".("+options.ext.wmp.join("|")+")s*$","i");
		RE.qtwmp=new RegExp(".("+options.ext.qtwmp.join("|")+")s*$","i");
		RE.iframe=new RegExp(".("+options.ext.iframe.join("|")+")s*$","i");
		var id=null;
		var resize=function(){
			clearInterval(id);
			id=null;
			resizeOverlay();
			resizeContent(optimal_height,optimal_width)
		};
		SL.addEvent(window,"resize",function(){
			if(activated){
				if(id){
					clearInterval(id);
					id=null
				}
				if(!id){
					id=setInterval(resize,50)
				}
			}
		});
		if(options.listenOverlay){
			SL.addEvent(SL.get("shadowbox_overlay"),"click",Shadowbox.close)
		}
		if(absolute_pos){
			SL.setStyle(SL.get("shadowbox_container"),"position","absolute");
			SL.setStyle("shadowbox_body","zoom",1);
			SL.addEvent(SL.get("shadowbox_container"),"click",function(e){
				var target=SL.getTarget(e);
				if(target.id&&target.id=="shadowbox_container"){
					Shadowbox.close()
				}
			})
		}
		if(!options.skipSetup){
			Shadowbox.setup()
		}
		initialized=true
	};

	Shadowbox.setup=function(links,opts){
		if(!links){
			var links=[];
			var a=document.getElementsByTagName("a"),rel;
			for(var i=0,len=a.length;i<len;++i){
				rel=a[i].getAttribute("rel");
				if(rel&&RE.rel.test(rel)){
					links[links.length]=a[i]
				}
			}
		}else{
			if(!links.length){
				links=[links]
			}
		}
		var link;
		for(var i=0,len=links.length;i<len;++i){
			link=links[i];
			if(typeof link.shadowboxCacheKey=="undefined"){
				link.shadowboxCacheKey=cache.length;
				SL.addEvent(link,"click",handleClick)
			}
			cache[link.shadowboxCacheKey]=this.buildCacheObj(link,opts)
		}
	};

	Shadowbox.buildCacheObj=function(link,opts){
		var href=link.href;
		var o={el:link,title:link.getAttribute("title"),type:getPlayerType(href),options:apply({},opts||{}),content:href};
		var opt,l_opts=["title","type","height","width","gallery"];
		for(var i=0,len=l_opts.length;i<len;++i){
			opt=l_opts[i];
			if(typeof o.options[opt]!="undefined"){
				o[opt]=o.options[opt];
				delete o.options[opt]
			}
		}
		var rel=link.getAttribute("rel");
		if(rel){
			var match=rel.match(RE.gallery);
			if(match){
				o.gallery=escape(match[2])
			}
			var params=rel.split(";");
			for(var i=0,len=params.length;i<len;++i){
				match=params[i].match(RE.param);
				if(match){
					if(match[1]=="options"){
						eval("o.options = apply(o.options, "+match[2]+")")
					}else{
						o[match[1]]=match[2]
					}
				}
			}
		}
		return o
	};

	Shadowbox.applyOptions=function(opts){
		if(opts){
			default_options=apply({},options);
			options=apply(options,opts)
		}
	};

	Shadowbox.revertOptions=function(){
		if(default_options){
			options=default_options;default_options=null
		}
	};

	Shadowbox.open=function(obj,opts){
		if(activated){
			return
		}
		activated=true;
		if(isLink(obj)){
			if(typeof obj.shadowboxCacheKey=="undefined"||typeof cache[obj.shadowboxCacheKey]=="undefined"){
				obj=this.buildCacheObj(obj,opts)
			}else{
				obj=cache[obj.shadowboxCacheKey]
			}
		}
		this.revertOptions();
		if(obj.options||opts){
			this.applyOptions(apply(apply({},obj.options||{}),opts||{}))
		}
		setupGallery(obj);
		if(current_gallery.length){
			if(options.onOpen&&typeof options.onOpen=="function"){
				options.onOpen(obj)
			}
			SL.setStyle(SL.get("shadowbox"),"display","block");
			toggleTroubleElements(false);
			var dims=getDimensions(options.initialHeight,options.initialWidth);
			adjustHeight(dims.height,dims.top);
			adjustWidth(dims.width);
			hideBars(false);
			toggleOverlay(function(){
				SL.setStyle(SL.get("shadowbox"),"visibility","visible");
				showLoading();loadContent()
			})
		}
	};

	Shadowbox.change=function(num){
		if(!current_gallery){
			return
		}
		if(!current_gallery[num]){
			if(!options.continuous){
				return
			}else{
				num=(num<0)?(current_gallery.length-1):0
			}
		}
		current=num;
		toggleDrag(false);
		setContent(null);
		listenKeyboard(false);
		if(options.onChange&&typeof options.onChange=="function"){
			options.onChange(current_gallery[current])
		}
		showLoading();
		hideBars(loadContent)
	};

	Shadowbox.next=function(){
		return this.change(current+1)
	};

	Shadowbox.previous=function(){
		return this.change(current-1)
	};

	Shadowbox.close=function(){
		if(!activated){
			return
		}
		listenKeyboard(false);
		SL.setStyle(SL.get("shadowbox"),{display:"none",visibility:"hidden"});
		if(absolute_pos){
			SL.removeEvent(window,"scroll",centerVertically)
		}
		toggleDrag(false);
		setContent(null);
		if(preloader){
			preloader.onload=function(){};
			preloader=null
		}
		toggleOverlay(false);
		toggleTroubleElements(true);
		if(options.onClose&&typeof options.onClose=="function"){
			options.onClose(current_gallery[current])
		}
		activated=false
	};

	Shadowbox.clearCache=function(){
		for(var i=0,len=cache.length;i<len;++i){
			if(cache[i].el){
				SL.removeEvent(cache[i].el,"click",handleClick);
				delete cache[i].shadowboxCacheKey
			}
		}
		cache=[]
	};

	Shadowbox.movieMarkup=function(obj){
		var h=obj.height?parseInt(obj.height,10):300;
		var w=obj.width?parseInt(obj.width,10):300;
		var autoplay=options.autoplayMovies;
		var controls=options.showMovieControls;
		if(obj.options){
			if(obj.options.autoplayMovies!=null){
				autoplay=obj.options.autoplayMovies
			}
			if(obj.options.showMovieControls!=null){
				controls=obj.options.showMovieControls
			}
		}
		var markup={tag:"object",name:"shadowbox_content"};
		switch(obj.type){
			case"swf":
				var dims=getDimensions(h,w,true);
				h=dims.height;
				w=dims.width;
				markup.type="application/x-shockwave-flash";
				markup.data=obj.content;
				markup.children=[{tag:"param",name:"movie",value:obj.content}];
				break;
			case"flv":
				autoplay=autoplay?"true":"false";
				var showicons="false";
				var a=h/w;
				if(controls){
					showicons="true";
					h+=20
				}
				var dims=getDimensions(h,h/a,true);
				h=dims.height;
				w=(h-(controls?20:0))/a;
				var flashvars=["file="+obj.content,"height="+h,"width="+w,"autostart="+autoplay,"displayheight="+(h-(controls?20:0)),"showicons="+showicons,"backcolor=0x000000&amp;frontcolor=0xCCCCCC&amp;lightcolor=0x557722"];
				markup.type="application/x-shockwave-flash";
				markup.data=options.assetURL+options.flvPlayer;
				markup.children=[{tag:"param",name:"movie",value:options.assetURL+options.flvPlayer},{tag:"param",name:"flashvars",value:flashvars.join("&amp;")},{tag:"param",name:"allowfullscreen",value:"true"}];
				break;
			case"qt":
				autoplay=autoplay?"true":"false";
				if(controls){
					controls="true";
					h+=16
				}else{
					controls="false"
				}
				markup.children=[{tag:"param",name:"src",value:obj.content},{tag:"param",name:"scale",value:"aspect"},{tag:"param",name:"controller",value:controls},{tag:"param",name:"autoplay",value:autoplay}];
				if(isIE){
					markup.classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
					markup.codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"
				}else{
					markup.type="video/quicktime";
					markup.data=obj.content
				}
				break;
			case"wmp":
				autoplay=autoplay?1:0;
				markup.children=[{tag:"param",name:"autostart",value:autoplay}];
				if(isIE){
					if(controls){
						controls="full";
						h+=70
					}else{
						controls="none"
					}
					markup.classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6";
					markup.children[markup.children.length]={tag:"param",name:"url",value:obj.content};
					markup.children[markup.children.length]={tag:"param",name:"uimode",value:controls}
				}else{
					if(controls){
						controls=1;
						h+=45
					}else{
						controls=0
					}
					markup.type="video/x-ms-wmv";
					markup.data=obj.content;
					markup.children[markup.children.length]={tag:"param",name:"showcontrols",value:controls}
				}
				break
		}
		markup.height=h;
		markup.width=w;
		return markup
	};

	Shadowbox.createHTML=function(obj){
		var html="<"+obj.tag;
		for(var attr in obj){
			if(attr=="tag"||attr=="html"||attr=="children"){
				continue
			}
			if(attr=="cls"){
				html+=' class="'+obj["cls"]+'"'
			}else{
				html+=" "+attr+'="'+obj[attr]+'"'
			}
		}
		if(RE.empty.test(obj.tag)){
			html+="/>\n"
		}else{
			html+=">\n";
			var cn=obj.children;
			if(cn){
				for(var i=0,len=cn.length;i<len;++i){
					html+=this.createHTML(cn[i])
				}
			}
			if(obj.html){
				html+=obj.html
			}
			html+="</"+obj.tag+">\n"
		}
		return html
	};

	Shadowbox.getPlugins=function(){
		return plugins
	};

	Shadowbox.getOptions=function(){
		return options
	};

	Shadowbox.getCurrent=function(){
		return current_gallery[current]
	};
	Shadowbox.getVersion=function(){
		return version
	}
})();
Array.prototype.indexOf=Array.prototype.indexOf||function(C){
	for(var B=0,A=this.length;B<A;++B){
		if(this[B]==C){
			return B
		}
	}
	return -1
};
String.format=String.format||function(B){
	var A=Array.prototype.slice.call(arguments,1);
	return B.replace(/\{(\d+)\}/g,function(C,D){
		return A[D]
	})
}
