

/*

Some miscellaneous functions plus page-load handling.
========================================================
*/





/*
	Hide / show expandable content areas
*/
function toggleExpando(elmnt,timer){
	
	var d;
	switch(timer){
		case 'slow':
			d = 1;
			break;
		case 'mid':
			d = 0.8;
			break;
		case 'fast':
			d = 0.5;
			break;
		default:
			d = 1;
			break;
	}
	
	var oHeader = $(elmnt + '_header');
	var oContent = $(elmnt + '_content');

	if (oHeader.hasClassName('expanded')){
		oContent.setStyle({height:oContent.scrollHeight+'px'});
		new Effect.BlindUp(oContent, {duration:d, transition:Effect.Transitions.EaseFromTo, queue: {position:'end', scope: 'expandos'}});
		oHeader.removeClassName('expanded');
	}else{
		// BlindDown needs height specified. But we can't specify it (see comment below). This is fugly, but it works.
		oContent.style.display = 'block';
		oContent.setStyle({height:oContent.scrollHeight+'px'});
		oContent.style.display = 'none';
		new Effect.BlindDown(oContent, {duration:d, transition:Effect.Transitions.EaseFromTo, queue: {position:'end', scope: 'expandos'}});
		oContent.setStyle({height:''});	// nested expando elements need flexible height, otherwise the parent will crop any expanding children
		oHeader.addClassName('expanded');
		pageTracker._trackPageview('expando/' + elmnt);
		//console.log('expando/' + elmnt);
	}
}








/*
News scroller control
*/
function scrollVertical(value, element, slider) {
	element.scrollTop = Math.round(value/slider.maximum*(element.scrollHeight-element.offsetHeight));
}







/*

Client login

*/
function clientWin(){

	if (Shadowbox){
		
		var sContent = '<div style="margin:100px;text-align:center;"><h1>Coming soon...</h1></div>';
		
		Shadowbox.open({
			type:       'html',
			content:    sContent,
			height:     449,
			width:      800
		});
	}
}









/*
misc stuff
*/


function addLeadingZero(i){
	var r = i;
	if (!isNaN(i)){r = (i < 10) ? '0' + i : i;}
	return r;
}


function getXMLItemText(oNode,sTagName){
	return (Prototype.Browser.IE) ? oNode.getElementsByTagName(sTagName)[0].text : oNode.getElementsByTagName(sTagName)[0].textContent;
}


function externalLinks(){
	//	External links to open in new windows. And stop that damn focus box.
	$$('a').each(function(obj){
		obj.observe('focus', function(){this.blur()});
		if (obj.readAttribute('rel') == 'external'){
			obj.target = "_blank";
		}
	});
}












/* Flash control	*/

function reloadShowreel(){
	// reload the main or side showreels when their shadowbox equivalent pops up
	// this stops them playing.
	if ($('showreel_side_swf')){
		swfobject.embedSWF("/fla/showreel190x106.swf", "showreel_side_swf", "190", "106", "8.0.0");
	}
	if ($('showreel_swf')){
		swfobject.embedSWF("/fla/showreel410x230.swf", "showreel_swf", "410", "230", "8.0.0");
	}
}


function getMovieName(movieName) {
	if (navigator.appName.indexOf("Microsoft") != -1) {
		return window[movieName];
	}
	else {
		return document[movieName];
	}
}


function pauseFlash(sObjectName){
	getMovieName(sObjectName).callPauseMovie();
}



/*
	Load any Flash
*/
function loadFlash(){

	if ($('showreel_side_swf')){
		swfobject.embedSWF("/fla/showreel190x106.swf", "showreel_side_swf", "190", "106", "8.0.0");
	}
	if ($('showreel_swf')){
		swfobject.embedSWF("/fla/showreel410x230.swf", "showreel_swf", "410", "230", "8.0.0");
	}
	if ($('creds_swf')){
		swfobject.embedSWF("/fla/190x97creds.swf", "creds_swf", "190", "97", "8.0.0");
	}
	if ($('menzies_banner_swf')){
		swfobject.embedSWF("/fla/410x230menzies_banner4.swf", "menzies_banner_swf", "410", "230", "8.0.0");
	}
	if ($('shameless_swf')){
		swfobject.embedSWF("/fla/410x230shameless_image3.swf", "shameless_swf", "410", "230", "8.0.0");
	}
}













