
// 'stacks' is the Stacks global object.
// All of the other Stacks related Javascript will 
// be attatched to it.
var stacks = {};


// this call to jQuery gives us access to the globaal
// jQuery object. 
// 'noConflict' removes the '$' variable.
// 'true' removes the 'jQuery' variable.
// removing these globals reduces conflicts with other 
// jQuery versions that might be running on this page.
stacks.jQuery = jQuery.noConflict(true);

// Javascript for stacks_in_13_page36
// ---------------------------------------------------------------------

// Each stack has its own object with its own namespace.  The name of
// that object is the same as the stack's id.
stacks.stacks_in_13_page36 = {};

// A closure is defined and assigned to the stack's object.  The object
// is also passed in as 'stack' which gives you a shorthand for referring
// to this object from elsewhere.
stacks.stacks_in_13_page36 = (function(stack) {

	// When jQuery is used it will be available as $ and jQuery but only
	// inside the closure.
	var jQuery = stacks.jQuery;
	var $ = jQuery;
	

/*
 * Sticky Buttons By WeaverAddons.com
 * Version 1.1.0
 *
 * Visit http://www.weaveraddons.com for more information on how to use this stack in RapidWeaver.
 *
 */

/*
 * DC jQuery Slick 2.1 - jQuery Slick
 * Copyright (c) 2011 Design Chemical
 * 	http://www.designchemical.com
 *
 * Dual licensed under the MIT and GPL licenses:
 * 	http://www.opensource.org/licenses/mit-license.php
 * 	http://www.gnu.org/licenses/gpl.html
 *
 */

(function(b){function j(j,a,i){b.each(a,function(a,b){var t="-webkit-border-"+b+"-radius",k="-moz-border-radius-"+b.replace(/\-/g,""),c={};c[t]=c[k]=c["border-"+b+"-radius"]=i+"px";j.css(c)})}b.fn.dcSlick=function(q){var a={classWrapper:"dc-slick",classContent:"dc-slick-content",idWrapper:"dc-slick-"+b(this).index(),location:"left",align:"top",offset:"100px",speed:"slow",tabText:"Click",classTab:"slick-tab",classOpen:"slick-open",classClose:"slick-close",classToggle:"slick-toggle",autoClose:true,
autoOpen:false,centerTab:false,tabWidth:"auto",tabRounded:0,opacity:100,onLoad:function(){},beforeOpen:function(){},beforeClose:function(){}},q=b.extend(a,q),i=this;return i.each(function(){function r(){b("."+t).css({zIndex:1E4});d.css({zIndex:10001});a.location=="bottom"&&d.animate({marginBottom:"-=5px"},"fast").animate({marginBottom:0},a.speed);a.location=="top"&&d.animate({marginTop:"-=5px"},"fast").animate({marginTop:0},a.speed);a.location=="left"&&d.animate({marginLeft:"-=5px"},"fast").animate({marginLeft:0},
a.speed);a.location=="right"&&d.animate({marginRight:"-=5px"},"fast").animate({marginRight:0},a.speed);d.addClass("active");a.beforeOpen.call(this)}function s(){if(d.hasClass("active")){var b={marginBottom:"-"+n};switch(a.location){case "top":b={marginTop:"-"+n};break;case "left":b={marginLeft:"-"+p};break;case "right":b={marginRight:"-"+p}}d.removeClass("active").animate(b,a.speed)}a.beforeClose.call(this)}var t=a.classWrapper,k=i.html();i.css("float","left");i.width();i.empty();if(a.location.match(/left|right/i)&&
!a.align.match(/top|bottom/i))a.align="top";a.tabOffset?a.tabOffset.match(/\%|px/i)||(a.tabOffset+="px"):a.tabOffset="0px";a.offset?a.offset.match(/\%|px/i)||(a.offset+="px"):a.offset="0px";if(a.boxSize.match(/x/i)){var c=a.boxSize.split("x");a.boxWidth=b.trim(c[0]);if(c[1]&&c[1]!="auto")a.boxHeight=b.trim(c[1])}else a.boxWidth=a.boxSize;if(a.tabSize.match(/x/i)){if(c=a.tabSize.split("x"),a.tabWidth=b.trim(c[0]),c[1]&&c[1]!="auto")a.tabHeight=b.trim(c[1])}else a.tabWidth=a.tabSize;a.boxWidth&&a.boxWidth!=
"auto"&&!a.boxWidth.match(/\%|px/i)&&(a.boxWidth+="px");a.boxHeight&&a.boxHeight!="auto"&&!a.boxHeight.match(/\%|px/i)&&(a.boxHeight+="px");a.tabWidth&&a.tabWidth!="auto"&&!a.tabWidth.match(/\%|px/i)&&(a.tabWidth+="px");a.tabHeight&&a.tabHeight!="auto"&&!a.tabHeight.match(/\%|px/i)&&(a.tabHeight+="px");if(a.tabWidth=="100%")a.tabOffset="0px";if(a.tabText.match(/\.(jpe?g|png|gif)/i)){a.classTab+="-image";var c=a.tabText.match(/(.*\.(?:jpe?g|png|gif)\)?\%?)/i),e=a.tabText.match(/([0-9]+)\s*x\s*([0-9]+)/i);
e?(tabImageWidth=b.trim(e[1]),tabImageHeight=b.trim(e[2])):tabImageHeight=tabImageWidth=50;var f=' style="background:url('+c[1]+") no-repeat;height:"+tabImageHeight+"px;;width:"+tabImageWidth+'px;border:none !important;padding:0 !important;"',l=""}else f="",a.tabWidth&&a.tabWidth!="0px"&&a.tabWidth!="auto"&&(f+="width:"+a.tabWidth+";"),a.tabWidth&&a.tabWidth!="auto"&&(f+="text-align:center;"),a.tabHeight&&(a.tabHeight=="100%"?f+="top:0;bottom:0;":a.tabHeight&&a.tabHeight!="0px"&&a.tabHeight!="auto"&&
(f+="height:"+a.tabHeight+";"),f+="margin:auto 0"),f&&(f=' style="'+f+'"'),l=a.tabText;c=e="";a.tabLink&&(i.find(".stacks_clearer").length<=1&&i.find(".stacks_out").length<1?e=" onclick=\"window.location='"+a.tabLink+"';return false;\"":c=" onclick=\"window.location='"+a.tabLink+'\';return false;" style="cursor:pointer !important;"');l='<div class="'+a.classTab+'"'+f+e+"><div>"+l+"</div></div>";b(this).hide();f=a.idWrapper;k='<div id="'+f+'" class="'+t+'">'+l+'<div class="'+a.classContent+'"'+c+">"+
k+"</div></div>";b("body").append(k);var d=b("#"+f),k=b("."+a.classTab,d);k.css({position:"absolute"});c=b("."+a.classOpen);f=b("."+a.classClose);l=b("."+a.classToggle);(e=a.tabText.match(/([0-9]+)\s*x\s*([0-9]+)/i))?(tabImageWidth=e[1],tabImageHeight=e[2]):tabImageHeight=tabImageWidth=50;e=b("."+a.classContent,d);a.boxWidth=="100%"?(d.css({left:0,right:0}),e.css("width","100%"),a.offset="0px"):a.boxWidth.match(/\%/)?(d.css("width",a.boxWidth),e.css("width","100%")):e.css("width",a.boxWidth);a.boxHeight&&
(a.boxHeight=="100%"?(e.css({top:0,bottom:0}),d.css("width","100%")):a.boxHeight.match(/\%/)?(d.css("height",a.boxHeight),e.css("height","100%")):e.css("height",a.boxHeight));var e=a.boxWidth.match(/\%/)?a.location=="top"||a.location=="bottom"?(parseInt(b("body").css("margin-top"))||0)+(parseInt(b("body").css("margin-bottom"))||0):(parseInt(b("body").css("margin-left"))||0)+(parseInt(b("body").css("margin-right"))||0):0,q=d.height();d.css("float","left");var p=d.outerWidth()+e/2-a.borderSize+"px";
d.css("float","none");var u=d.outerHeight(),v=u-q,n=u-a.borderSize+"px",w=b(window).height();(function(c){var e=b("."+a.classContent,c);b(c).addClass(a.location).addClass("align-"+a.align).css({position:"fixed",zIndex:1E4});d.css("border-top-width");d.css("border-right-width");d.css("border-bottom-width");d.css("border-left-width");var f=b("."+a.classTab,d),h=f.outerWidth(true),i=f.outerHeight(true),k=e.height(),l=e.width(),m=e.outerHeight(true)-k,g=w-i;u>g&&(k=g-v-m,n=g+"px");e.css({height:k+"px"});
a.opacity<100&&e.css({opacity:a.opacity/100+" !important;",filter:"alpha(opacity="+a.opacity+") !important;"});if(f.hasClass("slick-tab-image")){var o=a.borderSize;a.tabRounded=0}else o=a.borderSize;m={};g={};if(a.location=="left"){g={marginRight:"-"+(h+o)+"px"};if(a.tabWidth!="100%")if(a.centerTab)g.top=k/2-i/2+"px";else if(a.tabOffset!="0px")g.top=a.tabOffset;m=a.align=="bottom"?{marginLeft:"-"+p,bottom:a.offset}:{marginLeft:"-"+p,top:a.offset};a.tabRounded&&(j(f,["bottom-right","top-right"],a.tabRounded),
h=a.tabOffset=="0px"&&!a.centerTab?["bottom-right"]:["bottom-right","top-right"],j(e,h,a.tabRounded),j(b(c),h,a.tabRounded+a.borderSize))}else if(a.location=="right"){g={marginLeft:"-"+(h+o)+"px"};if(a.tabWidth!="100%")if(a.centerTab)g.top=k/2-i/2+"px";else if(a.tabOffset!="0px")g.top=a.tabOffset;m=a.align=="bottom"?{marginRight:"-"+p,bottom:a.offset}:{marginRight:"-"+p,top:a.offset};a.tabRounded&&(j(f,["top-left","bottom-left"],a.tabRounded),h=a.tabOffset=="0px"&&!a.centerTab?["bottom-left"]:["top-left",
"bottom-left"],j(e,h,a.tabRounded),j(b(c),h,a.tabRounded+a.borderSize))}else if(a.location=="top"){if(a.align=="left"){if(m={marginTop:"-"+n,left:a.offset},g={marginBottom:"-"+(i+o)+"px",left:0},a.tabWidth!="100%")if(a.centerTab)g.left=l/2-h/2+"px";else if(a.tabOffset!="0px")g.left=a.tabOffset}else if(m={marginTop:"-"+n,right:a.offset},g={marginBottom:"-"+(i+o)+"px",right:0},a.tabWidth!="100%")if(a.centerTab)g.right=l/2-h/2+"px";else if(a.tabOffset!="0px")g.right=a.tabOffset;a.tabRounded&&(j(f,["bottom-left",
"bottom-right"],a.tabRounded),h=a.tabOffset=="0px"&&!a.centerTab?a.align=="left"?["bottom-right"]:["bottom-left"]:["bottom-left","bottom-right"],a.tabWidth!="100%"&&(j(e,h,a.tabRounded),j(b(c),h,a.tabRounded+a.borderSize)))}else if(a.location=="bottom"){if(a.align=="left"){if(m={marginBottom:"-"+n,left:a.offset},g={marginTop:"-"+(i+o)+"px",left:0},a.tabWidth!="100%")if(a.centerTab)g.left=l/2-h/2+"px";else if(a.tabOffset!="0px")g.left=a.tabOffset}else if(m={marginBottom:"-"+n,right:a.offset},g={marginTop:"-"+
(i+o)+"px",right:0},a.tabWidth!="100%")if(a.centerTab)g.right=l/2-h/2+"px";else if(a.tabOffset!="0px")g.right=a.tabOffset;a.tabRounded&&(j(f,["top-left","top-right"],a.tabRounded),h=a.tabOffset=="0px"&&!a.centerTab?a.align=="left"?["top-right"]:["top-left"]:["top-left","top-right"],a.tabWidth!="100%"&&(j(e,h,a.tabRounded),j(b(c),h,a.tabRounded+a.borderSize)))}b(c).css(m);f.css(g);a.onLoad.call(this)})(d);a.autoClose==true&&b("body").mouseup(function(c){d.hasClass("active")&&(b(c.target).parents("#"+
a.idWrapper).length||!b(c.target).hasClass(a.classOpen)&&!b(c.target).hasClass(a.classToggle)&&s())});k.click(function(){d.hasClass("active")?s():r()});b(c).click(function(a){r();a.preventDefault()});b(f).click(function(a){d.hasClass("active")&&s();a.preventDefault()});b(l).click(function(a){d.hasClass("active")?s():r();a.preventDefault()});a.autoOpen==true&&r()})}})(jQuery);

$(document).ready(function(){
 	var isIE6 = ((window.XMLHttpRequest == undefined) && (ActiveXObject != undefined));

	if (!isIE6) {
		$('#stacks_in_13_page36container').dcSlick({location: $.trim('left').toLowerCase(),
									 align: $.trim('top').toLowerCase(),
									 boxBackground: '#FFFFE1',
									 boxSize: $.trim('700x800').toLowerCase(),
									 tabSize: $.trim('auto').toLowerCase(),
									 speed: 200, 
									 borderSize: 3,
									 offset: '0', 
									 tabOffset: '50',
									 autoOpen: false,
									 autoClose: true, 
									 centerTab: false,
									 tabText: ('http://ssclimbing.com/docs/images/facebook1.png 165x133'.match(/\.(jpe?g|png|gif)/) ? $('#stacks_in_13_page36containertabimage').html() : 'http://ssclimbing.com/docs/images/facebook1.png 165x133'),
									 tabLink: $.trim(''),
									 tabRounded: 20, 
									 opacity: 95,
								 	 classOpen: 'sticky-stacks_in_13_page36-open',
									 classClose: 'sticky-stacks_in_13_page36-close',
									 classToggle: 'sticky-stacks_in_13_page36-toggle',
									 idWrapper: 'dc-slick-stacks_in_13_page36'});
	}
});

	return stack;
})(stacks.stacks_in_13_page36);


