/*
 +-----------------------------------------------------------------------+
 | js/common.js                                                          |
 |                                                                       |
 | This file is part of the Phusion Webengine                            |
 | Copyright (C) 2008-2009, Roman Gruber                                 |
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provides severall functions used in specific way                    |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Roman Gruber <roman@phusion.ch>                               |
 +-----------------------------------------------------------------------+
*/

function customerrorhandler(desc,page,line,chr)  {
	var text = "Error description: "+desc+", Line number: "+line+ ", Page address: "+page;
	log(text, "Javascipt Error");
	return false;
}

window.onerror=customerrorhandler;

function shuffle(o){
	for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
	return o;
}


function getX(e){
	var x = 0;
	while(e){
		x += e.offsetLeft;
		e = e.offsetParent;
		}
		return parseInt(x, 10);
}

function getY(e){
	var y = 0;
	while(e){
		y += e.offsetTop;
		e = e.offsetParent;
		}
		return parseInt(y, 10);
}



function getpos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do{
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}while (obj = obj.offsetParent);
	}
	var retarr = new Array();
	retarr[0] = curtop;
	retarr[1] = curleft;
	return retarr;
}

function scriptname(path) {
	var sn = path.replace(/\?.*/, "");
	sn = sn.replace(/.*\//, "");
	return sn;
}

var xmldoc;
var nav_entrys;
function nav_top(){
	nav_xml = getxml("func/xmlnav.php");

	try{ //Internet Explorer 
		xmldoc=new ActiveXObject("Microsoft.XMLDOM"); 
		xmldoc.async="false"; 
		xmldoc.loadXML(nav_xml);
	}catch(e){
		try{ //Firefox, Mozilla, Opera, etc.
			parser=new DOMParser();
			xmldoc=parser.parseFromString(nav_xml,"text/xml");
		}catch(e){
			alert(e.message);
			return;
		}
	}
	this.nav = document.getElementById("nav_top");
	nav_entrys = xmldoc.getElementsByTagName("entry").length;
	this.nav.innerHTML = "";

	for(var i=0;i<nav_entrys;i++){
		var id = xmldoc.getElementsByTagName("entry")[i].getElementsByTagName("id")[0].childNodes[0].nodeValue;
		var follows = xmldoc.getElementsByTagName("entry")[i].getElementsByTagName("follows")[0].childNodes[0].nodeValue;
		if(xmldoc.getElementsByTagName("entry")[i].getElementsByTagName("icon")[0].childNodes.length != 0){
			var icon = xmldoc.getElementsByTagName("entry")[i].getElementsByTagName("icon")[0].childNodes[0].nodeValue;
		}else{
			var icon = "";
		}
		var content = xmldoc.getElementsByTagName("entry")[i].getElementsByTagName("content")[0].childNodes[0].nodeValue;
		if(xmldoc.getElementsByTagName("entry")[i].getElementsByTagName("load")[0].childNodes.length != 0){
			var load = xmldoc.getElementsByTagName("entry")[i].getElementsByTagName("load")[0].childNodes[0].nodeValue;
		}else{
			var load = "";
		}
		if(xmldoc.getElementsByTagName("entry")[i].getElementsByTagName("target")[0].childNodes.length != 0){
			var target = xmldoc.getElementsByTagName("entry")[i].getElementsByTagName("target")[0].childNodes[0].nodeValue;
		}else{
			var target = "";
		}
		if(xmldoc.getElementsByTagName("entry")[i].getElementsByTagName("js")[0].childNodes.length != 0){
			var js = xmldoc.getElementsByTagName("entry")[i].getElementsByTagName("js")[0].childNodes[0].nodeValue;
		}else{
			var js = "";
		}


		var link = "<a class='nav_left_item' href=\"javascript:ajaxFunction('func/nav_left.php?lang=$lang&id="+id+"&follows="+id+"\', 'nav_left', 'open_close', '1'); ajaxFunction('"+load+"', '"+target+"'); "+js+" \" onmouseout=\"document.getElementById('nav_top_item_img_"+i+"').src='skins/palottis/img/layout/nav_main.png';\" onmouseover=\"document.getElementById('nav_top_item_img_"+i+"').src='skins/palottis/img/layout/nav_main_selected.png';\">"+content+"</a>";

		var html = "<img id='nav_top_item_img_"+i+"' style='height:41; position:absolute;' src='skins/palottis/img/layout/nav_main.png' onmouseout=\"this.src='skins/palottis/img/layout/nav_main.png';\" onmouseover=\"this.src='skins/palottis/img/layout/nav_main_selected.png';\"><img id='nav_top_item_screw_"+i+"' style='position:absolute;' src='skins/palottis/img/layout/kreuzschraube.png' onmouseout=\"document.getElementById('nav_top_item_img_"+i+"').src='skins/palottis/img/layout/nav_main.png';\" onmouseover=\"document.getElementById('nav_top_item_img_"+i+"').src='skins/palottis/img/layout/nav_main_selected.png';\"><div id='nav_top_item_link"+i+"' style='position:absolute;'>"+link+"</div>";
		this.nav.innerHTML += html;

	}
	nav_top_pos();
}

function nav_top_pos(){
	this.nav = document.getElementById("nav_top");
	this.pos = getpos(this.nav);
	var top = this.pos[0];
	var left = this.pos[1];

	this.width = 640;
	this.screw_width = 23;
	this.icon_oversize = 36;
	this.gapsize = 4;

	this.pointer = left+(this.gapsize/2);
	for(var i=0;i<nav_entrys;i++){
		this.width = document.getElementById("nav_top_item_link"+i).offsetWidth+this.icon_oversize;
		//document.body.removeChild(this.div);
		document.getElementById("nav_top_item_img_"+i).style.left = this.pointer;
		document.getElementById("nav_top_item_img_"+i).style.top = top;
		document.getElementById("nav_top_item_img_"+i).style.width = this.width;
		document.getElementById("nav_top_item_screw_"+i).style.left = this.pointer+((this.width)/2)-(this.screw_width/2);
		document.getElementById("nav_top_item_screw_"+i).style.top = top-5;
		document.getElementById("nav_top_item_link"+i).style.left = this.pointer+(this.icon_oversize/2);
		document.getElementById("nav_top_item_link"+i).style.top = top+12;
		this.pointer = this.pointer+this.width+(this.gapsize);
	}
}

window.onresize = nav_top_pos;

function toolpic_show(url, obj){
	this.pos = getpos(obj);
	var top = this.pos[0];
	var left = this.pos[1];
	var div = document.createElement("div");
	div.style.border = "1px solid black";
	div.style.position = "absolute";
	div.style.top = top+20;
	div.style.left = left;
	div.id = "admin_edit_img_div";
	div.innerHTML = "<img src='"+url+"'>";
	document.getElementById("main").appendChild(div);
	setopacity("admin_edit_img_div", 9);
}

function toolpic_hide(){
	var div = document.getElementById("admin_edit_img_div");
	document.getElementById("main").removeChild(div);
}


function browser_has_flash(){
	<!-- this comment tag is to hide the enclosed code from old browsers.

	//Look for a version of Internet Explorer that supports ActiveX (i.e., one that's
	//running on a platform other than Mac or Windows 3.1) or a browser that supports
	//the plugin property of the navigator object and that has Flash Player 2.0
	//installed.

	if ((navigator.appName == "Microsoft Internet Explorer" &&
		navigator.appVersion.indexOf("Mac") == -1 &&   navigator.appVersion.indexOf("3.1") == -1) ||

		(navigator.plugins && navigator.plugins["Shockwave Flash"])
						   || navigator.plugins["Shockwave Flash 2.0"]){

		return true;
	}
	else {
		return false;
	}

	// Close the comment tag. -->
}

function change_lang(language){
	var la = "lang=" + language;
	lang = language;
	
	for (var id in loaded_containers){
		match = id.match(/^\d*$/);
		if (match == null){
			loaded_containers[id] = loaded_containers[id].replace(/lang\=../g, la);
			//alert(loaded_containers[id] + " - " + id);
			if(document.getElementById(id)){
				ajaxFunction(loaded_containers[id], id);
			}
		}
	}
	log("language changed to: \""+lang+"\"", "info")
}


var translateobj;
function translation(text, category){
	this.text = text;
	this.category = category;
}

translation.prototype={
	init:function(){
		if(document.getElementById("translate_div")){
			return;
		}
		this.div = document.createElement("div");
		this.div.style.backgroundColor = "#000000";
		this.div.style.position = "absolute";
		this.div.style.overflow = "auto";
		this.div.style.padding = "20";
		this.div.style.width = 600;
		this.div.style.height = 400;
		this.div.id = "translate_div";

		this.opts = new Array();
		this.opts["text"] = this.text;
		this.opts["category"] = this.category;
		this.trans_xml = getxml("post:func/xmlgettranslate.php", this.opts);

		try{ //Internet Explorer 
			this.xmldoc=new ActiveXObject("Microsoft.XMLDOM"); 
			this.xmldoc.async="false"; 
			this.xmldoc.loadXML(this.trans_xml);
		}catch(e){
			try{ //Firefox, Mozilla, Opera, etc.
				this.parser=new DOMParser();
				this.xmldoc=this.parser.parseFromString(this.trans_xml,"text/xml");
			}catch(e){
				alert(e.message);
				return;
			}
		}
		this.innerhtml = "<div style='width:100%; height:20; cursor:move;' onmousedown=\"dragstart(document.getElementById('translate_div'))\"></div>";
		this.innerhtml += "<h1 style='color:white;'>Manuelle Übersetzung</h1>";
		if(this.xmldoc.getElementsByTagName("indent")[0].childNodes[0].nodeValue != "empty"){
			this.indent = xmldoc.getElementsByTagName("indent")[0].childNodes[0].nodeValue;
		}else{
			this.indent = "";
		}
		if(this.xmldoc.getElementsByTagName("category")[0].childNodes[0].nodeValue != "empty"){
			this.category = xmldoc.getElementsByTagName("category")[0].childNodes[0].nodeValue;
		}else{
			this.category = "";
		}
		if(this.xmldoc.getElementsByTagName("id")[0].childNodes[0].nodeValue != "empty"){
			this.id = xmldoc.getElementsByTagName("id")[0].childNodes[0].nodeValue;
		}else{
			this.id = "";
		}
		this.text = this.xmldoc.getElementsByTagName("text")[0].childNodes[0].nodeValue;
		this.innerhtml += "<font style='color:white;'>Text: "+this.text+"</font><br>";
		this.innerhtml += "<font style='color:white;'>Kategorie: "+this.category+"</font><br>";
		this.innerhtml += "<font style='color:white;'>id: "+this.id+"</font><br>";

		this.innerhtml += "<input name='translate_input' type='hidden' id='translate_text' value='"+this.text+"'>";
		this.innerhtml += "<input name='translate_input' type='hidden' id='translate_category' value='"+this.category+"'>";
		this.innerhtml += "<input name='translate_input' type='hidden' id='translate_id' value='"+this.id+"'>";

		this.langs = this.xmldoc.getElementsByTagName("lang");
		for(var i=0;i<this.langs.length;i++){
			this.l = this.langs[i].childNodes[0].nodeValue;
			if(this.xmldoc.getElementsByTagName(this.l)){
				if(this.xmldoc.getElementsByTagName(this.l)[0].childNodes[0].nodeValue != "empty"){
					this.cont = this.xmldoc.getElementsByTagName(this.l)[0].childNodes[0].nodeValue;
				}else{
					this.cont = "";
				}
				this.innerhtml += "<font style='color:white;'>"+this.l+": </font><br>";
				this.innerhtml += "<textarea name='translate_input' style='width:540; height:200;' type='text' id='translate_"+this.l+"'>"+this.cont+"</textarea><br><br>";
			}
		}

		this.innerhtml += "<button id='translate_button_ok' onClick=\"translateobj.start();\">OK</button>&nbsp;";
		this.innerhtml += "<button id='translate_button_cancel' onClick=\"document.getElementById('main').removeChild(document.getElementById('translate_div'));\">Abbrechen</button>";

		this.div.innerHTML = this.innerhtml;
		document.getElementById("main").appendChild(this.div);
		setopacity("translate_div", 8);
	},

	start:function(){
		document.getElementById("translate_button_ok").disabled = "disabled";
		this.infos = document.getElementsByName("translate_input");
		var opts = new Array();
		for(i=0;i<this.infos.length;i++){
			opts[this.infos[i].id] = escape(this.infos[i].value);
		}
		this.trans_edit_xml = getxml("post:func/xmlsettranslate.php", opts)

		alert(this.trans_edit_xml);
		document.getElementById("translate_button_ok").disabled = "";
	}
}

function getwindowsize() {
	var width = 0;
	var height = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		width = window.innerWidth;
		height = window.innerHeight;
	}else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		width = document.documentElement.clientWidth;
		height = document.documentElement.clientHeight;
	}else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		width = document.body.clientWidth;
		height = document.body.clientHeight;
	}
	var retarr = new Array();
	retarr["height"] = height;
	retarr["width"] = width;
	return retarr;
}


