String.prototype.startsWith = function(str) {
	return (this.match("^"+str)==str)
}

String.prototype.endsWith = function(str) {
	return (this.match(str+"$")==str)
}

var timerlen = 5;

var slideTimerID = new Array();
var slideStartTime = new Array();
var slideObj = new Array();
var slideEndHeight = new Array();
var slideMoving = new Array();
var slideDir = new Array();
var slideAniLen = new Array();

function fetchObject(objectID) {
	if (document.getElementById) {
		return document.getElementById(objectID);
	} else if (document.all) {
		return document.all[objectID];
	} else if (document.layers) {
		return document.layers[objectID];
	} else {
		return null;
	}
}

function toggleObject(objectID) {
	var obj = fetchObject(objectID);
	if (obj) {
		if (obj.style.display == 'none') {
			obj.style.display = 'block';
		} else {
			obj.style.display = 'none';
		}
	}
}

function makeAJAXRequest() {
	var xmlhttp;
	if (window.XMLHttpRequest) {
		// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest();
	} else if (window.ActiveXObject) {
	// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		return null;
	}
	return xmlhttp;
}

function bbImage(textarea) {
	var url = prompt('Enter the Image URL:','http://');
	var scrollTop = textarea.scrollTop;
	var scrollLeft = textarea.scrollLeft;
	if (document.selection) {
		textarea.focus();
		var sel = document.selection.createRange();
		sel.text = '[img]' + url + '[/img]';
	} else {
		var len = textarea.value.length;
		var start = textarea.selectionStart;
		var end = textarea.selectionEnd;
		var sel = textarea.value.substring(start, end);
		var rep = '[img]' + url + '[/img]';
		textarea.value =  textarea.value.substring(0,start) + rep + textarea.value.substring(end,len);
		textarea.scrollTop = scrollTop;
		textarea.scrollLeft = scrollLeft;
	}
}

function bbURL(textarea) {
	var url = prompt('Enter the URL:', 'http://');
	var scrollTop = textarea.scrollTop;
	var scrollLeft = textarea.scrollLeft;

	if (document.selection) {
		textarea.focus();
		var sel = document.selection.createRange();

		if(sel.text==""){
			sel.text = '[url]'  + url + '[/url]';
		} else {
			sel.text = '[url=' + url + ']' + sel.text + '[/url]';
		}
	} else {
		var len = textarea.value.length;
		var start = textarea.selectionStart;
		var end = textarea.selectionEnd;

		var sel = textarea.value.substring(start, end);

		if(sel == ""){
			var rep = '[url]' + url + '[/url]';
		} else {
			var rep = '[url=' + url + ']' + sel + '[/url]';
		}
		textarea.value =  textarea.value.substring(0,start) + rep + textarea.value.substring(end,len);
		textarea.scrollTop = scrollTop;
		textarea.scrollLeft = scrollLeft;
	}
}

function bbAddTags(textarea, tag1,tag2) {
	// Code for IE
	if (document.selection) {
		textarea.focus();
		var sel = document.selection.createRange();
		//alert(sel.text);
		sel.text = tag1 + sel.text + tag2;
	} else {  // Code for Mozilla Firefox
		var len = textarea.value.length;
		var start = textarea.selectionStart;
		var end = textarea.selectionEnd;
		var scrollTop = textarea.scrollTop;
		var scrollLeft = textarea.scrollLeft;
		var sel = textarea.value.substring(start, end);
		var rep = tag1 + sel + tag2;
		textarea.value =  textarea.value.substring(0,start) + rep + textarea.value.substring(end,len);
		textarea.scrollTop = scrollTop;
		textarea.scrollLeft = scrollLeft;
	}
}

function bbList(tag1,tag2) {
	// Code for IE
	if (document.selection)  {
		textarea.focus();
		var sel = document.selection.createRange();
		var list = sel.text.split('\n');
		for(i=0;i<list.length;i++)  {
			list[i] = '[*]' + list[i];
		}
		sel.text = tag1 + '\n' + list.join("\n") + '\n' + tag2;
	} else {
		var len = textarea.value.length;
		var start = textarea.selectionStart;
		var end = textarea.selectionEnd;
		var i;
		var scrollTop = textarea.scrollTop;
		var scrollLeft = textarea.scrollLeft;
		var sel = textarea.value.substring(start, end);
		var list = sel.split('\n');
		for(i=0; i<list.length; i++) {
			list[i] = '[*]' + list[i];
		}
		var rep = tag1 + '\n' + list.join("\n") + '\n' +tag2;
		textarea.value =  textarea.value.substring(0,start) + rep + textarea.value.substring(end,len);
		textarea.scrollTop = scrollTop;
		textarea.scrollLeft = scrollLeft;
	}
}