// Javascript for stacks_in_26_page36
// ---------------------------------------------------------------------

// Each stack has its own object with its own namespace.  The name of
// that object is the same as the stack's id.
stacks.stacks_in_26_page36 = {};

// A closure is defined and assigned to the stack's object.  The object
// is also passed in as 'stack' which gives you a shorthand for referring
// to this object from elsewhere.
stacks.stacks_in_26_page36 = (function(stack) {

	// When jQuery is used it will be available as $ and jQuery but only
	// inside the closure.
	var jQuery = stacks.jQuery;
	var $ = jQuery;
	

/*
 * Facebook Wall Stack By WeaverAddons.com
 * Version 1.1.0
 *
 * Visit http://www.weaveraddons.com for more information on how to use this stack in RapidWeaver.
 *
 */

/************************************************************************************************************************************
 *	fb.wall				Facebook Wall jQuery Plguin
 *
 *	@author:			Daniel Benkenstein / neosmart GmbH
 *	@version:			1.2.7
 *	@Last Update:		06.06.2011
 *	@licence:			MIT (http://www.opensource.org/licenses/mit-license.php)
 *						GPL	(http://www.gnu.org/licenses/gpl.html)
 *	@documentation:		http://www.neosmart.de/social-media/facebook-wall
 *	@feedback:			http://www.neosmart.de/blog/jquery-plugin-facebook-wall
 *	
 ************************************************************************************************************************************/

(function(h){h.fn.fbWall=function(m){var q=h.extend({},h.fn.fbWall.defaults,m),i=this;return i.each(function(){function n(a){return a==j.id?f.useAvatarAlternative?f.avatarAlternative:l+a+"/picture?type=square":f.useAvatarExternal?f.avatarExternal:l+a+"/picture?type=square"}function o(a){var c,g,e,b,d;if(a.indexOf(" ")==-1&&a.substr(4,1)=="-"&&a.substr(7,1)=="-"&&a.substr(10,1)=="T")c=a.substr(0,4),g=parseInt(a.substr(5,1)=="0"?a.substr(6,1):a.substr(5,2))-1,e=a.substr(8,2),b=a.substr(11,2),a=a.substr(14,
2),b=Date.UTC(c,g,e,b,a),d=new Date(b);else{g=a.split(" ");if(g.length!=6||g[4]!="at")return a;b=g[5].split(":");c=b[1].substr(2);a=b[1].substr(0,2);b=parseInt(b[0]);c=="pm"&&(b+=12);d=new Date(g[1]+" "+g[2]+" "+g[3]+" "+b+":"+a);d.setTime(d.getTime()-252E5)}e=d.getDate()<10?"0"+d.getDate():d.getDate();g=d.getMonth()+1;g=g<10?"0"+g:g;b=d.getHours();a=d.getMinutes()<10?"0"+d.getMinutes():d.getMinutes();return f.timeConversion==12?(c=b<12?"am":"pm",b!=0&&b>12&&(b-=12),b<10&&(b="0"+b),e+"."+g+"."+d.getFullYear()+
" at "+b+":"+a+" "+c):e+"."+g+"."+d.getFullYear()+" "+f.translateAt+" "+b+":"+a}function d(a){return!a||a==null||a=="undefined"||typeof a=="undefined"?false:true}function p(a){return a.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/((http|https|ftp):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g,'<a href="$1" target="_blank">$1</a>').replace(/(\r\n)|(\n\r)|\r|\n/g,"<br>")}$this=h(this);var f=h.meta?h.extend({},q,$this.data()):q,a="",j,l="https://graph.facebook.com/";i.addClass("fb-wall").addClass("loading").html("");
h.ajax({url:l+f.id+"?access_token="+f.accessToken,dataType:"jsonp",success:function(a){m(a)}});var m=function(k){j=k;if(k==false)return i.removeClass("loading").html("The alias you requested do not exist: "+f.id),false;if(k.error)return i.removeClass("loading").html(k.error.message),false;h.ajax({url:l+f.id+"/"+(f.showGuestEntries=="true"||f.showGuestEntries==true?"feed":"posts")+"?limit="+f.max+"&access_token="+f.accessToken,dataType:"jsonp",success:function(c){i.removeClass("loading");for(var c=
c.data,g=c.length,e,b=0;b<g;b++)if((e=c[b].from.id==j.id)&&d(j.link),f.showGuestEntries||e){a+=b==0?'<div class="fb-wall-box fb-wall-box-first">':'<div class="fb-wall-box">';f.showAvatars&&(a+='<a href="http://www.facebook.com/profile.php?id='+c[b].from.id+'" target="_blank" class="fb-wall-profile-link">',a+='<img class="fb-wall-avatar" src="'+n(c[b].from.id)+'" />',a+="</a>");a+='<div class="fb-wall-data"'+(!f.showAvatars?' style="margin-left:0 !important;"':"")+">";a+='<span class="fb-wall-message">';
a+='<a href="http://www.facebook.com/profile.php?id='+c[b].from.id+'" class="fb-wall-message-from" target="_blank">'+c[b].from.name+"</a> ";d(c[b].message)&&(a+=p(c[b].message));a+="</span>";if(d(c[b].picture)||d(c[b].link)||d(c[b].caption)||d(c[b].description)){a+=d(c[b].picture)?'<div class="fb-wall-media">':'<div class="fb-wall-media fb-wall-border-left">';d(c[b].picture)&&(d(c[b].link)&&(a+='<a href="'+c[b].link+'" target="_blank" class="fb-wall-media-link">'),a+='<img class="fb-wall-picture" src="'+
c[b].picture+'" />',d(c[b].link)&&(a+="</a>"));a+='<div class="fb-wall-media-container">';d(c[b].name)&&(a+='<a class="fb-wall-name" href="'+c[b].link+'" target="_blank">'+c[b].name+"</a>");d(c[b].caption)&&(a+='<a class="fb-wall-caption" href="http://'+c[b].caption+'" target="_blank">'+c[b].caption+"</a>");if(d(c[b].properties))for(e=0;e<c[b].properties.length;e++)c[b].properties[e].text&&(a+=e==0?"<div>"+o(c[b].properties[e].text)+"</div>":"<div>"+c[b].properties[e].text+"</div>");d(c[b].description)&&
(e=p(c[b].description),e.length>299&&(e=e.substr(0,e.lastIndexOf(" "))+" ..."),a+='<span class="fb-wall-description">'+e+"</span>");a+="</div>";a+="</div>"}a+='<span class="fb-wall-date">';d(c[b].icon)&&(a+='<img class="fb-wall-icon" src="'+c[b].icon+'" title="'+c[b].type+'" alt="" />');a+=o(c[b].created_time)+"</span>";d(c[b].likes)&&(a+=parseInt(c[b].likes.count)==1?'<div class="fb-wall-likes"><div><span>'+c[b].likes.data[0].name+"</span> "+f.translateLikesThis+"</div> </div>":'<div class="fb-wall-likes"><div><span>'+
c[b].likes.count+" "+f.translatePeople+"</span> "+f.translateLikeThis+"</div> </div>");if(d(c[b].comments)&&d(c[b].comments.data)&&(f.showComments==true||f.showComments=="true")){a+='<div class="fb-wall-comments">';for(e=0;e<c[b].comments.data.length;e++)a+='<span class="fb-wall-comment">',a+='<a href="http://www.facebook.com/profile.php?id='+c[b].comments.data[e].from.id+'" class="fb-wall-comment-avatar" target="_blank">',a+='<img src="'+n(c[b].comments.data[e].from.id)+'" />',a+="</a>",a+='<span class="fb-wall-comment-message">',
a+='<a class="fb-wall-comment-from-name" href="http://www.facebook.com/profile.php?id='+c[b].comments.data[e].from.id+'" target="_blank">'+c[b].comments.data[e].from.name+"</a> ",a+=p(c[b].comments.data[e].message),a+='<span class="fb-wall-comment-from-date">'+o(c[b].comments.data[e].created_time)+"</span>",a+="</span>",a+="</span>";a+="</div>"}a+="</div>";a+='<div class="fb-wall-clean"></div>';a+="</div>"}g==0&&(a+='<div class="fb-wall-box-first">',a+='<img class="fb-wall-avatar" src="'+n(j.id)+
'" />',a+='<div class="fb-wall-data">',a+='<span class="fb-wall-message"><span class="fb-wall-message-from">'+j.name+"</span> "+f.translateErrorNoData+"</span>",a+="</div>",a+="</div>");i.hide().html(a).fadeIn(700)}})}})};h.fn.fbWall.defaults={avatarAlternative:"avatar-alternative.jpg",avatarExternal:"avatar-external.jpg",id:"neosmart.gmbh",max:5,showComments:true,showGuestEntries:true,translateAt:"at",translateLikeThis:"like this",translateLikesThis:"likes this",translateErrorNoData:"has not shared any information.",
translatePeople:"people",timeConversion:24,useAvatarAlternative:false,useAvatarExternal:false,accessToken:""}})(jQuery);

$(function(){
	if (!'115256888496778' || !'%id=access_token') {
		$('#stacks_in_26_page36container').html('Facebook ID and access token are required for this stack to work. Add these via the settings HUD.');
	} else {
 		$('#stacks_in_26_page36container').fbWall({id:'115256888496778',
									accessToken: 'AAADJG8K0hu4BAI8EFIwgWlu6qI3j9RLCBD4HdirOxbY1dXId6u0je4PGGaQ6ZAMxknlwjWJCWMA5xUqOKYH8zmp2NZAXoZD',
									max: 30,
									showComments: true,
									showGuestEntries: true,
									showAvatars: true,
									translateAt: 'at',
									translateLikeThis: 'like this',
									translateLikesThis: 'likes this',
									translateErrorNoData: 'has not shared any information.',
									translatePeople: 'people',
									timeConversion: (true ? 24 : 12)});
									//useAvatarAlternative: ,
									//useAvatarExternal: ,
									//avatarAlternative: '',
									//avatarExternal: ''});
	}
});

	return stack;
})(stacks.stacks_in_26_page36);


