//addEvent(window,"load",run);

function magicClientInfo()
{
	var clientList = $("client_folder");
	if(!clientList) return;

	var clients = clientList.getElementsByTagName("li");
	for(var i = 0; i < clients.length; i++)
	{
		clients[i].onclick = showInfo;
		//clients[i].onmouseout = function(e) { hideBorder(this); }
		clients[i].onmouseover = function(e)
		{
			e = e||event;
			var original = e.srcElement || e.originalTarget;
			if(original.nodeName == "LI" ||
				(original.nodeName == "A" && containsClass(original,"img")))
			{
				clearAll();
				addClass(this,"visible");
			}
		}
	}

	function hideBorder(el)
	{
		removeClass(el,"last_expanded");
		removeClass(el,"expanded");
		removeClass(el,"visible");
	}

	function showInfo(e)
	{
		this.blur();

		// if is case study don't show anything and go to case study
		var firstLink = this.getElementsByTagName("a")[0];
		if(location.search.indexOf("mode=interviews") == -1 &&
			!containsClass(firstLink,"img_disabled")) return true;

		if(containsClass(this,"expanded")) return;

		e = e || event;
		e.cancelBubble = true;

		addClass(this.parentNode,"visible");
		addClass(this,"visible");
		addClass(this,"expanded");
		if(containsClass(this,"last"))
			addClass(this,"last_expanded");
		return false;
	}

	function clearAll()
	{
		for(var i = 0; i < clients.length; i++)
			hideBorder(clients[i]);
	}
}

function playInterview()
{
	var interviewSwf = $('interview_swf');
	removeClass($("interview_movie"),"hidden");
	if($("interview_bg")) removeClass($("interview_bg"),"hidden");
	interviewSwf.Play();

	var topFlash = $("flash_swf");
	if(topFlash)
	{
		topFlash.SetVariable("_root.mod", "1");
		topFlash.Play();
	}

	return false;
}

function closeInterview()
{
	if($("interview_movie")) addClass($("interview_movie"),"hidden");
	if($("interview_bg")) addClass($("interview_bg"),"hidden");

	if(window.interviewPage)
	{
		$("interview_movie").parentNode.removeChild($("interview_movie"));
		$("interview_bg").parentNode.removeChild($("interview_bg"));
	}

	var interviewMovieFull = $("interview_full_movie");
	if(interviewMovieFull)
	{
		interviewMovieFull.parentNode.removeChild(interviewMovieFull);
		setOpacity($("client").getElementsByTagName("div")[0],100);
	}

	var topFlash = $("flash_swf");
	if(topFlash)
	{
		topFlash.SetVariable("_root.mod", "0");
		topFlash.Play();
	}
}

// TODO: cache
function magicInterviewPlay()
{
	var interviews = $("client_folder").getElementsByTagName("a");
	for(var i = 0; i < interviews.length; i++)
	{
		if(containsClass(interviews[i].parentNode,"interview"))
			interviews[i].onclick = getInterviewData;
	}

	function getInterviewData()
	{
		this.blur();
		// get xml data
		var url = this.href;
		var linkTop = this.parentNode.parentNode.parentNode.offsetTop;
		if(containsClass(this.parentNode.parentNode,"last_row"))
			linkTop -= 100;


		url += (url.indexOf("?") != -1 ? "&" : "?") + "media=xml_data";
		return !ajaxRequest(url, "GET", null, showInterviewLayer)


		function showInterviewLayer(req)
		{
			var root = req.responseXML;
			var swf = root.getElementsByTagName("swf")[0].firstChild.nodeValue;
			var title = root.getElementsByTagName("title")[0].firstChild.nodeValue;
			var subtitle = root.getElementsByTagName("sub_title")[0].firstChild.nodeValue;

			var content = $("clients");
			var swfHeight = 277;

			var interviewBg = $c("div");
			interviewBg.id = "interview_bg";
			interviewBg.style.height = content.offsetHeight + "px";
			interviewBg.style.top = 0;//((innerHeight / 2) - (swfHeight / 2)) + "px";
			setOpacity(interviewBg,90);
			content.appendChild(interviewBg);

			var interview = $c("div");
			interview.id = "interview_movie";
			interviewBg.appendChild(interview);

			var swfObj = new SWFObject("/swf/media/mediaplayer_"+JS_LANG+".swf", "interview_swf", "318", swfHeight, "8");
			swfObj.addParam("wmode", "transparent");
			swfObj.addParam("menu", "true");
			swfObj.addParam("flashVars", "nme="+title+"&func="+subtitle+"&path="+swf);
			swfObj.write("interview_movie");

			var movie = $("interview_movie");
			movie.style.top = linkTop + "px";

			var moviePos = getAbsolutePosition(movie);
			document.body.appendChild(movie);
			movie.style.left = moviePos[0]+"px";
			movie.style.top = moviePos[1]+"px";

			setTimeout(playInterview,1000);

			//alert(swf + "\n" + title  + "\n" + subtitle)
		}
	}
}

