/* re-cacheing */

/*---- fx.js ----*/
var fx_config = new Array();
fx_config['images'] = new Array();
fx_config['images']['constraint'] = new Array;
fx_config['images']['zoom'] = new Array;
fx_config['fade'] = new Array;

/* config area */
fx_config['images']['constraint']['mini'] 		= 100;
fx_config['images']['constraint']['thumb'] 		= 175;
fx_config['images']['constraint']['fullsize'] 		= 390;
fx_config['images']['constraint']['zoom'] 		= 800;
fx_config['images']['constraint']['constrainBy'] 	= 'w';		// width (w) or height (h)

fx_config['images']['zoom']['step']			= 7;		// number pixels to jump with each expand/contract
fx_config['images']['zoom']['speed']			= 1;		// delay in milliseconds between jumps
fx_config['images']['zoom']['runout']			= 1000;		// maximum number of iterations to expand
fx_config['images']['zoom']['tween']			= 10;		// positive number tweens out

fx_config['fade']['step']			= .3;			// % to fade in / out with each jump
fx_config['fade']['speed']			= 100;			// delay in milliseconds between jumps
/* end config area */

var defaultSpeed = 20;


/* thumb functions */
function getImage(uri, variation) {
	var ext = uri.substring(uri.lastIndexOf('.')+1);		// get extension
	var base = uri.substring(0, uri.length-ext.length-1);		// get remainder of string
	if(base.lastIndexOf('.') > uri.lastIndexOf('/')) 		// contains another variaiton
		base = base.substring(0, base.lastIndexOf('.'));	// strip from start to last '.'

	return	base + '.' + variation + '.' + ext;
}

function setOpacity(id, to) {
	if($(id)) {
		$(id).style.opacity = to;
		$(id).style.filter = 'alpha(opacity='+(to*100)+')';
	}
}
function showHide(targ, button) {
	if(targ.offsetHeight || targ.offsetWidth) {
		targ.style.display = 'none';
		if(button) button.className = button.className.replace(/open/g,'')+' closed';
	} else {
		targ.style.display = 'block';
		if(button) button.className = button.className.replace(/closed/g,'')+' open';
	}
}

var unique_counter = 0;
var _currentlyFading = new Array();

function fade_in(obj, time) {
	time = time ? time : .5;
	if(!obj)	return;
	if(obj.tween)	obj.tween.stop();
	obj.tween = new Tween(obj, 'alpha', '', 0, 1, time);
	obj.tween.start();
	return obj.tween;
}
function fade_out(obj, time, removeAfter) {
	time = time ? time : .5;
	if(obj.tween)	obj.tween.stop();
	obj.tween = new Tween(obj, 'alpha', '', obj.style.opacity, 0, time);
	if(removeAfter) {
		obj.tween.onstop = function() {
			remove(obj);
		}
	}
	obj.tween.start();
	return obj.tween;
}
function shrinkH(obj, time, removeAfter) {
	time = time ? time : .5;
	if(obj.tween)	obj.tween.stop();
	obj.tween = new Tween(obj, 'height', '', 1, 0, time);
	if(removeAfter) {
		obj.tween.onstop = function() {
			remove(obj);
		}
	}
	obj.tween.start();
	return obj.tween;
}

function bounce(obj, bounceTo) {
	if(bounceTo==undefined)	bounceTo = 10;

	var tw = new Tween(obj, 'marginTop', false, 0, bounceTo, .1);
	tw.onstop = function() {
		if(Math.abs(bounceTo) > 1) {
			var bounceDecrease = Math.random()*.5 + .5;		// random number between .5 and 1
			bounce(obj, bounceTo*bounceDecrease*-1);
		}
	}
	tw.start();
}

/* thumb functions */
var _lightboxTopOffset = 40;

function lightbox(src, type, className, width, height) {
	var lb = new Lightbox(src, type, className, width, height);
	lb.show();
	return lb;
}
_lightboxObj = Array();


function fullscreen(img) {
	var w = img.offsetWidth;
	var h = img.offsetHeight;

	var winW = getWinWidth() - 20;
	var winH = getWinHeight() - _lightboxTopOffset - 30;

	var ratio = winW / w;
	var newW = winW;
	var newH = Math.floor(ratio * h);

	if(newH > winH) {		// size by height
		ratio = winH / h;
		newH = winH;
		newW = Math.floor(ratio * w);
	}
	var full_img_holder = document.createElement('div');
	var full_img = addChild(full_img_holder, 'img');
	full_img.src = getImage(img.src, Math.floor(newW));
	
	lightbox(getImage(img.src, newW), newW, 'img', 'loading', newH);
}


function showMask(targ, className, loading) {
	var mask = targ.mask;
	if(!mask || !mask.parentNode) {
		mask = document.createElement('div');
		document.body.appendChild(mask);
		mask.className = 'mask'+((className!=undefined)?className:'');
	}
	targ.mask = mask;
	resizeMask(targ);
	addEventHandler(window, 'resize', function() { resizeMask(targ) });
	mask.targ = targ;

	if(loading) {
		var marg = (mask.offsetHeight + Top(mask) > getWinHeight()) ? (getWinHeight()-Top(mask))/2 : mask.offsetHeight / 2;
		mask.innerHTML = '<div align="center" style="margin-top:'+(marg-25)+'px;">'+generateEmbedCode('swf','/i/ui/loading.swf', 40,40)+'</div>';
	}

	fade_in(mask, .8);
	return mask;
}
function resizeMask(targ) {
	targ.mask.style.width = targ.offsetWidth+'px';
	targ.mask.style.height = targ.offsetHeight+'px';
	targ.mask.style.display = 'block';
	targ.mask.style.top = Top(targ)+'px';
	targ.mask.style.left = Left(targ)+'px';
}
function hideMask(targ) {
	if(targ.mask && targ.mask.parentNode) 
		fade_out(targ.mask, true);
}

function fit(obj, padding, rent) {
	if(padding==undefined)	padding = 0;
	obj.style.position='absolute';
	rent = (rent==undefined) ? obj.parentNode : rent;

	var objWidth = obj.offsetWidth;
	var objHeight = obj.offsetHeight;

	obj.style.display = 'none';
	var rentWidth = rent.offsetWidth-padding*2;
	var rentHeight = rent.offsetHeight-padding*2;
	obj.style.display = 'auto';

	var proportion =  rentWidth / objWidth;
	var proposedHeight = proportion * objHeight;

	if(proposedHeight > rentHeight) {				// too tall, constrain by height
		proportion = rentHeight / objHeight;
	}

	obj.style.width = Math.floor(objWidth * proportion)+'px';	// set width
	obj.style.height = Math.floor(objHeight * proportion)+'px';	// set height
	obj.style.maxWidth = Math.floor(objWidth * proportion)+'px';	// set width
	obj.style.maxHeight = Math.floor(objHeight * proportion)+'px';	// set height
	obj.style.position='relative';
}
function center(obj, to, horiz, vert) {
	if(!to)			to = obj.parentNode;
	if(horiz==undefined)	horiz=true;
	if(vert==undefined)	vert=true;
	if(!obj.offsetWidth) 	obj.style.display='block';
	if(horiz) {
		obj.style.marginLeft = '0px';
		obj.style.marginLeft = ((to.offsetWidth-obj.offsetWidth)/2)+'px';
	}
	if(vert) {
		obj.style.marginTop = '0px';
		obj.style.marginTop = ((to.offsetHeight-obj.offsetHeight)/2)+'px';
	}
}

function imageProperties(src) {	
	src = replace(replace(src,'&','%26'),' ','%20');
	var xml = load('/boss/getImageInfo.php?src='+src); 
	var ary = new Array();
	ary['w'] = parseXML(xml,Array('response','w'));
	ary['h'] = parseXML(xml,Array('response','h'));
	return ary;
}


/* glossary functions */
var definitionDV = false;
function def(obj, specificTo, overrideTerm, overrideWidth) {
	obj = (obj!=undefined)	? obj : false; 
	var term = overrideTerm ? overrideTerm : obj.innerHTML;
	var html = load('/boss/definition.php?s='+term+'&cat='+specificTo);
	if(!obj.onmouseout)	obj.onmouseout=function(){ def(); };

	return showMore(obj, html, overrideWidth);
}
var moreDV = false;
function showMore(anchorTo, html, overrideWidth) {
	if(moreDV) {
		moreDV.parentNode.removeChild(moreDV);
		moreDV = false;
	}
	if(anchorTo) {
		moreDV = document.createElement('div');
		moreDV.innerHTML = html;
		moreDV.className = 'more';
		if(overrideWidth) moreDV.style.width = overrideWidth+'px';
		moreDV.style.left='0px';
		document.body.appendChild(moreDV);

		if((Top(anchorTo)-moreDV.offsetHeight) > getScrollY()) {	// too big to put above
			moreDV.style.top=Top(anchorTo)-moreDV.offsetHeight+'px';
		} else {							// put below object
			moreDV.style.top=Top(anchorTo)+anchorTo.offsetHeight+'px';
		}

		var x = Left(anchorTo);
		if(x+moreDV.offsetWidth > getWinWidth())	x = getWinWidth()-moreDV.offsetWidth-10;
		moreDV.style.left=x+'px';
		fade_in(moreDV);
	}
}
/* input functions */
function setDefaultText(inp, defVal) {
	if(!inp)	return;
	if(defVal || !inp.alt)	inp.alt = defVal?defVal:inp.value;
	inp.initType = inp.type;
	if(!isIE && inp.type!='text' && inp.type!='search') {
		inp.type = 'text';
	}
	addEventHandler(inp, 'focus', function(e) { 
		if(inp.value==inp.alt)	inp.value = ''; 	
		inp.type = inp.initType;
		if(inp.className)	removeClass(inp, 'def');
		//if(inp.className)	inp.className=inp.className.replace(/def/g,''); 			
	});
	addEventHandler(inp, 'blur', function(e) { 
		if((!inp.value) || (inp.value==inp.alt)) {	
			inp.value = inp.alt;
			if(inp.type!='text' && inp.type!='search') 
				inp.type = 'text';
			addClass(inp, 'def');	
		} else {
			inp.type = inp.initType;
			removeClass(inp, 'def');
			//inp.className = inp.className.replace(/def/g,'');
		}
	});
	if((!inp.value) || (inp.value==inp.alt)) {	
		inp.value = inp.alt;
		inp.className = inp.className + ' def';	
		addClass(inp, 'def');
	}
}

function checkRequired(frm) {
	var good2go = true;
	for(var x in frm) {
		if(frm[x] && frm[x].name && frm[x].className) {
			if((frm[x].className.indexOf('required')!=-1) && (frm[x].value.replace(/^\s+|\s+$/g, '') =='')) {
				frm[x].className = frm[x].className+' warning';
				good2go=false;
			} else	frm[x].className = frm[x].className.replace('warning','');
		}
	}
	return good2go;
}

function getErrorStr(xml) {
	var errStr = '';
	while(err = parseXML(xml, Array('error'))) {
		errStr += err+"\n";
		xml = EatXML(xml, Array('error'));
	}
	return errStr;
}





/*---- AC_RunActiveContent.js ----*/
//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
	var version;
	var axo;
	var e;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";

			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");

		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];

        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}

function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblclick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}



/*---- ui.js ----*/
function share(network, link, label) {
	var url = '';
	switch(network) {
		case 'facebook':
		case 'fb':
			url = 'http://www.facebook.com/sharer.php?t='+encodeURIComponent(label.replace(/-/g,'%20'))+'&u='+encodeURIComponent(link)+'%26';//+string_generator(5);
			break;
		case 'twitter':
		case 'tw':
			url = 'http://twitter.com/share?text='+label+' '+encodeURIComponent(link);
			break;
		case 'digg':
		case 'dg':
			url = 'http://digg.com/submit?url='+link;
			break;
		case 'delicious':
		case 'del':
			url = 'http://delicious.com/save?v=5&amp;noui&amp;jump=close&url='+link+'&title='+label.replace(/-/g,' ');
			break;
		case 'myspace':
		case 'mysp':
			url = 'http://www.myspace.com/Modules/PostTo/Pages/?u='+link+'&c='+encodeURIComponent(label.replace(/-/g, ' '));
			break;
		case 'stumbleupon':
		case 'su':
			url = 'http://www.stumbleupon.com/submit?url='+encodeURIComponent(link)+'&title='+label;
			break;
	}
	window.open(url, network, 'toolbar=no,width=550,height=550');
        _gaq.push(['_trackEvent', document.title, 'Share - '+network, label]);
	return false;
}

var stylesheet;
function createCSS(selector, declaration) {
	// create the style node for all browsers
	if(!stylesheet) {
		var stylesheet = document.createElement("style");
		stylesheet.setAttribute("type", "text/css");
		stylesheet.setAttribute("media", "screen"); 

		// append the stylesheet
		document.getElementsByTagName("head")[0].appendChild(stylesheet);
	}
	if (!isIE) stylesheet.appendChild(document.createTextNode(selector + " {" + declaration + "}"));


	// use alt methods for IE
	if (isIE && document.styleSheets && document.styleSheets.length > 0) {
		var last_stylesheet = document.styleSheets[document.styleSheets.length - 1];
		if (typeof(last_stylesheet.addRule) == "object") last_stylesheet.addRule(selector, declaration);
	}
};

function setOverflow(obj, overflowSignifier) {
	if(!overflowSignifier) overflowSignifier = '&hellip;';
	overflowSignifierLen = overflowSignifier.length;

	obj.style.overflowY = 'hidden';						// hide overflow
	var targH = obj.offsetHeight;						// to obtain target height
	var html = obj.innerHTML;						// put html into variable

	obj.innerHTML = '';							// reset inner html to 
	var txtHolder = addChild(obj, 'span', 'overfowTxtHolder', '', html);	// have a span as the test text

	var overflows = false;
	while(targH < txtHolder.offsetHeight) {					// there is an overflow
		overflows = true;
		html = html.substring(0, html.length-1);			// shorten until it fits
		txtHolder.innerHTML = html.trim()+'&hellip;';			// add signifier
	}
	return overflows;
}

function getInputValue(inp) {
	return inp.value!=inp.alt ? inp.value : '';
}

