var get_req;
var post_req;
var element;
var elements;

if (navigator.appName=="Netscape") {
	document.write("<style type='text/css'>body {overflow-y:scroll;}<\/style>");
}


function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}

function doNothing() { }

var get_req;
var post_req;
var element;

function get_inc(url, params){
	try {
		get_req = new XMLHttpRequest();
	} catch(e) {
		get_req = new ActiveXObject("Microsoft.XMLHTTP")
	};

	get_req.onreadystatechange = GRH;
	get_req.open("GET", url + params, true);
	get_req.send(null);
}

function post_inc(url, params, formid) {
	var parameters = serialize(formid);
	try {
		post_req = new XMLHttpRequest();
		post_req.overrideMimeType('text/html');
	} catch(e) {
		post_req = new ActiveXObject("Microsoft.XMLHTTP")
	}

	post_req.onreadystatechange = PRH;
	post_req.open('POST', url + params, true);
	post_req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	post_req.setRequestHeader("Content-length", parameters.length);
	post_req.setRequestHeader("Connection", "close");
	post_req.send(parameters);
}

function serialize(formid) {
	var query = '';
	var tail = '';

	for (i = 0; i < $(formid).elements.length; i++) {
		element = $(formid).elements[i];

		switch (element.type) {

			case 'text':
			case 'hidden':
			case 'password':
			case 'textarea':
			case 'select-one':
				query += element.name + '=' + encodeURIComponent(element.value) + '&'
			break;

			case 'select-multiple':
				var isSet = false;
				for(var j = 0; j < element.options.length; j++) {
					var current = element.options[j];
					if(current.selected) {
						query += element.name + '=' + encodeURIComponent(current.value) + '&';
					}
				}
			break;

			case 'radio':
				if (element.checked) {
					query += element.name + '=' + encodeURIComponent(element.value) + '&'
				}
			break;

			case 'checkbox':
				if (element.checked) {
					query += element.name + '=' + encodeURIComponent(element.value);
					query += '&';
					tail = element.name;
				}
			break;

		}
	}
	query = query.substr(0, query.length - 1);
	return query;
}

/*function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp(".*" + className + ".*");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}*/

var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};

function Scale(image) {
	if (image.width > 400) {
		image.height = Math.round(((400)/image.width)*image.height);
		image.width = 400;
		image.title = "Preview";
		image.setAttribute("onclick", "Preview(this);");
	}
}

function Preview(image) {
	$('lightbox').innerHTML = "<a onclick=\"Return();\"><img src=\"" + image.src + "\" /></a>";
	$('curtain').style.display = "block";
	$('lightbox').style.display = "block";
}

function Return() {
	$('lightbox').style.display = "none";
	$('curtain').style.display = "none";
	$('lightbox').innerHTML = "";
}

function Bookmark() {
	var url = document.location.href;
	var end = (url.indexOf("?") == -1) ? url.length : url.indexOf("?");
	switch (url.substring(url.lastIndexOf("/")+1, end)) {
		case 'torrents.php': var sort = '0'; break;
		case 'requests.php': var sort = '1'; break;
		case 'forums.php': var sort = '2'; break;
		default: var sort = '3';
	}
	$('lightbox').innerHTML = '<table style="width:600px;margin: auto;"><tr><td class="colhead"><span style="float:left;">New Bookmark</span><span style="float:right;">' + document.title + '</span></td></tr><tr><td valign="top"><form id="bookmark" method="post"><input type="hidden" name="title" value="' + escape(document.title) + '" /><input type="hidden" name="sort" value="' + sort + '" /><input type="hidden" name="uri" value="' + url + '" />' + url + '</td></tr><tr><td class="center" valign="top"><input type="button" value="Add Bookmark" onclick="Save_Bookmark()" /><input type="button" value="Cancel" onclick="Return()" /></form></td></tr></table>';
	$('curtain').style.display = "block";
	$('lightbox').style.display = "block";
}

function Save_Bookmark() {
	var parameters = serialize('bookmark');
    try {
        bookmark = new XMLHttpRequest();
        bookmark.overrideMimeType('text/html');
    } catch(e) {
        bookmark = new ActiveXObject("Microsoft.XMLHTTP")
    }

	bookmark.onreadystatechange = function() {
	    if (bookmark.readyState == 4 && bookmark.status == 200) {
			$('lightbox').style.display = "none";
			$('curtain').style.display = "none";
			$('lightbox').innerHTML = "";
		}
	};
	bookmark.open('POST', 'bookmarks.php?action=add', true);
    bookmark.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    bookmark.setRequestHeader("Content-length", parameters.length);
    bookmark.setRequestHeader("Connection", "close");
    bookmark.send(parameters);
}

/*-- Starting a global display swapper with uber options to handle all the different types NOT FINISHED --*/

