// This windows onload event is replaced by a js call below each template
// This is done to allow the JS to be initialized without waiting for all images to be loaded
//YAHOO.util.Event.addListener(window,'load',pageLoaders);

/* Id							: $Id: //depot-ictweb/web/main/www/tomtom.com/lib/js/pp.js#12 $
 * Header					: $Header: //depot-ictweb/web/main/www/tomtom.com/lib/js/pp.js#12 $
 * DateTime				: $DateTime: 2008/03/27 16:53:38 $
 * Change					: $Change: 170873 $
 * Perforce File	: $File: //depot-ictweb/web/main/www/tomtom.com/lib/js/pp.js $
 * Revision				: $Revision: #12 $
 * Author					: $Author: frko $
 * Created by			: YAHOO
 * Creation Date	: 29/08/2007
 */

function pageLoaders() {
	features.init();
	overviews.init();
	experience.init();
}

var banner = {
	init : function (movie, xmlOrHighlights) {
		ufoInit = { movie:"/lib/flash/milan/bannerPlayer/bannerPlayer.swf", width:"760", wmode:"transparent", height:"282", majorversion:"8", build:"0", name:"bannerMovie", id:"bannerMovie", swLiveConnect:"true", allowscriptaccess:"always" };
		if (xmlOrHighlights == true) {
			ufoInit.flashvars = "swfMovie=" + escape(movie) + '&xmlFile=HIGHLIGHTSPAGE';
		}
		else if (xmlOrHighlights) {
			ufoInit.flashvars = "swfMovie=" + escape(movie) + '&xmlFile=' + escape(xmlOrHighlights);
		} else {
			ufoInit.flashvars = "swfMovie=" + escape(movie);
		}
		UFO.create(ufoInit, 'flash-banner');
	}
}

function stopBanner () {
	var bannerMovie = window.bannerMovie || document.bannerMovie;
	if (bannerMovie)
	{
		bannerMovie.SetVariable("stopMovie", "STOP");
	}
}

var features = {
	init : function () {
		this.currentBox = 0;
		this.boxes = YAHOO.util.Dom.getElementsByClassName('info-titel', 'a');
		if (this.boxes.length > 0) {
			for(var i=0; i<this.boxes.length; i++) {
				this.boxes[i].nr = i;
				this.boxes[i].div = this.boxes[i].parentNode;
				this.boxes[i].subdiv = YAHOO.util.Dom.getElementsByClassName('info-content', 'div', this.boxes[i].div)[0];
				this.boxes[i].media = YAHOO.util.Dom.getElementsByClassName('flashvlak', 'div', this.boxes[i].div)[0] ? YAHOO.util.Dom.getElementsByClassName('flashvlak', 'div', this.boxes[i].div)[0] : YAHOO.util.Dom.getElementsByClassName('media', 'div', this.boxes[i].div)[0] ;
				this.boxes[i].height = this.boxes[i].subdiv.offsetHeight - 30;
				this.boxes[i].opened = false;
				YAHOO.util.Event.addListener(this.boxes[i],'click',this.toggleBox, [this, this.boxes[i].nr], true);
				YAHOO.util.Dom.addClass(this.boxes[i].div, 'info-blok-closed');
			}
			/* initially open first box */
			setTimeout(animateFirst, 1500);
		}
	},
	toggleBox : function (e, args) {
		var base = args[0];
		var boxnr = args[1];
		
		base.boxes[boxnr].blur();
		if (base.boxes[boxnr].opened) {
			YAHOO.util.Dom.addClass(base.boxes[boxnr].div, 'info-blok-closed');
			base.currentBox = -1;
			base.boxes[boxnr].opened = false;
		} else {
			if (base.currentBox > -1) {
				YAHOO.util.Dom.addClass(base.boxes[base.currentBox].div, 'info-blok-closed');
				base.boxes[base.currentBox].opened = false;
			}
			YAHOO.util.Dom.removeClass(base.boxes[boxnr].div, 'info-blok-closed');
			base.boxes[boxnr].opened = true;
			base.currentBox = boxnr;
		}
	}
}