function setLoad(obj) {
	if(!obj)return;
	if(obj && obj.loadScreen) {
		remove(obj.loadScreen);
	}
	obj.loadScreen = addChild(obj, 'div', 'load mask');
	addChild(obj.loadScreen, 'div');
	obj.loadScreen.style.position = 'absolute';
	fade_in(obj.loadScreen, .3);
	obj.loadScreen.style.top = '0px';
	obj.loadScreen.style.right = '0px';
	obj.loadScreen.style.bottom = '0px';
	obj.loadScreen.style.left = '0px';
	obj.loadScreen.style.display = 'block';
};
function clearLoad(obj) {
	if(obj && obj.loadScreen) {
		//obj.loadScreen.style.display = 'none';
		fade_out(obj.loadScreen, .3, true);
	}
};
/* string formatting */
function mask(inp, mask) {
	var sections = mask.split(/[^#]/g);
	var delimiters = mask.replace(/[#]/g, '');
	var start  = inp.value.replace(/[^a-z0-9A-Z*%^]/g, '');
	var result = '';
	var place = 0;
	for(var i in sections) {
		if(place+sections[i].length > start.length) {
			inp.value = result.concat(start.substring(place));
			return;
		}
		if(start.substring(place, place+(sections[i].length) != undefined))
			result = result.concat(start.substring(place, place+(sections[i].length))+delimiters.charAt(i));
		place += sections[i].length;
	}
	inp.value = result.concat(start.substring(place)).replace(/_/g,' ');
}

var _curMessage = false;
function msg(message, stayOpen, disableCloseBtn, title) {
	var dv = document.createElement('div');				// msg box holder
	dv.className = 'msg';

	var heading = addChild(dv, 'div', 'heading', '', title?title:'Message');

	var msgHolder = addChild(dv, 'div', 'msgHolder');		// message object holder
	if((typeof message) == 'string') {				// handle string msg
		msgHolder.innerHTML = message;
	} else {
		msgHolder.appendChild(message);				// handle object msg
	}

	if(!disableCloseBtn) {
		var footer = addChild(dv, 'div', 'footer');
		var btn = addChild(footer, 'div', 'button', '', 'Close');
		btn.onclick = function() { fade_out(_curMessage, true); };
	}
	addClearDv(dv);
	_curMessage = lightbox(dv, 400, 'obj');

	if(!stayOpen || (stayOpen==undefined))
		setTimeout('if(_curMessage)	lightboxCloseCurrent();', 2500);
		//setTimeout('if(_curMessage)	fade_out(_curMessage, true)', 2500);

	return dv;
}
function choose(message, btns, title) {
	var dv = document.createElement('div');
	dv.message = addChild(dv, 'div', 'msgHolder');		// message object holder
	if((typeof message) == 'string')
		dv.message.innerHTML = message;
	else	dv.message.appendChild(message);

	addClearDv(dv);
	var footer = addChild(dv, 'div', 'footer');
	if(btns) for(var i in btns) {				// btn ary is btn[LABEL] = FUNCTION
		btns.reverse();
		var btn = addChild(footer, 'div', 'button', '', i);
		btn.onclick = btns[i];				// attach function
		btn.onmouseup = function() { fade_out(_curMessage, true); };				
	}
	var btn = addChild(footer, 'div', 'button'+(btns?' cancel':' close'), '', btns?'Cancel':'Close');
	addClearDv(footer);
	btn.onclick = function() { fade_out(_curMessage, true); };

	box = msg(dv, true, btns?true:false, title);			// lightbox msg, leave open and show close if no buttons available
	for(var i in footer.childNodes)	footer.childNodes[i].box = box;
	return box;
}

window.verifyDialog = false;
function verify(message, yesFn) {
	var dv = document.createElement('div');
	
	dv.message = addChild(dv, 'div', '');
	if((typeof message) == 'string')
		dv.message.innerHTML = message;
	else	dv.message.appendChild(message);

	var footer = addChild(dv, 'div', 'footer');

	var btn = addChild(footer, 'div', 'button verify', '', 'Yes');
	btn.onclick = yesFn;
	btn.onmouseup = function() { fade_out(_curMessage, true); };

	var btn = addChild(footer, 'div', 'button', '', 'No');
	btn.onclick = function() { fade_out(_curMessage, true); };

	verifyDialog = msg(dv, true, true, 'Confirm');			// lightbox msg, leave open and show close if no buttons available
	verifyDialog.yesFn = yesFn;

	window.onkeydown = function(e) {
		if(!e)	e = window.event;
		if(e.keyCode==13) {
			window.verifyDialog.yesFn();
			lightboxCloseCurrent();
			window.onkeydown=function(){;};
		}
		return true;
	}
}

/* seperator frame functionality */
var orientation_units = { 
	'h': { 'len':'offsetWidth', 'offset':'offsetLeft', 'dim':'width', 'offsetDim':'left', 'dir':'x' },
	'v': { 'len':'offsetHeight', 'offset':'offsetTop', 'dim':'height', 'offsetDim':'top', 'dir':'y' }
};


/* form functions */
function postForm(url, frm, callbackFnOrBlocking, callbackObj, debug) {
	if(!frm)	frm = document.forms[0];
	if(!url) {
		var url = window.location+'';
		url = url.substring(url.lastIndexOf('/')+1, url.lastIndexOf('?'));
	}
	var postStr = getFormFields(frm);
	/*debug*/
	if(debug) prompt('',url+'?'+postStr);
	/**/

	postRequestObj = getRequestObj();
	if (!postRequestObj) {
		alert('Error processing form.');
		return false;
	}

	postRequestObj.open('POST', url, callbackFnOrBlocking?false:true);
	if(callbackFnOrBlocking) {
		postRequestObj.onreadystatechange = function(){
			if((typeof callbackFnOrBlocking) !='boolean');
			if (postRequestObj.readyState == 4) {
				if(callbackObj) {
					callbackObj[callbackFnOrBlocking](postRequestObj.responseText);
				} else if(callbackFnOrBlocking!==true) {
					callbackFnOrBlocking(postRequestObj.responseText);
				}
			}
		};
	}
	postRequestObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	postRequestObj.setRequestHeader("Content-length", postStr);
	postRequestObj.setRequestHeader("Connection", "close");
	postRequestObj.send(postStr);

	if(debug)	alert('Response: '+postRequestObj.responseText);
	if((!callbackFnOrBlocking || ((typeof callbackFnOrBlocking)=='boolean')) && postRequestObj.responseText) {
		var response = postRequestObj.responseText;
		var errors = parseXML(response, 'errors');
		var hasErrors = errors?true:false;
		var err;
		while(err = parseXML(errors, 'e')) {
			var id = parseXML(err, 'fld');
			var fld = frm[id];
			if(fld && (id!='0')) {
				if(!fld.err)	fld.err = addChild(fld.parentNode, 'div', 'err');
				fld.err.className = 'err';
				fld.err.innerHTML = parseXML(err, 'msg');
				fld.value = '';
				fld.focus();
			} else {
				msg('<div class="err">'+parseXML(err, 'msg')+'</div>', true, false, 'Error');
			}
			errors = eatXML(errors, 'e');
		}
		loadXMLVals(response, frm, true);
		if(hasErrors)	return false;
		return postRequestObj.responseText;
	}
}
function isEmpty(obj, type) {
	switch(typeof obj) {
		case 'string':
			return obj.length ? false : true;
			break;

		case 'object':
			if(obj.nodeName.toLowerCase()=='form') {
				for(var i in obj.elements) 
					if(obj.elements[i] && obj.elements[i].name && obj.elements[i].type && (obj.elements[i].type.toLowerCase()!='hidden') && (obj.elements[i].value.length>0)) {
						return false;
					}
				return true;
			} else if(obj.nodeName) {
				return obj.innerHTML ? false : true;
			} else {
				return obj.length ? false : true;
			}
			break;
	}
}

function getFormFields(frm) {
	var str = '';
	for(var x=0; x < frm.elements.length; x++) {
		if(frm.elements[x] 
		   && frm.elements[x].type && (frm.elements[x].type!=undefined)
		   && frm.elements[x].name && (frm.elements[x].name!=undefined)
		   && (!frm.elements[x].alt || (frm.elements[x].value!=frm.elements[x].alt)) && (frm.elements[x].value != undefined)) {
			if(frm.elements[x].type.toLowerCase() == 'checkbox') {
				frm.elements[x].value = frm.elements[x].checked ? 1 : 0;
			} 
			if(frm.elements[x].err)	frm.elements[x].err.innerHTML = '';
			str += frm.elements[x].name+'='+((frm.elements[x].value==undefined) ? escape(frm.elements[x].value) : '')+'&';
		} 
	}
	return str;
}

function getInUnitStr(val, measurement, unit, vers) {
	if(!vers)	vers = 'default';

	var ary = getInUnits(val, measurement, unit, vers);
	var unitVals = _units[vers][measurement];
	var str = '';
	for(var i in ary) {
		var max = ary[i].val;
		var unit_ary = ary[i].unit;
		var unit = (max<=1) ? unit_ary[1] : (unit_ary[2]?unit_ary[2]:unit_ary[1]);
		var space = (unit.indexOf('&')==-1)?' ':'';			// if it is a special html character (ie symbol), no space
		str = addCommas(max)+space+unit+(str?' ':'')+str;
	}
	return str;
}
function getInUnits(val, measurement, unit, vers) {
	if(!vers)	vers = 'default';

	var unitVals = _units[vers][measurement];
	var toReturn = Array();
	if(unitVals) {
		var baseVal = _units[vers][measurement][unit][0]*val;		// convert to base

		function getGCD(val) {
			var gcd = false;
			for(var i in unitVals) {
				if(unitVals[i][0] <= val) {
					if(!gcd || (gcd[0] <= unitVals[i][0])) {
						gcd = unitVals[i];
					}
				}
			}
			return gcd;
		}
		var remaining = baseVal;
		while(remaining > 0) {
			var gcd = getGCD(remaining);
			if(gcd) {
				var max = Math.floor(remaining/gcd[0]);
				toReturn[gcd[0]] = { 'val':max, 'unit':gcd };
				remaining -= max*gcd[0];
			} else {							// should never happen
				remaining = 0;
			}
		}
	}
	return toReturn;
}
var _units = Array();
_units['default'] = {
	'length': { inch:Array(1, 'inch', 'inches'), foot:Array(12, 'foot', 'feet') },
	'date': { day:Array(1,'day', 'days'), /*week:Array(7, 'week', 'weeks'), */year:Array(365, 'year', 'years') },
	'time': { second:Array(1, 'second', 'seconds'), minute:Array(60, 'minute', 'minutes'), hour:Array(3600, 'hour', 'hours') },
	'location': { second:Array(1/60/60, 'second', 'seconds'), minute:Array(1/60, 'minute', 'minutes'), degree:Array(1, 'degrees') }
};
_units['short'] = {
	'length': { inch:Array(1, 'in'), foot:Array(12, 'ft') },
	'date': { day:Array(1,'day', 'days'), /*Array(7, 'wk', 'wks'),*/ year:Array(365, 'yr', 'yrs') },
	'time': { second:Array(1, 'sec', 'secs'), minute:Array(60, 'min', 'mins'), hour:Array(3600, 'hr', 'hrs') },
	'location': { second:Array(1/60/60, 'sec', 'secs'), minute:Array(1/60, 'min', 'mins'), degree:Array(1, 'deg', 'degs') }
};
_units['symbol'] = {
	'length': { inch:Array(1, '&quot;'), foot:Array(12, '&#39;') },
	'date': { day:Array(1,'day', 'days'), /*week:Array(7, 'wk', 'wks'), */year:Array(365, 'yr', 'yrs') },
	'time': { second:Array(1, 'sec', 'secs'), minute:Array(60, 'min', 'mins'), hour:Array(3600, 'hr', 'hrs') },
	'location': { second:Array(1/60/60, '&#39;'), minute:Array(1/60, '&quot;', '&quot;'), degree:Array(1, '&deg;')}
};



/*---- global.js ----*/
var ICONS_DIR = '/i/ui/icons/';

var isIE = document.all ? true : false;
var iPad = ((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPad/i))|| (navigator.userAgent.match(/iPod/i))) ? true : false;
var iPhone = iPad;

function $(s) { 	return	document.getElementById(s);	}
function doNothing() { return null; }
function getElementByName(s, obj, props) {
	var objs = getElementsByName(s, obj, props, 1);
	return objs ? objs[0] : false;
}
function getElementsByName(s, obj, props, limit) {
	if(!props)	props = Array('name');
	if(!limit)	limit = 10000000;
	var result = Array();
	s = s.toLowerCase();

	// check if match
	for(var i=0; i<props.length; i++) {
		// check the object name against the passed in variable
		if(obj && obj[props[i]] && (obj[props[i]].match(s)))	{
		//if(obj && obj[props[i]] && (obj[props[i]]===s))	{
			result[0] = obj;
		}
	}

	obj = (obj==undefined) ? document.body : obj;
	if(obj.childNodes) {
		for(var k=0; k<obj.childNodes.length; k++) {
			if(limit==0)	return;

			// recurse with this child
			var targ = getElementsByName(s, obj.childNodes[k], props, limit);

			// add results from recurse
			if(result[0]!=targ) {
				if(typeof targ == 'string') {
					result[result.length] = targ;
					limit--;
				} else if(targ) {
					result = result.concat(targ);
					limit--;
				}
			}
		}
	}
	if(!result.length) {
		return false;
	} else {
		return result;
	}
	/*
	if(obj.nodeName.toLowerCase() == s)
		return obj;
	else	return false;
	*/
}
function getSet() {
	for(var i=0; i<arguments.length; i++) {
		if(arguments[i]!=undefined && arguments[i]!='')	return arguments[i];
	}
}
function getImgVers(src, ext) {
	if(!src)	return '';
	var start = src.lastIndexOf('.');
	return src.substring(0,start)+'.'+ext+src.substring(start);
}

function getConstructor(obj) { 
	var funcNameRegex = /function (.{1,})\(/;
	var results = (funcNameRegex).exec((obj).constructor.toString());
	return (results && results.length > 1) ? results[1] : "";
};

function getDomain(url) {
	var url = url.toLowerCase();
	url = ltrim(url, 'http');
	url = ltrim(url, 's');
	url = ltrim(url, '://');
	url = ltrim(url, 'www.');
	if(url.indexOf('/')>0)	url = url.substring(0, url.indexOf('/'));
	return url;
}
function processParams(str, delim) {
	if(!str) return Array();
	var ary = str.split(delim?delim:'&');
	var returnAry = Array();
	for(var i in ary) {
		var tmp = ary[i].split('=',2);
		returnAry[tmp[0]] = tmp[1];
	}
	return returnAry;
}
function updateAnchorParam(param, val) {
var url = window.location.toString();
	var uri = url.substring(url.indexOf('/', 10));
	var tmp = url.split('#');
	//var base = tmp[0];
	var anchor = tmp[1];
	var params = processParams(anchor);
	params[param] = val;				// overwrite current value for this param

	var str = '#';
	for(var i in params) {
		str += i+'='+params[i]+'&';
	}
	window.location = rtrim(str, '&');
}

//=============================== event handlers ================================//
/**/

var eventHandlers = new Array();
var events_unique_counter = 0;
var eventHandlersByIndx = new Array();
function addEventHandler(obj, eventType, fn, bubbles) {
	events_unique_counter++;

	if(!obj)	return;
	if(!obj.id)	obj.id = 'anonymous|'+(events_unique_counter);
	if(!eventHandlers[obj.id])	{
		eventHandlers[obj.id] = Array();			// if no other listener is setup yet for this object
	}
	if(!eventHandlers[obj.id][eventType]) {				// if no other listener for this object of this type is setup yet
		obj['on'+eventType] = function(e) { handle(e, obj, eventType); };
		eventHandlers[obj.id][eventType] = Array();
	}

	fn.bubbles = bubbles;
	if(eventHandlers[obj.id] && eventHandlers[obj.id][eventType] && (!in_array(eventHandlers[obj.id][eventType], fn))) {		// add to array of things to trigger on event
		eventHandlers[obj.id][eventType][eventHandlers[obj.id][eventType].length] = fn;
	}
	if(eventHandlers[obj.id][eventType]) 
		eventHandlersByIndx[events_unique_counter] = Array(obj, eventType, eventHandlers[obj.id][eventType].length-1);
	return events_unique_counter;
}
function clearEventHandlerByRef(obj, eventType, fn) {
	if(eventHandlers[obj.id] && eventHandlers[obj.id][eventType]) {
		var indx = eventHandlers[obj.id][eventType].indexOf(fn);
		if(indx!=-1) {
			delete eventHandlers[obj.id][eventType][indx];
		} else if(!fn && eventHandlers[obj.id][eventType]) {
			delete eventHandlers[obj.id][eventType];
		}
	}
}
function clearEventHandlerByIndx(indx) {
	return clearEventHandler(indx);
}
function clearEventHandler(indx) {
	var ary = eventHandlersByIndx[indx];
	if(ary) {
		clearEventHandlerByRef(ary[0], ary[1], ary[2]);
		delete eventHandlersByIndx[indx];
		return true;
	} else	return false;

}
function handle(e, overrideObj, overrideEvent) {
	e = e ? e : window.event;
	if(!e && !overrideObj)	return;
	
	var obj, eventType, executeOn;
	obj = overrideObj ? overrideObj : e.target;
	eventType = overrideEvent ? overrideEvent : e.type;
	executeOn = new Array();
	if(!e) e = { target:obj, type:eventType };

	if(e && e.bubbles) {
		while(obj) {							// cycle ancestors
			if(indexOf(executeOn, obj)==false) {
				executeOn[executeOn.length] = obj;
			} 
			obj = obj.parentNode;					// get next parent 
		}
		if(indexOf(executeOn, window)==false) 
			executeOn[executeOn.length] = window;			// always execute on window
	} else 	executeOn[0] = obj;

	var runs = 0;
	var functions_ran = Array();
	for(var i in executeOn) {
		var obj = executeOn[i];
		if(obj && obj.id && eventHandlers[obj.id] && eventHandlers[obj.id][eventType]) {
			for(var i in eventHandlers[obj.id][eventType]) {		// cycle through possibly multiple events
				var fn = eventHandlers[obj.id][eventType][i];
				if(fn.bubbles!==false || runs>0) {
					var indx = obj;
					if(obj[fn]) {
						if(!functions_ran[obj] || (indexOf(functions_ran[obj], fn)===false))
							obj[fn](e);
					} else if(obj.fn) {
						if(!functions_ran[obj] || (indexOf(functions_ran[obj], fn)===false))
							obj.fn(e);	// execute fn with event as param from object
					} else if(is_function(fn)) {
						indx = '';
						if(!functions_ran[''] || (indexOf(functions_ran[''], fn)===false)) {
							fn(e);		// execute fn with event as param
						}
					}
					if(!functions_ran[indx])	functions_ran[indx] = Array(fn);
					functions_ran[indx][functions_ran[indx].length] = fn;
				}
			}
		}
		runs++;
	}
}
/**/

var _cascadeEvents = Array();
function addCascadingEvent(id, fn, pauseTime) {			// execute a function if an event hasn't triggered it (reduce overhead)
	if(!_cascadeEvents[id]) {
		_cascadeEvents[id] = new Object();		// create new object to hold cascade event
	} else if(_cascadeEvents[id].timer) {
		window.clearTimeout(_cascadeEvents[id].timer);	// stop old timer
	}
	_cascadeEvents[id].fn = fn;
	_cascadeEvents[id].timer = setTimeout("execCascadingEvent('"+id+"');", pauseTime);
}
function execCascadingEvent(id) {
	if(_cascadeEvents[id].timer) {
		window.clearTimeout(_cascadeEvents[id].timer);
		_cascadeEvents[id].timer = false;
	}
	_cascadeEvents[id].fn();
}


//=============================== string functions ================================//
function replace(str,find,replacement) {
	if(!str)	return '';
	var strLength = str.length, txtLength = find.length;
	if ((strLength == 0) || (txtLength == 0)) return str;
	if(str.indexOf) {
		var i = str.indexOf(find);
		if ((!i) && (find != str.substring(0,txtLength))) return str;
		if (i == -1) return str;
		var newstr = str.substring(0,i) + replacement;
		if (i+txtLength < strLength)	newstr += replace(str.substring(i+txtLength,strLength),find,replacement);
		return newstr;
	}
}
function string_generator(desired_len, alpha, symbols) {
	var choose_from = '0123456789';
	if(alpha)      choose_from += 'aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ';
	if(symbols)    choose_from += '!@#$%^&*()_+-=';
	choose_from_len = choose_from.length;

	var str = '';
	for(var z = 0; z < desired_len; z++)
		str  += choose_from[Math.floor(Math.random()*choose_from_len)];
	return str;
}
function addCommas(num) {
	num += '';
	ary = num.split('.');
	x1 = ary[0];
	x2 = ary.length > 1 ? '.' + ary[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) x1 = x1.replace(rgx, '$1' + ',' + '$2');
	return x1 + x2;
}

//=============================== end string functions ================================//

//=============================== div functions ================================//
function removeBlankChildren(rent, identifier) {
	if(rent && rent.childNodes) for(var x=0; x<rent.childNodes.length; x++) {
		if(rent.childNodes[x] && rent.childNodes[x].nodeName == '#text' && rent.childNodes[x].innerHTML == undefined) {
			rent.removeChild(rent.childNodes[x]);
		}
		if(rent.childNodes[x] && rent.childNodes[x].nodeName == '#comment') {
			rent.removeChild(rent.childNodes[x]);
		}
	}
	return rent;
}
function addClass(obj, className, strict) {
	removeClass(obj, className, strict);
	obj.className = obj.className +' '+ className;
	obj.className = (obj.className+'').replace(/  /g,' ');
}
function removeClass(obj, className, strict) {
	if(!obj || !obj.className)	return;
	obj.className = obj.className.replace(new RegExp(className, 'g'+(strict?'':'i')), '');
	obj.className = trim(obj.className, ' ');
}
function isClass(obj, className) {
	if(!obj || !obj.className)	return false;
	var curClasses = obj.className ? obj.className.split(' ') : Array();
	return indexOf(curClasses, className)===false ? false : true;
}
function remove(obj) {
	if(obj && obj.parentNode) {
		var toReturn = obj.parentNode.removeChild(obj);
		obj=false;
		return toReturn;
	}
}
function empty(dv) {
	if(dv.childNodes) {
		while(dv.firstChild)	remove(dv.firstChild);
	}
}
function createElement(nodeName, cls, id, html) {
	var x = document.createElement(nodeName);
	if(id)	x.id = id;
	if(cls) x.className = cls;
	if(html) x.innerHTML = html;
	return x;
}
function addChild(rent, nodeName, cls, id, html) {
	var x = createElement(nodeName, cls, id, html);
	rent.appendChild(x);
	return x;
}
function addImage(rent, src, cls, id) {
	var x = addChild(rent, 'img', cls, id);
	x.src = src;
	return x;
}
function addChildInput(rent, name, value, cls, defaultText, type, id) {
	var inp = addChild(rent, 'input', cls, name);
	inp.name = name;
	inp.id = id?id:name;
	inp.value = value?value:'';
	if(type)	inp.type = type;
	if(defaultText) setDefaultText(inp, defaultText);

	return inp;
}
function addHiddenInput(rent, name, value, id) {
	var inp = addChildInput(rent, name, value, false, false, 'hidden', id);
	return inp;
}
function addParam(rent, name, value) {
	var child = addChild(rent, 'param');
	child.name = name;
	if(value)	child.value = value;
	return child;
}
function insertChild(rent, nodeName, cls, id, html) {
	var x = createElement(nodeName, cls, id, html);
	if(rent.childNodes)
		rent.insertBefore(x,rent.firstChild);
	else	rent.appendChild(x);

	return x;
}
function addClearDv(to) {
	var clearDv = addChild(to, 'div', 'clear');
	clearDv.style.clear = 'both';
}
function addIcon(rent, icon, variation) {
	var icon_src = rtrim(ICONS_DIR, '/')+'/'+icon+'.png';
	if(variation)	icon_src = getImgVers(icon_src, variation);
	return addImage(rent, icon_src, 'icon '+icon);
}

function preload(src) {
	var loadLayer = $('loadLayer');
	if(!loadLayer)	loadLayer = addChild(document.body, 'div', 'loadLayer', 'loadLayer');

	addImage($('loadLayer'), src);
}

function getChildIndex(obj) {
	var children = obj.parentNode.childNodes;
	for(var i=0; i<children.length; i++) {
		if(children[i]==obj)	return i;
	}
	return false;
}
function getRequestObj() {
	var requestObj = false;
	if(window.XMLHttpRequest) { 					// ffox or safari
		requestObj = new XMLHttpRequest();
		if (requestObj.overrideMimeType) {
			requestObj.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { 				// ie
		try {
			requestObj = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				requestObj = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	return requestObj;
}
function strFromAssoc(ary, field_delimiter, eq_sign) {
	if(!field_delimiter)	field_delimiter = '&';
	if(!eq_sign)		field_delimiter = '=';
	if(!ary)	return false;
	var str = '';
	for(var i in ary) {
		str += i+eq_sign+escape(ary[i])+field_delimiter;
	}
	if(str)	str = str.substring(0, str.length-field_delimiter.length);
	return str;
}
function assocFromStr(str, token) {
	var ary = str.split(token);
	var toReturn = Array();
	for(var i in ary) {
		var tmp = ary[i].split('=');
		toReturn[tmp[0]] = tmp[1];
	}
	return toReturn;
}
function generateEmbedObj(type, src,w,h, scale) {
	var obj = false;
	switch(type) {
		case 'video':
			var code = '';
			src = ''+src;
			if(w==undefined) w='500';
			if(h==undefined) h='290';
			w = Math.round(w);
			h = Math.round(h);

			var paramStr = '';
			if(src.indexOf('?')) {
				var paramAry = src.substring(src.indexOf('?')+1).split('&');
				for(var x in paramAry) {
					var tmp = paramAry[x].split('=');
					paramStr += '<param name="'+tmp[0]+'" value="'+escape(tmp[1])+'">';
				}
			}
			obj = document.createElement('object');
			obj.wmode = "transparent";
			obj.classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000";
			obj.codebase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0"
			obj.bgcolor = '#ff0000';
			obj.innerHTML = paramStr;
			var params = { 
				'type':'application/x-shockwave-flash', 
				'pluginspage':'http://www.macromedia.com/go/getflashplayer',
				'allowScriptAccess':'sameDomain', 
				'wmode':'transparent',
				'allowFullScreen':'true',
				'quality':'high',
				'scale':scale,
				'src':src,
				'width':w,
				'height':h,
				'bgcolor':'#ffffff'
			}
			for(var i in params)	addParam(obj, i, params[i]);
		break;
		case 'youtube':
			obj = createElement('iframe');
			obj.allowfullscreen = true;
			if(src.indexOf('http')==-1) {				// only id supplied
				src = 'http://www.youtube.com/embed/'+src;
			} else if(src.indexOf('watch?v=')>=0) {			// url for actual watching of video
				src = 'http://www.youtube.com/embed/'+src.substring(src.indexOf('watch?v=')+8);
			}
			if(src.indexOf('&')>=0) src = src.substring(0, src.indexOf('&'));
			obj.src = src;
	}
	obj.width = w+'px';
	obj.height = h+'px';
	obj.style.width = w+'px';
	obj.style.height = h+'px';
	return obj;
}
//=============================== end div functions ================================//

var invisibleDiv = false;
var preloadedImgAry = Array();
function preloadImg(src) {
	if(!invisibleDiv) {
		invisibleDiv = addChild(document.body, 'div');
		invisibleDiv.style.width='1px';
		invisibleDiv.style.height='1px';
		invisibleDiv.style.overflow='hidden';
		invisibleDiv.style.visiblity='hidden';
	}
	if(indexOf(preloadedImgAry, src)===false) {			// make sure it's not already loaded
		var im = addChild(invisibleDiv,'img');
		im.src = src;
		preloadedImgAry[preloadedImgAry.length] = src;
	}

}

function is_function(t) {	return (typeof(t)=='function') ? true : false; 		}
function is_string(str) {	return (typeof(input)=='string') ? true:false;		}
function is_numeric(str) {	return !isNaN(str);						}
function is_array(obj) {
	return typeof(obj)=='object'&&(obj instanceof Array);
}
function in_array(haystack, needle) {
	if(haystack) for(var i in haystack) {
		if(haystack[i]==needle)	return true;
	}
	return false;
}
function indexOf(haystack, needle) {
	var k = 0;
	if(haystack) for(var i in haystack) {
		if(haystack[i]==needle)	return k;
		k++;
	}
	return false;
}
function count(obj) {
	var c = obj.length;
	if(!c || c!=undefined) {
		var c = 0;
		for(var c in obj)	c++;
	}
	return c;
}
function parseNumber(str) {
	str = str.replace(/,/g,'');
	try {
		str = eval(str);
	} catch(e) {
		//alert(str);
	}
	if(isNaN(str)) {
		str = strip_non_numerics(str);
	}
	return str;
}
function strip_non_numerics(str) {
	var toReturn = '';
	for(var i in str) {
		if(!isNaN(str[i] || (str[i]=='=')))	toReturn += str[i];
	}
	return toReturn;
}

function highlight(obj, rent, highClass, noUnhigh) {
	if(!rent)	rent = obj.parentNode;
	if(!highClass)	highClass = 'high';
	if(!noUnhigh) for(var i in rent.childNodes) {
		removeClass(rent.childNodes[i], highClass);
	}
	//obj.className = obj.className ? obj.className+' '+highClass : highClass;
	addClass(obj, highClass);
	if(obj.onhighlight)	obj.onhighlight();
}

/**/
function parseXML(xml, tag, debug){
	if(!tag)	return;
	if(typeof(tag)=='string')tag=new Array(tag);				// force into array if passed as string
	if(xml) {
		xml = xml.replace(/\n/g, '=XEOLX=');				// remove EOLs
		xml = xml.replace(/\t/g, '=*||*||*=');				// remove tabs
	} else {
		return false;
	}
	var curSearch = tag.shift();						// grab and remove first element
	curSearch = replace(curSearch ,'|',"->");

	var regEx = new RegExp("<"+curSearch+"(|\s?.*)>");			// regexp to find first opening tag
	var start = xml.search(regEx);	
	start += xml.substring(start).indexOf('>')+1;				// adjust to start after closing bracket of opening tag
	var at = xml.indexOf('</'+curSearch+'>', start);			// start looking at the closest closing bracket
	while(at >= 0) {							// test different tag combinations starting with the closest tag
		var inner = xml.substring(start, at);				// pull the inner contents of xml string being analyzed
		if(validateXML(inner)) {					// check validity of the inner xml to see if it is well formed
			if(tag.length) {					// recurse with next tag
				return parseXML(inner, tag, debug);
			} else {
				inner = inner.replace(/=XEOLX=/g, "\n");		// strip eol syntax
				return unescape(inner.replace(/=\*\|\|\*\|\|\*=/g, "\t"));		// strip tab syntax and return final leaf
			}
		}
		at = xml.indexOf('</'+curSearch+'>', at+1);			// advance to next closing tag
	}
	return '';								// no substring found
}
function eatXML(xml, tag) {
	if(typeof(tag)=='string')	tag = new Array(tag);			// force into array if passed as string
	if(xml) {
		xml = xml.replace(/\n/g, '=XEOLX=');				// remove EOLs
		xml = xml.replace(/\t/g, '=*||*||*=');				// remove tabs
	} else {
		return false;
	}
	var curSearch = tag.shift();						// grab and remove first element
	curSearch = replace(curSearch ,'|',"->");

	var regEx = new RegExp("<"+curSearch+"(|\s?.*)>");			// regexp to find first opening tag
	var firstBracket = xml.search(regEx);	
	var start = firstBracket + xml.substring(firstBracket).indexOf('>')+1;	// adjust to start after closing bracket of opening tag
	var at = xml.indexOf('</'+curSearch+'>', start);			// start looking at the closest closing bracket
	var left = at;
	var check = 0;
	while((at >= 0) && check<50) {						// test different tag combinations starting with the closest tag
		var inner = xml.substring(start, at);				// pull the inner contents of xml string being analyzed
		if(validateXML(inner)) {					// check validity of the inner xml to see if it is well formed
			if(tag.length) {					// recurse with next tag
				var result = eatXML(inner, tag);
				return xml.substring(0, start)+(result?result:'')+xml.substring(at);
			} else {
				return xml.substring(0, firstBracket)+xml.substring(xml.indexOf('>', at)+1);
			}
		}
		at = xml.indexOf('</'+curSearch+'>', at+1);			// advance to next closing tag
		check++;
	}
	return xml;								// no substring found
}

function fromXML(xml, keys) {
	obj = new Object();

	for(var i in keys) {
		var f = keys[i];
		if(f instanceof Array) {			// array (ie sub xml)
			var x = parseXML(xml, i);
			if(x)	val = fromXML(x, f);
		} else {
			var val = parseXML(xml, f);
			if(!isNaN(val) && (val!="")) {		// number
			val = val/1;
			} else {
				val = val.replace(/&/g, '&amp;');
			}
		}
		obj[f] = val;
	}
	return obj;
}

function lpad(str, length, padChar) {
	if(padChar==undefined)	padChar = '0';
	while(str.length < length) str = padChar + str;
	return str;
}
function rpad(str, length, padChar) {
	if(padChar==undefined)	padChar = '0';
	while(str.length < length) str = str + padChar;
	return str;
}

function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^["+chars+"]+", "g"), "");
}

function rtrim(str,chars){
	if(!chars||chars==undefined)chars="\\s";

	str = str+'';
	return str.replace(new RegExp("["+chars+"]+$","g"),"");
};
function trim(str,ac){return rtrim(ltrim(str,ac),ac);};

function getFirstTag(xml){
	if(!xml)	return true;

	var regEx = new RegExp("<([^>]*?)>(.*?)");		// find first tag without attributes
	var tmp = xml.match(regEx);

	if(tmp){
		tmp.shift();
		var tag = tmp[0];
		var ws = tag.indexOf(' ');
		if(ws==-1) {
			return tag;
		} else {
			return tag.substring(0, ws);
		}
	} else {
		return false;
	}
}
function validateXML(xmlString, debug) {
	var tmp, needle;
	while(tmp = getFirstTag(xmlString)) {
		var initial = xmlString;
		xmlString = eatXML(xmlString, tmp);
		if(initial == xmlString)	break;		// no change
	}
	if(!xmlString) return true;
	var regEx=new RegExp("<(.*?)[^>]*>(.*?)");
	var tmp = xmlString.match(regEx);

	if(tmp!==null) {
		// is self closing tag
		if(tmp[0].indexOf('<')==0 && tmp[0].indexOf('/>')==tmp[0].length-2) {
			tmp = null;
		}
	}
	return (tmp==null)?true:false;
}


function load(url,params,pZ, callbackFnOrBlocking, callbackObj, debug){
	if(pZ==undefined)	pZ=true;

	if(url.indexOf('?')== -1)	url=url+'?';
	var paramStr='';
	if(params&&(params!=undefined)){
		for(var i in params){
			paramStr+=escape(i).replace(/\./g, '|')+'='+escape(params[i])+'&';
		}
		url = url + paramStr;
	}
	/*debug*/
	if(debug) prompt('',url);
	
	var requestObj;	// initialize a new object
	if(typeof window.ActiveXObject!='undefined')
		requestObj=new ActiveXObject("Microsoft.XMLHTTP");
	else 	requestObj=new XMLHttpRequest();

	if(url.indexOf('?')== -1) 
		url=url+'?_inline';
	else 	url=rtrim(url,'&')+'&_inline';

	if(pZ==undefined) pZ=true;
	requestObj.open(pZ?'POST':"GET",url,callbackFnOrBlocking?true:false);
	if(callbackFnOrBlocking) {
		requestObj.onreadystatechange = function(){
			if((typeof callbackFnOrBlocking) !='boolean');
			if (requestObj.readyState == 4) {
				/*
				if(parseXML(requestObj.responseText, 'err')==-1000) {
					msg('Your sign-in has expired, please sign back in.', );
				}
				*/
				if(callbackObj) {
					callbackObj[callbackFnOrBlocking](requestObj.responseText);
				} else if(callbackFnOrBlocking!==true) {
					callbackFnOrBlocking(requestObj.responseText);
				}
			}
		};
		requestObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		requestObj.send(pZ?paramStr:null);
	} else {
		requestObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		requestObj.send(pZ?paramStr:null);
		return true;
	}
}
function loadInFrame(url) {
	var dv = document.createElement('div');
	dv.style.display = 'none';
	document.body.appendChild(dv);
	var ifr = addChild(dv, 'iframe');
	ifr.width=1;
	ifr.height=1;
	ifr.src = url;
}

function Left(obj) {	return left(obj); }
function left(obj) {
	if(obj) {
		var x = eval(obj).offsetLeft;
		elem = eval(obj).offsetParent;
		while (elem != null) {
			x += elem.offsetLeft;
			elem = elem.offsetParent;
		}
		return x;
	}
}
function Top(obj) {	return top(obj); }
function top(obj) {
	y = eval(obj).offsetTop;
	elem = eval(obj).offsetParent;
	while (elem != null) {
		y += parseFloat(elem.offsetTop);
		elem = elem.offsetParent;
	}
	return y;
}
function getScrollY() {	return isIE ? document.documentElement.scrollTop  : window.pageYOffset; }
function getScrollX() {	return isIE ? document.documentElement.scrollLeft : window.pageXOffset; }

function getWinWidth() {	return isIE ? (document.documentElement.clientWidth?document.documentElement.clientWidth:document.body.clientWidth)	: window.innerWidth; }
function getWinHeight() {	return isIE ? (document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight)	: window.innerHeight; }
function getFullWinWidth() {	
	return Math.max(
	        document.body.scrollWidth, document.documentElement.scrollWidth,
		document.body.offsetWidth, document.documentElement.offsetWidth,
		document.body.clientWidth, document.documentElement.clientWidth
			);
}
function getFullWinHeight() {	
	return Math.max(
	        document.body.scrollHeight, document.documentElement.scrollHeight,
		document.body.offsetHeight, document.documentElement.offsetHeight,
		document.body.clientHeight, document.documentElement.clientHeight
			);
}
function getScrollHeight() {	return isIE ? document.documentElement.scrollTop : window.pageYOffset; }

function scrollDiv(dv, x, y) {
	if(x!=undefined)	dv.scrollLeft = x;
	if(y!=undefined)	dv.scrollTop = y;
}

document.onmousemove = mouseMove; 
var mousePos;
function mouseMove(e){ 
    e = e || window.event; 
    mousePos = mouseCoords(e); 
} 

function mouseCoords(evt){ 
	if(evt.pageX || evt.pageY)	
		return {x:evt.pageX, y:evt.pageY}; 
	else {
		if(evt && document.body)
			return { 
				x:evt.clientX + document.body.scrollLeft - document.body.clientLeft, 
				y:evt.clientY + document.body.scrollTop  - document.body.clientTop 
			}; 
	}
} 
function isOver(obj, x, y) {	// see if cursor is over an object
	if(x==undefined)	x = mousePos['x'];
	if(y==undefined)	y = mousePos['y'];

	/** /
	alert('('+x+'>='+(Left(obj)-getScrollX())+') && ('+y+'>='+(Top(obj)-getScrollY())+') '
		+' && ('+x+'<='+(Left(obj)+obj.offsetWidth-getScrollX())+') && ('+y+'<='+(Top(obj)+obj.offsetHeight-getScrollY())+')' );
		/**/
	if((x>=(Left(obj)-getScrollX())) && (y>=(Top(obj)-getScrollY())) && (x<=(Left(obj)+obj.offsetWidth-getScrollX())) && (y<=(Top(obj)+obj.offsetHeight-getScrollY())) ) 
		return true;
	else	return false;
}
function isAncestor(targ, ancestor) {
	while(targ.parentNode) {
		if(targ==ancestor)
			return true
		else 	targ = targ.parentNode;
	}
	return false;
}

function openWin(url, width, height) {
	if(!width)	width = 100;
	if(!height)	height = 100;
        x = (screen.width / 2) - (width / 2) - 150;
        y = (screen.height / 2) - (height / 2) - 150;
        var i = Math.round(100*Math.random());
        return window.open(url, i,'width='+width+',height='+height+',top='+y+',left='+x+',resizable=yes');
}
function debug(elem) {
	var properties = "<HEAD><link href='/styles/sections.css' rel='stylesheet' type='text/css'></HEAD><BODY><TABLE WIDTH='100%'><TR><TH>Element<TH>Document<TH>Window</TR><TD VALIGn=TOP>";
	for(var e in elem) {
		if(e) 
			properties += '<LI>'+e + (elem[e]?": " + elem[e]:'')+"</LI>\n";
	}
	properties += "<TD VALIGn=TOP>";
	for(var e in document) 
		properties += '<LI>'+e+(document.e ? ' = '+document.e : '')+"</LI>\n";
	properties += "<TD VALIGn=TOP>";
	for(e in window) 
		properties += '<LI>'+e;
	properties += "</TR></TABLE></BODY>";

	var newwindow=window.open('','name','height=700,width=750,scrollbars=yes,scroll=yes');
	var tmp = newwindow.document;
	tmp.write(properties);
}

var months = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var daysOfWeek = new Array('Sun','Mon','Tues','Wed','Thu','Fri','Sat','Sun');

function onlyNumbers(targ) {
	var newNum = '';
	var nums = '1234567890';
	for(var x=0; x<targ.value.length; x++) 
		if(nums.indexOf(targ.value[x])!=-1)	newNum += targ.value[x];
	if(newNum!=targ.value)	targ.value = newNum;
}

function setMaxChars(inp, max, msgDv) {
	var room = max - inp.value.length;
	if(room<0)	inp.value = inp.value.substring(0, max);
	var room = max - inp.value.length;
	msgDv.innerHTML = room+' character'+((room==1)?'':'s')+' remaining.';
}
function isEmailLegit(str) {
	var regX  = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
	return regX.test(str);
}
var _preloadedRollOver = Array();
function processRollOvers() {
	for(var i in _preloadedRollOver) {
		setRollOver($(i), _preloadedRollOver[i]);
	}
}
function setRollOver(obj, rollSrc) {
	obj.targ = obj;
	while(obj.targ && obj.targ.nodeName.toLowerCase()!='img')	// find first embedded img
		obj.targ = obj.targ.firstChild;
	if(!obj.targ)	return false;					// no img found

	_preloadedRollOver[obj.id] = new Image();
	_preloadedRollOver[obj.id].src = rollSrc;

	var orig = obj.targ.src;
	obj.onmouseover = function() {	this.targ.src = _preloadedRollOver[this.id].src;	};
	obj.onmouseout = function() {	this.targ.src = orig;				};
	obj.targ.onload = function() { };
}



/*---- site.js ----*/
function like(c, id) {		load('/b32/dyn/data/general.xml.php', { 'fn':'like', 'c':_c, 'i':id }); 	}
function dislike(c, id) {	load('/b32/dyn/data/general.xml.php', { 'fn':'dislike', 'c':_c, 'i':id }); 	}




/*---- Lightbox.js ----*/
var _0xaf9d=["\x73\x72\x63","\x74\x79\x70\x65","\x69\x6D\x67","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x77\x69\x64\x74\x68","\x68\x65\x69\x67\x68\x74","\x73\x68\x6F\x77\x69\x6E\x67","\x68\x6F\x6C\x64\x65\x72","\x68\x65\x61\x64\x69\x6E\x67","","\x75\x72\x6C","\x69\x6E\x69\x74","\x6C\x62\x49\x6E\x64\x65\x78","\x6C\x65\x6E\x67\x74\x68","\x64\x69\x76","\x20\x6C\x69\x67\x68\x74\x62\x6F\x78\x48\x6F\x6C\x64\x65\x72\x20\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x20","\x63\x6C\x6F\x73\x65\x42\x75\x74\x74\x6F\x6E\x48\x6F\x6C\x64\x65\x72","\x6C\x69\x67\x68\x74\x62\x6F\x78\x43\x6C\x6F\x73\x65\x42\x75\x74\x74\x6F\x6E\x48\x6F\x6C\x64\x65\x72\x20\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74","\x63\x6C\x6F\x73\x65\x42\x75\x74\x74\x6F\x6E","\x6C\x69\x67\x68\x74\x62\x6F\x78\x43\x6C\x6F\x73\x65\x42\x75\x74\x74\x6F\x6E","\x62\x67","\x6C\x69\x67\x68\x74\x62\x6F\x78\x42\x47","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6C\x69\x67\x68\x74\x62\x6F\x78\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72\x20\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74","\x68\x65\x61\x64","\x6C\x69\x67\x68\x74\x62\x6F\x78\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72\x48\x65\x61\x64","\x62\x6F\x64\x79","\x6C\x69\x67\x68\x74\x62\x6F\x78\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72\x42\x6F\x64\x79","\x66\x6F\x6F\x74","\x6C\x69\x67\x68\x74\x62\x6F\x78\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72\x46\x6F\x6F\x74","\x67\x72\x6F\x77","\x72\x65\x73\x69\x7A\x65","\x73\x65\x74\x75\x70\x45\x76\x65\x6E\x74\x48\x61\x6E\x64\x6C\x65\x72\x73","\x73\x68\x6F\x77","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x61\x6C\x70\x68\x61","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74","\x6F\x6E\x73\x74\x6F\x70","\x64\x72\x61\x77","\x73\x68\x6F\x77\x49\x6D\x61\x67\x65","\x69\x6D\x61\x67\x65","\x69\x6E\x6E\x65\x72","\x6F\x66\x66\x73\x65\x74\x57\x69\x64\x74\x68","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x6F\x62\x6A","\x61\x64\x64\x53\x68\x61\x72\x65","\x73\x68\x61\x72\x65","\x73\x68\x61\x72\x65\x20\x73\x6F\x63\x69\x61\x6C","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x3C\x73\x70\x61\x6E\x20\x63\x6C\x61\x73\x73\x3D\x22\x69\x63\x6F\x20\x66\x62\x22\x20\x6F\x6E\x63\x6C\x69\x63\x6B\x3D\x22\x73\x68\x61\x72\x65\x28\x27\x66\x62\x27\x2C\x20\x27","\x27\x2C\x20\x27","\x27\x29\x3B\x22\x3E\x3C\x2F\x73\x70\x61\x6E\x3E","\x3C\x73\x70\x61\x6E\x20\x63\x6C\x61\x73\x73\x3D\x22\x69\x63\x6F\x20\x74\x77\x22\x20\x6F\x6E\x63\x6C\x69\x63\x6B\x3D\x22\x73\x68\x61\x72\x65\x28\x27\x74\x77\x27\x2C\x20\x27","\x3C\x73\x70\x61\x6E\x20\x63\x6C\x61\x73\x73\x3D\x22\x69\x63\x6F\x20\x73\x75\x22\x20\x6F\x6E\x63\x6C\x69\x63\x6B\x3D\x22\x73\x68\x61\x72\x65\x28\x27\x73\x75\x27\x2C\x20\x27","\x61\x64\x64\x53\x6F\x63\x69\x61\x6C","\x73\x6F\x63\x69\x61\x6C","\x3C\x66\x62\x3A\x6C\x69\x6B\x65\x20\x68\x72\x65\x66\x3D\x22","\x22\x20\x73\x65\x6E\x64\x3D\x22\x74\x72\x75\x65\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x34\x31\x30\x22\x20\x73\x68\x6F\x77\x5F\x66\x61\x63\x65\x73\x3D\x22\x74\x72\x75\x65\x22\x20\x64\x61\x74\x61\x2D\x63\x6F\x6C\x6F\x72\x73\x63\x68\x65\x6D\x65\x3D\x22\x64\x61\x72\x6B\x22\x3E\x3C\x2F\x66\x62\x3A\x6C\x69\x6B\x65\x3E","\x70\x61\x72\x73\x65","\x58\x46\x42\x4D\x4C","\x63\x68\x61\x6E\x67\x65","\x74\x6F\x70","\x73\x74\x79\x6C\x65","\x70\x78","\x74\x77\x58","\x73\x74\x6F\x70","\x78","\x65\x61\x73\x65\x2E\x6F\x75\x74","\x63\x6C\x6F\x73\x65","\x73\x74\x61\x72\x74","\x68\x61\x6E\x64\x6C\x65\x72\x73","\x77\x69\x6E\x64\x6F\x77\x53\x63\x72\x6F\x6C\x6C","\x73\x63\x72\x6F\x6C\x6C","\x77\x69\x6E\x64\x6F\x77\x52\x65\x73\x69\x7A\x65","\x62\x67\x43\x6C\x69\x63\x6B","\x63\x6C\x69\x63\x6B","\x63\x6C\x6F\x73\x65\x42\x75\x74\x74\x6F\x6E\x43\x6C\x69\x63\x6B","\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x6C\x69\x67\x68\x74\x62\x6F\x78\x42\x6F\x64\x79\x20\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x68\x69\x64\x64\x65\x6E","\x6F\x6E\x6C\x6F\x61\x64","\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79","\x76\x69\x73\x69\x62\x6C\x65","\x6F\x75\x74\x2E\x6E\x6F\x72\x6D\x61\x6C","\x6C\x65\x66\x74","\x79","\x70\x6F\x73\x69\x74\x69\x6F\x6E\x43\x6C\x6F\x73\x65\x42\x75\x74\x74\x6F\x6E"];_lightboxObj=Array();_lightboxTopOffset=100;var Lightbox=function (_0xd850x2,_0xd850x3,_0xd850x4,_0xd850x5,_0xd850x6){this[_0xaf9d[0]]=_0xd850x2;this[_0xaf9d[1]]=_0xd850x3?_0xd850x3:_0xaf9d[2];this[_0xaf9d[3]]=_0xd850x4;this[_0xaf9d[4]]=_0xd850x5;this[_0xaf9d[5]]=_0xd850x6;this[_0xaf9d[6]]=false;this[_0xaf9d[7]]=false;this[_0xaf9d[8]]=_0xaf9d[9];this[_0xaf9d[10]]=_0xaf9d[9];this[_0xaf9d[11]]=function (){this[_0xaf9d[12]]=_lightboxObj[_0xaf9d[13]];this[_0xaf9d[7]]=createElement(_0xaf9d[14],(this[_0xaf9d[3]]?this[_0xaf9d[3]]:_0xaf9d[9])+_0xaf9d[15]+this[_0xaf9d[1]]);this[_0xaf9d[7]][_0xaf9d[16]]=insertChild(this[_0xaf9d[7]],_0xaf9d[14],_0xaf9d[17]);this[_0xaf9d[7]][_0xaf9d[18]]=addChild(this[_0xaf9d[7]][_0xaf9d[16]],_0xaf9d[14],_0xaf9d[19]);this[_0xaf9d[7]][_0xaf9d[20]]=addChild(this[_0xaf9d[7]],_0xaf9d[14],_0xaf9d[21]);this[_0xaf9d[7]][_0xaf9d[22]]=addChild(this[_0xaf9d[7]],_0xaf9d[14],_0xaf9d[23]);this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[24]]=addChild(this[_0xaf9d[7]][_0xaf9d[22]],_0xaf9d[14],_0xaf9d[25]);addClearDv(this[_0xaf9d[7]][_0xaf9d[22]]);this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]]=addChild(this[_0xaf9d[7]][_0xaf9d[22]],_0xaf9d[14],_0xaf9d[27]);addClearDv(this[_0xaf9d[7]][_0xaf9d[22]]);this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[28]]=addChild(this[_0xaf9d[7]][_0xaf9d[22]],_0xaf9d[14],_0xaf9d[29]);this[_0xaf9d[30]](0,0,20,10,0);this[_0xaf9d[31]](true);this[_0xaf9d[32]]();_lightboxObj[this[_0xaf9d[12]]]=this;} ;this[_0xaf9d[33]]=function (){setLoad(this[_0xaf9d[7]][_0xaf9d[22]]);var _0xd850x7=this;if(!this[_0xaf9d[6]]){document[_0xaf9d[26]][_0xaf9d[34]](this[_0xaf9d[7]]);var _0xd850x8;if(isIE){_0xd850x8= new Tween(this[_0xaf9d[7]][_0xaf9d[20]],_0xaf9d[35],false,0,1,1,true);removeClass(this[_0xaf9d[7]],_0xaf9d[36]);} else {_0xd850x8= new Tween(this[_0xaf9d[7]],_0xaf9d[35],false,0,1,1,true);} ;_0xd850x8[_0xaf9d[37]]=function (){if(isIE){removeClass(_0xd850x7[_0xaf9d[7]][_0xaf9d[22]],_0xaf9d[36]);} else { new Tween(_0xd850x7[_0xaf9d[7]][_0xaf9d[22]],_0xaf9d[35],false,0,1,1,true);} ;_0xd850x7[_0xaf9d[38]]();} ;} else {fade_out(this[_0xaf9d[7]][_0xaf9d[16]]);this[_0xaf9d[38]]();} ;this[_0xaf9d[6]]=true;} ;this[_0xaf9d[38]]=function (){switch(this[_0xaf9d[1]]){case _0xaf9d[2]:;case _0xaf9d[40]:this[_0xaf9d[39]]();break ;;case _0xaf9d[44]:clearLoad(this[_0xaf9d[7]][_0xaf9d[22]]);var _0xd850x9=Array(0,0);if(this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[41]]){_0xd850x9=Array(this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[41]][_0xaf9d[42]],this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[41]][_0xaf9d[43]]);remove(this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[41]]);} ;this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[41]]=this[_0xaf9d[0]];this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[34]](this[_0xaf9d[0]]);this[_0xaf9d[30]](_0xd850x9[0],_0xd850x9[1],this[_0xaf9d[4]],this[_0xaf9d[5]]);break ;;default:clearLoad(this[_0xaf9d[7]][_0xaf9d[22]]);var _0xd850x9=Array(0,0);if(this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[41]]){_0xd850x9=Array(this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[41]][_0xaf9d[42]],this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[41]][_0xaf9d[43]]);remove(this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[41]]);} ;this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[41]]=generateEmbedObj(this[_0xaf9d[1]],this[_0xaf9d[0]],this[_0xaf9d[4]],this[_0xaf9d[5]]);this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[34]](this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[41]]);this[_0xaf9d[30]](_0xd850x9[0],_0xd850x9[1],this[_0xaf9d[4]],this[_0xaf9d[5]]);break ;;} ;} ;this[_0xaf9d[45]]=function (_0xd850xa,_0xd850xb){try{if(!this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[24]][_0xaf9d[46]]){this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[24]][_0xaf9d[46]]=addChild(this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[24]],_0xaf9d[14],_0xaf9d[47]);} ;this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[24]][_0xaf9d[46]][_0xaf9d[48]]=_0xaf9d[49]+_0xd850xa+_0xaf9d[50]+_0xd850xb+_0xaf9d[51]+_0xaf9d[52]+_0xd850xa+_0xaf9d[50]+_0xd850xb+_0xaf9d[51]+_0xaf9d[53]+_0xd850xa+_0xaf9d[50]+_0xd850xb+_0xaf9d[51];} catch(err){;;} ;} ;this[_0xaf9d[54]]=function (_0xd850xa){try{if(FB){if(!this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[24]][_0xaf9d[55]]){this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[24]][_0xaf9d[55]]=addChild(this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[24]],_0xaf9d[14],_0xaf9d[55]);} ;this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[24]][_0xaf9d[55]][_0xaf9d[48]]=_0xaf9d[56]+_0xd850xa+_0xaf9d[57];FB[_0xaf9d[59]][_0xaf9d[58]](this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[24]][_0xaf9d[55]]);} ;} catch(err){;;} ;} ;this[_0xaf9d[60]]=function (_0xd850x2,_0xd850x3){this[_0xaf9d[0]]=_0xd850x2;this[_0xaf9d[1]]=_0xd850x3;this[_0xaf9d[33]]();} ;this[_0xaf9d[31]]=function (_0xd850xc){var _0xd850xd=top(this[_0xaf9d[7]])+this[_0xaf9d[7]][_0xaf9d[43]];var _0xd850xe=getScrollHeight()+getWinHeight();if((top(this[_0xaf9d[7]])>getScrollHeight())||((_0xd850xd<_0xd850xe)&&(this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[43]]<this[_0xaf9d[7]][_0xaf9d[43]]))||_0xd850xc){this[_0xaf9d[7]][_0xaf9d[62]][_0xaf9d[61]]=getScrollHeight()+_0xaf9d[63];this[_0xaf9d[7]][_0xaf9d[62]][_0xaf9d[61]]=getScrollHeight()+_0xaf9d[63];} ;if(this[_0xaf9d[7]][_0xaf9d[22]]&&!_0xd850xc){var _0xd850xf=this[_0xaf9d[7]][_0xaf9d[22]];if(this[_0xaf9d[64]]){this[_0xaf9d[64]][_0xaf9d[65]](false,true);} ;this[_0xaf9d[64]]= new Tween(this[_0xaf9d[7]][_0xaf9d[22]],_0xaf9d[66],_0xaf9d[67],left(this[_0xaf9d[7]][_0xaf9d[22]]),getWinWidth()/2-this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[42]]/2,0.5,true);} ;var _0xd850x10=(getWinHeight()>this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[43]])?getWinHeight():getScrollHeight()+getWinHeight();this[_0xaf9d[7]][_0xaf9d[62]][_0xaf9d[5]]=_0xd850x10+_0xaf9d[63];this[_0xaf9d[7]][_0xaf9d[5]]=_0xd850x10+_0xaf9d[63];} ;this[_0xaf9d[68]]=function (){var _0xd850x7=this;var _0xd850x8= new Tween(this[_0xaf9d[7]],_0xaf9d[35],false,1,0,0.5);_0xd850x8[_0xaf9d[37]]=function (){remove(_0xd850x7[_0xaf9d[7]]);} ;_0xd850x8[_0xaf9d[69]]();this[_0xaf9d[6]]=false;} ;this[_0xaf9d[32]]=function (){this[_0xaf9d[70]]={};var _0xd850x7=this;this[_0xaf9d[70]][_0xaf9d[71]]=addEventHandler(window,_0xaf9d[72],function (){_0xd850x7[_0xaf9d[31]]();} );this[_0xaf9d[70]][_0xaf9d[73]]=addEventHandler(window,_0xaf9d[31],function (){_0xd850x7[_0xaf9d[31]]();} );this[_0xaf9d[70]][_0xaf9d[74]]=addEventHandler(this[_0xaf9d[7]][_0xaf9d[20]],_0xaf9d[75],function (){_0xd850x7[_0xaf9d[68]]();} );this[_0xaf9d[70]][_0xaf9d[76]]=addEventHandler(this[_0xaf9d[7]][_0xaf9d[18]],_0xaf9d[75],function (){_0xd850x7[_0xaf9d[68]]();} );} ;this[_0xaf9d[39]]=function (){thisObj=this;var _0xd850x11=this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[41]];var _0xd850x12=_0xd850x11?Array(_0xd850x11[_0xaf9d[42]],_0xd850x11[_0xaf9d[43]]):Array(0,0);if(!_0xd850x11||(_0xd850x11[_0xaf9d[78]][_0xaf9d[77]]()!=_0xaf9d[2])){_0xd850x11=false;empty(this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]]);this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[41]]=addChild(this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]],_0xaf9d[2],_0xaf9d[79]);} ;this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[62]][_0xaf9d[80]]=_0xaf9d[81];this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[41]][_0xaf9d[82]]=function (){clearLoad(thisObj[_0xaf9d[7]][_0xaf9d[22]]);if(!_0xd850x11){fade_in(thisObj[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]]);thisObj[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[62]][_0xaf9d[83]]=_0xaf9d[84];this[_0xaf9d[62]][_0xaf9d[83]]=_0xaf9d[84];} ;var _0xd850x8=thisObj[_0xaf9d[30]](_0xd850x12[0],_0xd850x12[1],this[_0xaf9d[42]],this[_0xaf9d[43]]);removeClass(this,_0xaf9d[36]);} ;this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[26]][_0xaf9d[41]][_0xaf9d[0]]=this[_0xaf9d[0]];} ;this[_0xaf9d[30]]=function (_0xd850x13,_0xd850x14,_0xd850x15,_0xd850x16,_0xd850x17){thisObj=this;var _0xd850x18=_0xd850x17!=undefined?_0xd850x17:0.10;var _0xd850x19=_0xaf9d[85];var _0xd850xf=this[_0xaf9d[7]][_0xaf9d[22]];var _0xd850x1a=_0xd850xf[_0xaf9d[26]];var _0xd850x1b=parseInt(getWinWidth());var _0xd850x1c=parseInt(getWinHeight());var _0xd850x1d=_0xd850x1b/2-_0xd850x13/2;var _0xd850x1e=_0xd850x1c/2-_0xd850x14/2;var _0xd850x1f=_0xd850x1b/2-_0xd850x15/2;var _0xd850x20=_0xd850x1c/2-_0xd850x16/2;if(_0xd850x1e<_lightboxTopOffset){_0xd850x1e=_lightboxTopOffset;} ;if(_0xd850x20<_lightboxTopOffset){_0xd850x20=_lightboxTopOffset;} ;_0xd850x1a[_0xaf9d[62]][_0xaf9d[4]]=_0xd850x13+_0xaf9d[63];_0xd850x1a[_0xaf9d[62]][_0xaf9d[5]]=_0xd850x14+_0xaf9d[63];_0xd850xf[_0xaf9d[62]][_0xaf9d[86]]=_0xd850x1d+_0xaf9d[63];_0xd850xf[_0xaf9d[62]][_0xaf9d[61]]=_0xd850x1e+_0xaf9d[63];var _0xd850x21= new Tween(_0xd850x1a,_0xaf9d[4],_0xd850x19,_0xd850x13,_0xd850x15,_0xd850x18,false);var _0xd850x22= new Tween(_0xd850xf,_0xaf9d[4],_0xd850x19,_0xd850x13,_0xd850x15,_0xd850x18,true);var _0xd850x23= new Tween(_0xd850xf,_0xaf9d[66],_0xd850x19,_0xd850x1d,_0xd850x1f,_0xd850x18,false);_0xd850xf[_0xaf9d[62]][_0xaf9d[80]]=_0xaf9d[81];_0xd850xf[_0xaf9d[62]][_0xaf9d[61]]=_0xd850x1c/2;_0xd850x23[_0xaf9d[37]]=function (){var _0xd850x24= new Tween(_0xd850x1a,_0xaf9d[5],_0xd850x19,_0xd850x14,_0xd850x16,_0xd850x18);var _0xd850x25= new Tween(_0xd850xf,_0xaf9d[87],_0xd850x19,_0xd850x1e,_0xd850x20,_0xd850x18);_0xd850x24[_0xaf9d[37]]=function (){if(_0xd850x18){thisObj[_0xaf9d[88]]();fade_in(thisObj[_0xaf9d[7]][_0xaf9d[16]]);} ;} ;_0xd850x24[_0xaf9d[69]]();_0xd850x25[_0xaf9d[69]]();} ;_0xd850x21[_0xaf9d[69]]();_0xd850x23[_0xaf9d[69]]();return _0xd850x21;} ;this[_0xaf9d[88]]=function (){this[_0xaf9d[7]][_0xaf9d[16]][_0xaf9d[62]][_0xaf9d[61]]=top(this[_0xaf9d[7]][_0xaf9d[22]])-getScrollHeight()+_0xaf9d[63];this[_0xaf9d[7]][_0xaf9d[16]][_0xaf9d[62]][_0xaf9d[86]]=(left(this[_0xaf9d[7]][_0xaf9d[22]])+this[_0xaf9d[7]][_0xaf9d[22]][_0xaf9d[42]])+_0xaf9d[63];} ;this[_0xaf9d[11]]();} ;



