// Javascript file

var xmlDoc;
var xmlDocVidSrc;
var xmlDocVidType;

//change bg_colors of text fields and text areas
Event.observe(window, "load", function() {
	//check to see if hash is set
	setInterval(pollHash, 500);
	
	// load xml for lightbox buttons
	new Ajax.Request('/xml/lightbox.xml', {
		parameters: {},
		method: 'get',
		onSuccess: function(request) {
			try {
				xmlDoc = request.responseXML.documentElement;
			  } catch(e) {
			    //alert(e.message);
			  }  
		},
		onFailure: function(request) {
			//alert('Could not load XML file');
		}
	});

	if ($('smallTabs')) {
		var links = $('smallTabs').select('li');
		for (var i=0; i<=links.length-1; i++) {
			$(links[i]).observe('click', function(e) {
				e.stop();
				links.each(function(e){ 
					e.removeClassName("active-" + e.down('a').innerHTML.replace(" ",""));
				});
				$('intro').select('div.launch').invoke('remove');
				this.addClassName('active-' + this.down('a').innerHTML.replace(" ",""));
				var currentImage = document.body.style.backgroundImage;
				var newImage = this.className.slice(0,this.className.indexOf(' '));
				// special case for direct mail
				if (newImage == 'directMail') newImage = 'direct-mail';
				var newBackground = currentImage.replace(/[^\/]+\.jpg/, newImage+'.jpg');
				document.body.style.backgroundImage = newBackground;
				addLightboxButtons(newImage);
				setHash(newImage);
			});
		}
		$$('#content a[rel]').each(function(e){
			var activeLink = $$('#smallTabs .' + e.rel);
			if(activeLink){
				e.observe("click",function(f){
					f.stop();
					links.each(function(g){ 
						g.removeClassName("active-" + g.down('a').innerHTML.replace(" ",""));
					});
					activeLink[0].addClassName('active-' + activeLink[0].down('a').innerHTML.replace(" ",""));
					$('intro').select('div.launch').invoke('remove');
					var newImage = this.rel;
					if (newImage == 'directMail') newImage = 'direct-mail';
					var currentImage = document.getElementById("bgImage").style.backgroundImage;
					var newBackground = currentImage.replace(/[^\/]+\.jpg/, newImage+'.jpg');
					document.getElementById("bgImage").style.backgroundImage = newBackground;
					addLightboxButtons(newImage);
					setHash(newImage);
					window.scrollTo(0,0);
				});
			}
		});
	}
});

function intialiseStateFromURL(){
	var idToShow = window.location.hash;
	if(idToShow.length > 1){
		setUpCaseStudy(idToShow.replace("#",""));
	}
}

function setUpCaseStudy(idToShow){
	
	//remove active
	var links = $('smallTabs').select('li');
	for (var i=0; i<=links.length-1; i++) {
		var suffix = "active-"+links[i].down('a').innerHTML.replace(" ","");
		links[i].removeClassName(suffix);
	};
	if(idToShow == "direct-mail"){
		idToShow = "directMail";
	}
	//set up new link
	var activeLink = $$('#smallTabs .' + idToShow);
	activeLink[0].addClassName('active-' + activeLink[0].down('a').innerHTML.replace(" ",""));
	$('intro').select('div.launch').invoke('remove');
	var newImage = idToShow;
	if (newImage == 'directMail') newImage = 'direct-mail';
	var currentImage = document.getElementById("bgImage").style.backgroundImage;
	var newBackground = currentImage.replace(/[^\/]+\.jpg/, newImage+'.jpg');
	document.getElementById("bgImage").style.backgroundImage = newBackground;
	addLightboxButtons(newImage);
}

function ourWorkSlideshow(mediaUid) {
	//Old flash method
	//flash_in_lightbox.embed('/swf/media-player/mediaPlayer.swf', { uid: mediaUid }, { wmode: "transparent", allowscriptaccess: "always" }, false);
	var ov = false; if(mediaUid == "overview-video"){ov=true; xmlDocVidSrc = "/video/our-work/BESTENGINEV2H264.flv";}
	/* New multi format method */
	if($j.browser.msie && $j.browser.version < 9) {
		//get weird behviour from other components on the site in ie when using swfobject so maintain old method for old ie browsers
		flash_in_lightbox.embed('/swf/media-player/mediaPlayer.swf', { uid: mediaUid }, { wmode: "transparent", allowscriptaccess: "always" }, false);
	}else{
		if (xmlDocVidType == "video" || ov){
			vlb.embedVideos({ uid: mediaUid }, getVidSrc(mediaUid), '/swf/media-player/mediaPlayer.swf');
		}else if (xmlDocVidType == "slideshow" && swfobject.hasFlashPlayerVersion("1")){
			//alert(xmlDocVidType);
			flash_in_lightbox.embed('/swf/media-player/mediaPlayer.swf', { uid: mediaUid }, { wmode: "transparent", allowscriptaccess: "always" }, false);
		}
	}	
	return false;
}

