var redux={}; redux.enabled=(window.ie6 || window.ie7 || window.gecko || window.webkit420);
redux.enabled=false;

function getQueryVar(query, variable) { 
var vars = query.split("&"); 
for (var i=0;i<vars.length;i++) { 
var pair = vars[i].split("="); 
if (pair[0] == variable) { return pair[1]; }} 
return false; } 

function mergeVar(variable, value) {
	var mv=variable+'='+value;
	if (page.query=='') return (page.name+'.cfm?'+mv)
	var v=getQueryVar(page.query,variable);
	if (v) {
		return(page.name+'.cfm?'+page.query.replace(variable+'='+v,mv));
	} else {
		return(page.name+'.cfm?'+page.query+'&'+mv);
	}
}

function replaceVar(variable, value, query) {
	var mv=(value=='')?'':variable+'='+value;
	var v=getQueryVar(query,variable);
	if (v) {
		if (mv=='') {
			var temp=query.replace('&'+variable+'='+v,'');
			var temp=temp.replace(variable+'='+v,'')
			return temp;			
		} else {
			return query.replace(variable+'='+v,mv);
		}
	} else {
		if (query == '') {
			return mv;
		} else {
			return (mv=='')?query:query + '&' + mv;
		}
	}
}



function debug(h) {$('pageInfo').innerHTML+=h}
function getElementParent(o,c) {if (o.className==c || o.id==c) {return(o)} else {return getElementParent(o.parentNode,c)}}

function rxurl(v) {
	if(v.substring(0,1)=='/') return v.substring(1,v.length);
	if(v.substring(0,4)=='java') return false;
	if(v.substring(0,4)!='http') return v;
	var reg = new RegExp(".*" + document.domain + "\/(.*)");
	if (!reg.test(v)) return false;
	return v.replace(reg, "$1");
}

function rxclick(o) {
	var str = rxurl(o.href);
	if (!str) return true;
	rxget(str,true);
	return false;
}

function rxsubmit(o) {
	
	var out=new Array(); var an={}; var a=new Array();
	x1=$ES('input,select,textarea',$(o));

	$each(x1,function(o){
		if (o.name) {
			if (!an[o.name]) an[o.name]=[];
			var fv=o.getValue();
			if (fv) {var co=an[o.name]; co.push(fv);}
		}
	});
	
	for (var x in an) out.push(x+'='+an[x].join(","));
	
	var str=rxurl(o.action);
	if (!str) return true;
	
	rxget(str,true,out.join("&")); 
	
	return false;
}



function setActiveStyleSheet(title) {
	var i, a, main;
	for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
		if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
			a.disabled = true;
			if(a.getAttribute("title") == title) a.disabled = false;
		}
	}
}

worker='';

function rxform(o) {
	var dest=''; 
	x1=$ES('select',$(o));
	worker=replaceVar('id','',page.query);
	worker=replaceVar('form','true',worker);
	
	$each(x1,function(item){
		var v=item.options[item.selectedIndex].value;
		if (item.name!='') worker=replaceVar(item.name,v,worker);
	});
	
	x1=$ES('input',$(o));
	$each(x1,function(item){
		var v=item.value;
		if (item.name!='') worker=replaceVar(item.name,v,worker);
	});
	dest=page.name+'.cfm?'+worker;
	
	rxget(dest,true);
	return false;
}

function rxresource(r) {
	for(res=0; res<r.length; res++) {
		var c=r[res];
		if (c.type=='CSS') {
			var found=false;
			for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
				if (a.getAttribute("cat")==c.title) {
					if (a.id==c.id) {a.disabled=false; found=true} else {a.disabled=true}
				}
			}
			if (!found) {
				//alert(c.url);
				xx=new Asset.css(c.url, {id: c.id});
				xx.setAttribute("cat",c.title);
			}
		}
		if (c.type=='JS') {
			if (!$(c.id)) {
				new Asset.javascript(c.url, {id: c.id, title: c.title})
			}
		}
	}
}

//Return pointers to an object list
function cacheObjects(l) {
	var objects=[]; var objbyname=[]; 
	for (var i = 0; i <l.length; i++){objects[i]=$(l[i]);} 
	for (var i = 0; i <l.length; i++){objbyname[l[i]]=$(l[i]);} 
	redux.template.objectbyname=objbyname;
	redux.template.object=objects;
}

function rxobject(r,b) {
	if (!redux.object) redux.object={};
	for(res=0; res<r.length; res++) {
		var c=r[res];
		if (c.h) {rxput(c.h,c.o); c.h='';}
		if (!redux.object[c.o]) redux.object[c.o]=[];
		redux.object[c.o].type=c.t;	
	}
}