/*---- Gallery.js ----*/
function checkGalleryHover(gallery) {
	for(var i in gallery.childNodes) {
		if(isOver(gallery.childNodes[i].firstChild)) {		// is it over the inner area
			addClass(gallery.childNodes[i], 'hover');
		} else {
			removeClass(gallery.childNodes[i], 'hover');
		}
	}
}

function dropItem(item) {
	new Tween(item, 'y', 'out.normal', (item.offsetHeight - top(item))*-1, 0, dropSpeed, true);
	fade_in(item); 
}


var _delay_between_loads = 200;
var _delay_zoom_load = 2000;
var _delay_additional_images = 1000;
var _transition_time = .4;

var Gallery = function(holders, bg_img_ary) {
	// setup gallery
	var thisObj = this;

	this.slider = holders.gallery;
	this.holder = this.slider.parentNode;
	this.controls = holders.controls;

	removeBlankChildren(this.slider);
	this.items = this.slider.childNodes;

	// config
	var slideSpeed = 2000; // pixels per second

	// set full width of slider
	this.lastItem = this.slider.childNodes[this.slider.childNodes.length-1];
	this.slider_width = left(this.lastItem)+this.lastItem.offsetWidth;

	// get number of items on first page
	var onFirst = 0;
	while(this.items[onFirst] && (this.items[onFirst].offsetLeft < this.holder.offsetWidth)) {
		onFirst++;
	}
	if(onFirst)	onFirst--;

	// set initial items thumb
	for(var i=0; i<=onFirst && this.items[i]; i++) {
		var item = this.items[i];

		// background / image is loaded in HTML already
		removeBlankChildren(item);
		item.firstChild.style.backgroundImage = 'url('+bg_img_ary[item.id]+')';

		// force fade in & drop
		if(!item.id)    item.id = 'anonymous|'+(unique_counter++);
		setTimeout("dropItem($('"+item.id+"'))", dropDelay*1000*i);
	}

	// load remaining items
	setTimeout(function() { 
		var i = onFirst+1;
		while(thisObj.items[i]) {				// continue from i (where it was left off)
			var item = thisObj.items[i];
			if(item) {
				removeBlankChildren(item);
				item.firstChild.style.backgroundImage = 'url('+bg_img_ary[item.id]+')';
				if(!item.id)    item.id = 'anonymous|'+(unique_counter++);
				fade_in(item);
			}
			i++;
		}
	}, _delay_additional_images);


	// setup controls
	if(this.controls.next)	this.controls.next.onclick = function() { thisObj.next() };
	if(this.controls.prior)	this.controls.prior.onclick = function() { thisObj.prior() };

	if(this.controls.pagination) {
		var numPages = Math.ceil(this.slider_width / this.holder.offsetWidth);
		empty(this.controls.pagination);				// clear
		for(var i=0; i<this.items.length; i++) {
			this.items[i].nav = addChild(this.controls.pagination, 'span', 'node');
			this.items[i].nav.ptr = i;
			this.items[i].nav.onclick = function() { thisObj.goto(this.ptr); };
		}
		addClass(this.items[0].nav, 'active');
	}


	// add gallery movment
	this.goto = function(to) {
		if(isNaN(to))			to = 0;
		else if(to > this.items.length)	to = this.items.length;
		else if(to < 0)			to = 0;

		// update pointer to current location
		this.at = to;
		var newPos = this.items[this.at].offsetLeft;						// position based on actual location

		// update nav
		if(this.controls.pagination) {
			for(var i in this.items)	removeClass(this.items[i].nav, 'active');
			addClass(this.items[this.at].nav, 'active');
		}
		
		// check controls for deactivation
		if(this.controls.next) {
			var lastItem = this.items[this.items.length-1];					// check using actual position
			if(newPos+this.holder.offsetWidth >= left(lastItem)+lastItem.offsetWidth) {
				addClass(this.controls.next, 'inactive');
			} else {
				removeClass(this.controls.next, 'inactive');
			}
		}
		if(this.controls.prior) {
			if(this.at == 0) {
				addClass(this.controls.prior, 'inactive');
			} else {
				removeClass(this.controls.prior, 'inactive');
			}
		}

		
		// do movement
		this.holder.alpha = new Tween(this.holder, 'alpha', false, 1, .6, .1);			// fade out first
		this.moving = true;									// set moving flag
		this.holder.alpha.onstop = function() {
			// do move
			//var speed = Math.abs(thisObj.slider.offsetLeft - newPos*-1)/slideSpeed;		// slide after fadeout
			var tw = new Tween(thisObj.slider, 'marginLeft', 'out.weak', thisObj.slider.style.marginLeft, newPos*-1, _transition_time);
			tw.onstop = function() {							// fade back in
				thisObj.holder.alpha = new Tween(thisObj.holder, 'alpha', false, .6, 1, .1, true);
				thisObj.moving = false;							// unset moving flag
			}
			tw.start();
		}
		this.holder.alpha.start();
	}
	this.next = function() {
		if(this.moving)	return false;

		var thisObj = this;

		// set default to first position
		if(!this.at)	this.at = 0;

		// determine last showing item
		var found = false;
		var ptr = this.at;
		while(this.items[ptr] && !found) {
			var rightSideHolder = left(this.holder) + this.holder.offsetWidth;
			var rightSideItem = left(this.items[ptr]) + this.items[ptr].offsetWidth;
			if(rightSideHolder < rightSideItem)	found = true;

			this.at = ptr;
			ptr++;
		}
		return this.goto(this.at);
	};
	this.prior = function() {
		if(this.moving)	return false;

		var thisObj = this;

		// set default to first position
		if(!this.at)	this.at = this.items.length-1;

		// determine how many items prior to this can fit in page
		var ptr = this.at;
		var found = false;
		while(ptr>0 && !found) {
			var newW = Math.abs(left(this.holder) - left(this.items[ptr]));
			if(newW > this.holder.offsetWidth) {			// continue until too big
				found = true;
			} else {						// only advance if not found
				this.at = ptr;
			}
			ptr--;
		}
		if(!found)	this.at = 0;
		return this.goto(this.at);
	}
}



