//msp functions
var $g=Ext.get;
var $e=Ext.encode;
Ext.BLANK_IMAGE_URL="/ext/resources/images/default/s.gif";

var TRACK_USAGE=false;
//load script for tracking page viewing at google analytics
if(TRACK_USAGE){
	document.write(unescape("%3Cscript src='http://www.google-analytics.com/ga.js' type='text/javascript'%3E%3C/scr"));
	document.write(unescape("ipt%3E"));
}

/**
tracking script tag, removed from docs, replaced by
<!-- tracking script -->

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-9859743-1");
pageTracker._trackPageview();
} catch(err) {}</script>
*/

//setup /index.html
function siteInit(){
	//fade in the regular stuff if it's not showing
	var JS = $g("divJS")
	if(JS)JS.show({duration:0.75});
	Ext.getBody().unselectable();
	
	Ext.enableListenerCollection=true;
}

//set up each page
function pageInit(menuID){
	var p = window.parent;
	Ext.getBody().unselectable();
	
	var hcf = $g("divHCF");
	
	//add in links to soc. net. sites
	if(hcf){
		var snLinks=hcf.insertHtml(
				'beforeEnd',
				'<div id="snLinks" class="sn-links" align="center">' + 
				'<div class="sn-facebook"></div>' +
				'<div class="sn-flickr"></div>' +
				'<div class="sn-twitter"></div>' +
				'<div class="sn-youtube"></div>' +
				'</div>',true);
		
		var facebook = snLinks.child('.sn-facebook');
		var flickr = snLinks.child('.sn-flickr');
		var twitter = snLinks.child('.sn-twitter');
		var youtube = snLinks.child('.sn-youtube');
		
		facebook.href='http://www.facebook.com/#!/pages/Jefferson-City-MO/Missouri-State-Penitentiary/239920046037?ref=ts&ajaxpipe=1&__a=18';
		flickr.href='http://www.flickr.com/photos/missouripentours';
		twitter.href='http://www.twitter.com/missouripentour';
		youtube.href='http://www.youtube.com/missouripentours';
		
		var follow=function(){window.open(this.href);}
		facebook.on('click',follow);
		flickr.on('click',follow);
		twitter.on('click',follow);
		youtube.on('click',follow);
		
		facebook.addClassOnOver('sn-facebook-over').addClassOnClick('sn-facebook-down').anchorTo(snLinks,'tl-tl',[5,2]);
		flickr.addClassOnOver('sn-flickr-over').addClassOnClick('sn-flickr-down').anchorTo(facebook,'tl-tr',[4,0]);
		twitter.addClassOnOver('sn-twitter-over').addClassOnClick('sn-twitter-down').anchorTo(flickr,'tl-tr',[4,0]);
		youtube.addClassOnOver('sn-youtube-over').addClassOnClick('sn-youtube-down').anchorTo(twitter,'tl-tr',[4,0]);
		
		snLinks.anchorTo($g('divFooter'),'br-br',[-20,-9]);
		
		//fade in
		hcf.hide().show({duration:0.3});
	}
	//light up the correct menu
	if(menuID){if(p && p.highlightMenu)p.highlightMenu(menuID);}
	//hide menus on click
	if(p && p.dropDownMenus)Ext.getBody().on("click",function(){p.dropDownMenus.hideActive();});
	
	
	//track changes at google analytics
	if(TRACK_USAGE){
		try {
			var pageTracker = _gat._getTracker("UA-9859743-1");
			pageTracker._trackPageview();
		} catch(err) {}
	}
}

Array.prototype.shuffle=function(){
	var newArr=[];
	while(newArr.length<this.length){
		var ind=Math.round(Math.random()*(this.length-1));
		var inArr = false;
		for(var i=0;i<newArr.length;i++)if(newArr[i]==ind)inArr=true;
		if(!inArr)newArr[newArr.length]=ind;
	}
	var shuffledArr=[];
	for(var i=0;i<newArr.length;i++)shuffledArr[i]=this[newArr[i]];
	return shuffledArr;
}
Ext.Element.prototype.scrollIntoViewAnim=function(container){
    var c = Ext.getDom(container) || Ext.getBody().dom;
    var el = this.dom;
    var o = this.getOffsetsTo(c), //el ofsets to container
        t = o[1] + c.scrollTop, //y offset + top scroll position, px of el
        b = t+el.offsetHeight; //bottom px of el
    var ch = c.clientHeight; //container height
    var ct = parseInt(c.scrollTop, 10); //container scroll top
    var cb = ct + ch; //px of container bottom
    var to = [t, c.scrollTop];
    var dif=Math.abs(t-ct);
    if (dif<50){
    	container.scrollTo('top',t + 350);
    	dif=350;
    }
    var dur=Math.min(Math.round(dif/1000),1);
    container.scrollTo('top',t,{duration:dur,easing:'easeOut'});
    return dur;
};