function rxtemplate(o) {if (!redux.template) redux.template={};	cacheObjects(o.split(","));}

document.writebak=function(v) {}

function rxannounce(o) {
	if (o.resource) rxresource(o.resource);
	if (o.object) rxobject(o.object);
	if (o.history) window.page=o;
	if (document.title)	document.title=o.title;
	if (window.urchinTracker) {urchinTracker(getPage())}
	rxset(o.history);
}

function rxset(b) {
	if (!redux.enabled) return;
	uRevert=null;
	var rxlinks=document.links;	
	for (var i=0; i<rxlinks.length; i++) {if (!rxlinks[i].onclick && !rxlinks[i].target) rxlinks[i].onclick=function() {return rxclick(this)}}	
	$each($$('form'),function(ol){
		if (!ol.onsubmit) ol.onsubmit=function() {
			return rxsubmit(this);
		};
	});
	if (b) historySet();
}

function rxclear(o) {if (window.ie) {$(o).outerHTML='<DIV CLASS=editObject ID='+o+'></DIV>'} else {$(o).setHTML('')}}
function rxerror(e) {alert(e[0].message)}

function rxrevert(c) {oAlert(c); if (uRevert) uRevert.selectedIndex=0}

function rxput(h,o) { if (!$(o)) return; (h!='')?$(o).setHTML(h):rxclear(o)}

function rxget(n,h,v) {
	
    //var script = document.createElement('script');
    //script.defer = true;
	
	var pass2=''; var pass1='';
	for (var x in redux.object)
	{
		var tmp=redux.object[x];
		if (tmp.type==1) {pass1+=x+';'}
		if (tmp.type==2) {pass2+=x+';'}
	}
	
	var tn=new Date();
	var rxt=window.page.sid+':'+window.page.tid+':'+pass1+':'+pass2;
	if (n.indexOf("?") > 0) {
		var src = '/' + n + '&rxtype=' + rxt + '&ts=' + tn.getTime();
	} else {
    	var src = '/' + n + '?rxtype=' + rxt + '&ts=' + tn.getTime();;
	}
	//if (v) {script.src=(v.substring(0,1)=='&')?script.src + v:script.src + '&' + v;}
	var x=n.indexOf('form=true');
	if (x > 0) n=n.substring(0,x-1);
	var myXHR = new XHR({method: (v)?'post':'get', onSuccess: function(r){eval(r)}}).send(src,v);
	window.location.loading=h?n:false;
    //document.body.appendChild(script);
}

function historySet() {
	if (window.poll) clearTimeout(poll);
	if (window.location.loading) window.location.hash=getPage();	
	if (window.ie) {
		if (window.location.hash=='' || window.location.loading) historyAdd(getPage());
	} else {
		poll=setTimeout('rPoll()',300);
	}
}

function historyResolve(hist) {
	//alert(unescape(window.location.loading) + ' ' + unescape(hist));
	if (getPage()!=hist) {
		rxget(hist,false);
		window.location.hash=hist;
	}
}

function historyAdd(hist) {
	window.historyObj.document.write("<html><body><script>parent.historyResolve('"+hist+"');<\/script></body></html>");
	window.historyObj.document.close();	
	return void(0);
}
if (window.ie) document.write('<iframe style="width:10px; height:10px; position:absolute; left:0px; visibility:hidden;" id="historyObj" name="historyObj"></iframe>');
//setTimeout('historyAdd()',300); 

function getPath() {var rPath=window.location.pathname; var rSearch=window.location.search; rPath=rPath.substring(1,rPath.length); if (rPath=='') rPath='index.cfm'; if (rSearch!='') rPath=rPath+rSearch; return rPath}
function getPage() {var rPage=page.name + '.cfm'; if (page.query) rPage=rPage+'?'+page.query; return rPage}

function rPoll() {	
	var rHash=window.location.hash; rHash=rHash.substring(1,rHash.length);
	var rPage=getPage(); var rPath=getPath();
	
	if (window.admin && window.opera) {
	//	var tn=new Date();
	//	$('pageInfo').innerHTML=tn.getTime()+' AFTER<br>'+$('pageInfo').innerHTML;
	}
	
	if (rHash!=rPage && rHash!='') {
		//if (window.admin && window.opera) alert(rHash);
		rxget(rHash,false);
	} else {
		if (rHash=='' && rPath!=rPage) {
			rxget(rPath,false)
		} else {
			poll=setTimeout('rPoll()',300)
		}
	}
}