/*---- Tween.js ----*/
var _0xd75a=["\x77\x69\x64\x74\x68","\x68\x65\x69\x67\x68\x74","\x6C\x65\x66\x74","\x74\x6F\x70","\x7A\x49\x6E\x64\x65\x78","\x6D\x61\x72\x67\x69\x6E\x4C\x65\x66\x74","\x6D\x61\x72\x67\x69\x6E\x54\x6F\x70","\x6F\x70\x61\x63\x69\x74\x79","\x2D\x77\x65\x62\x6B\x69\x74\x2D\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x2D\x6D\x6F\x7A\x2D\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x61\x6C\x70\x68\x61\x28\x6F\x70\x61\x63\x69\x74\x79\x3D\x23\x58\x23\x29","\x70\x72\x6F\x67\x69\x64\x3A\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x42\x61\x73\x69\x63\x49\x6D\x61\x67\x65\x28\x72\x6F\x74\x61\x74\x69\x6F\x6E\x3D\x23\x58\x23\x29","\x72\x6F\x74\x61\x74\x65\x28","\x70\x78","","\x64\x65\x67\x29","\x6F\x62\x6A","\x70\x72\x6F\x70","\x62\x65\x67\x69\x6E","\x66\x69\x6E\x69\x73\x68","\x64\x75\x72\x61\x74\x69\x6F\x6E","\x61\x75\x74\x6F\x73\x74\x61\x72\x74","\x46\x50\x53","\x69\x64","\x75\x6E\x69\x71\x75\x65\x5F\x63\x6F\x75\x6E\x74\x65\x72","\x5F\x61\x6E\x6F\x6E\x79\x6D\x6F\x75\x73\x54\x77\x65\x65\x6E\x4F\x62\x6A\x7C","\x69\x6E\x73\x74\x61\x6E\x63\x65\x49\x64","\x7C\x74\x77\x65\x65\x6E\x7C","\x73\x74\x6F\x70","\x69\x73\x50\x6C\x61\x79\x69\x6E\x67","\x64\x69\x73\x74\x61\x6E\x63\x65","\x63\x75\x72\x49\x6E\x74\x65\x72\x76\x61\x6C","\x64\x69\x72","\x74\x69\x6D\x65\x72","\x73\x74\x61\x72\x74","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x73\x65\x74\x44\x69\x73\x74\x61\x6E\x63\x65","\x73\x65\x74\x49\x6E\x74\x65\x72\x76\x61\x6C","\x63\x61\x6C\x63\x54\x77\x65\x65\x6E\x73","\x73\x74\x61\x72\x74\x54\x69\x6D\x65","\x65\x6E\x64\x54\x69\x6D\x65","\x70\x72\x6F\x67\x72\x65\x73\x73","\x73\x65\x74\x50\x72\x6F\x70\x65\x72\x74\x79","\x5F\x74\x77\x65\x65\x6E\x49\x6E\x73\x74\x61\x6E\x63\x65\x73\x5B\x22","\x22\x5D\x2E\x63\x6F\x6E\x74\x69\x6E\x75\x65\x54\x6F\x28\x29","\x63\x65\x69\x6C","\x72\x65\x76\x65\x72\x73\x65","\x63\x6F\x6E\x74\x69\x6E\x75\x65\x54\x6F","\x65\x61\x73\x69\x6E\x67","\x65\x61\x73\x65\x4F\x6E","\x6F\x75\x74","\x61\x62\x73","\x65\x61\x73\x65\x41\x74","\x6F\x6E\x65\x61\x73\x65\x6F\x75\x74","\x65\x61\x73\x65\x53\x74\x72\x65\x6E\x67\x74\x68","\x6F\x6E\x63\x68\x61\x6E\x67\x65","\x72\x65\x73\x75\x6D\x65","\x6F\x6E\x73\x74\x6F\x70","\x63\x68\x61\x6E\x67\x65\x44\x75\x72\x61\x74\x69\x6F\x6E","\x6E\x65\x77\x20\x64\x75\x72\x61\x74\x69\x6F\x6E\x20\x73\x65\x74\x3A\x20","\x74\x72\x61\x63\x65","\x73\x74\x72\x69\x6E\x67","\x2E","\x69\x6E\x64\x65\x78\x4F\x66","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x6E\x6F\x72\x6D\x61\x6C","\x65\x61\x73\x65\x44\x69\x73\x74","\x23\x58\x23","\x73\x74\x79\x6C\x65","\x72\x65\x70\x6C\x61\x63\x65","\x73\x74\x79\x6C\x65\x20\x3D\x20","\x0A\x6F\x62\x6A\x20\x3D\x20","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x0A\x76\x61\x6C\x20\x3D\x20","\x0A\x69\x6E\x74\x76\x6C\x20\x3D\x20","\x6E\x6F\x6E\x2D\x65\x78\x69\x73\x74\x61\x6E\x74","\x0A\x65\x72\x72\x6F\x72\x20\x3D\x20","\x66\x69\x6C\x74\x65\x72","\x64\x65\x62\x75\x67\x42\x6F\x78","\x76\x61\x6C\x75\x65","\x0A","\x67\x65\x74\x54\x69\x6D\x65"];var styleSets={width:Array(_0xd75a[0]),height:Array(_0xd75a[1]),x:Array(_0xd75a[2]),y:Array(_0xd75a[3]),z:Array(_0xd75a[4]),marginLeft:Array(_0xd75a[5]),marginTop:Array(_0xd75a[6]),alpha:Array(_0xd75a[7]),rotate:Array(_0xd75a[8],_0xd75a[9])};var filterSets={alpha:Array(_0xd75a[10]),rotate:Array(_0xd75a[11])};var filterScale={alpha:100,rotate:1/90};var stylePrefixes={rotate:_0xd75a[12]};var styleSuffixes={width:_0xd75a[13],height:_0xd75a[13],x:_0xd75a[13],y:_0xd75a[13],z:_0xd75a[13],marginLeft:_0xd75a[13],marginTop:_0xd75a[13],alpha:_0xd75a[14],rotate:_0xd75a[15]};var easeStrengths={xstrong:0.51,strong:0.65,normal:0.7,weak:0.8};var _tweenInstances=Array();var _tweenInstances=Array();var Tween=function (_0x33e6x9,_0x33e6xa,_0x33e6xb,_0x33e6xc,_0x33e6xd,_0x33e6xe,_0x33e6xf,_0x33e6x10){this[_0xd75a[16]]=_0x33e6x9;this[_0xd75a[17]]=_0x33e6xa;this[_0xd75a[18]]=_0x33e6xc?parseFloat(_0x33e6xc):0;this[_0xd75a[19]]=parseFloat(_0x33e6xd);this[_0xd75a[20]]=parseFloat(_0x33e6xe);this[_0xd75a[21]]=_0x33e6xf;this[_0xd75a[22]]=_0x33e6x10?_0x33e6x10:34;if(!_0x33e6x9){return ;} ;if(!_0x33e6x9[_0xd75a[23]]){if(!window[_0xd75a[24]]){window[_0xd75a[24]]=0;} ;_0x33e6x9[_0xd75a[23]]=_0xd75a[25]+unique_counter;unique_counter++;} ;this[_0xd75a[26]]=_0x33e6x9[_0xd75a[23]]+_0xd75a[27]+_0x33e6xa;if(_tweenInstances[this[_0xd75a[26]]]){_tweenInstances[this[_0xd75a[26]]][_0xd75a[28]](false,true);} ;_tweenInstances[this[_0xd75a[26]]]=this;this[_0xd75a[29]]=false;this[_0xd75a[30]];this[_0xd75a[31]];this[_0xd75a[32]]=(this[_0xd75a[18]]>this[_0xd75a[19]])?-1:1;this[_0xd75a[33]]=false;this[_0xd75a[34]]=function (){if(this[_0xd75a[29]]){this[_0xd75a[28]]();} ;this[_0xd75a[35]]=parseFloat(this[_0xd75a[18]]);this[_0xd75a[36]]();this[_0xd75a[37]]();this[_0xd75a[38]]();this[_0xd75a[39]]=getTime();this[_0xd75a[40]]=getTime()+(this[_0xd75a[20]]*1000);this[_0xd75a[41]]=0;this[_0xd75a[42]](this[_0xd75a[18]]);var _0x33e6x9=this;this[_0xd75a[29]]=true;if(this[_0xd75a[29]]){this[_0xd75a[33]]=setTimeout(_0xd75a[43]+this[_0xd75a[26]]+_0xd75a[44],Math[_0xd75a[45]](1000/this[_0xd75a[22]]));} ;} ;this[_0xd75a[46]]=function (_0x33e6xf){var _0x33e6x11=this[_0xd75a[18]];this[_0xd75a[18]]=this[_0xd75a[19]];this[_0xd75a[19]]=_0x33e6x11;this[_0xd75a[32]]=this[_0xd75a[32]]*-1;if(this[_0xd75a[21]]&&!this[_0xd75a[29]]){this[_0xd75a[34]]();} ;} ;this[_0xd75a[47]]=function (_0x33e6x12){if(!this[_0xd75a[29]]){return ;} ;if(this[_0xd75a[48]]||((this[_0xd75a[49]]==_0xd75a[50])&&(Math[_0xd75a[51]](this[_0xd75a[19]]-this[_0xd75a[35]])<=Math[_0xd75a[51]](this[_0xd75a[52]])))){this[_0xd75a[48]]=true;if(this[_0xd75a[53]]){this[_0xd75a[53]]();} ;var _0x33e6x13=this[_0xd75a[31]]*(easeStrengths[this[_0xd75a[54]]]);if(Math[_0xd75a[51]](_0x33e6x13)<0.5){_0x33e6x13=0.5*this[_0xd75a[32]];} ;this[_0xd75a[31]]=_0x33e6x13;this[_0xd75a[36]]();if(!_0x33e6x12){_0x33e6x12=parseFloat(this[_0xd75a[35]])+parseFloat(this[_0xd75a[31]]);} else {_0x33e6x12=parseFloat(_0x33e6x12);} ;} else {this[_0xd75a[41]]=(getTime()-this[_0xd75a[39]])/(this[_0xd75a[40]]-this[_0xd75a[39]]);var _0x33e6x14=this[_0xd75a[35]];_0x33e6x12=this[_0xd75a[18]]+this[_0xd75a[30]]*this[_0xd75a[41]];} ;if(_0x33e6x12*this[_0xd75a[32]]>this[_0xd75a[19]]*this[_0xd75a[32]]){_0x33e6x12=this[_0xd75a[19]];} ;this[_0xd75a[42]](_0x33e6x12);this[_0xd75a[35]]=_0x33e6x12;if(this[_0xd75a[55]]){this[_0xd75a[55]](this[_0xd75a[35]]);} ;if(this[_0xd75a[35]]*this[_0xd75a[32]]<this[_0xd75a[19]]*this[_0xd75a[32]]){if(this[_0xd75a[29]]){this[_0xd75a[33]]=setTimeout(_0xd75a[43]+this[_0xd75a[26]]+_0xd75a[44],Math[_0xd75a[45]](1000/this[_0xd75a[22]]));} ;} else {this[_0xd75a[28]]();} ;} ;this[_0xd75a[56]]=function (){this[_0xd75a[29]]=true;this[_0xd75a[47]](this[_0xd75a[35]]);} ;this[_0xd75a[28]]=function (_0x33e6x15,_0x33e6x16){if(_0x33e6x15){this[_0xd75a[48]]=true;var _0x33e6x17=this[_0xd75a[19]];this[_0xd75a[19]]=this[_0xd75a[35]];this[_0xd75a[38]](Math[_0xd75a[51]](this[_0xd75a[18]]-this[_0xd75a[35]]));this[_0xd75a[19]]=this[_0xd75a[35]]+this[_0xd75a[52]];if(this[_0xd75a[35]]*this[_0xd75a[32]]>_0x33e6x17*this[_0xd75a[32]]){this[_0xd75a[19]]=_0x33e6x17;} ;this[_0xd75a[37]]();} else {this[_0xd75a[29]]=false;if(this[_0xd75a[33]]){clearTimeout(this[_0xd75a[33]]);} ;this[_0xd75a[33]]=false;if(!_0x33e6x16&&this[_0xd75a[57]]){this[_0xd75a[57]]();} ;} ;} ;this[_0xd75a[58]]=function (_0x33e6x18){if(_0x33e6xe<0){return ;} ;this[_0xd75a[60]](_0xd75a[59]+_0x33e6x18);this[_0xd75a[20]]=_0x33e6x18;this[_0xd75a[18]]=this[_0xd75a[35]];this[_0xd75a[34]]();return ;} ;this[_0xd75a[36]]=function (){this[_0xd75a[30]]=parseFloat(this[_0xd75a[19]])-parseFloat(this[_0xd75a[35]]);} ;this[_0xd75a[37]]=function (){this[_0xd75a[31]]=this[_0xd75a[30]]/(this[_0xd75a[20]]*this[_0xd75a[22]]);} ;this[_0xd75a[38]]=function (_0x33e6x19){_0x33e6x19=_0x33e6x19?_0x33e6x19:this[_0xd75a[30]];if( typeof _0x33e6xb==_0xd75a[61]){this[_0xd75a[49]]=_0x33e6xb[_0xd75a[64]](0,_0x33e6xb[_0xd75a[63]](_0xd75a[62]));this[_0xd75a[54]]=_0x33e6xb[_0xd75a[64]](_0x33e6xb[_0xd75a[63]](_0xd75a[62])+1);if(!this[_0xd75a[54]]){this[_0xd75a[54]]=_0xd75a[65];} ;} ;if(this[_0xd75a[54]]){var _0x33e6x1a=this[_0xd75a[31]]*this[_0xd75a[22]];this[_0xd75a[52]]=this[_0xd75a[31]]*(1+easeStrengths[this[_0xd75a[54]]])*1.5;} ;return this[_0xd75a[66]];} ;this[_0xd75a[42]]=function (_0x33e6x1b){if(!this[_0xd75a[29]]){return ;} ;if(styleSets[this[_0xd75a[17]]]){for(var _0x33e6x1c in styleSets[this[_0xd75a[17]]]){var _0x33e6xa=styleSets[this[_0xd75a[17]]][_0x33e6x1c];if(( typeof _0x33e6xa==_0xd75a[61])&&(_0x33e6xa[_0xd75a[63]](_0xd75a[67])!=-1)){this[_0xd75a[16]][_0xd75a[68]][_0x33e6xa]=_0x33e6xa[_0xd75a[69]](/#X#/g,_0x33e6x1b);} else {try{if(isNaN(_0x33e6x1b)){_0x33e6x1b=0;} ;this[_0xd75a[16]][_0xd75a[68]][styleSets[this[_0xd75a[17]]][_0x33e6x1c]]=(stylePrefixes[this[_0xd75a[17]]]?stylePrefixes[this[_0xd75a[17]]]:_0xd75a[14])+_0x33e6x1b+(styleSuffixes[this[_0xd75a[17]]]?styleSuffixes[this[_0xd75a[17]]]:_0xd75a[14]);} catch(e){alert(_0xd75a[70]+styleSets[this[_0xd75a[17]]][_0x33e6x1c]+_0xd75a[71]+this[_0xd75a[16]][_0xd75a[72]]+_0xd75a[73]+_0x33e6x1b+_0xd75a[74]+(styleSuffixes[this[_0xd75a[17]]]?styleSuffixes[this[_0xd75a[17]]]:_0xd75a[75])+_0xd75a[76]+e);} ;} ;} ;} else {this[_0xd75a[16]][_0xd75a[68]][this[_0xd75a[17]]]=_0x33e6x1b;} ;if(filterSets[this[_0xd75a[17]]]){if(filterScale&&filterScale[this[_0xd75a[17]]]){_0x33e6x1b=parseInt(_0x33e6x1b*filterScale[this[_0xd75a[17]]]);} ;for(var _0x33e6x1c in filterSets[this[_0xd75a[17]]]){var _0x33e6xa=filterSets[this[_0xd75a[17]]][_0x33e6x1c];if(( typeof _0x33e6xa==_0xd75a[61])&&(_0x33e6xa[_0xd75a[63]](_0xd75a[67])!=-1)){this[_0xd75a[16]][_0xd75a[68]][_0xd75a[77]]=_0x33e6xa[_0xd75a[69]](/#X#/g,_0x33e6x1b);} else {this[_0xd75a[16]][_0xd75a[68]][_0xd75a[77]][filterSets[this[_0xd75a[17]]][_0x33e6x1c]]=_0x33e6x1b+(styleSuffixes[this[_0xd75a[17]]]?styleSuffixes[this[_0xd75a[17]]]:_0xd75a[14]);} ;} ;} ;} ;this[_0xd75a[60]]=function (_0x33e6x1d){if(this[_0xd75a[78]]){this[_0xd75a[78]][_0xd75a[79]]=_0x33e6x1d+_0xd75a[80]+this[_0xd75a[78]][_0xd75a[79]];} ;} ;if(this[_0xd75a[21]]){this[_0xd75a[34]]();} ;} ;function getTime(){var _0x33e6x1f= new Date();return _0x33e6x1f[_0xd75a[81]]();} ;



/*---- Slideshow.js ----*/
var _slideshows = Array();
var Slideshow = function(holder, delay, initFrom, transition, transitionSpeed, buttons) {
	this.outerHolder = holder; 
	this.transition = transition;
	this.slides = new Array();
	this.buttons = new Array();
	this.delay = delay;
	this.at = 0;
	this.transitionSpeed = transitionSpeed ? transitionSpeed : 1;
	if((typeof initFrom).toLowerCase() == 'string') {
		this.initURL = initFrom;
	} else {
		this.initURL = false;
		this.data = initFrom;
	}

	this.initiate = function() {
		if(!this.outerHolder)	alert('invalid holder for slideshow');
		addClass(this.outerHolder, 'slideshow');

		this.nav = (this.buttons.nav) ? this.buttons.nav : addChild(this.outerHolder, 'div', 'nav');
		this.innerHolder = addChild(this.outerHolder,'div', 'innerHolder');

		switch(this.transition) {
			case 'slideVert':
				break;
			case 'slideHoriz':
				this.innerHolder.style.height = this.outerHolder.offsetHeight+'px';
				break;
			case 'fade':
			default:
				this.innerHolder.style.height = this.outerHolder.offsetHeight+'px';
				break;
		}

		if(this.data) {
			if(this.initURL) {
				this.loadFromURL(this.initURL);
			} else {
				/**/
				var dat = this.data;
				for(var i in dat) {
					this.addSlide(dat[i].im, '', 'image', dat[i].title, dat[i].caption, dat[i].link, dat[i].link_title);
				}
				/**/
			}
			/**/
			if(!this.slides[0].obj.id)	this.slides[0].obj.id=0;
			/**/
		}
		this.loader = addChild(this.outerHolder, 'div');
		this.loader.style.width = '0px';
		this.loader.style.height = '0px';
		this.loader.style.overflow = 'hidden';

		var thisObj = this;
		this.keyListener = addEventHandler(window, 'keydown', function(e) {
				e = e ? e : window.event;
				if(thisObj.in_transition)	return;
				if(e.keyCode==37) { // || e.keyCode==40) {		// left / down
					thisObj.stop();
					if(thisObj.at>0)
						thisObj.getNext(false, -1);
					if(thisObj.timer) {
						clearInterval(thisObj.timer);
						thisObj.timer = false;
					}
				} else if(e.keyCode==39) { // || e.keyCode==38 || e.keyCode==32) {	// right / up / space bar
					thisObj.stop();
					thisObj.getNext();
					if(thisObj.timer) {
						clearInterval(thisObj.timer);
						thisObj.timer = false;
					}
				}
		});
		this.id = _slideshows.length;
		_slideshows[this.id] = this;
	}
	this.start = function(from) {
		this.getNext(from?from:0);

		// set initial
		var tw_in = new Tween(this.slides[this.at].obj, 'alpha', 'out.strong', 0, 1, .01);
		tw_in.start();

		if(this.timer) clearInterval(this.timer);
		if(this.slides.length>1) {
			var thisObj = this;
			this.timer = setInterval(function() { thisObj.getNext(); }, this.delay*1000);
		}
	}
	this.stop = function() {
		clearInterval(this.timer);
	}
	this.addSlide = function(img, src, type, heading, caption, link, link_title) {
		if(img==undefined)	return;
		var thisObj = this;

		var newSlide = { img:img, link:link, caption:caption };
		newSlide.obj = addChild(this.innerHolder, 'div', 'slide '+(this.slides.length?'in':'')+'active', this.slides.length);

		newSlide.imgHolder = addChild(newSlide.obj, 'div', 'imHolder');

		newSlide.img = new Image();
		newSlide.img.className = 'slideImage transparent';
		if(this.transition=='fade_in') {
			addClass(newSlide.obj, 'transparent');
			addClass(newSlide.img, 'transparent');
		}

		newSlide.img.onload = function() {
			var dims_orig = { w:this.offsetWidth, h:this.offsetHeight };
			var w0 = this.offsetWidth;
			var h0 = this.offsetHeight;
			var w1 = thisObj.innerHolder.offsetWidth;
			var h1 = thisObj.innerHolder.offsetHeight;

			var dims ={ w:w1, h:w1*h0/w0 };		// best fit width
			if(dims.h > h1) 
				dims ={ w:w0*h1/h0, h:h1 };		// best fit height

			if(thisObj.transition!='slideHoriz') 
				newSlide.img.style.marginLeft = ((w1 - dims.w)/2)+'px';
			if(thisObj.transition!='slideVert') 
				newSlide.img.style.marginTop = ((h1 - dims.h)/2)+'px';
			if(thisObj.transition=='fade') 
				fade_in(newSlide.img);

			if(!thisObj.loaded) {
				if(thisObj.onload)
					thisObj.onload();
				thisObj.loaded = true;
			}

			fade_in(newSlide.img);
		}
		var loadLayer = $('loadLayer') ? $('loadLayer') : addChild(document.body, 'div', '', 'loadLayer') ;
		loadLayer.appendChild(newSlide.img);
 		newSlide.img.src = img;

		var imHolderInner = addChild(newSlide.imgHolder, 'div', 'slideImage');
		imHolderInner.style.backgroundImage = 'url('+img+')';

		if(caption) {
			newSlide.caption = addChild(newSlide.obj, 'div', 'caption');
/*
			newSlide.caption = addChild(newSlide.obj, link ? 'a':'div', 'caption');
			if(link) {
				newSlide.caption.href = link;
				newSlide.caption.target = '_BLANK';
			}
*/
			newSlide.caption.innerHTML = (heading?'<h6>'+heading+'</h6>':heading)
							+(caption?'<div class="text">'+caption+'</div>':'')
							+(link_title?'<a href="'+link+'">'+link_title+'</a>':'');
			newSlide.caption.style.position = 'relative';
		}
		if(link) {
			// set link
			newSlide.obj.link = link;
		}

		// add overlay
		newSlide.overlay = addChild(newSlide.obj, 'div', 'overlay '+type);
		newSlide.overlay.onclick = function() {
			if(type=='video') {
				// stop current slideshow
				thisObj.stop();

				// set image to background
				if(newSlide.img) newSlide.obj.style.background = 'url('+newSlide.img.src+')';

				// remove image and overlay
				newSlide.img.style.display = 'none';
				newSlide.overlay.style.display = 'none';
				newSlide.video = createVideo(src, img, newSlide.obj.offsetWidth, newSlide.obj.offsetHeight, true, true, true);
				addClass(newSlide.video, 'video');
				newSlide.obj.appendChild(newSlide.video);
				addClass(thisObj.outerHolder, 'videoActive');
			} else {
				if(link) {
					window.open(link);
				} else if(src)	lightbox(src);
			}
		}
		newSlide.img.onclick = newSlide.overlay.onclick;
		newSlide.obj.onclick = function() { thisObj.onclick(newSlide); };
		newSlide.reset = function() {
			if(type=='video') {
				// reset video
				newSlide.overlay.style.display = 'block';
				remove(newSlide.video);
				removeClass(thisObj.outerHolder, 'videoActive');
			}
		}

		// add to quick nav
		newSlide.navNode = addChild(this.nav, 'div', (!this.slides.length?'active':''));
		newSlide.navNode.slideshow = this;
		newSlide.navNode.id = this.slides.length;
		newSlide.indx = this.slides.length;
		newSlide.navNode.onclick = function() { if(this.slideshow.timer) this.slideshow.pause(); this.slideshow.getNext(this.id); };
		/**/
		if(this.slides.length) {
			this.nav.style.display = 'block';
		} else {
			if(this.transition=='fade_in') {
				this.nav.style.display = 'none';
			}
			fade_in(newSlide.obj);
		}

		this.slides[this.slides.length] = newSlide;
		return newSlide;
	}
	this.removeSlide = function(indx) {
		var slide = this.slides[indx];
		if(slide) {
			remove(slide.obj);
			remove(slide.navNode);
			remove(slide.overlay);
			this.slides.splice(indx, 1);
		}
	}
	this.getNext = function(next, dir) {
		if(this.in_transition)	return;

		var thisObj = this; 
		if(dir==undefined)	dir = 1;

		if((next!=undefined) && (next==this.at))	this.at = -1;
		var prior = this.slides[this.at];
		
		// set where it's going to
		if(!isNaN(next))
			this.at = next;
		else if(dir>0)
			this.at++;
		else	this.at--;

		// if moved to invalid slide, moved to first if going forwards, otherwise if in reverse move to last
		if(!this.slides[this.at])
			this.at = dir<0 ? this.slides.length-1 : 0;

		if(prior) {
		       	prior.obj.className = 'slide inactive';
			prior.navNode.className = '';
			if(prior.reset)	prior.reset();
		}
		this.slides[this.at].obj.className = 'slide active';
		this.slides[this.at].navNode.className = 'active';

		this.slides[this.at].obj.style.display='block';
		if(this.transition=='fade_in') {
			addClass(this.slides[this.at].obj, 'transparent');
		}

		var tw_in, tw_out;
		if(prior && prior.obj) {
			this.in_transition = true;
		}
		switch(this.transition) {
			case 'slideVert':
				break;
			case 'slideHoriz':
				var obj = this.slides[this.at].obj;
				var siblings = obj.parentNode.childNodes;
				var start = 0;
				for(var i=0; i<siblings.length && siblings[i]!=obj; i++) {
					start += siblings[i].offsetWidth;
				}
				if(dir && dir < 0) {		// move right
					// move last to first place and displace animation
					var slideObjs = this.innerHolder.childNodes;
					var w = slideObjs[slideObjs.length-1].offsetWidth;
					var last = remove(slideObjs[slideObjs.length-1]);
					this.innerHolder.style.marginLeft = (w*-1)+'px';
					this.innerHolder.insertBefore(last, this.innerHolder.firstChild);
					tw_move = new Tween(this.innerHolder, 'marginLeft', 'out.normal', w*-1, 0, this.transitionSpeed);
					tw_move.onstop = function() {
						thisObj.in_transition = false;
					}
				} else {
					tw_move = new Tween(this.innerHolder, 'marginLeft', 'out.normal', 0, start*-1, this.transitionSpeed);
					// move to end
					tw_move.onstop = function() {
						thisObj.innerHolder.style.marginLeft = '0px';
						if(prior && prior.obj) 
							thisObj.innerHolder.appendChild(prior.obj);
						thisObj.in_transition = false;
					}
				}
				if(tw_move) 	tw_move.start();
				break;
			case 'fade':
			default:
				tw_in = new Tween(this.slides[this.at].obj, 'alpha', 'out.strong', 0, 1, this.transitionSpeed, 40);
				if(prior && prior.obj) {
					tw_out = new Tween(prior.obj, 'alpha', 'out.strong', 1, 0, this.transitionSpeed, 40);
					tw_out.onstop = function() { 
						thisObj.in_transition = false;
					}
				}
				if(tw_in) tw_in.start();
				if(prior && prior.obj && tw_out) 	tw_out.start();
				break;
		}
		if(this.slides[this.at].onselect) 	this.slides[this.at].onselect();
		if(prior && prior.unselect) 		prior.onunselect(); 
	}
	this.getSlide = function(indx) {
		if(!indx)	indx=0;
		return this.slides[indx] ? this.slides[indx].obj : false;
	}
	this.goTo = function(slide) {
		this.getNext(slide);
	}
	this.pause = function() {
		this.paused = true;
		if(this.timer) {
			clearInterval(this.timer);
			this.timer = false;
		}
	}
	this.resume = function() {
		this.paused = false;
		if(this.timer) {
			clearInterval(this.timer);
		}
		if(this.slides.length>1)	
			this.timer = setInterval('_slideshows['+this.id+'].getNext()', this.delay*1000);
	}
	this.loadFromURL = function(url) {
		var data = load(url);
		var slide = '';
		while(slide=parseXML(data, 'slide')) {
			this.addSlide(
					parseXML(slide,'im'),
					parseXML(slide,'ttl'),
					parseXML(slide,'capt'),
					parseXML(slide,'a_url'),
					parseXML(slide,'a_ui')
				     );
			data = eatXML(data, 'slide');
		}
	}

	this.initiate();
}



/*---- Slideshow.old.js ----*/
var _slideshows = Array();
var Slideshow = function(holder, delay, initFrom, transition, transitionSpeed, buttons) {
	this.outerHolder = holder; 
	this.transition = transition;
	this.slides = new Array();
	this.buttons = new Array();
	this.delay = delay;
	this.at = 0;
	this.transitionSpeed = transitionSpeed ? transitionSpeed : 1;
	if((typeof initFrom).toLowerCase() == 'string') {
		this.initURL = initFrom;
	} else {
		this.initURL = false;
		this.data = initFrom;
	}

	this.initiate = function() {
		addClass(this.outerHolder, 'slideshowHolder');
		this.nav = (this.buttons.nav) ? this.buttons.nav : addChild(this.outerHolder, 'div', 'nav');
		this.slideHolder = addChild(this.outerHolder,'div', 'slideHolder');

		switch(this.transition) {
			case 'slideVert':
				break;
			case 'slideHoriz':
				this.slideHolder.style.height = this.outerHolder.offsetHeight+'px';
				break;
			case 'fade':
			default:
				//this.slideHolder.style.width = this.outerHolder.offsetWidth+'px';
				this.slideHolder.style.height = this.outerHolder.offsetHeight+'px';
				break;
		}

		this.loader = addChild(this.outerHolder, 'div', 'loader');
		this.loader.style.width = '0px';
		this.loader.style.height = '0px';
		this.loader.style.overflow = 'hidden';
		if(this.data) {
			if(this.initURL) {
				this.loadFromURL(this.initURL);
			} else {
				for(var i in this.data) {
					this.addSlide(this.data[i].im, this.data[i].title, this.data[i].caption, this.data[i].link, this.data[i].link_title);
				}
			}

			if(!this.slides[0].obj.id)	this.slides[0].obj.id=0;
			for(var i in this.slides) {
				if(this.slides[i] && this.slides[i].obj) this.slides[i].obj.style.display='none';
			}

		}

		var thisObj = this;
		this.keyListener = addEventHandler(window, 'keydown', function(e) {
				e = e ? e : window.event;
				if(e.keyCode==37 || e.keyCode==40) {		// left / down
					if(thisObj.at>0)
						thisObj.getNext(thisObj.at-1);
					if(thisObj.timer) {
						clearInterval(thisObj.timer);
						thisObj.timer = false;
					}
				} else if(e.keyCode==39 || e.keyCode==38 || e.keyCode==32) {	// right / up / space bar
					thisObj.getNext();
					if(thisObj.timer) {
						clearInterval(thisObj.timer);
						thisObj.timer = false;
					}
				}
		});
		this.id = _slideshows.length;
		_slideshows[this.id] = this;
	}
	this.start = function(from) {
		this.getNext(from?from:0);

		// set initial
		var tw_in = new Tween(this.slides[this.at].obj, 'alpha', 'out.normal', 1, 1, 1, 1);
		tw_in.start();

		if(this.timer) clearInterval(this.timer);
		if(this.slides.length>1) {
			var thisObj = this;
			this.timer = setInterval(function() { thisObj.getNext(); }, this.delay*1000);
		}
	}

	this.addSlide = function(img, heading, caption, link, link_title) {
		if(img==undefined)	return;
		var thisObj = this;

		var newSlide = { img:img, link:link, caption:caption };
		newSlide.obj = addChild(this.slideHolder, 'div', 'slide '+(this.slides.length?'in':'')+'active', this.slides.length);
		newSlide.obj.style.position = 'absolute';

		newSlide.obj.style.zIndex = 1;
		newSlide.obj.style.width=this.outerHolder.offsetWidth+'px';
		newSlide.obj.style.height=this.outerHolder.offsetHeight+'px';
		
		// create as background image
		/** /
		newSlide.obj.style.backgroundImage='url('+img+')';
		// create as image
		/**/
		newSlide.img = addImage(newSlide.obj, img, 'slideImage transparent');
		newSlide.img.loader = addImage(this.loader, img);
		newSlide.img.loader.onload = function() {
			fade_in(newSlide.img);

			var dims_orig = { w:this.offsetWidth, h:this.offsetHeight };
			var w0 = this.offsetWidth;
			var h0 = this.offsetHeight;
			var w1 = thisObj.slideHolder.offsetWidth;
			var h1 = thisObj.slideHolder.offsetHeight;

			var dims ={ w:w1, h:w1*h0/w0 };		// best fit width
			if(dims.h > h1) 
				dims ={ w:w0*h1/h0, h:h1 };		// best fit height
			newSlide.img.style.width = dims.w+'px';
			newSlide.img.style.height = dims.h+'px';

			if(!thisObj.loaded) {
				thisObj.loaded = true;
				if(thisObj.onload)	thisObj.onload();
			}
		}

		if(caption) {
			newSlide.caption = addChild(newSlide.obj, 'div', 'caption');
			newSlide.caption.innerHTML = (heading?'<h2>'+heading+'</h2>':heading)
							+(caption?'<div class="text">'+caption+'</div>':'')
							+(link_title?'<a href="'+link+'">'+link_title+'</a>':'');
		}
		if(link) {
			// set link
			newSlide.obj.link = link;
		}
		newSlide.obj.onclick = function() { 
			thisObj.onclick(newSlide);
		}

		// add to quick nav
		newSlide.navNode = addChild(this.nav, 'div', (!this.slides.length?'active':''));
		newSlide.navNode.slideshow = this;
		newSlide.navNode.id = this.slides.length;
		newSlide.navNode.onclick = function() { if(this.slideshow.timer) this.slideshow.pause(); this.slideshow.getNext(this.id); };
		newSlide.obj.style.display = 'none';

		this.slides[this.slides.length] = newSlide;
		return newSlide;
	}
	this.getNext = function(next) {
		var thisObj = this;

		if(this.in_transition)	return;						// cancel if already in movement

		if((next!=undefined) && (next==this.at))	this.at = -1;		// default to first slide
		var prior = this.slides[this.at];
		
		if(next!=undefined)
			this.at = next;
		else	this.at++;
		if(!this.slides[this.at] || this.at==this.slides.length)	this.at = 0;

		if(prior) {
		       	prior.obj.className = 'slide inactive';
			prior.obj.style.zIndex = 1;
			prior.navNode.className = '';
		}
		this.slides[this.at].obj.className = 'slide active';
		this.slides[this.at].navNode.className = 'active';

		this.slides[this.at].obj.style.display='block';

		var tw_in, tw_out;
		switch(this.transition) {
			case 'slideVert':
				break;
			case 'slideHoriz':
				this.in_transition = true;
				this.slides[this.at].obj.style.marginLeft=this.outerHolder.offsetWidth+'px';
				if(prior && prior.obj) {
					this.slides[this.at].obj.style.marginLeft=this.outerHolder.offsetWidth+'px';

					tw_in = new Tween(this.slides[this.at].obj, 'marginLeft', 'out.strong', this.outerHolder.offsetWidth, 0, this.transitionSpeed);
					tw_in.onstop = function() { thisObj.in_transition = false; };

					tw_out = new Tween(prior.obj, 'marginLeft', 'out.strong', 0, this.outerHolder.offsetWidth*-1, this.transitionSpeed, true);
				} else {
					tw_in = new Tween(this.slides[this.at].obj, 'marginLeft', '', 0, 0, 1);
					tw_in.onstop = function() { thisObj.in_transition = false; };
				}
				break;
			case 'fade':
			default:
				tw_in = new Tween(this.slides[this.at].obj, 'alpha', 'out.strong', 0, 1, this.transitionSpeed, true);
				if(prior && prior.obj) 	tw_out = new Tween(prior.obj, 'alpha', 'out.strong', 1, 0, this.transitionSpeed, true);
				break;
		}
		tw_in.start();
		if(prior && prior.obj && tw_out) 	tw_out.start();
		if(this.slides[this.at].onselect) 	this.slides[this.at].onselect();
		if(prior && prior.unselect) 		prior.onunselect(); 
	}
	this.getSlide = function(indx) {
		if(!indx)	indx=0;
		return this.slides[indx] ? this.slides[indx].obj : false;
	}
	this.goTo = function(slide) {
		this.getNext(slide);
	}
	this.pause = function() {
		this.paused = true;
		if(this.timer) {
			clearInterval(this.timer);
			this.timer = false;
		}
	}
	this.resume = function() {
		this.paused = false;
		if(this.timer) {
			clearInterval(this.timer);
		}
		if(this.slides.length>1)	
			this.timer = setInterval('_slideshows['+this.id+'].getNext()', this.delay*1000);
	}
	this.loadFromURL = function(url) {
		var data = load(url);
		var slide = '';
		while(slide=parseXML(data, 'slide')) {
			this.addSlide(
					parseXML(slide,'im'),
					parseXML(slide,'ttl'),
					parseXML(slide,'capt'),
					parseXML(slide,'a_url'),
					parseXML(slide,'a_ui')
				     );
			data = eatXML(data, 'slide');
		}
	}

	this.onclick = function(slide) {
	}
	this.initiate();
}



/* pull time was 0.272 seconds */