function keyPressedLogin(event) {
	if (event.keyCode == 32) {
		doLogin();
	}
}

function collapseForum(forumID)
{
	if (fetchObject(forumID) != null)
	{
		fetchObject(forumID).style.display = "none";
	}
}

function scrolledWindow() {
	//checkIEWarningRelocation();
}

function expandForum(forumID)
{
	var browserName = navigator.appName;
	var disp = 'table-row-group';
	if (browserName == 'Microsoft Internet Explorer')
		disp = 'block';
	fetchObject(forumID).style.display = disp;
}

function toggleForum(forumID, collapser)
{
	var element = fetchObject(forumID);
	if (element.style.display == 'none')
	{
		expandForum(forumID);
		collapser.style.background = "transparent url('images/collapse.png')";
	}
	else
	{
		collapseForum(forumID);
		collapser.style.background = "transparent url('images/expand.png')";

	}
	saveCollapsed();
}

function saveCollapsed()
{
	var collapsed = "";
	for (var i = 1; true; i++)
	{
		var elem = fetchObject('cat-' + i);
		if (elem == null)
		{
			break;
		}
		if (elem.style.display == 'none')
		{
			collapsed += (elem.id + "\n");
		}
	}
	createCookie("collapsed", collapsed, 5);
}

function initForums()
{
	var savedCollapse = readCookie("collapsed");
	if (savedCollapse) {
		var savedCollapseArr = savedCollapse.split("\n");
		for (var x = 0; x < savedCollapseArr.length; x++) {
			var collapsed = savedCollapseArr[x];
			if (collapsed != null && collapsed != '') {
				collapseForum(collapsed);
				var collapser = fetchObject("collapser-" + collapsed.charAt(collapsed.length - 1));
				if (collapser != null) {
					collapser.style.background = "transparent url(images/expand.png)";
				}
			}
		}
	}
}

function overlay() 
{
	var cover = fetchObject('overlay');
	if(vis)
	{
		vis = 0;
		cover.style.display = 'block';      
	} 
	else 
	{   
		vis = 1;
		cover.style.display = 'none'; 
	}
}


function readCookie( check_name ) {
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false;
	
	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		a_temp_cookie = a_all_cookies[i].split( '=' );
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found ) 
	{
		return null;
	}
}

function createCookie( name, value, expires, path, domain, secure ) {
	var today = new Date();
	today.setTime( today.getTime() );

	if ( expires )
	{
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );

	document.cookie = name + "=" +escape( value ) +
		( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
		( ( path ) ? ";path=" + path : "" ) + 
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}

function eraseCookie( name, path, domain ) {
	if ( readCookie( name ) ) document.cookie = name + "=" +
			( ( path ) ? ";path=" + path : "") +
			( ( domain ) ? ";domain=" + domain : "" ) +
			";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

function getWidth() {
	var x = 0;
	if (self.innerWidth) {
		x = self.innerWidth;
	} else if (document.documentElement && document.documentElement.clientWidth) {
		x = document.documentElement.clientWidth;
	} else if (document.body) {
		x = document.body.clientWidth;
	}
	return x;
}

function getHeight() {
	var y = 0;
	if (self.innerHeight) {
		y = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) {
		y = document.documentElement.clientHeight;
	} else if (document.body) {
		y = document.body.clientHeight;
	}
	return y;
}

function getScrollX() {
	var scrOfX = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		scrOfX = document.documentElement.scrollLeft;
	}
	return scrOfX;
}

function getScrollY() {
	scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		scrOfY = window.pageYOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		scrOfY = document.body.scrollTop;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		scrOfY = document.documentElement.scrollTop;
	}
	return scrOfY;
}

