// javascript

var indexData;
var globalData;
var logText;
var menuData = new Object();
var menuIndex = 0;

var currentSubmenu;	
var subMenuTimeOut = 0;


function indexResult(result) {

	indexData = result;
	var node = indexData.firstChild.firstChild;
	var source = "contact.xml";
	
	while(node!=null) {
		if(node.nodeName=="globalValues") globalValues = node;
		else if(node.nodeName=="backgroundColor") {
			$(document.body).css("background-color",node.firstChild.nodeValue);
		} else if(node.nodeName=="title") {
			setPositioning($("#title"),node.attributes);
			$("#title").html(node.firstChild.nodeValue);
			$("#title").fadeIn(4000);
		} else if(node.nodeName=="frontpage") {
			source = node.firstChild.nodeValue;
		}
		node = node.nextSibling;
	}
	
	var idx = window.location.href.indexOf("#");
	if(idx>0) {
		source = window.location.href.substr(idx+1,window.location.href.length-(idx+1))+".xml";
	} 
	
	$.ajax({url:source, dataType: "xml", success:pageResult});
	$.ajax({url:"menu.xml", dataType: "xml", success:menuResult});
}



function hideSubmenu() {
	if(currentSubmenu!=null) {
		var oldMenu = currentSubmenu;
		currentSubmenu = null;
		for(item in oldMenu.items) {
			var sitem = oldMenu.items[item];
			var anchor = sitem.anchor;
			anchor.fadeOut(300);
		}	
	}
	
}

function keepSubmenu() {
	clearTimeout(subMenuTimeOut);
}

function menuMouseOut(item) {	
	if(currentSubmenu!=null) {
		subMenuTimeOut = setTimeout(hideSubmenu,3000);
	}
}

function showSubmenu(submenu) {
	currentSubmenu = submenu;
	for(item in submenu.items) {
		var sitem = submenu.items[item];
		var anchor = sitem.anchor;
		anchor.fadeIn(500);
	}
}

function menuMouseOver(item) {	
	var menuItem = menuData.items[item];
	if(menuItem!=null) {
		if(currentSubmenu==null) {
			if(menuItem.submenu!=null) showSubmenu(menuItem.submenu);
		} else {
			if(menuItem.submenu==null) {
				keepSubmenu();
				hideSubmenu();
			} else if(menuItem.submenu!=currentSubmenu) {
				keepSubmenu();
				hideSubmenu();
				showSubmenu(menuItem.submenu);
			} else {
				keepSubmenu();
			}
		}
	} else {
		keepSubmenu();
	}
	
}

function menuClick(item) {
	var menuItem = menuData.items[item];
	var source;
	if(menuItem!=null) {
		source = menuItem.src;
	} else {
		menuItem = currentSubmenu.items[item];
		source = menuItem.src;
	}
	
	/*
	var idx = window.location.href.indexOf("#");	
	if(idx>0) {
		source = window.location.href.substr(idx+1,window.location.href.length-(idx+1))+".xml";
		window.location.href.substr(idx+1,window.location.href.length-(idx+1))+".xml";
	}*/
	
	$.ajax({url:source, dataType: "xml", success:pageResult});
}

var pageData = null;
var pageObject = null;

function pageResult(result) {

	pageData = result;
	
	if(pageObject!=null) {
		for(prop in pageObject) {
			if(prop=="backgroundImage") {
				$(document.body).css("background-image","none");
			} else {
				var item = pageObject[prop];
				item.remove();
			}			
		}
	}
	
	var node = pageData.firstChild.firstChild;
	pageObject = new Object();
	
	var idx = 0;
	
	while(node!=null) {
		
		if(node.nodeName=="backgroundImage") {
			var source = node.attributes.getNamedItem("src").value;
			var position = node.attributes.getNamedItem("position").value;
						
			$(document.body).css("background-image","url('"+source+"')");
			$(document.body).css("background-position",position);
			$(document.body).css("background-attachment","fixed");
			$(document.body).css("background-repeat","no-repeat");
			
			pageObject["backgroundImage"] = true;
			
		} else if(node.nodeName=="header") {
			var text = node.firstChild.nodeValue;

			$(document.body).append("<div id=\"header\">"+text+"</div>");
			setPositioning($("#header"),node.attributes);
			$("#header").fadeIn(1000);
			pageObject["header"] = $("#header");
		} else if(node.nodeName=="text") {
			var text = node.firstChild.nodeValue;

			var name = "text"+idx;
			var textItemName = "#"+name;
			var divText = "<div id=\""+name+"\" class=\"text\">"+text+"</div>";
			
			//alert(divText);
			
			$(document.body).append(divText);
			
			var textItem = $(textItemName);
			
			//alert(textItemName);
			//alert(name);
			
			setPositioning(textItem,node.attributes);
			textItem.css("display","none");
			
			//alert(textItem.css("left"));
			textItem.fadeIn(1500);
			pageObject[name] = textItem;
			idx++;
		}
		
		node = node.nextSibling;
	}
	

	
}