// Javascript for stacks_in_353_page36
// ---------------------------------------------------------------------

// Each stack has its own object with its own namespace.  The name of
// that object is the same as the stack's id.
stacks.stacks_in_353_page36 = {};

// A closure is defined and assigned to the stack's object.  The object
// is also passed in as 'stack' which gives you a shorthand for referring
// to this object from elsewhere.
stacks.stacks_in_353_page36 = (function(stack) {

	// When jQuery is used it will be available as $ and jQuery but only
	// inside the closure.
	var jQuery = stacks.jQuery;
	var $ = 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. 
 *
 */


/*
	This is the sexyLightbox area
*/

jQuery.bind = function(object, method){
  var args = Array.prototype.slice.call(arguments, 2);  
  return function() {
    var args2 = [this].concat(args, $.makeArray( arguments ));  
    return method.apply(object, args2);  
  };  
};  

(function($) {

  SexyLightbox = {
    getOptions: function() {
      return {
        name          : 'SLB',
        zIndex        : 32000,
        color         : 'black',
        find          : 'sexylightbox',
												//  insert assets
        dir           : 'files/sexyimages',
											//  top n bottom option      
 	emergefrom    : 'top',
        background    : 'bgSexy.png',
        backgroundIE  : 'bgSexy.gif',
        buttons       : 'buttons.png',
        displayed     : 0,
        showDuration  : 200,
        closeDuration : 400,
        moveDuration  : 1000,
        moveEffect    : 'easeOutBack',
        resizeDuration: 1000,
        resizeEffect  : 'easeOutBack',
        shake         : {
                          distance   : 10,
                          duration   : 100,
                          transition : 'easeInOutBack',
                          loops      : 2
                        },
        BoxStyles     : { 'width' : 486, 'height': 320 },
        Skin          : {
                          'white' : { 'hexcolor': '#FFFFFF', 'captionColor': '#000000', 'background-color': '#38180D', 'opacity': 0.83, 'background-image': 'url()' },
                          'black' : { 'hexcolor': '#000000', 'captionColor': '#FFFFFF', 'background-color': '#38180D', 'opacity': 0.83, 'background-image': 'url()' }
                          
                        }
      };
    },

    overlay: {
      create: function(options) {
        this.options = options;
        this.element = $('<div id="'+new Date().getTime()+'"></div>');
        this.element.css($.extend({}, {
          'position'  : 'absolute',
          'top'       : 0,
          'left'      : 0,
          'opacity'   : 0,
          'display'   : 'none',
          'z-index'   : this.options.zIndex
        }, this.options.style));
        
        this.element.bind('click', $.bind(this, function(obj, event) {
          if (this.options.hideOnClick) {
              if (this.options.callback) {
                this.options.callback();
              } else {
                this.hide();
              }
          }
          event.preventDefault();
        }));
        
        this.hidden = true;
        this.inject();
      },

      inject: function() {
        this.target = $(document.body);
        this.target.append(this.element);

        //if((Browser.Engine.trident4 || (Browser.Engine.gecko && !Browser.Engine.gecko19 && Browser.Platform.mac)))
        if($.browser.msie && $.browser.version=="6.0")
       
        {
          var zIndex = parseInt(this.element.css('zIndex'));
          if (!zIndex)
          {
            zIndex = 1;
            var pos = this.element.css('position');
            if (pos == 'static' || !pos)
            {
              this.element.css({'position': 'relative'});
            }
            this.element.css({'zIndex': zIndex});
          }
        
          zIndex = (!!(this.options.zIndex || this.options.zIndex === 0) && zIndex > this.options.zIndex) ? this.options.zIndex : zIndex - 1;
          if (zIndex < 0)
          {
            zIndex = 1;
          }
          this.shim = $('<iframe id="IF_'+new Date().getTime()+'" scrolling="no" frameborder=0 src=""></div>');
          this.shim.css({
            zIndex    : zIndex,
            position  : 'absolute',
            top       : 0,
            left      : 0,
            border    : 'none',
            opacity   : 0
          });
          this.shim.insertAfter(this.element);
        }

      },

      resize: function(x, y) {
        this.element.css({ 'height': 0, 'width': 0 });
        if (this.shim) this.shim.css({ 'height': 0, 'width': 0 });

        var win = { x: $(document).width(), y: $(document).height() };
        var chromebugfix = $.browser.safari ? (win.x - 25 < document.body.clientWidth ? document.body.clientWidth : win.x) : win.x;

        this.element.css({
          width  : x ? x : chromebugfix, //* chrome fix
          height : y ? y : win.y
        });

        if (this.shim)
        {
          this.shim.css({ 'height': 0, 'width': 0 });
          this.shim.css({
            width  : x ? x : chromebugfix, //* chrome fix
            height : y ? y : win.y
          });
        }
        return this;
      },

      show: function() {
        if (!this.hidden) return this;
        if (this.transition) this.transition.stop();
        this.target.bind('resize', $.bind(this, this.resize));
        this.resize();
        if (this.shim) this.shim.css({'display': 'block'});
        this.hidden = false;


        this.transition = this.element.fadeIn(this.options.showDuration, $.bind(this, function(){
          this.element.trigger('show');
        }));
        
        return this;
      },

      hide: function() {
        if (this.hidden) return this;
        if (this.transition) this.transition.stop();
        this.target.unbind('resize');
        if (this.shim) this.shim.css({'display': 'none'});
        this.hidden = true;

        this.transition = this.element.fadeOut(this.options.closeDuration, $.bind(this, function(){
          this.element.trigger('hide');
          this.element.css({ 'height': 0, 'width': 0 });
        }));

        return this;
      }

    },

    backwardcompatibility: function(option) {
      this.options.dir = option.imagesdir || option.path || option.folder || option.dir;
      this.options.OverlayStyles = $.extend(this.options.Skin[this.options.color], this.options.OverlayStyles || {});
    },

    preloadimage: function(url) {
      img     = new Image();
      img.src = url;
    },

    initialize: function(options) {
      this.options = $.extend(this.getOptions(), options);
      this.backwardcompatibility(this.options);

      var strBG = this.options.dir+'/'+this.options.color+'/'+((((window.XMLHttpRequest == undefined) && (ActiveXObject != undefined)))?this.options.backgroundIE:this.options.background);
      var name  = this.options.name;
      
      this.preloadimage(strBG);
      this.preloadimage(this.options.dir+'/'+this.options.color+'/'+this.options.buttons);

      this.overlay.create({
        style       : this.options.Skin[this.options.color],
        hideOnClick : true,
        zIndex      : this.options.zIndex-1,
        callback    : $.bind(this, this.close),
        showDuration  : this.options.showDuration,
        showEffect    : this.options.showEffect,
        closeDuration : this.options.closeDuration,
        closeEffect   : this.options.closeEffect
      });

      this.lightbox = {};

			$('body').append('<div id="'+name+'-Wrapper"><div id="'+name+'-Background"></div><div id="'+name+'-Contenedor"><div id="'+name+'-Top" style="background-image: url('+strBG+')"><a id="'+name+'-CloseButton" href="#">&nbsp;</a><div id="'+name+'-TopLeft" style="background-image: url('+strBG+')"></div></div><div id="'+name+'-Contenido"></div><div id="'+name+'-Bottom" style="background-image: url('+strBG+')"><div id="'+name+'-BottomRight" style="background-image: url('+strBG+')"><div id="'+name+'-Navegador"><strong id="'+name+'-Caption"></strong></div></div></div></div></div>');
      
      this.Wrapper      = $('#'+name+'-Wrapper');
      this.Background   = $('#'+name+'-Background');
      this.Contenedor   = $('#'+name+'-Contenedor');
      this.Top          = $('#'+name+'-Top');
      this.CloseButton  = $('#'+name+'-CloseButton');
      this.Contenido    = $('#'+name+'-Contenido');
      this.bb           = $('#'+name+'-Bottom');
      this.innerbb      = $('#'+name+'-BottomRight');
      this.Nav          = $('#'+name+'-Navegador');
      this.Descripcion  = $('#'+name+'-Caption');

      this.Wrapper.css({
        'z-index'   : this.options.zIndex,
        'display'   : 'none'
      }).hide();
      
      this.Background.css({
        'z-index'   : this.options.zIndex + 1
      });
      
      this.Contenedor.css({
        'position'  : 'absolute',
        'width'     : this.options.BoxStyles['width'],
        'z-index'   : this.options.zIndex + 2
      });
      
      this.Contenido.css({
        'height'            : this.options.BoxStyles['height'],
        'border-left-color' : this.options.Skin[this.options.color].hexcolor,
        'border-right-color': this.options.Skin[this.options.color].hexcolor
      });
      
      this.CloseButton.css({
        'background-image'  : 'url('+this.options.dir+'/'+this.options.color+'/'+this.options.buttons+')'
      });
      
      this.Nav.css({
        'color'     : this.options.Skin[this.options.color].captionColor
      });

      this.Descripcion.css({
        'color'     : this.options.Skin[this.options.color].captionColor
      });


          
     //ADD EVENTS

      this.CloseButton.bind('click', $.bind(this, function(){
        this.close();
        return false;
      }));
      
      $(document).bind('keydown', $.bind(this, function(obj, event){
        if (this.options.displayed == 1) {
          if (event.keyCode == 27){
            this.close();
          }

          if (event.keyCode == 37){
            if (this.prev) {
              this.prev.trigger('click', event);
            }
          }

          if (event.keyCode == 39){
            if (this.next) {
              this.next.trigger('click', event);
            }
          }
        }
      }));

      $(window).bind('resize', $.bind(this, function() {
        if(this.options.displayed == 1) {
          this.replaceBox();
          this.overlay.resize();
        }
      }));

      $(window).bind('scroll', $.bind(this, function() {
        if(this.options.displayed == 1) {
          this.replaceBox();
        }          
      }));

      this.refresh();

    },
    
    hook: function(enlace) {
      enlace = $(enlace);
      enlace.blur();
      this.show((enlace.attr("title") || enlace.attr("name") || ""), enlace.attr("href"), (enlace.attr('rel') || false));
    },
    
    close: function() {
      this.animate(0);
    },
    
    refresh: function() {
      var self = this;
      this.anchors = [];

      $("a, area").each(function() {
        if ($(this).attr('rel') && new RegExp("^"+self.options.find).test($(this).attr('rel'))){
          $(this).click(function(event) {
            event.preventDefault();
            self.hook(this);
          });

          if (!($(this).attr('id')==self.options.name+"-Left" || $(this).attr('id')==self.options.name+"-Right")) {
            self.anchors.push(this);
          }
        }
      });
    },
    
    animate: function(option) {
      if(this.options.displayed == 0 && option != 0 || option == 1)
      {
        this.overlay.show();
        this.options.displayed = 1;
        this.Wrapper.css({'display': 'block'});
      }
      else //Cerrar el Lightbox
      {
        this.Wrapper.css({
          'display' : 'none',
          'top'     : -(this.options.BoxStyles['height']+280)
        }).hide();

        this.overlay.hide();
        this.overlay.element.bind('hide', $.bind(this, function(){
          if (this.options.displayed) {
            if (this.Image) this.Image.remove();
            this.options.displayed = 0;
          }
        }));
      }
    },
    
    
    replaceBox: function(data) {
      var size   = { x: $(window).width(), y: $(window).height() };
      var scroll = { x: $(window).scrollLeft(), y: $(window).scrollTop() };
      var width  = this.options.BoxStyles['width'];
      var height = this.options.BoxStyles['height'];
      
      if (this.options.displayed == 0)
      {
        var x = 0;
        var y = 0;
        
        // vertically center
        y = scroll.x + ((size.x - width) / 2);

        if (this.options.emergefrom == "bottom")
        {
          x = (scroll.y + size.y + 80);
        }
        else // top
        {
          x = (scroll.y - height) - 80;
        }
      
        this.Wrapper.css({
          'display' : 'none',
          'top'     : x,
          'left'    : y
        });
        this.Contenedor.css({
          'width'   : width
        });
        this.Contenido.css({
          'height'  : height - 80
        });
      }

      data = $.extend({}, {
        'width'  : this.lightbox.width,
        'height' : this.lightbox.height,
        'resize' : 0
      }, data);

      if (this.MoveBox) this.MoveBox.stop();

      this.MoveBox = this.Wrapper.animate({
        'left': (scroll.x + ((size.x - data.width) / 2)),
        'top' : (scroll.y + (size.y - (data.height + (this.navigator ? 80 : 48))) / 2)
      }, {
        duration  : this.options.moveDuration,
        easing    : this.options.moveEffect
      });

      if (data.resize) {
        if (this.ResizeBox2) this.ResizeBox2.stop();
        this.ResizeBox2 = this.Contenido.animate({
          height    : data.height
        }, {
          duration  : this.options.resizeDuration,
          easing    : this.options.resizeEffect
        });

        if (this.ResizeBox) this.ResizeBox.stop();

        this.ResizeBox = this.Contenedor.animate({
          width     : data.width
        }, {
          duration  : this.options.resizeDuration,
          easing    : this.options.resizeEffect,
          complete  : function(){
            $(this).trigger('complete');
          }
        });
      }

    },
    
    getInfo: function (image, id) {
      image=$(image);
      IEuta = $('<a id="'+this.options.name+'-'+id+'" title="'+image.attr('title')+'" rel="'+image.attr('rel')+'">&nbsp;</a>');
      IEuta.css({ 'background-image' : 'url('+this.options.dir+'/'+this.options.color+'/'+this.options.buttons+')' });
      IEuta.attr('href', image.attr('href')); //IE fix
      return IEuta;
    },
    
    display: function(url, title, force) {
      return this.show(title, url, '', force);
    },
    
    show: function(caption, url, rel, force) {
      this.showLoading();

      var baseURL     = url.match(/(.+)?/)[1] || url;
      var imageURL    = /\.(jpe?g|png|gif|bmp)/gi;
      var queryString = url.match(/\?(.+)/);
      if (queryString) queryString = queryString[1];
      var params      = this.parseQuery( queryString );

      if (this.ResizeBox) this.ResizeBox.unbind('complete'); //fix for jQuery

      params = $.extend({}, {
        'width'     : 0,
        'height'    : 0,
        'modal'     : 0,
        'background': '',
        'title'     : caption
      }, params || {});

      params['width']   = parseInt(params['width']);
      params['height']  = parseInt(params['height']);
      params['modal']   = parseInt(params['modal']);

      this.overlay.options.hideOnClick = !params['modal'];
      this.lightbox  = $.extend({}, params, { 'width' : params['width'] + 14 });
      this.navigator = this.lightbox.title ? true : false;

      if ( force=='image' || baseURL.match(imageURL) )
      {
          this.img = new Image();
          this.img.onload = $.bind(this, function(){
              this.img.onload=function(){};
              if (!params['width'])
              {
                var objsize = this.calculate(this.img.width, this.img.height);
                params['width']   = objsize.x;
                params['height']  = objsize.y;
                this.lightbox.width = params['width'] + 14;
              }

              this.lightbox.height = params['height'] - (this.navigator ? 21 : 35);
              
              this.replaceBox({ 'resize' : 1 });
              
              // Mostrar la imagen, solo cuando la animacion de resizado se ha completado
              this.ResizeBox.bind('complete', $.bind(this, function(){
                this.showImage(this.img.src, params);
              }));
          });

          this.img.onerror = $.bind(this, function() {
            this.show('', this.options.imagesdir+'/'+this.options.color+'/404.png', this.options.find);
          });

          this.img.src = url;
          
      } else { //code to show html pages

          this.lightbox.height = params['height']+($.browser.opera?2:0);
          this.replaceBox({'resize' : 1});
        
          if (url.indexOf('TB_inline') != -1) //INLINE ID
          {
            this.ResizeBox.bind('complete', $.bind(this, function(){
              this.showContent($('#'+params['inlineId']).html(), this.lightbox);
            }));
          }
          else if(url.indexOf('TB_iframe') != -1) //IFRAME
          {
            var urlNoQuery = url.split('TB_');
            this.ResizeBox.bind('complete', $.bind(this, function(){
              this.showIframe(urlNoQuery[0], this.lightbox);
            }));
          }
          else //AJAX
          {
            this.ResizeBox.bind('complete', $.bind(this, function(){
              $.ajax({
                url: url,
                type: "GET",
                cache: false,
                error: $.bind(this, function(){this.show('', this.options.imagesdir+'/'+this.options.color+'/404html.png', this.options.find)}),
                success: $.bind(this, this.handlerFunc)
              });
            }));
          }

      }
      

      this.next = false;
      this.prev = false;
       //Si la imagen pertenece a un grupo
      if (rel.length > this.options.find.length)
      {
          this.navigator = true;
          var foundSelf  = false;
          var exit       = false;
          var self       = this;

          $.each(this.anchors, function(index){
            if ($(this).attr('rel') == rel && !exit) {
              if ($(this).attr('href') == url) {
                  foundSelf = true;
              } else {
                  if (foundSelf) {
                      self.next = self.getInfo(this, "Right");
                       //stop searching
                      exit = true;
                  } else {
                      self.prev = self.getInfo(this, "Left");
                  }
              }
            }
          });
      }

      this.addButtons();
      this.showNavBar(caption);
      this.animate(1);
    },// end function

    calculate: function(x, y) {
      // Resizing large images
      var maxx = $(window).width() - 100;
      var maxy = $(window).height() - 100;

      if (x > maxx)
      {
        y = y * (maxx / x);
        x = maxx;
        if (y > maxy)
        {
          x = x * (maxy / y);
          y = maxy;
        }
      }
      else if (y > maxy)
      {
        x = x * (maxy / y);
        y = maxy;
        if (x > maxx)
        {
          y = y * (maxx / x);
          x = maxx;
        }
      }
      // End Resizing
      return {x: parseInt(x), y: parseInt(y)};
    },

    handlerFunc: function(obj, html) {
      this.showContent(html, this.lightbox);
    },

    addButtons: function(){
      if(this.prev) this.prev.bind('click', $.bind(this, function(obj, event) {event.preventDefault();this.hook(this.prev);}));
      if(this.next) this.next.bind('click', $.bind(this, function(obj, event) {event.preventDefault();this.hook(this.next);}));
    },

    showNavBar: function() {
      if (this.navigator)
      {
        this.bb.addClass("SLB-bbnav");
        this.Nav.empty();
        this.innerbb.empty();
        this.innerbb.append(this.Nav);
        this.Descripcion.html(this.lightbox.title);
        this.Nav.append(this.prev);
        this.Nav.append(this.next);
        this.Nav.append(this.Descripcion);
      }
      else
      {
        this.bb.removeClass("SLB-bbnav");
        this.innerbb.empty();
      }
    },

    showImage: function(image, size) {
      this.Background.empty().removeAttr('style').css({'width':'auto', 'height':'auto'}).append('<img id="'+this.options.name+'-Image"/>');
      this.Image = $('#'+this.options.name+'-Image');
      this.Image.attr('src', image).css({
        'width'  : size['width'],
        'height' : size['height']
      });
    
      this.Contenedor.css({
        'background' : 'none'
      });

      this.Contenido.empty().css({
          'background-color': 'transparent',
          'padding'         : '0px',
          'width'           : 'auto'
      });
    },

    showContent: function(html, size) {
      this.Background.empty().css({
        'width'            : size['width']-14,
        'height'           : size['height']+35,
        'background-color' : size['background'] || '#ffffff'
      });
      
      this.Contenido.empty().css({
        'width'             : size['width']-14,
        'background-color'  : size['background'] || '#ffffff'
      }).append('<div id="'+this.options.name+'-Image"/>');

      this.Image = $('#'+this.options.name+'-Image');
      this.Image.css({
        'width'       : size['width']-14,
        'height'      : size['height'],
        'overflow'    : 'auto',
        'background'  : size['heght'] || '#ffffff'
      }).append(html);

      this.Contenedor.css({
        'background': 'none'
      });
    },

    showIframe: function(src, size, bg) {
      this.Background.empty().css({
        'width'           : size['width']-14,
        'height'          : size['height']+35,
        'background-color': size['background'] || '#ffffff'
      });

      var id = "if_"+new Date().getTime()+"-Image";

      this.Contenido.empty().css({
        'width'             : size['width']-14,
        'background-color'  : size['background'] || '#ffffff',
        'padding'           : '0px'
      }).append('<iframe id="'+id+'" frameborder="0"></iframe>');
      
      this.Image = $('#'+id);
      this.Image.css({
          'width'       : size['width']-14,
          'height'      : size['height'],
          'background'  : size['background'] || '#ffffff'
      }).attr('src', src);

      this.Contenedor.css({
        'background' : 'none'
      });
    },

    showLoading: function() {
      this.Background.empty().removeAttr('style').css({'width':'auto', 'height':'auto'});
      this.Contenido.empty().css({
        'background-color'  : 'transparent',
        'padding'           : '0px',
        'width'             : 'auto'
      });
												// Brian insert assets
      this.Contenedor.css({
        'background' : 'url('+this.options.imagesdir+'/'+this.options.color+'/loading.gif) no-repeat 50% 50%'
      });

      this.Contenido.empty().css({
          'background-color': 'transparent',
          'padding'         : '0px',
          'width'           : 'auto'
      });

      this.replaceBox($.extend(this.options.BoxStyles, {'resize' : 1}));
    },
  
    parseQuery: function (query) {
      if( !query )
        return {};
      var params = {};

      var pairs = query.split(/[;&]/);
      for ( var i = 0; i < pairs.length; i++ ) {
        var pair = pairs[i].split('=');
        if ( !pair || pair.length != 2 )
          continue;
        params[unescape(pair[0])] = unescape(pair[1]).replace(/\+/g, ' ');
       }
       return params;
    },

    shake: function() {
      var d=this.options.shake.distance;
      var l=this.Wrapper.position();
      l=l.left;
      for(x=0;x<this.options.shake.loops;x++) {
       this.Wrapper.animate({left: l+d}, this.options.shake.duration, this.options.shake.transition)
       .animate({left: l-d}, this.options.shake.duration, this.options.shake.transition);
      }
       this.Wrapper.animate({"left": l+d}, this.options.shake.duration, this.options.shake.transition)
       .animate({"left": l}, this.options.shake.duration, this.options.shake.transition);
    }
    
  }
})(jQuery);


/* 
* The El Sexy-o Stack for RapidWeaver by Brian Morgan at http://www.elstacko.com * Sexy LightBox - for jQuery 1.3.2
 * @name      sexylightbox.v2.3.js
 * @author    Eduardo D. Sada - http://www.coders.me/web-html-js-css/javascript/sexy-lightbox-2
 * @version   2.3.4
 * @date      10-Nov-2009
 * @copyright (c) 2009 Eduardo D. Sada (www.coders.me)
 * @license   MIT - http://es.wikipedia.org/wiki/Licencia_MIT
 * @example   http://www.coders.me/ejemplos/sexy-lightbox-2/ 
 And as usual, this would not have been possible without the help of my friend, Eric, from cosculture.com... he's a coding genius. 
*/

/*
	Brian's Sexy Lightbox init
*/

//  insert assets and change from black to white
$(document).ready(function(){
  SexyLightbox.initialize({emergefrom: 'top', color:'white', imagesdir: 'files/sexyimages'});
});
	return stack;
})(stacks.stacks_in_353_page36);



