var browserIsIE = (navigator.appName == 'Microsoft Internet Explorer');

Array.prototype.find = function(needle) {
	var i;
	for(i=0;i<this.length;i++)if(this[i]==needle)return i;
	return false;
}
function getClasses(obj) {
	return (obj&&obj.className)?obj.className.split(' '):new Array();
}
function hasClass(obj, className) {
	return getClasses(obj).find(className)!=false;
}
function addClass(obj, className) {
	replaceClass(obj, '', className, true);
}
function replaceClass(obj, oldClass, newClass, appendWhenNotFound) {
	if(!obj||(typeof(obj.className) == 'undefined'))return;
	var classes = getClasses(obj);
	var index = classes.find(oldClass);
	if (index !== false) {
		classes[index] = newClass;
	} else if (appendWhenNotFound && (classes.find(newClass) === false)) {
		classes.push(newClass);
	}
	obj.className = classes.join(' ');
}
function removeClass(obj, className) {
	if(!obj||!obj.className)return;
	var classes = getClasses(obj);
	var index = classes.find(className);
	if (index !== false) {
		classes.splice(index, 1);
	}
	obj.className = classes.join(' ');
}
function focusFirstControlChild(obj) {
	var found = false;
	if (obj.nodeName && ((obj.nodeName.toLowerCase()=='select')||(obj.nodeName.toLowerCase()=='input')||(obj.nodeName.toLowerCase()=='textarea')) && !obj.disabled && (!obj.type || (obj.type.toLowerCase() != 'hidden'))) {
		obj.focus();
		found = true;
	} else if (obj.childNodes) {
		for(var i=0; (i < obj.childNodes.length) && !found; i++) {
			found = focusFirstControlChild(obj.childNodes[i]);
		}
	}
	return found;
}
function switchTab(tab, supressEventHandlers, noButtons) {
	if (!hasClass(document.getElementById('tab_'+tab), 'disabled')) {
		var tabControl = document.getElementById('tabcontrol');
		for(var i=0; i < tabControl.childNodes.length; i++) {
			if ((tabControl.childNodes[i].nodeType == 1) && (tabControl.childNodes[i].id.indexOf('tab_') >= 0)) {
				if ((hasClass(tabControl.childNodes[i], 'activetab')) && (tabControl.childNodes[i].id != 'tab_'+tab)) {
					// set the tab button back no normal
					document.getElementById('btn_'+tabControl.childNodes[i].id).className = '';
					if (noButtons) {
						document.getElementById('btn_'+tabControl.childNodes[i].id).style.visibility = 'hidden';
					}
					// remove the active class from the tab
					removeClass(tabControl.childNodes[i], 'activetab');
					// call event handler (if applies)
					if (!supressEventHandlers && window.on_deactivate_tab) on_deactivate_tab(tabControl.childNodes[i]);
				} else if ((!hasClass(tabControl.childNodes[i], 'activetab')) && (tabControl.childNodes[i].id == 'tab_'+tab)) {
					// set the tab button to active
					document.getElementById('btn_'+tabControl.childNodes[i].id).className = 'activetab';
					if (noButtons) {
						document.getElementById('btn_'+tabControl.childNodes[i].id).style.visibility = 'visible';
					}
					// add the active class to the tab
					addClass(tabControl.childNodes[i], 'activetab');
					focusFirstControlChild(tabControl.childNodes[i]);
					// call event handler (if applies)
					if (!supressEventHandlers && window.on_activate_tab) on_activate_tab(tabControl.childNodes[i]);
				}
			}
		}
	}
}
function disableTab(tab) {
	addClass(document.getElementById('tab_'+tab),'disabled');
	addClass(document.getElementById('btn_tab_'+tab),'disabled');
}
function enableTab(tab) {
	removeClass(document.getElementById('tab_'+tab),'disabled');
	removeClass(document.getElementById('btn_tab_'+tab),'disabled');
}
function hideTab(tab, noButtons) {
	document.getElementById('btn_tab_'+tab).style.display='none';
}
function showTab(tab, noButtons) {
	if (noButtons) document.getElementById('btn_tab_'+tab).style.visibility='hidden';
	document.getElementById('btn_tab_'+tab).style.display='block';
}
function blinkElement(domID) {
	var obj = document.getElementById(domID);
	if (obj) {
		if (typeof obj.fadeDirection == 'undefined') {
			obj.fadeOpacity = 100;
			obj.fadeDirection = -10;
			window.setInterval("blinkElement('" + domID + "');", 85);
		} else {
			obj.fadeOpacity = obj.fadeOpacity + obj.fadeDirection;
			if ((obj.fadeOpacity >= 100) || (obj.fadeOpacity <= 00)) obj.fadeDirection = 0-obj.fadeDirection;
			if (browserIsIE) {
				obj.style.filter = "alpha(opacity='" + obj.fadeOpacity + "')";
			} else {
				obj.style.setProperty("-moz-opacity",(obj.fadeOpacity/100),"");
			}
		}
	}
}
function findObjectPosition(obj,xy) {
	return ((xy == "x") ? obj.offsetLeft : obj.offsetTop) + (obj.offsetParent ? findObjectPosition(obj.offsetParent, xy) : 0);
}
function getMouseCoordinates(e) {
	var posx = 0;
	var posy = 0;
	if (e.pageX || e.pageY) {
		posx = e.pageX;
		posy = e.pageY;
	} else if (e.clientX || e.clientY) {
		posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	}
	return new Array(posx, posy);
}
function onStarsMouseOut(stars, rank, e) {
	stars.src = "images/stars_big_" + rank + ".gif";
	stars.currentRank = rank;
}
function onStarsMouseMove(stars, e) {
	if (e) var event = e; else if (window.event) var event = window.event; else return;
	var v = getMouseCoordinates(e);
	var z = v[0] - findObjectPosition(stars, 'x');
	var rank = Math.round(5 * ((4 + z) / (stars.offsetWidth - 8)));
	if ((rank > 0) && (rank < 6)) {
		if (stars.currentRank != rank) {
			stars.src = "images/stars_big_" + rank + ".gif";
			stars.currentRank = rank;
		}
	}
}
function showInMultiBar(htmlText) {
	if (document.getElementById('multibar')) document.getElementById('multibar').innerHTML = htmlText;
}
function findX(obj) {
	return obj.offsetTop + (obj.offsetParent?findX(obj.offsetParent):0);
}
function findY(obj) {
	return obj.offsetLeft + (obj.offsetParent?findY(obj.offsetParent):0);
}
function showMessageAlert(title, message, width, height) {
	var d = document.getElementById('messageAlert');
	var dbtn = document.getElementById('messagesButton');
	if (!dbtn) dbtn  = document.getElementById('topregbutton');
	var dtitle = document.getElementById('messageAlertTitle');
	var dmsg = document.getElementById('messageAlertText');
	var shadow = document.getElementById('messageShadow');
	if (d && dbtn && dtitle && dmsg) {
		shadow.style.position = 'absolute';
		shadow.style.display = 'block';

		dtitle.innerHTML = title;
		dmsg.innerHTML = message;
		if (browserIsIE) d.style.filter = 'alpha(opacity=25)';
		else d.style.setProperty('-moz-opacity',0.25,"");
		d.style.display = 'block';
		d.xOpacity = 20;
		d.style.position = 'absolute';
		d.style.width = (dbtn.offsetWidth - 4) + 'px';
		d.style.height = (dbtn.offsetHeight - 4) + 'px';
		d.style.top = findX(dbtn) + 'px';
		d.style.left = findY(dbtn) + 'px';

		shadow.style.width = d.offsetWidth + 'px';
		shadow.style.height = d.offsetHeight + 'px';
		shadow.style.top = (d.offsetTop + 10) + 'px';
		shadow.style.left = (d.offsetLeft + 10) + 'px';

		var speed = 75;
		setTimeout('resizeAlertBox("messageAlert", ' + width + ', ' + height + ', 12, ' + speed + ');', 250);
	}
}
function closeAlertWin() {
	var d = document.getElementById('messageAlert');
	var shadow = document.getElementById('messageShadow');
	if (d) {
		d.style.display = 'none';
	}
	if (shadow) {
		shadow.style.display = 'none';
	}
}
function resizeAlertBox(id, width, height, steps, speed, stepX1, stepY1, stepX2, stepY2) {
	var d = document.getElementById(id);
	var shadow = document.getElementById('messageShadow');
	if (d) {
		if (!stepX1 || !stepX2) {
			var stepX1 = (height - d.offsetHeight) / steps;
			var stepY1 = (width - d.offsetWidth) / steps;
			var stepX2 = (((document.body.clientHeight / 2) - (height / 2)) - findX(d)) / steps;
			var stepY2 = (((document.body.clientWidth / 2) - (width / 2)) - findY(d)) / steps;
			d.xWidth = d.offsetWidth;
			d.xHeight = d.offsetHeight;
			d.xTop = d.offsetTop;
			d.xLeft = d.offsetLeft;
		}
		if ((d.offsetWidth < width) && (d.offsetHeight < height)) {
			d.xOpacity += ((100 - 20) / steps);
			d.xWidth += stepY1;
			d.xHeight += stepX1;
			d.xLeft += stepY2;
			d.xTop += stepX2;

			d.style.width = d.xWidth + 'px';
			d.style.height = d.xHeight + 'px';
			d.style.left = d.xLeft + 'px';
			d.style.top = d.xTop + 'px';

			if (browserIsIE) {
				d.style.filter = 'alpha(opacity=' + d.xOpacity + ')';
				shadow.style.filter = 'alpha(opacity=' + (50 * (d.xOpacity / 100)) + ')';
			} else {
				d.style.setProperty('-moz-opacity', d.xOpacity / 100, "");
				shadow.style.setProperty('-moz-opacity', (50 * (d.xOpacity / 100)) / 100, "");
			}
			setTimeout('resizeAlertBox("' + id + '", ' + width + ', ' + height + ', '+steps+', '+speed+', '+stepX1+', '+stepY1+', '+stepX2+', '+stepY2+');', speed);
		} else {
			var dmsg = document.getElementById('messageAlertText');
			d.style.height = (dmsg.offsetHeight+26)+'px';
			d.style.top = ((document.body.clientHeight / 2) - (d.offsetHeight / 2)) + 'px';
		}
	}
	if (d && shadow) {
		shadow.style.width = d.offsetWidth + 'px';
		shadow.style.height = d.offsetHeight + 'px';
		shadow.style.top = (d.offsetTop + Math.round(d.offsetHeight / 33)) + 'px';
		shadow.style.left = (d.offsetLeft + Math.round(d.offsetWidth / 50)) + 'px';
	}
}
function validateEmail(str) {
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if (str.indexOf(at) == -1) return false;
	if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) return false;
	if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) return false;
	if (str.indexOf(at,(lat+1)) != -1) return false;
	if (str.substring(lat-1,lat) == dot || str.substring(lat+1,lat+2) == dot) return false;
	if (str.indexOf(dot,(lat+2)) == -1) return false;
	if (str.indexOf(" ") != -1) return false;
	return true;			
}
