ver = navigator.appVersion;

function showmenu(id) {
    var temp = navigator.appVersion.split('MSIE');
    var ieVer = parseInt(temp[1]);
    var isIE6up = (ieVer == 6) ? 1 : 0;
	var d = document.getElementById(id);
    if (isIE6up) { document.getElementById('search-box').style.visibility = 'visible'; }
	for (var i = 1; i<=10; i++) {
		if (document.getElementById('dropmenu'+i)) {document.getElementById('dropmenu'+i).style.display='none';}
	}
	if ((id != 'dropprofilemenu') && (document.getElementById('dropprofilemenu'))) { 
        document.getElementById('dropprofilemenu').style.display='none'; 
    }
	if (d) {
        d.style.display='block';
        if (isIE6up) { document.getElementById('search-box').style.visibility = 'hidden'; }
    }
}

onload_functions.push('showmenu()');

var defaultStep=1; 
var timerDown = new Array();
var timerUp = new Array(); 
var scrollSteps = new Array();

function updateButtons(id) {
  var dsub = document.getElementById(id+'_upbut');
  var dsdb = document.getElementById(id+'_downbut');
  var dsd = document.getElementById(id);
  var divdiff = (dsd.scrollHeight - dsd.clientHeight);
  if (dsd.scrollTop == 0) {
    dsub.style.visibility = 'hidden';
  } else {
    dsub.style.visibility = 'visible'; 
  }
  if ((divdiff - dsd.scrollTop) < 5) {
    dsdb.style.visibility = 'hidden';
  } else {
    dsdb.style.visibility = 'visible';
  }
}

function scrollDivDown(id) { 
  clearTimeout(timerDown[id]);
  var dsd = document.getElementById(id);
  dsd.scrollTop+=scrollSteps[id];
  updateButtons(id);
  timerDown[id]=setTimeout("scrollDivDown('"+id+"')",10)
} 

function scrollDivUp(id){
  clearTimeout(timerUp[id]);
  var dsd = document.getElementById(id);
  dsd.scrollTop-=scrollSteps[id];
  updateButtons(id);
  timerUp[id]=setTimeout("scrollDivUp('"+id+"')",10)
} 


function stopMe(id){
  clearTimeout(timerDown[id]) 
  clearTimeout(timerUp[id])
}

function initScrollDiv(id, buttondisp, stepspeed ) {
  buttondisp = buttondisp || 0;
  stepspeed = stepspeed || defaultStep;
  var dsub = document.getElementById(id+'_upbut');
  var dsdb = document.getElementById(id+'_downbut');
  var dsd = document.getElementById(id);
  var divdiff = (dsd.scrollHeight - dsd.clientHeight);
  dsd.style.overflow = "hidden";
  dsd.scrollTop=0;
  scrollSteps[id] = stepspeed;
  timerDown[id] = '';
  timerUp[id] = '';
  document.onmousemove=function(){stopMe(id)}  
  if (divdiff < 5) {
    if (buttondisp == 1) {
      dsub.style.visibility = 'hidden';
      dsdb.style.visibility = 'hidden';
    } else {
      dsub.style.display = 'none';
      dsdb.style.display = 'none';
    }   
  }
  updateButtons(id);
}

function toggle_langbox() {
   var langselector = document.getElementById('langselector');
   var toggle = document.getElementById('togglelangselector');
   if (langselector.style.visibility != 'visible') {
      langselector.style.visibility = 'visible';
      langselector.style.display='block';
      toggle.src="./styles/unilang/theme/images/langbox_collapse.gif";
   } else { 
      langselector.style.visibility = 'hidden';
      langselector.style.display='none';
      toggle.src="./styles/unilang/theme/images/langbox_expand.gif";
   }
}

quickmenu_current="";
fade_events = [];
fading=0;
fadelog = "";
function quickmenu(id) {
	if (fading == 1) return 0;
	if (quickmenu_current != id) {
		//alert(quickmenu_current +" -> "+ id);
		fadelog += quickmenu_current +" -> "+ id+"\n";
		//fadelog += id + ": " + opacity + "\n";

		var timer = 0;
		if (fading == 1) {
			fadelog += "Cancelling fade of " + quickmenu_current + "\n";
			//there is a fading in progress already, cancel it
			for (var i = 0; i < fade_events.length; i++) {
				window.clearTimeout(fade_events[i]);
			}
			var e;
			if (quickmenu_current != "") { e = document.getElementById("hello"); }
			else {  e = document.getElementById("q" + quickmenu_current); }
			e.style.display = "none";
			e.style.opacity = 0;
		}
		fade_events = [];
		fading = 1;
		//fade out current
		if (quickmenu_current == "") { timer = fadeout('hello',timer,true); }
		if (quickmenu_current == "resources") { timer = fadeout('qresources',timer,true); }
		if (quickmenu_current == "forum") { timer = fadeout('qforum',timer,true); }
		if (quickmenu_current == "chat") { timer = fadeout('qchat',timer,true); }
		//fade in new
		timer += 10;
		if (id != "") { fadein('q' + id,timer,true); }
		else { fadein('hello',timer,true); }
		quickmenu_current = id;
		timer++;
		var speed = Math.round(500 / 100);
		window.setTimeout("fading=0",(timer * speed));
	}


}