function animateFirst () 
{
  var alsoShowFirst = true;
  for(var i=0; i<features.boxes.length; i++) 
  {
    if (features.boxes[i].opened == true)
    {
      alsoShowFirst = false;
    }
  }
  if (alsoShowFirst == true)
  {
    features.boxes[0].subdiv.style.height = "0";
  	if (document.all) features.boxes[0].media.style.display = 'none';
  	YAHOO.util.Dom.removeClass(features.boxes[0].div, 'info-blok-closed');
  	attributes = {
  		height: { from:0, to: features.boxes[0].height }
  	}
  	anim = new YAHOO.util.Motion(features.boxes[0].subdiv, attributes,1, YAHOO.util.Easing.easeOut);
  	anim.onComplete.subscribe(showFirst);
  	anim.animate();
  }
}
function showFirst () {
	if (document.all) features.boxes[0].media.style.display = 'block';
	features.boxes[0].subdiv.style.height = features.boxes[0].height + "px";
	features.currentBox = 0;
	features.boxes[0].opened = true;
}
var overviews = {
	init : function () {
		this.mediaComponents = YAHOO.util.Dom.getElementsByClassName('overviewcomponent', 'div');
		for (var i=0; i < this.mediaComponents.length; i++) {
			this.mediaComponents[i].ufoInit = { movie:"/lib/flash/milan/overview/videoPlayer.swf", width:"323", height:"240", majorversion:"8", build:"0", wmode:"transparent", allowscriptaccess:"always" };
			this.mediaComponents[i].videoLayer = YAHOO.util.Dom.get('movieplayer' + i);
			
			this.mediaComponents[i].mediaLinks = YAHOO.util.Dom.getElementsByClassName('feature-link-jsmanipulate','a');
			
			if(this.mediaComponents[i].mediaLinks.length == 0)
			{
				this.mediaComponents[i].mediaLinks = this.mediaComponents[i].getElementsByTagName('a');
			}
			
			for (var j=0; j < this.mediaComponents[i].mediaLinks.length; j++ ) {
				// replace link for user that have javascript
				this.mediaComponents[i].mediaLinks[j].href = "javascript:;";
				// add mediasources to link
				this.mediaComponents[i].mediaLinks[j].mediaSrc = this.mediaComponents[i].mediaLinks[j].rel;
				// add texts to link
				this.mediaComponents[i].mediaLinks[j].texts = this.mediaComponents[i].mediaLinks[j].name;
				// preload images if media to show is an image
				if (this.mediaComponents[i].mediaLinks[j].mediaSrc.indexOf('video_xml') < 0) {
					var img = new Image();
					img.src = this.mediaComponents[i].mediaLinks[j].mediaSrc;
				}
				YAHOO.util.Event.addListener(this.mediaComponents[i].mediaLinks[j],'click',this.showMedia, [this, this.mediaComponents[i].mediaLinks[j], this.mediaComponents[i]], true);
			}
			// select first link in each component
			this.mediaComponents[i].currentMovieLink = this.mediaComponents[i].mediaLinks[0];
			this.showMedia(null, [this, this.mediaComponents[i].mediaLinks[0], this.mediaComponents[i]]);
		}
	},
	showMedia : function (e, args) {
		var base = args[0];
		var linkClicked = args[1];
		if (!linkClicked) return;
		var mediaComponent = args[2];
		var mediaSrc = linkClicked.mediaSrc.split('|');
		var texts = linkClicked.texts.split('|');
		
		YAHOO.util.Dom.removeClass(mediaComponent.currentMovieLink.parentNode, 'selected');
		YAHOO.util.Dom.addClass(linkClicked.parentNode, 'selected');
		mediaComponent.currentMovieLink = linkClicked;

/*
	 	ATTTENTION: calling "UFO.hasFlashVersion(8, 0)" DOESN'T WORK unless, 
		you have initialised the UFO first, otherwise the hasFlashVersion ALWAYS returns FALSE
*/

		var CanDoFlash = 0;
		if (mediaSrc[0].indexOf('video_xml') > 0 && mediaSrc.length > 1) 
		{
			// media element is Flash video
			mediaComponent.ufoInit.flashvars = "xmlFile=" + escape(mediaSrc[0]);
			UFO.create(mediaComponent.ufoInit, mediaComponent.videoLayer.id);

			if (UFO.hasFlashVersion(8, 0)) 
			{
				CanDoFlash = 1;
			}
		} 

		if (CanDoFlash == 0)
		{
			// user has no flash, or media to show ia an image
			// src of image is last element
			mediaSrc = mediaSrc[mediaSrc.length - 1];
			
			// delete all childnodes
			while (mediaComponent.videoLayer.childNodes.length > 0) {
				mediaComponent.videoLayer.removeChild(mediaComponent.videoLayer.childNodes[0]);
			}
			// create image overlay
			var newOverlay = document.createElement('div');
			newOverlay.className = "image-overlay";
			mediaComponent.videoLayer.appendChild(newOverlay);
			
			// create image 
			var newImg = document.createElement('img');
			newImg.src = mediaSrc;
			newImg.style.height = '240px';
			mediaComponent.videoLayer.appendChild(newImg);
		}

		// create textbrowser
		if (mediaComponent.videoLayer.parentNode.textbrowser) {
			mediaComponent.videoLayer.parentNode.textbrowser.P.texts = texts;
			mediaComponent.videoLayer.parentNode.textbrowser.P.current = 0;
			mediaComponent.videoLayer.parentNode.textbrowser.prev.style.display = 'none';
			if (texts.length < 2) {
				mediaComponent.videoLayer.parentNode.textbrowser.next.style.display = 'none';
			} else {
				mediaComponent.videoLayer.parentNode.textbrowser.next.style.display = 'block';
			}
			mediaComponent.videoLayer.parentNode.textbrowser.P.innerHTML = texts[mediaComponent.videoLayer.parentNode.textbrowser.P.current];
			if (document.all) return false;
			return;
		}
		var textbrowser = document.createElement('div');
		textbrowser.className = "textbrowser";
		mediaComponent.videoLayer.parentNode.textbrowser = textbrowser;
		mediaComponent.videoLayer.parentNode.appendChild(textbrowser);

		// create p in textbrowser
		var newP = document.createElement('p');
		newP.texts = texts;
		newP.current = 0;
		newP.innerHTML = texts[newP.current];
		textbrowser.appendChild(newP);
		textbrowser.P = newP;

		// create prevLink
		var prevLink = document.createElement('a');
		prevLink.href="javascript:;"
		prevLink.className = "prev";
		prevLink.style.display = 'none';
		prevLink.browser = newP;
		textbrowser.appendChild(prevLink);
		prevLink.onclick = function () {
		}
		
		// create nextLink
		var nextLink = document.createElement('a');
		nextLink.href="javascript:;";
		nextLink.className = "next";
		if (texts.length < 2) nextLink.style.display = 'none';
		nextLink.browser = newP;
		textbrowser.appendChild(nextLink);
		textbrowser.next = nextLink;
		textbrowser.prev = prevLink;
		
		nextLink.prev = prevLink;
		prevLink.next = nextLink;

		nextLink.onclick = function () {
			this.browser.current++;
			this.browser.innerHTML = this.browser.texts[this.browser.current];
			if (this.browser.current == this.browser.texts.length - 1) this.style.display = 'none';
			this.prev.style.display = 'block';
		}
		prevLink.onclick = function () {
			this.browser.current--;
			this.browser.innerHTML = this.browser.texts[this.browser.current];
			if (this.browser.current == 0) this.style.display = 'none';
			this.next.style.display = 'block';
		}

		// fix IE bug
		if (document.all) return false;
	}
}