function getHeight(obj) {
	var h = 0;
	if (obj.innerHeight) {
		h = obj.innerHeight;
	} else if (obj.clientHeight) {
		h = obj.clientHeight;
	}
	return h;
}

function opacity(id, opacStart, opacEnd, millisec) {
	var speed = Math.round(millisec / 100);
	var timer = 0;
	if(opacStart > opacEnd) {
		for(i = opacStart; i >= opacEnd; i--) {
			setTimeout("changeOpac(" + i + ",'" + id + "')", (timer * speed));
			timer++;
		}
	} else if(opacStart < opacEnd) {
		for(i = opacStart; i <= opacEnd; i++) {
			setTimeout("changeOpac(" + i + ",'" + id + "')", (timer * speed));
			timer++;
		}
	}
}

function changeOpac(opacity, id) {
	var object = document.getElementById(id).style; 
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
}

function shiftOpacity(id, millisec) {
	if(fetchObject(id).style.opacity == 0) {
		opacity(id, 0, 100, millisec);
	} else {
		opacity(id, 100, 0, millisec);
	}
}

function blendImage(divid, imageid, imagefile, millisec) {
	var speed = Math.round(millisec / 100);
	var timer = 0;
	fetchObject(divid).style.backgroundImage = "url(" + fetchObject(imageid).src + ")";
	changeOpac(0, imageid);
	fetchObject(imageid).src = imagefile;
	for(i = 0; i <= 100; i++) {
		setTimeout("changeOpac(" + i + ",'" + imageid + "')",(timer * speed));
		timer++;
	}
}

function currentOpac(id, opacEnd, millisec) {
	var currentOpac = 100;
	if(fetchObject(id).style.opacity < 100) {
		currentOpac = fetchObject(id).style.opacity * 100;
	}
	opacity(id, currentOpac, opacEnd, millisec)
}

function slideDown(objname, millis){
	if(slideMoving[objname])
		return;
	if(fetchObject(objname).style.display != "none")
		return; // cannot slide down something that is already visible
	slideAniLen[objname] = millis;
	slideMoving[objname] = true;
	slideDir[objname] = "down";
	startslide(objname);
}

function slideUp(objname, millis){
	if(slideMoving[objname])
		return;
	if(fetchObject(objname).style.display == "none")
		return; // cannot slide up something that is already hidden
	slideAniLen[objname] = millis;
	slideMoving[objname] = true;
	slideDir[objname] = "up";
	startslide(objname);
}

function startslide(objname){
	slideObj[objname] = fetchObject(objname);
	if (slideObj[objname] == null) {
		alert('null!');
	}
	slideObj[objname].style.overflow = "hidden";
	if(slideObj[objname].clientHeight != 0) {
		slideEndHeight[objname] = getHeight(slideObj[objname]);
	} else {
		slideEndHeight[objname] = parseInt(slideObj[objname].style.height);
	}
	slideStartTime[objname] = (new Date()).getTime();
	if(slideDir[objname] == "down"){
		slideObj[objname].style.height = "1px";
	}
	slideObj[objname].style.display = "block";
	slideTimerID[objname] = setInterval('slidetick(\'' + objname + '\');', timerlen);
}

function slidetick(objname){
	var elapsed = (new Date()).getTime() - slideStartTime[objname];
	if (elapsed > slideAniLen[objname])
		endSlide(objname)
	else {
		var d = Math.round(elapsed * slideEndHeight[objname] / slideAniLen[objname]);
		if(slideDir[objname] == "up")
			d = slideEndHeight[objname] - d;
		slideObj[objname].style.height = d + "px";
	}
	return;
}

function endSlide(objname){
	clearInterval(slideTimerID[objname]);
	if(slideDir[objname] == "up")
		slideObj[objname].style.display = "none";
	slideObj[objname].style.height = slideEndHeight[objname] + "px";
	delete(slideMoving[objname]);
	delete(slideTimerID[objname]);
	delete(slideStartTime[objname]);
	delete(slideEndHeight[objname]);
	delete(slideObj[objname]);
	delete(slideDir[objname]);
	delete(slideAniLen[objname]);
	return;
}

function showCover() {
	fetchObject("cover").style.display = "block";
}

function hideCover() {
	fetchObject("cover").style.display = "none";
}