function toggleDisplay(elem,opts) {
	if ($(opts['prefixParent'])) {
		if (!opts['prefixElemType']) { opts['prefixElemType']="*"; }
		elems=getElementsByClassName(elem,opts['prefixElemType'],$(opts['prefixParent']));
		elem=elems[0];

	} else { elems=""; }

	if ($(elem).className && $(elem).className.match(/(^| )hide$/)) {
		$(elem).className=$(elem).className.substr(0,$(elem).className.length-5);
		if (opts['hideText'] && $(opts['masterElem'])) { $(opts['masterElem']).innerHTML=opts['hideText']; }
	} else {
		$(elem).className=$(elem).className+' hide';
		if (opts['showText'] && $(opts['masterElem'])) { $(opts['masterElem']).innerHTML=opts['showText']; }
	}
	newClass=$(elem).className;

	for(s=0; s<elems.length; s++) { elems[s].className=newClass; }

	return false;
}

function toggleChecks(formElem,masterElem) {
	if (masterElem.checked) { checked=true; } else { checked=false; }
	for(s=0; s<$(formElem).elements.length; s++) {
		if ($(formElem).elements[s].type=="checkbox") {
			$(formElem).elements[s].checked=checked;
		}
	}
}

function add_bb(bb_before, bb_after, textbox){
	var txtStart = getSelection($(textbox)).start;
	var txtFinish = getSelection($(textbox)).end;
	var txtSelected = ($(textbox).value).substring(txtStart, txtFinish);
	var txtBefore = ($(textbox).value).substring(0, txtStart);
	var txtAfter = ($(textbox).value).substring(txtFinish);
	var txtBeforeCaret = txtBefore + bb_before + txtSelected + bb_after;
	$(textbox).value = txtBeforeCaret + txtAfter;
	$(textbox).focus();
	setCaretPosition($(textbox), txtBeforeCaret.length)
}

function button_tip(show, showtext){
	if (show=="no")
		$('buttonhint').innerHTML = "";
	else
		$('buttonhint').innerHTML = showtext;
}

function setCaretPosition(ctrl, pos){
	if(ctrl.setSelectionRange){
		ctrl.focus();
		ctrl.setSelectionRange(pos,pos);
	}
	else if (ctrl.createTextRange){
		var range = ctrl.createTextRange();
		range.collapse(true);
		range.moveEnd('character', pos);
		range.moveStart('character', pos);
		range.select();
	}
}

function getSelection(inputBox){
	if ("selectionStart" in inputBox) {
		return {start: inputBox.selectionStart,
				end: inputBox.selectionEnd
		}
	}
	var bookmark = document.selection.createRange().getBookmark()
	var selection = inputBox.createTextRange()
	selection.moveToBookmark(bookmark)
	var before = inputBox.createTextRange()
	before.collapse(true)
	before.setEndPoint("EndToStart", selection)
	var beforeLength = before.text.length
	var selLength = selection.text.length
	return {start: beforeLength,
			end: beforeLength + selLength
	}
}

function show_hide(id) {
var klappText = document.getElementById('k' + id);
var klappBild = document.getElementById('pic' + id);
var klappTitle = document.getElementById('title' + id);

if (klappText.style.display == 'none') {
  klappText.style.display = 'block';
  klappBild.src = 'static/common/minus.gif';
//  klappTitle.title = 'Less';
}
else {
  klappText.style.display = 'none';
  klappBild.src = 'static/common/plus.gif';
//  klappTitle.title = 'M0ar';
}
}

/*
//experimental

function pausecomp(millis) {
	var date = new Date();
	var curDate = null;
	do { curDate = new Date(); }
	while(curDate-date < millis);
} 

function opacity(id, opacStart, opacEnd, millisec) {
    var speed = Math.round(millisec / 100);
    var timer = 100;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "'," + opacStart + "," + opacEnd + "," + timer * speed + ")",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
	 ShowContent(id);
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "'," + opacStart + "," + opacEnd + "," + timer * speed + ")",(timer * speed));
            timer++;
        }
    }
//document.getElementById(id).style.display = "none";
}


//change the opacity for different browsers
function changeOpac(opacity, id ,opacStart,opacEnd,timer) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
    if((opacEnd==opacity) && (opacStart>opacEnd)){
        setTimeout("RemoveContent('" + id +"')",300);
    } 
}

function RemoveContent(id) {
	var object = document.getElementById(id).style
	object.display = "none";
}
function ShowContent(id) {
	var object = document.getElementById(id).style
	object.display = "block";
}
function ChangeShow(id,way) {
	$('lightbox').innerHTML = '<form id="changer" method="post"><input type="hidden" name="id" value="' + id + '" /><input type="hidden" name="way" value="' + way + '" /></form>';
	
	var parameters = serialize('changer');
    try {
        changer = new XMLHttpRequest();
        changer.overrideMimeType('text/html');
    } catch(e) {
        changer = new ActiveXObject("Microsoft.XMLHTTP")
    }

	changer.onreadystatechange = function() {
	    if (changer.readyState == 4 && changer.status == 200) {
			$('lightbox').innerHTML = "";
		}
	};
	changer.open('POST', 'user.php?action=ajax', true);
    changer.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    changer.setRequestHeader("Content-length", parameters.length);
    changer.setRequestHeader("Connection", "close");
    changer.send(parameters);
}
*/