var experience = {
	init : function () {
		this.experienceComponents = YAHOO.util.Dom.getElementsByClassName('flash-thumbvlak', 'div');
		for (var i=0; i < this.experienceComponents.length; i++) {
			this.experienceComponents[i].ufoInit = { movie:"/lib/flash/milan/overview/videoPlayer.swf", width:"323", height:"240", majorversion:"8", build:"0", wmode:"transparent", allowscriptaccess:"always" };
			this.experienceComponents[i].videoLayer = YAHOO.util.Dom.get('movieplayer' + i);
			this.experienceComponents[i].mediaLinks = this.experienceComponents[i].getElementsByTagName('a');
			for (var j=0; j < this.experienceComponents[i].mediaLinks.length; j++ ) {
				// replace link for user that have javascript
				this.experienceComponents[i].mediaLinks[j].href = "javascript:;";
				// add mediasources to link
				this.experienceComponents[i].mediaLinks[j].mediaSrc = this.experienceComponents[i].mediaLinks[j].rel;
				// add texts to link
				this.experienceComponents[i].mediaLinks[j].texts = this.experienceComponents[i].mediaLinks[j].name;
				// preload images if media to show is an image
				if (this.experienceComponents[i].mediaLinks[j].mediaSrc.indexOf('video_xml') < 0) {
					var img = new Image();
					img.src = this.experienceComponents[i].mediaLinks[j].mediaSrc;
				}
				YAHOO.util.Event.addListener(this.experienceComponents[i].mediaLinks[j],'click',this.showMedia, [this, this.experienceComponents[i].mediaLinks[j], this.experienceComponents[i]], true);
			}
			// select first link in each component
			this.experienceComponents[i].currentMovieLink = this.experienceComponents[i].mediaLinks[0];
			this.showMedia(null, [this, this.experienceComponents[i].mediaLinks[0], this.experienceComponents[i]]);
		}
	},
	showMedia : function (e, args) {
		var base = args[0];
		var linkClicked = args[1];
		if (!linkClicked) return;
		var experienceComponents = args[2];
		var mediaSrc = linkClicked.mediaSrc.split('|');
		var texts = linkClicked.texts.split('|');
		
		YAHOO.util.Dom.removeClass(experienceComponents.currentMovieLink, 'selected');
		YAHOO.util.Dom.addClass(linkClicked, 'selected');
		experienceComponents.currentMovieLink = linkClicked;

		if (mediaSrc[0].indexOf('video_xml') > 0 && mediaSrc.length > 1 && UFO.hasFlashVersion(8, 0)) {
			// media element is Flash video
			experienceComponents.ufoInit.flashvars = "xmlFile=" + escape(mediaSrc[0]);
			UFO.create(experienceComponents.ufoInit, experienceComponents.videoLayer.id);
		} else {
			// user has no flash, or media to show ia an image
			// src of image is last element
			mediaSrc = mediaSrc[mediaSrc.length - 1];
			
			// delete all childnodes
			while (experienceComponents.videoLayer.childNodes.length > 0) {
				experienceComponents.videoLayer.removeChild(experienceComponents.videoLayer.childNodes[0]);
			}
			// create image overlay
			var newOverlay = document.createElement('div');
			newOverlay.className = "image-overlay";
			experienceComponents.videoLayer.appendChild(newOverlay);
			
			// create image 
			var newImg = document.createElement('img');
			newImg.src = mediaSrc;
			newImg.style.height = '240px';
			experienceComponents.videoLayer.appendChild(newImg);
		}

		// create textbrowser
		if (experienceComponents.videoLayer.parentNode.textbrowser) {
			experienceComponents.videoLayer.parentNode.textbrowser.P.texts = texts;
			experienceComponents.videoLayer.parentNode.textbrowser.P.current = 0;
			experienceComponents.videoLayer.parentNode.textbrowser.prev.style.display = 'none';
			if (texts.length < 2) {
				experienceComponents.videoLayer.parentNode.textbrowser.next.style.display = 'none';
			} else {
				experienceComponents.videoLayer.parentNode.textbrowser.next.style.display = 'block';
			}
			experienceComponents.videoLayer.parentNode.textbrowser.P.innerHTML = texts[experienceComponents.videoLayer.parentNode.textbrowser.P.current];
			if (document.all) return false;
			return;
		}
		var textbrowser = document.createElement('div');
		textbrowser.className = "textbrowser";
		experienceComponents.videoLayer.parentNode.textbrowser = textbrowser;
		experienceComponents.videoLayer.parentNode.appendChild(textbrowser);

		// create p in textbrowser
		var newP = document.createElement('p');
		newP.texts = texts;
		newP.current = 0;
		newP.innerHTML = texts[newP.current];
		textbrowser.appendChild(newP);
		textbrowser.P = newP;

		// create prevLink
		var prevLink = document.createElement('a');
		prevLink.href="javascript:;"
		prevLink.className = "prev";
		prevLink.style.display = 'none';
		prevLink.browser = newP;
		textbrowser.appendChild(prevLink);
		prevLink.onclick = function () {
		}
		
		// create nextLink
		var nextLink = document.createElement('a');
		nextLink.href="javascript:;";
		nextLink.className = "next";
		if (texts.length < 2) nextLink.style.display = 'none';
		nextLink.browser = newP;
		textbrowser.appendChild(nextLink);
		textbrowser.next = nextLink;
		textbrowser.prev = prevLink;
		
		nextLink.prev = prevLink;
		prevLink.next = nextLink;

		nextLink.onclick = function () {
			this.browser.current++;
			this.browser.innerHTML = this.browser.texts[this.browser.current];
			if (this.browser.current == this.browser.texts.length - 1) this.style.display = 'none';
			this.prev.style.display = 'block';
		}
		prevLink.onclick = function () {
			this.browser.current--;
			this.browser.innerHTML = this.browser.texts[this.browser.current];
			if (this.browser.current == 0) this.style.display = 'none';
			this.next.style.display = 'block';
		}

		// fix IE bug
		if (document.all) return false;
	}
}
