// JavaScript Document
//Contains global UI functions




//Global Loader:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//
//The Global loader currently provides 3 different sizes.  Small, Large, & Text (Text will only display text and no graphic)
//:::: binder = the div that will be matched in size and height by the white screen
//:::: text = text string to be displayed above the loader
//:::: size = takes a size parameter small OR large OR text (note: text removes the graphic and will only display the text past in the 'text' parameter)
//:::: newId = If declared, assigns an id to the loaderfor instances where multiple loading graphics may be present at once.  newId must be passed when clearLoad is called, if supplied to globalLoad
//
globalLoad = function (binder, text, size, newId) {
		lHeight = $(binder).getHeight();
		lWidth = $(binder).getWidth();
		Element.insert($(binder), '<div id="contentLoader" class="contentLoader" style="height:' + lHeight + 'px;width:' + lWidth + 'px;" align="center"><div id="loaderImg' + size + '">' + text +'</div></div>');
		
		if (typeof newId != "undefined") {
			$('contentLoader').id = "contentLoader" + newId;
		}		
}


//Clear loader
clearLoad = function (closeId) {
	
	if (typeof closeId != "undefined") {
		Element.remove($('contentLoader' + closeId));
	} else {
		Element.remove($('contentLoader'));
	}
}







//Global Lightwindow:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/*
Note: globalWin utilizes the globalBase element that is created with the DE global header and footer
- to init an instance of the global light window, call globalWin('path-to-file','title of light window',true or false to hide embedded elements)
- globalWin will adapt to the size of the file being called.  The file should not contain body or html tags or links to styles.  Stylesheets, etc should be loaded into the parent document.
- a height and width must be defined the the file being loaded into the light window
*/

//check for IE
var IE = document.all?true:false;

globalWin = function (path,title,hideEmbed) {
	
	//hide flash objects
	var flashEls = $$("object");
	for (var i=0; i<flashEls.length; i++) {
		flashEls[i].style.visibility = "hidden";
	}
		

	
	
	//special exception for player to hide embedded media
	if (hideEmbed == 'true'){
		var vidHeight = $('vidWindow').getHeight();
		if (vidHeight > 300) {
			$('placeholder').style.height = vidHeight+"px";
		}
		embedHide = 1;
		$('vidWindow').style.position = "absolute";
		$('vidWindow').style.left = "-1200px";
	} else {
		embedHide = 0;
	}
	
	
	//create the screen
	var win = "<div id='globalWin' onclick='clearWin();' align='center'></div>";
	
	//insert into DOM
	Element.insert($('globalBase'), win);
	
	//set it's width and height
	var newDim = document.viewport.getHeight()
	var glblDim = $('globalBase').getHeight()
	if (newDim < glblDim){
		newHt = glblDim;	
	}else{
		newHt = newDim;	
	}

	$('globalWin').style.height = newHt+"px";
	$('globalWin').style.width = "100%";
	
	//if IE remove els by default	
	if	(IE) {
		removeEls('hide');
	}
	
	
	//create the content window
	var conWin = "<div id='conWin' align='center'><div id='winLoader'>Loading...<br><a href='#' onclick='clearWin();' id='winCancel'>cancel</a></div><div id='conWinInner' style='top:40px;visibility:hidden;' align='center'></div></div>";
	//insert into DOM
	$('globalWin').insert({before: conWin});
	$('conWinInner').style.visibility = "hidden";
	


	Event.observe(window, 'scroll', function() {
		if ($('globalWin')){										 
			resizeWin(1);
		}
	});


	Event.observe(window, "resize", function() {
		if ($('globalWin')){										 
			resizeWin(1);
		}
	});
	
	
	//creat the content window
	new Ajax.Updater('conWinInner', path, {
  		parameters: {  },
		evalScripts: true,
		onComplete: function(){
			var badTag = $$('#conWinInner title');
			var badTag2 = $$('#conWinInner meta');
			
			//var badTags = $$('title');
			//Element.remove($$('title'));
			for (var i=0; i<badTag.length; i++) {
				Element.remove(badTag[i]);
			}
			for (var i=0; i<badTag2.length; i++) {
				Element.remove(badTag2[i]);
			}
			
			var windowContent = $('conWinInner').firstDescendant();
			var conWidth = $(windowContent).getWidth();
			$('conWinInner').style.width = conWidth+"px";
			
			$('conWinInner').style.border = "1px solid #565656";
			//insert the header
			var titleWin = "<h4 class='win' align='left'>"+title+"</h4>";
			$('conWinInner').insert({top: titleWin});
			//insert close window link
			var closeWin = "<div id='closeWin' onclick='clearWin();'>X close</div>";
			$('conWinInner').insert(closeWin);
			
			//get the viewport height and center the content if the viewport is tall enough
			//var vpH = document.viewport.getHeight();
			//var cwH = $('conWinInner').getHeight();
			//var diff = (vpH - cwH) / 2;
			//if (diff > 40){
			//	$('conWinInner').style.top = diff+"px";
			//}
			//clearLoad();
			resizeWin();
			Element.remove($('winLoader'));
			$('conWinInner').style.visibility = "";
			
		}
	});
	
}

removeEls = function(act) {
	if (act == 'hide'){
	
		$$('select').each(function(s,index) {
				s.hide();
		});
	
	} else {
	
		$$('select').each(function(s,index) {
			s.show();
		});
		
	}
	
}



resizeWin = function(observeCall) {
	//set a default for now
	var element = 'conWinInner';
	if($(element) != null) {
		if(typeof window.innerHeight != 'undefined') {
			
			yWithScroll = document.body.scrollHeight;
			var maxTop = Math.round(yWithScroll - $(element).getHeight());
			
			var newHeight = Math.round(document.viewport.getScrollOffsets().top + 
			((window.innerHeight - $(element).getHeight()))/2);

			if (newHeight < 0) {
				var newHeight = 1;
			} else if (newHeight > maxTop){//if the new position is great than the height of the lightwindow - body height
				var newHeight = maxTop - 1;
			}
			
			if (window.innerHeight < $(element).getHeight() && observeCall != 1){
				$(element).style.top = newHeight+'px';
			} else if (window.innerHeight > $(element).getHeight()){
				$(element).style.top = newHeight+'px';
			}
				
		} else {//this is IE primarily 
			
			yWithScroll = document.body.scrollHeight;
			var maxTop = Math.round(yWithScroll - $(element).getHeight());
			
			var newHeight = Math.round(document.viewport.getScrollOffsets().top + 
			((document.viewport.getHeight() - $(element).getHeight()))/2)
			
			if (newHeight < 0) {
				var newHeight = 1;
			} else if (newHeight > maxTop){
				var newHeight = maxTop - 1;
			}
		
			
			if (document.viewport.getHeight() < $(element).getHeight() && observeCall != 1){
				$(element).style.top = newHeight+'px';
			} else if (document.viewport.getHeight() > $(element).getHeight()){
				$(element).style.top = newHeight+'px';
			}
			
		}
	}
}

clearWin = function () {
	Element.remove($('globalWin'));
	Element.remove($('conWin'));
	
	var flashEls = $$("object");
	for (var i=0; i<flashEls.length; i++) {
		flashEls[i].style.visibility = "visible";
	}
	
	
	
	if	(IE) {
		removeEls('show');
	}
	
	

	
	
	//special exception for player to hide embedded media
	if (embedHide == 1){
		embedHide = 1;
		$('vidWindow').style.position = "relative";
		$('vidWindow').style.left = "0px";
	}
	
	
}