function toggleSearch(state) {
	var s=$('search');
	var sChange = new Fx.Style(s, 'opacity', 0);
	if (state) {
		sChange.start(0, 1);
	} else {
		sChange.start(1, 0);
	}
	return void(0);
}

function oCenter(o,shim) {
	var o=$(o);
	var bs=$(document.body).getSize();
	var os=o.getSize();
	var l=(bs.size.x-os.size.x)/2;
	var t=(bs.size.y-os.size.y)/2-20;
	t=(t<0)?0:t;l=(l<0)?0:l;
	o.setStyle('left',l); o.setStyle('top',t);
	if (shim) oShim(o,true);
}

function oFade(o,s,e,time,fps) {
	if ($(o).getStyle('visibility')=='visible') return;
	var sChange = new Fx.Style($(o), 'opacity', {duration:(time)?time:500, wait:true, fps:(fps)?fps:50}); 
	sChange.start(s,e);
}

function oShim(o,d) {
	if (window.ie) {
		o=$(o);
		if (!o.shim) {
			var newShim=new Element('iframe', {'styles': {'display': 'none', 'position':'absolute'}});
			newShim.style.filter='progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';
			document.body.appendChild(newShim);
			o.shim=newShim;
		}
		cc=o.shim;
		if (!d) {cc.setStyle('display','none');	return}
		var c=$(o).getCoordinates(); 
		cc.setStyles({width:c.width, backgroundColor:'red', height:c.height, top:c.top, left:c.left, zIndex:parseInt(o.currentStyle.zIndex)-2, display:'block'});
	}	
}

function oAlert(c) {
	$('olLightbody').setHTML('<b>'+c+'</b>');
	oFade('olLightbox',0,1); oCenter('olLightbox',true); toggleShade(true,0,'white');
	setTimeout("oFade('olLightbox',1,0)",1500);
	setTimeout("toggleShade(false)",2000);
	return false;
}

oClose="<img class='tooltip_close' onclick='toggleShade(false)' src='/inc/redux/images/btn_ol_close.jpg'>";

function oLightbox(c) {
	$('olLightbody').setHTML(c+oClose);
	if ($(o).getStyle('visibility')=='hidden') {
		oFade('olLightbox',0,1); 
		oCenter('olLightbox',false); 
		toggleShade(true,.7,'black');
	}
	return false;
}

function oSlideshow(d,s) {
	$('olLightbody').setHTML("<div id='oSlideshow' class='slideshow'><img height='"+s.height+"' width='"+s.width+"' src='"+s.hu+d+"'></div>"+oClose); 
	oFade('olLightbox',0,1); oCenter('olLightbox',false); toggleShade(true,.7,'black');	
	myShow = new Slideshow('oSlideshow', s); 
	return false;
}

function oPage(c,w) {
	if (w) $('olLightbody').setStyle('width',w);
	$('olLightbody').setHTML(c+oClose);
	oFade('olLightbox',0,1); oCenter('olLightbox',true);
	toggleShade(true,0,'white'); 
	return false;
}

function toggleShade(state,opacity,color) {
	var s=$('olShader');
	bodySize=$(document.body).getSize();
	s.setStyle('height',(bodySize.scrollSize.y>bodySize.size.y-22)?bodySize.scrollSize.y:bodySize.size.y-22);
	if (state) {
		s.setStyle('background-color',color);
		if (opacity>0) {
			var sChange = new Fx.Style(s, 'opacity', {duration: 500, wait:true, fps: 50});
			oShim('olShader',true);
			sChange.start(0,opacity)
		} else {
			s.setOpacity(.01);
			s.setStyle('visibility','visible');
		}
	} else {
		if (document.title) document.title=page.title;
		$('olShader').setStyle('visibility','hidden');
		$('olLightbox').setStyle('visibility','hidden');
		oShim('olLightbox',false);
		oShim('olShader',false);
		if ($('oSlideshow')) $('oSlideshow').remove();
	}	 
}

if (window.ie) {
var sfEls = document.getElementById("mainmenu").getElementsByTagName("LI");
for (var i=0; i<sfEls.length; i++) {
	sfEls[i].onmouseover=function() {this.className+=" sfhover";}         
	sfEls[i].onmouseout=function() {this.className=this.className.replace(new RegExp(" sfhover\\b"), "");}
}}

uRevert=null;

//Site specific code
//new Asset.javascript('/js/slideshow.js', {id: 'jsSlideShow'});
//new Asset.css('/styles/slideshow.css', {id: 'cssSlideShow'});