var T = [];

//--------------------------------------------------------------##


function reset() { // reset screen widgets
	for (var t in T) {
		clearTimeout(t);
	}
}

function browserTest () {
	return document.getElementById || document.all;
}

addLoadEvent(function() {
				startMenu('mainMenu');
				startMenu('eventsList');
				startSubMenu('indexList');
				shideDisplay('sideStory', 'block');
				menuSlider('mainMenu'); setTimeout("init()", 2000);
/*				startMenu('marList');
				startMenu('aprList');*/
		}
	);
	
//--------------------------------------------------------------##

function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload !== 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
		if (oldonload) {
			oldonload();
		}
		func();
		};
	  }
}


//--------------------------------------------------------------##


function init () {
//	window.resizeTo(780,650);
//	window.moveTo((screen.availWidth-780)/2, (screen.availHeight-650)/2 );
//	startSideStory();
	var menu;
	if (browserTest()) {
			var menu = document.getElementById?document.getElementById("mainMenu"):document.all?document.all("mainMenu"):"";
			slide(menu, 1, 20, 0, 30);
	}
}

function slide (o, step, delay, mLeft, mRight) { 
	mLeft = mLeft || 0;
	mRight = mRight || 0;
	if (T[o.id]) {window.clearInterval(T[o.id]); }
	if (step !== 0) {
		var p = o.parentNode;
		var stop;
		var start = o.offsetLeft + step;
		step > 0 ?stop = p.offsetWidth-mRight: stop = 0;
		if ( step > 0 ) {
			if ( start < stop ) {
				T[o.id] = setInterval(function () { Slide( o, step, mLeft, mRight) }, delay );
			} else {
				o.style.left = stop +"px";
				window.clearInterval(T[o.id]);
			}
		}
		else {
			if ( start > stop ) {
				o.style.left = start +"px";
				T[o.id] = setInterval(function () { Slide( o, step, mLeft, mRight) }, delay );
			} else {
				o.style.left = stop +"px";
				window.clearInterval(T[o.id]);
			}
		}
	}
	return true;
}

function Slide (o, step, mLeft, mRight) {
	mLeft = mLeft || 0;
	mRight = mRight || 0;
	var padding= 18;
	var c = o.parentNode;
	step> 0 ? stop = c.offsetWidth-mRight-padding: stop = 0;
	var pos = o.offsetLeft + step;
	if ( step > 0 ) {
		if ( pos < stop ) {
			o.style.left = pos +"px";
			} else {
				o.style.left = stop +"px";
				window.clearInterval(T[o.id]);
			}
		} else {
		if ( pos > stop ) {
			o.style.left = pos +"px";
			} else {
				o.style.left = stop +"px";
				window.clearInterval(T[o.id]);
			}
		}
}

function ssb (o, stepX, stepY) {
	var posX, posY;
	if (T[o.id]) { window.clearTimeout(T[o.id]) }
//	o.style.backgroundPosition = "50% 0%";
	if (o.style.backgroundPositionY) {
		posX = parseInt(o.style.backgroundPositionX);
		posY = parseInt(o.style.backgroundPositionY);
	} else {
		posX = parseInt(o.style.backgroundPosition.split(" ")[0]);
		posY = parseInt(o.style.backgroundPosition.split(" ")[1]);
	}
	T[o.id] = setTimeout(function() { Ssb( o, posX, stepX, posY, stepY) }, 200);
}

function Ssb(o, posX, stepX, posY, stepY) {
	stepX ? posX += stepX : stepX=0;
	stepY ? posY += stepY : stepY=0;
	posY %= 800;
	posX %= 800;
	if (o.style.backgroundPositionY) 
		o.style.backgroundPositionY = posY +"px"
	else
		o.style.backgroundPosition = posX + "px "+ posY +"px";
	T[o.id] = setTimeout(function() { Ssb(o,posX, stepX, posY, stepY) }, 100);
}


//--------------------------------------------------------------##


function displayBlockz(o, tag) {
	var p = o.parentNode;
	var navList = p.getElementsByTagName(tag);
	if (navList) {
		var L;
		var S = o.id.slice(0,-1);
		for (var i=0; i<navList.length; i++) {
			L=  navList[i].id.slice(0,-1);
			if (L != S) shideDisplay(L, 'none');
		}
		shideDisplay(S, 'block');
	}
}

function shideDisplay(elemID, state) { // show/hide display blocks
	var LmNt = document.getElementById?document.getElementById(elemID):document.all?document.all(elemID):"";
	if ( LmNt ) {
		if ( state == 'toggle') {
			 if (LmNt.style.display != 'block') {LmNt.style.display = 'block'}
			 else LmNt.style.display = 'none';
		} else
			if (LmNt.style.display != state) LmNt.style.display = state ;
		}
}


//--------------------------------------------------------------##