function createMenuAnchor(name, title, hash) {
	//onclick="menuClick(this.id);"
	var anchor = '<a id="'+name+'"  onmouseover="menuMouseOver(this.id);" onmouseout="menuMouseOut(this.id);" class="menu" href="#'+hash+'" onclick="menuClick(\''+name+'\');">'+title+'</a>';
	return anchor;
}


function positionMenuItems() {
	var top = 0;
	if(menuData.top!=null) {
		top = menuData.top.value;
		if(isGlobalValue(top)) top = getGlobalValue(top);
	}
	top = new Number(top);
	
	var left = 0;
	if(menuData.left!=null) {
		left = menuData.left.value;
		if(isGlobalValue(left)) left = getGlobalValue(left);
	}
	left = new Number(left);
	
	var items = menuData.items;
	
	
	
	for (item in items) {
		var menuItem = items[item];
		menuItem["isSubmenu"] = false;
		var anchor = menuItem.anchor;
		var anchor = $("#"+item);
		
		anchor.css("top",top);
		anchor.css("left",left);
		anchor.css("font-size","20");
		
		if(menuItem.submenu!=null) {
			var smenu = menuItem.submenu;
			var stop = top + anchor.height();
			for(sitem in smenu.items) {
				var smenuItem = smenu.items[sitem];
				smenuItem["isSubmenu"] = true;
				var sanchor = $("#"+sitem);
				sanchor.css("top",stop);
				sanchor.css("left",left);
				sanchor.css("display","none");
				sanchor.css("font-size","16");
				stop = stop + new Number(sanchor.height()) + 0;
			}
		}

		left = left + new Number(anchor.width()) + 40;
	}
}

function createMenu(menudata) {
	var menu = new Object();
	
	var items = new Object();
	menu["items"] = items;
	
	var menuDOM = menudata;
	if(menuDOM.attributes!=null) {
		menu.top = menuDOM.attributes.getNamedItem("top");
		menu.left = menuDOM.attributes.getNamedItem("left");
	}
	
	var node = menuDOM.firstChild;

	while(node!=null) {
		if(node.nodeName=="item") {
			var title = node.attributes.getNamedItem("title").value;
			var src = node.attributes.getNamedItem("src").value;
			var hash = src.substr(0,src.indexOf("."));
			var nodeName = "menuItem"+menuIndex;
			
			var menuItem = new Object();
			$(document.body).append(createMenuAnchor(nodeName,title,hash)+'</a>&nbsp;');
			menuIndex++;
			var anchor = $("#"+nodeName);
			menuItem["anchor"] = anchor;
			menuItem["src"] = src;
			var submenus = node.getElementsByTagName("menu");
			if(submenus.length>0) {
				menuItem.submenu = createMenu(submenus[0]);
			}
			items[nodeName] = menuItem;
		}
		
		node = node.nextSibling;
	}
	return menu;
}

function menuResult(result) {
	menuData = createMenu(result.firstChild);
	positionMenuItems();
}

$(document).ready(function(){

	logText = $("#resultText");

	$.ajax({url:"index.xml", dataType: "xml", success:indexResult});

	$(window).resize(function() {
		$("#width").html( $(window).width());
	});

	$("#nappula").click(function(){
		logText.append("hei<br/>");
	});

});



function isGlobalValue(valueStr) {
	if(valueStr.indexOf("{")==0 && valueStr[valueStr.length-1]=="}") return true;
	else return false;
}

function getGlobalValue(valueStr) {
	var rawValue = valueStr.substr(1,valueStr.length-2);
	var newValue = globalValues.getElementsByTagName(rawValue)[0];
	return newValue.firstChild.nodeValue;
}

var propertiesPos = ["top","left","right","bottom", "width", "height"]; 

function setPositioning(toObject,fromObject) {
	var toRemove = new Array();
	for(var i=0;i<propertiesPos.length;i++) {
		var prop = propertiesPos[i];
		var item = fromObject.getNamedItem(prop);
		if(item!=null) {
			var value = item.value;
			if(isGlobalValue(value)) value = getGlobalValue(value);
			toObject.css(prop,value);
		} else toObject.css(prop,'');
	}

}

function log(text) {
	logText.append(text+"<br/>");
}