Array.prototype.toString=function(){
	return this.join(',');
}
//rounded box
var RoundedBox = {
	boxMarkup : [
			'<div>',
			'<div class="rounded-box-tl"><div class="rounded-box-tr"><div class="rounded-box-tc box-title"></div></div></div>',
			'<div class="rounded-box-ml"><div class="rounded-box-mr"><div class="rounded-box-mc box-content"></div></div></div>',
			'<div class="rounded-box-bl"><div class="rounded-box-br"><div class="rounded-box-bc box-footer"></div></div></div>',
			'</div>'].join(''),
	//for home page schedule
	homeBox : function (){
		var sb=this.topazBox();
		this.addCloseButton(sb);
		this.addContentLayerAndFade(sb);
		return sb;
	},
	scheduleBox : function (){
		var sb=this.blackBox();
		this.addCloseButton(sb);
		this.addContentLayerAndFade(sb);
		return sb;
	},
	blackBox : function(muOnly,location) {
		var mu = this.boxMarkup.replace(/(rounded-box-[a-z]{2})/g, "black-box $1 black-box-$1");
		if(muOnly) return mu;
		return this.smartBox(mu,location);
	},
	topazBox : function(muOnly,location) {
		var mu = this.boxMarkup.replace(/(rounded-box-[a-z]{2})/g, "topaz-box $1 topaz-box-$1");
		if(muOnly) return mu;
		return this.smartBox(mu,location);
	},
	goldBox : function(muOnly,location) {
		var mu = this.boxMarkup.replace(/(rounded-box-[a-z]{2})/g, "gold-box $1 gold-box-$1");
		if(muOnly) return mu;
		return this.smartBox(mu,location);
	},
	ltGoldBox : function(muOnly,location) {
		var mu = this.boxMarkup.replace(/(rounded-box-[a-z]{2})/g, "ltgold-box $1 ltgold-box-$1");
		if(muOnly) return mu;
		return this.smartBox(mu,location);
	},
	smartBox : function (markup,location) {
		var b = (location) ? Ext.get(location) : Ext.getBody() ;
		var sb = b.insertHtml('beforeEnd', markup, true);
		sb.endOpacity=1;
		sb.animate=true;
		sb.showDuration=0.75;
		sb.hideDuration=0.5;
		sb.showing=false;
		sb.setOpacity(0);
		sb.setVisible(false);
		sb.setTitle=function(title){
			var c = Ext.get(this.child('.box-title'));
			c.update(title);
		};
		sb.setContent=function(content){
			var c = Ext.get(this.child('.box-content'));
			c.update(content);
		};
		sb.showBox=function(){
			if(this.showing)return;
			this.showing=true;
			if(this.hasActiveFx())this.stopFx();
			if(this.animate !== false)var anim = { opacity: this.endOpacity , duration:this.showDuration};
			if(this.animate)this.setVisible(true).shift(anim);
			else this.setVisible(true).setOpacity(this.endOpacity);
			if(this.contentLayer){
				if(this.animate)this.contentLayer.setOpacity(0).setVisible(true).shift({opacity:1,duration:this.showDuration});
				else this.contentLayer.setVisible(true).setOpacity(1);
			}
		};
		sb.hideBox=function(remove){
			if(!this.showing)return;
			this.showing=false;
			remove=(remove)?true:false;
			if(this.hasActiveFx())this.stopFx();
			if(this.animate)var anim = { opacity: 0 , duration:this.hideDuration, callback:function(el){el.setVisible(false);}, remove:remove};
			if(this.isVisible()){
				if(this.animate){
					if(this.contentLayer)this.contentLayer.shift(anim);
					this.shift(anim);
				}
				else{
					if(this.contentLayer)this.contentLayer.setVisible(false);
					this.setVisible(false);
				}
			}
		}
		sb.setDimensions=function(height,width){
			var th=Ext.get(this.child('.box-title')).getHeight(), bh=Ext.get(this.child('.box-footer')).getHeight();
			var c = Ext.get(this.child('.box-content'));
			c.setHeight(height-th-bh);
			this.setWidth(width);
			if(this.contentLayer){
				this.contentLayer.setSize(c.getWidth(),height-20);
			}
		};
		sb.getTitleEl=function(){return Ext.get(this.child('.box-title'));}
		sb.getContentEl=function(){return Ext.get(this.child('.box-content'));}
		sb.getFooterEl=function(){return Ext.get(this.child('.box-footer'));}
		return sb;
	},
	addCloseButton:function(sb){
		var t=sb.getTitleEl();
		t.addClass("rounded-box-close");
		var x=t.insertHtml("beforeEnd","<span style='cursor:pointer;'>x</span>",true);
		x.on("click",function(){this.hideBox();},sb);
	},
	addContentLayerAndFade:function(sb,opac){
		var w=Ext.getBody().insertHtml("beforeEnd","<div class='rounded-box-content-layer x-hidden'></div>",true);
		w.setStyle("overflow","hidden");
		sb.contentLayer=w;
		w.anchor=function(sb){this.anchorTo(sb,'tl-tl',[0,16],false,true);};
		sb.getContentLayer=function(){return this.contentLayer;};
		opac = opac || 0.5;
		sb.endOpacity=opac;
	}
};

var showPrintButton=function(url){
	if(this.printButton)this.printButton.show({duration:0.4});
	else {
		//create the button	
		var pb=$g('divFooter').insertHtml('afterBegin','<div class="print-button-bg x-hidden"><div class="print-button"></div></div>',true);
		var pbc = pb.child('div');
		pbc.addClassOnOver("print-button-over").addClassOnClick("print-button-down");
		pb.alignTo(pb.parent(),'bl-bl',[100,-9]);
		pbc.alignTo(pb,'tl-tl',[3,2]);
		pbc.on("click",function(){
			window.open(url,null,"width=810,toolbar=yes,menubar=yes,scrollbars=yes");
		},this);
		pb.show({duration:0.4});
	}
};