function startMenu ( menuName ) {
	if (document.getElementById || document.all) {
		var navRoot = false;
		navRoot = document.getElementById?document.getElementById(menuName):document.all?document.all(menuName):"false";
		if (navRoot) {
			navRoot.onmouseover=ieHover;
			navRoot.onmouseout=ieOut;
			if (navRoot) {
				var navList = navRoot.getElementsByTagName("LI");
				var node = "";
				for (var i=0; i<navList.length; i++) {
					node = navList[i];
					node.onmouseover= ieHover;
					node.onmouseout= ieOut
					node.onclick = getLocation;
				}
			}
		}
	}
}

function startSubMenu (id) {
	var navRoot = document.getElementById?document.getElementById(id):document.all?document.all(id):"";
	if (navRoot) {
		var navList = navRoot.getElementsByTagName("LI");
		var node;
		for (var i=0; i< navList.length; i++) {
			node = navList[i];
			node.onmouseover=ieHover;
			node.onmouseout=ieOut;
			node.onclick = function() { displayBlockz( this, "LI"); return false }
			shideDisplay(node.id.slice(0,-1), "none");
		}
		shideDisplay(navList[0].id.slice(0,-1), "block");
	}
}

function menuSlider (id) {
	var menu = document.getElementById?document.getElementById(id):document.all?document.all(id):"";
	T[menu.id] = "";
	var stop = menu.offsetLeft;
	var start="";
	menu.onmouseover= function () { window.clearInterval(T[menu.id]); slide(this, -4, 10, 0, 10) }
//	if (menu.captureEvents) menu.captureEvents(Event.MOUSEOVER);
	menu.onmouseout= function () { window.clearInterval(T[menu.id]); slide(this, 2, 10, 0, 10) } 
//	if (menu.captureEvents) menu.captureEvents(Event.MOUSEOUT);
}

//--------------------------------------------------------------##

function playerPopUp(URL, pWidth, pHeight) {
    day = new Date;
    id = day.getTime();
    eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=" + pWidth + ",height=" + pHeight + ",left = 470,top = 362');");
}

//--------------------------------------------------------------##

function getLocation (e) {
	if (!e) var e = window.event;
	var n = (window.event) ? e.srcElement : e.target;
	if ( n.getElementsByTagName('A') ) {
		document.location.href = n.getElementsByTagName('A')[0].href;
		}
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
}

function ieHover (e) { // replace hover in ie
	if (!e) {
		var n = window.event.srcElement;
		n.className = "over";
	}
}
function ieOut (e) { // replace hover in ie
	if (!e) {
		var n = window.event.srcElement;
		n.className = "";
	}
}

	
//--------------------------------------------------------------##

function startGallery (gid, thumbsTag, imageTag) {
	var galleryRoot = document.getElementById?document.getElementById(gid):document.all?document.all(gid):"";
	var thumbRoot = document.getElementsByTagName?galleryRoot.getElementsByTagName("UL")[0]:"";
	var largePix = document.getElementsByTagName?galleryRoot.getElementsByTagName("DIV")[0]:"";
	var thumbsTag = thumbsTag?thumbsTag:"MTA-T";
	var imageTag = imageTag?imageTag:"MTA-P";
	var thumbsType = "png";
	var imageType = "jpg";
	if (thumbRoot) {
		var pix = thumbRoot.getElementsByTagName("IMG");
		var thumbList = galleryRoot.getElementsByTagName("LI");
		var node;
		for (var i=0; i< thumbList.length; i++) {
			node = thumbList[i];
			node.onmouseover = function() { this.style.backgroundColor="red"; };
			node.onmousedown = function() { swapPix( this.getElementsByTagName("IMG")[0], largePix, thumbsTag, thumbsType,imageTag, imageType); return false };
		}
	}
}
function swapPix(x, y, ttag, ttype, itag, itype) {
	var src = x.src.replace(ttag,itag);
	y.style.backgroundImage = "url("+src.replace(ttype, itype)+")";
	return true
}

//--------------------------------------------------------------##

function startSlideShow ( cardsID, transition ) { 
// set up datastructures and pointers
/*
	change style from list to cards
	set pointers for: 
		cards UL: the actual slide container
		buttons UL: numbered buttons to jump to different slides
	set 2D array with pointers to stories containing ID, view status and load status
*/
	var cardsRoot = document.getElementById?document.getElementById(cardsID):document.all?document.all(cardsID):"";
	var cardStack = new Array();
		cardStack = cardsRoot.getElementsByTagName("LI");
	var pointer = 0;
	var delay = 5000;
	loadImages(cardsRoot);
	runSlideShow(cardStack, pointer, delay, transition);
}