/* left menu banners */
function createBanner(swfFile,containerId,height)
{
	var container = $(containerId);
	var so = new SWFObject(swfFile, containerId + "_swf", "184", height, "8");
	so.addParam("wmode", "transparent");
	so.addParam("quality", "best");
	so.addParam("bgcolor", "#ffffff");
	so.addParam("flashVars", "path=" + container.getElementsByTagName("a")[0].href);
	so.write(containerId);
}

/* contact map switcher */
function mapSwitcher()
{
	// preload
	var img1 = new Image(); img1.src = "/images/" + JS_LANG + "/contact/pl.gif";
	var img2 = new Image(); img2.src = "/images/" + JS_LANG + "/contact/us.gif";
	var img3 = new Image(); img3.src = "/images/contact/frame_top_pl.gif";
	var img4 = new Image(); img4.src = "/images/contact/frame_top_us.gif";

	var usInfo = $("contact_en");
	var plInfo = $("contact_pl");

	$("jump_en").onclick = function() { showGoogleUS(); return switchInfo(this,usInfo,plInfo,$("jump_pl")); }
	$("jump_pl").onclick = function() { showGooglePL(); return switchInfo(this,plInfo,usInfo,$("jump_en")); }

	function switchInfo(elem,i1,i2,jump)
	{
		var step = 10;
		var speed = 5;
		elem.blur();
		if(containsClass(elem,"active")) return false;
		var opacity = 100;
		// hide
		var interval = setInterval(function()
		{
			opacity -= step;
			setOpacity(i2,opacity)
			if(opacity == 0)
			{
				// show
				clearInterval(interval);
				setOpacity(i1,opacity);
				addClass(i1,"active"); addClass(elem,"active");
				removeClass(i2,"active"); removeClass(jump,"active");
				setOpacity(i2,100);
				interval = setInterval(function()
				{
					opacity += step;
					setOpacity(i1,opacity)
					if(opacity == 100)
					{
						clearInterval(interval);
					}
				},speed);
			}
		},speed);

		return false;
	}
}

var bufferedInterviews = new Array();
var preloader = new Image();
preloader.src = "/images/loader.gif";
function replaceMPInterview(link)
{
	var container = $("other_says");

	if(bufferedInterviews[link.href])
	{
		container.innerHTML = bufferedInterviews[link.href];
		updateMPInterviewData();
		return false;
	}

	setOpacity(container,30);
	var loader = setTimeout(function() {addClass(container,"loading");},200);

	return !ajaxRequest(link.href+"&media=interview","GET",container,function(req)
	{
		clearTimeout(loader);
		updateMPInterviewData();
		removeClass(container,"loading");
		setOpacity(container,100);
		bufferedInterviews[link.href] = req.responseText;
	});
}

var interviewMainPageBg;
var interviewFile;