/*
	Initialise page on dom loaded
*/



document.observe("dom:loaded", function() {
	
	loadFlash();

	
	//	Init pagination 
	if ($('pagination_links_full') || $('pagination_links_side')){
		if (currPag == 'undefined') { currPage = 1};
		totalPag = $$('.page').length;
		setPaginationLinks();
	}
	
	
	
	//	Init any Shadowbox images
	
	if (($$('[rel="shadowbox"]')) || ($$('[rel="shadowbox[casestudy]"]'))){
		
		//	init shadowbox
		var shadowboxOptions = {overlayBgImage: 'images/overlay-85_white.png', overlayColor: '#FFFFFF'};
		Shadowbox.init(shadowboxOptions);
	}
	

	
	//	Populate news content

	if ($('newsContent')){
		
		var newsURL = '/rss.xml?nocache=' + Math.floor(Math.random()*10000);
		
		new Ajax.Request(newsURL, {
			method: 'get',
			onSuccess: function(transport) {
				
				var sNewsHTML = "";
				var oArticle;
				var oXML = transport.responseXML;
				var aArticles = oXML.getElementsByTagName("item");
				var iArticleCount = (aArticles.length > 10) ? 10 : aArticles.length;
				
				var oDate = new Date();
				
				for ( var i = 0; i < iArticleCount; i++ ) {
					
					oArticle = aArticles[i];
					
					var sTitle = getXMLItemText(oArticle,"title");
					var sText = getXMLItemText(oArticle,"description");
					var sLink = getXMLItemText(oArticle,"link");
					var sLinkText = getXMLItemText(oArticle,"category");
					if (sLinkText==''){sLinkText = sLink;}
					var sDate = getXMLItemText(oArticle,"pubDate");
					
					
					oDate.setTime(Date.parse(sDate));
					
					sNewsHTML += '<div class="newsitem">';
					sNewsHTML += '	<p class="newsdate">' + oDate.getDate() + '.' + (oDate.getMonth()+1) + '.' + oDate.getFullYear() + '</p>';
					//sNewsHTML += '	<p class="newsdate">' + sDate + '</p>';
					sNewsHTML += '	<p class="newstitle">' + sTitle + '</p>';
					sNewsHTML += '	<p class="newstext">' + sText + '</p>';
					if (sLink != ''){
						var sLinkId = "news_ext_link_" + i
						sNewsHTML += '	<p class="newslink"><a id="'+ i +'" class="bodylink" title="' + sLinkText + '" href="' + sLink + '" rel="external" onclick="pageTracker._trackPageview(\'news clickthrough - '+ sLink +'\');">' + sLinkText + '</a></p>'
						
					};
					sNewsHTML += '</div>';
				}
				
				$('newsContent').update(sNewsHTML);
				externalLinks();
				
				//	Create news slider control
				var slider1 = new Control.Slider('newsScrollHandle', 'newsScrollTrack', {
					axis: 'vertical',
					onSlide: function(v) { scrollVertical(v, $('newsContent'), slider1);  },
					onChange: function(v) { scrollVertical(v, $('newsContent'), slider1); }
				});
				
				
		
				// disable vertical scrolling if text doesn't overflow the div
				if ($('newsContent').scrollHeight <= $('newsContent').offsetHeight) {
					slider1.setDisabled();
					$('newsScrollTrack').hide();
				}
				
			},
			
			onFailure: function(transport){
				$('newsContent').update('Error fetching news');
			}
			
		});
		
	
	}else{
		externalLinks();
	}
	// end if ($('newsContent'))
	
	
	
	
	
	
	//	End of page loading functions.

	
});