function loadImages(cardsRoot) { 
/*
	check if image is cached
	load image, flag list
*/
	var cardStack = new Array();
	cardStack = cardsRoot.getElementsByTagName("LI");
	for (var card in cardStack) {
		if (card.style) card.style.display = "none";
	}
	cardStack[0].style.display = "block";
}

function runSlideShow ( cardStack, pointer, delay, transitionIn, transitionOut) {
	var curry = changeCard(cardStack, pointer, transitionIn, transitionOut);
	var cardsRoot = cardStack[0].parentNode;
	T[cardsRoot.id] = setInterval( curry , delay);
	cardsRoot.onmouseover = function() { window.clearInterval(T[cardsRoot.id]); }; //window.clearinterval(T[cardsRoot.id]);
	cardsRoot.onmouseout =  function() { window.clearInterval(T[cardsRoot.id]); T[cardsRoot.id] = setInterval( curry, delay); };
}

function changeCard(cardStack, pointer, transitionIn, transitionOut) { // check if image is cached
	var pointer = pointer;
	var d = cardStack.length -1;
	return function () {
		if (cardStack[pointer]) transition("blockOut", cardStack[pointer]); // cardStack[pointer].style.display = "none"; 
		pointer = pointer < d ? pointer += 1 : 0;
		if (cardStack[pointer]) transition("fadeIn", cardStack[pointer]); // cardStack[pointer].style.display = "block";
	}
}

function transition (style, object) {
	var step = 5;
	var interval = 50;
	switch (style)
		{
			case "blockOut" : 
				{
					changeBackground(object);
					object.style.display = "none"; 
				}
				break;
			case "blockIn" : 
				object.style.display = "block"; 
				break;
			case "fadeOut" :
				{
					setOpacity(object, 100) ;
					object.style.display = "none"; 
					var curry = fader(object, interval, -1*step);
					window.clearInterval(T[object.id]); 
					T[object.id] = setInterval( curry, interval ); 
				}
				break;
			case "fadeIn" :
				{
					setOpacity(object, 0) ;
					object.style.display = "block"; 
					var curry = fader(object, 0, step);
					window.clearInterval(T[object.id]); 
					T[object.id] = setInterval( curry, interval ); 
				}
				break;
		}
}

function changeBackground(obj) {
  var url =  obj.getElementsByTagName("img")[0].src;
  var parent = obj.parentNode;
  parent.style.backgroundImage = "url("+url+")";
}

function setOpacity(obj, opacity) {
  opacity = (opacity > 100)?100:(opacity < 0)?0:opacity;
  obj.style.filter = "alpha(opacity:"+opacity+")";
  obj.style.opacity = opacity/100;
}

function fader(object, opacity, step) {
	this.opacity = opacity;
	this.x = 0;
	return function () {
		if ( this.opacity <= 100 && this.opacity >= 0 ) {
			setOpacity(object, this.opacity);
/*			if (this.x < 10) alert(object.id+" : "+this.x+" : "+this.opacity);*/
			this.x += 1;
			this.opacity += step;
		} else { 
			window.clearInterval(T[object.id]);
		}
	}
}

/* ------ */

function getNode(n) {
	var r = document.getElementById
		? document.getElementById(n)
		: document.all
			? document.all(n)
			: "";
	return r
}

function createNode( tag, id, cssClass, code ) {
	var node = document.createElement(tag);
	node.id = id;
	node.setAttribute('class', cssClass);
	node.innerHTML = code;
	return node
}

function googleAttach () {
	var x = getNode("chase");
	var code = "<div id='searchControl'></div><div id='searchBrand'></div><div id='searchResult'></div>";
	var searchNode = createNode("div","search","",code);
	x.parentNode.insertBefore(searchNode, x);
	var nodes = {
		searchBox : getNode("searchControl"),
		resultBox : getNode("searchResult"),
		brandBox : getNode("searchBrand"),
		searchSite : "mta-news.info"
		};
	return nodes;
}
		
function addSearch( searchNodes ) {
	var domNodes = searchNodes();
	if ( domNodes.searchBox && domNodes.resultBox ) {
		var searchControl = new google.search.SearchControl();
		var searchSearch = new google.search.Search();
		var options = new google.search.SearcherOptions();
		var siteSearch = new google.search.WebSearch();
		
		options.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);
		options.nocss = true;
		options.setRoot(domNodes.resultBox);
		siteSearch.setSiteRestriction(domNodes.searchSite);
		siteSearch.setRestriction(google.search.WebSearch.RESTRICT_FILETYPE, google.search.WebSearch.FILETYPE_HTML);
		google.search.Search.getBranding(domNodes.brandBox);
		searchControl.addSearcher(siteSearch, options);
		searchControl.addSearcher(new google.search.WebSearch());
		searchControl.draw(domNodes.searchBox);
		searchControl.setLinkTarget(google.search.Search.LINK_TARGET_TOP);
	
		searchSearch
	}
}