function updateMPInterviewData()
{
	interviewMainPageBg = $("interview_bg_url").innerHTML;
	interviewFile = $("interview_file_url").innerHTML;

	var container = $("other_says");
	container.style.backgroundImage = "url('"+interviewMainPageBg+"')";
	createMPInterviewPlayer(interviewFile);
}

function createMPInterviewPlayer(file)
{
	var interviewHeight = $("other_says").offsetHeight - 10;
	var mpSwfObj = new SWFObject("/swf/media/mediaplayer_"+JS_LANG+".swf", "interview_swf", "318", interviewHeight, "8");
	mpSwfObj.addParam("bgcolor", "#ffffff");
	mpSwfObj.addParam("flashVars", "nme="+$('interview_name').innerHTML+"&amp;func="+$('interview_person_info').innerHTML+"&amp;path="+file);
	mpSwfObj.addParam("menu", "true");
	mpSwfObj.write("interview_movie");
}


function createInterview(name,func,file)
{
	var interviewMovie = $("interview_full_movie");
	if(interviewMovie)
	{
		removeClass(interviewMovie,"hidden");
		return false;
	}

	interviewMovie = $c('div');
	interviewMovie.id = 'interview_full_movie';

	$("client").appendChild(interviewMovie);

	var mpSwfObj = new SWFObject("/swf/media/mediaplayer_"+JS_LANG+".swf", "interview_swf", "318", "277", "8");
	mpSwfObj.addParam("flashVars", "nme="+name+"&func="+func+"&path="+file);
	mpSwfObj.addParam("menu", "true");
	mpSwfObj.write("interview_full_movie");

	var interviewSwfFull = $('interview_swf');

	//setOpacity($("client").getElementsByTagName("div")[0],30);
	setTimeout(function(){interviewSwfFull.Play();},1000);

	var topFlash = $("flash_swf");
	if(topFlash)
	{
		topFlash.SetVariable("_root.mod", "1");
		topFlash.Play();
	}

	return false;
}

function searchHelp()
{
	var helpButtonId = "search_help_button";
	var input = $("form_search_clause");
	var hint = input.parentNode.getElementsByTagName("p")[0];
	var helpButton;
	var defaultTitle = JS_LANG=='en'?"Show Hint":"Pokaż podpowiedź";

	input.onfocus = showHelp;
	input.onblur = hideHelp;

	function showHelp()
	{
		addClass(this,"focus");
		if($("helpButtonId"))
		{
			addClass($("helpButtonId"),"visible");
			return;
		}

		helpButton = $c("span");
		helpButton.id = helpButtonId;
		helpButton.className = "visible";
		helpButton.title = defaultTitle;
		helpButton.onclick = function(e)
		{
			e = e||event;
			e.cancelBubble = true;
			input.onfocus();
			if(containsClass(hint,"visible")) { removeClass(hint,"visible"); helpButton.title = defaultTitle; }
			else { addClass(hint,"visible"); helpButton.title = JS_LANG=='en'?"Hide Hint":"Ukryj podpowiedź"; }
			addEvent(document,"click",hideHelp);
		}
		input.parentNode.appendChild(helpButton);
	}

	function hideHelp()
	{
		removeClass(input,"focus");
		removeClass(hint,"visible");
		//removeClass(helpButton,"visible");
	}
}

function adjustDocumentHeight(flash)
{
	var doc = $("document");
	if(!doc) return;

	var page = $("page");
	var left = $("left");
	var path = $("path");

	var leftHeight = left.offsetHeight;
	var rightHeight = flash + path.offsetHeight + doc.offsetHeight;

	if(leftHeight > rightHeight)
		doc.style.height = (leftHeight - (flash + path.offsetHeight) + 20) + "px";
}

function updateFeaturedHeight()
{
	var featured = $('featured');
	var otherSays = $('other_says');
	if(featured.offsetHeight > otherSays.offsetHeight)
		otherSays.style.height = (featured.offsetHeight - 100) + "px";
}