var event_visible = 0;

function event_toogle(){
	if(event_visible == 0){
		event_slide_in();
	}else if(event_visible == 1){
		event_slide_out();
	}
}

function event_slide_in(){
	if(event_visible == 0){
		var icon = document.getElementById("event_slide_icon");
		icon.src = "img/icons/arrow_right.gif";
		var site_width = 1000;
		var aim = 600;
		var numberofsteps = 40;
		var element = document.getElementById("current");
		var size = getwindowsize();
		if(size["width"] < site_width){
			var left = site_width;
		}else{
			var left = ((size["width"]-site_width)/2)+site_width;
		}
		setopacity("current", 9.5);
		element.style.left = left;
		for(i=0; i<numberofsteps; i++){
			setTimeout("move('current', 'left', '-9')", 30*i);
		}
		event_visible = 1;
	}
}

function event_slide_out(){
	if(event_visible == 1){
		var icon = document.getElementById("event_slide_icon");
		icon.src = "img/icons/arrow_left.gif";
		var distance = 400;
		var numberofsteps = 40;
		var element = document.getElementById("current");

		for(i=0; i<numberofsteps; i++){
			setTimeout("move('current', 'right', '9')", 30*i);
		}
		setTimeout("event_visible = 0;", 30*i);
	}
}