function getVidSrc (mediaUid){
	if (xmlDoc) {
		var mediaNodes = xmlDoc.getElementsByTagName("media");
		for (var i=0; i<=mediaNodes.length-1; i++) {
			var media = mediaNodes[i];
			//console.log(media.getAttribute("uid") + " vs " + mediaUid);
			if(media.getAttribute("uid") === mediaUid){
				var dcv = media.getElementsByTagName("element");
				return dcv[0].getAttribute("src");
			}
		}
	}
	return "nothing here :(";
}

function addLightboxButtons(className) {
	
	var hasLink = false;
	var prevclient = "";
	var prevtype = "";
	if (xmlDoc) {
		var mediaNodes = xmlDoc.getElementsByTagName("media");
		//alert(mediaNodes.length-1+' nodes');
		for (var i=0; i<=mediaNodes.length-1; i++) {
			var media = mediaNodes[i];
			if (document.body.hasClassName(media.getAttribute("client")) && media.getAttribute("type") == className) {
				//alert('match');
				var uid = media.getAttribute("uid");
				var client = media.getAttribute("client");
				var type = media.getAttribute("type");
				var button = media.getAttribute("button");
				var buttonX = media.getAttribute("buttonX");
				var buttonY = media.getAttribute("buttonY");
				var noflash = media.getAttribute("noflash");
				var buttonHTML = new Element('div');
				
				if(button == 'playSlideshow' && !(swfobject.hasFlashPlayerVersion("1"))){ button = "noFlashPlayer"; }
				
				buttonHTML.addClassName('launch '+type+' '+button);
				
				try {
					var dcv = media.getElementsByTagName("element");
					if(dcv[0].getAttribute("type")){
						xmlDocVidType = dcv[0].getAttribute("type");
						/*if(xmlDocVidType == "slideshow"){
							var imgzs = dcv[0].getElementsByTagName("image");
							var zxxc = "";
							for(var zpy=0; zpy<=imgzs.length-1; zpy++) {
								zxxc+=imgzs[zpy].getAttribute("src");
								zxxc+="\n ";
							}
							alert(zxxc);
						}*/
					}
					if(dcv[0].getAttribute("src")){
						xmlDocVidSrc = dcv[0].getAttribute("src");
					}
				} catch(e) {}
				
				if (type == 'online') {
					var href = media.getAttribute("href");
					buttonHTML.innerHTML = '<a href="'+href+'" rel="external">Launch Website</a>';	
//				} else if (type == 'onlineandTV') {
//					var href = media.getAttribute("href");
//					buttonHTML.innerHTML = '<a href="'+href+'" rel="external">Play</a>';	
				} else if (xmlDocVidType == "slideshow" && !(swfobject.hasFlashPlayerVersion("1"))){
				
					buttonHTML.innerHTML = '<a onclick="ourWorkSlideshow(\''+uid+'\'); return false;" href="'+noflash+'">Play</a>';
				} else {
					buttonHTML.innerHTML = '<a onclick="ourWorkSlideshow(\''+uid+'\'); return false;" href="'+noflash+'" rel="lightbox">Play</a>';
				}
				if(client == 'dcsf' && type == 'film'){
					// hack ie7 and shift buttons a further 320px to the left
					if (Prototype.Browser.IE7) {
						buttonX -= 325;
					}
					buttonHTML.setStyle({ marginLeft: buttonX+"px", top: buttonY+"px" });
				}
				if(client == 'skybb' && type == 'onlinevid'){
					// hack ie7 and shift buttons a further 320px to the left
					if (Prototype.Browser.IE7) {
						buttonX -= 325;
					}
					buttonHTML.setStyle({ marginLeft: buttonX+"px", top: buttonY+"px" });
				}
				if(client == 'skybb' && type == 'tv-ident'){
					// hack ie7 and shift buttons a further 320px to the left
					if (Prototype.Browser.IE7) {
						buttonX -= 325;
					}
					buttonHTML.setStyle({ marginLeft: buttonX+"px", top: buttonY+"px" });
				}
				//if($('intro').down('div') && (client!=prevclient) && (type!=prevtype)){
				//	$('intro').down('div').replace(buttonHTML);
				//} else {
					$('intro').insert({'top': buttonHTML});
				//}
				externalLinks();
				hasLink = true;	
				//prevclient = client;
				//prevtype = type;
			} else {
				//alert('not found');
			}
		}
	} else {
		//alert('xmlDoc is empty');
	}
	if(!hasLink){
		//alert('no link');
		if($('intro').down('div')){
			// alert('div exists');
			$('intro').down('div').remove();
		}
	}
}