function newsArchiveSwitcher()
{
	var archiveList = $("archive");
	setOpacity(archiveList,100);
	var pager = archiveList.getElementsByTagName("div")[0];
	if(!pager) return;

	var links = pager.getElementsByTagName("a");
	for(var i = 0; i < links.length; i++)
	{
		links[i].clicked = false;
		links[i].onclick = switchPage;
	}

	return false;

	function switchPage()
	{
		if(this.clicked) return;
		this.clicked = true;
		setOpacity(archiveList,50);
		var url = this.href.slice(0,-8) + "&media=archive";
		return !ajaxRequest(url, "GET", archiveList, newsArchiveSwitcher)
	}
}

/* SUGGESTOR - requires basic functions from the top $, $c etc */
function createSuggestor(input)
{
	var minimumLength = 1;

	if(typeof input == "string") input = $(input);
	input.setAttribute("autocomplete","off");
	var suggestorTimeout;

	var buffer = new Object();

	var suggestShadow = $c("div");
	suggestShadow.className = "suggest_shadow hidden";
	suggestShadow.style.width = input.offsetWidth + "px";
	suggestShadow.style.left = (input.offsetLeft + 2) + "px";
	suggestShadow.style.top = (input.offsetTop + input.offsetHeight + 6) + "px";
	setOpacity(suggestShadow,10);
	input.form.appendChild(suggestShadow);

	var suggestContainer = $c("div");
	suggestContainer.className = "suggest hidden";
	suggestContainer.style.width = (input.offsetWidth - 2) + "px";
	suggestContainer.style.left = input.offsetLeft + "px";
	suggestContainer.style.top = (input.offsetTop + input.offsetHeight + 3) + "px";
	input.form.appendChild(suggestContainer);
	var clauses = new Array();
	var activeClause = -1;

	var okURIchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";
	var hexchars = "0123456789ABCDEF";
	var clause = "";

	input.onkeydown = suggest;
	input.onfocus = suggest;
	addEvent(document,"click",hideSuggestor);
	input.onclick = function(e) { e=e||event; e.cancelBubble = true; }

	function suggest(e)
	{
		e = e || event;
		var key=e.keyCode ? e.keyCode : e.charCode;
		if(key==13||key==16||key==37||key==39)
		{
			if(key==13) clearTimeout(suggestorTimeout);
			return;
		}
		if(key==27)
		{
			replaceDefault(activeClause);
			hideSuggestor();
			return;
		}
		if(key==40||key==38)
		{
			if(clauses.length == 0) return;
			var newActiveClause = activeClause;
			newActiveClause += (key == 40) ? 1 : -1;

			if(newActiveClause < -1) { newActiveClause = clauses.length - 1; }
			else if(newActiveClause >= clauses.length) { newActiveClause = -1; }

			if(newActiveClause == -1) replaceDefault(newActiveClause);
			else replaceActive(newActiveClause,true);

			if (e.preventDefault) e.preventDefault();
			e.returnValue = false;
			return false;
		}
		else
		{
			clause = input.value;
			clearTimeout(suggestorTimeout);
			suggestorTimeout = setTimeout(searchSuggest,200);
		}
	}

	function replaceDefault(newActive)
	{
		removeClass(clauses[activeClause],"active");
		activeClause = newActive;
		input.value = clause;
	}

	function replaceActive(newActive,replaceInput)
	{
		if(activeClause != -1) removeClass(clauses[activeClause],"active");
		activeClause = newActive;
		addClass(clauses[activeClause],"active");
		if(replaceInput) input.value = clauses[activeClause].clause;
	}

	function searchSuggest()
	{
		if(input.value.length < minimumLength)
		{
			hideSuggestor();
			return;
		}
		if(!buffer[input.value])
			ajaxRequest("/szukaj_podpowiedzi.xml?prefix=" + encodeURIComponent(input.value),
				"GET",null,
				function(req)
				{
					if(!req || !req.responseXML) return;
					buffer[input.value] = req.responseXML;
					displaySuggest(buffer[input.value]);
				}
			);
		else
			displaySuggest(buffer[input.value]);
	}

	function displaySuggest(response)
	{
		var responseClauses = response.getElementsByTagName("clause");

		clauses = new Array();
		suggestContainer.innerHTML = "";
		hideSuggestor();

		if(responseClauses.length == 0) return;

		var frame = $c("iframe");
		frame.src = "/images/misc/empty.gif";
		frame.frameBorder="0";
		suggestContainer.appendChild(frame);

		showSuggestor();
		activeClause = -1;
		for( var i = 0; i < responseClauses.length; i++)
		{
			var clause = $c("div");
			clause.innerHTML = responseClauses[i].getAttribute("name");
			clause.clause = clause.innerHTML;
			clause.title = lang["suggestor-search"] + clause.innerHTML;
			clause.no = i;
			clause.onmouseover = function() { replaceActive(this.no,false) };
			clause.onclick = function() { replaceActive(this.no,true); input.form.submit() };
			suggestContainer.appendChild(clause);
			var results = $c("span");
			results.innerHTML = responseClauses[i].getAttribute("results");
			clauses[i] = clause;

		}
		//addClass(clauses[activeClause],"active");

		var close = $c("div");
		close.className = "close";
		suggestContainer.appendChild(close);
		var closeButton = $c("a");
		closeButton.href="#";
		closeButton.innerHTML = lang["suggestor-close"];
		closeButton.title = lang["suggestor-close-window"];
		close.appendChild(closeButton);
		close.onclick = function() { return false; }

		frame.style.height = (suggestContainer.offsetHeight - 4) + "px";
		frame.style.width = (suggestContainer.offsetWidth - 2) + "px";
		suggestShadow.style.height = (suggestContainer.offsetHeight - 1) + "px";
	}

	function hideSuggestor()
	{
		addClass(suggestContainer,"hidden");
		addClass(suggestShadow,"hidden");
		return false;
	}

	function showSuggestor()
	{
		removeClass(suggestContainer,"hidden");
		removeClass(suggestShadow,"hidden");
		return false;
	}

	function encodeURIComponent(s)
	{
		var s = utf8(s);
		var c;
		var enc = "";
		for (var i= 0; i<s.length; i++)
		{
			if (okURIchars.indexOf(s.charAt(i))==-1) enc += "%"+toHex(s.charCodeAt(i));
			else enc += s.charAt(i);
	  	}
	  	return enc;
	}

	function utf8(wide)
	{
		var c, s; var enc = ""; var i = 0;
		while(i<wide.length)
		{
			c= wide.charCodeAt(i++);
			// handle UTF-16 surrogates
			if (c>=0xDC00 && c<0xE000) continue;
			if (c>=0xD800 && c<0xDC00)
			{
				if (i>=wide.length) continue;
				s= wide.charCodeAt(i++);
				if (s<0xDC00 || c>=0xDE00) continue;
				c= ((c-0xD800)<<10)+(s-0xDC00)+0x10000;
			}
			// output value
				if (c<0x80) enc += String.fromCharCode(c);
				else if (c<0x800) enc += String.fromCharCode(0xC0+(c>>6),0x80+(c&0x3F));
				else if (c<0x10000) enc += String.fromCharCode(0xE0+(c>>12),0x80+(c>>6&0x3F),0x80+(c&0x3F));
				else enc += String.fromCharCode(0xF0+(c>>18),0x80+(c>>12&0x3F),0x80+(c>>6&0x3F),0x80+(c&0x3F));
		}
		return enc;
	}

	function toHex(n)
	{
		return hexchars.charAt(n>>4)+hexchars.charAt(n & 0xF);
	}
}

/*
 * Rollover
 */

var rollovers = [];

for(var x=0; x<rollovers_path.length; x++) {
	rollovers[x] = new Image();
	rollovers[x].src = rollovers_path[x];
}

function rollover(o,n,s) {
	if(s) {
		o.out = o.src;
		o.src = rollovers[n-1].src;
	}
	else {
		o.src = o.out;
	}
}