function fadeout(id, timer, check) {
	var e = document.getElementById(id);

	var speed = Math.round(500 / 100);
	fadeset(100, id);

	for(i = 100; i >= 0; i--) {
		fade_events[fade_events.length] = window.setTimeout("fadeset(" + i + ",'" + id + "')",(timer * speed));
		timer++;
	}

	return timer;
}

function fadein(id, timer, check) {
	var e = document.getElementById(id);
	var speed = Math.round(500 / 100);

	fadeset(0, id);

	for(i = 0; i <= 100; i++) {
		fade_events[fade_events.length] = window.setTimeout("fadeset(" + i + ",'" + id + "')",(timer * speed));
		timer++;
	}
	return timer;
}




function fadeset(opacity, id) {
	var e = document.getElementById(id);
	if (isIE()) {
		e.style.filter = "alpha(style=0,opacity:" + opacity + ")";
	} else {
		e.style.opacity = opacity / 100;
	}
	if (opacity <= 0) {		
		e.style.display = "none";
	} else {
		e.style.display = "block";
	}
}




function split_language_code(code) {
	var c = code.split('-',2);
	if (c.length == 2) return [c[0],c[1]];
	c = code.split('.',2);
	if (c.length == 2) return [c[0],c[1]];
	c = code.split('_',2);
	if (c.length == 2) return [c[0],c[1]];
	return [ code, '' ];
}

function dump(obj, name, indent, depth) {
	var MAX_DUMP_DEPTH = 5;
        if (depth > MAX_DUMP_DEPTH) {
		return indent + name + ": <Maximum Depth Reached>\n";
        }
        if (typeof obj == "object") {
		var child = null;
        	var output = indent + name + "\n";
                indent += "\t";
                for (var item in obj)
                {
                        try {
                                child = obj[item];
                        } catch (e) {
                                child = "<Unable to Evaluate>";
                        }
                        if (typeof child == "object") {
                                output += dump(child, item, indent, depth + 1);
                        } else {
                                output += indent + item + ": " + child + "\n";
                        }
                }
                return output;
        } else {
                return obj;
        }
}

Array.prototype.in_array = function ( needle )
{
  for (var i = 0; i < this.length; i++)  {
    if (needle == this[i]) { return true; }
  }
  return false;
}

/* from http://www.quirksmode.org/dom/getElementsByTagNames.html */
/* example: getElementsByTagNames('input,textarea',parent) */
function getElementsByTagNames(list,obj) {
	if (!obj) var obj = document;
	var tagNames = list.split(',');
	var resultArray = new Array();
	for (var i=0;i<tagNames.length;i++) {
		var tags = obj.getElementsByTagName(tagNames[i]);
		for (var j=0;j<tags.length;j++) {
			resultArray.push(tags[j]);
		}
	}
	var testNode = resultArray[0];
	if (!testNode) return [];
	if (testNode.sourceIndex) {
		resultArray.sort(function (a,b) {
				return a.sourceIndex - b.sourceIndex;
		});
	}
	else if (testNode.compareDocumentPosition) {
		resultArray.sort(function (a,b) {
				return 3 - (a.compareDocumentPosition(b) & 6);
		});
	}
	return resultArray;
}

/* derived form http://www.dustindiaz.com/getelementsbyclass/ */
function getElementsByClass(classname,node,tag) {
	var classElements = new Array();
	if ( node == null ) {
		node = document;
	}
	if ( tag == null ) {
		tag = '*';
	}
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	//var pattern = new RegExp("(^|\\\\s)"+searchClass+"(\\\\s|$)");
	var j = 0;
	for (var i = 0; i < elsLen; i++) {
		if ( els[i].className == classname ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}


function getElementByName(n) {
	fields = document.getElementsByName(n);
	if (fields.length == 0) return null;
	return fields[0];
}


function isIE() {
      return /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);
}




/* Fix for Internet Explorer, which refuses to comply to standards */
if(!Array.indexOf){
    Array.prototype.indexOf = function(obj){
        for(var i=0; i<this.length; i++){
            if(this[i]==obj){
                return i;
            }
        }
        return -1;
    }
}