var nav_top_sub_timeout = new Array();
function nav_top_sub_show(id){
	if(nav_top_sub_timeout[id]){
		clearTimeout(nav_top_sub_timeout[id]);
	}
	if(document.getElementById('sub_'+id)){
		document.getElementById('sub_'+id).style.visibility = 'visible';
	}
}

function nav_top_sub_hide(id){
	if(document.getElementById('sub_'+id)){
		nav_top_sub_timeout[id] = setTimeout("document.getElementById('sub_"+id+"').style.visibility = 'hidden';", 400);
	}
}

function init(){
	if(navigator.userAgent){
		log("navigator.userAgent: "+navigator.userAgent, "init");
	}
	log("Website initialized", "init");
}

var last_log_entry;
function log(text, level){
	var now = new Date();
	var gmt = now.toGMTString();
	var msg = "";
	if(level != null){
		msg += " - " + level;
	}
	msg += " - " + text;
	msg += "\n";

	if(document.getElementById("dbg")){
		var dbg = document.getElementById("dbg");
	}else if(opener.document.getElementById("dbg")){
		var dbg = opener.document.getElementById("dbg");
	}

	if(msg != last_log_entry){
		dbg.value += gmt + msg;
		dbg.scrollTop = dbg.scrollHeight;
	}

	last_log_entry = msg;
}

function detect_log(){
//
}


function toogle_log(){
	if(document.getElementById("dbg")){
		var dbg = document.getElementById("dbg");
	}else if(opener.document.getElementById("dbg")){
		var dbg = opener.document.getElementById("dbg");
	}
	
	if(dbg.style.visibility == "hidden"){
		dbg.style.visibility = "visible";
		dbg.style.opacity = 0.8;
	}else{
		dbg.style.visibility = "hidden";
	}
}

function place_log(){
	//in working
}
