/*======================================================================*\
|| #################################################################### ||
|| # v3 Arcade for vBulletin                                          # ||
|| # Support: http://www.v3arcade.com                                 # ||
|| # Copyright: http://www.cinvin.com                                 # ||
|| #################################################################### ||
\*======================================================================*/

var editorstring;
var activeid;
var activecontent;
var lastfav;

function getObj(name)
{
 if (document.getElementById)
 {
	   this.obj = document.getElementById(name);
	   this.style = document.getElementById(name).style;
 }
 else if (document.all)
 {
	   this.obj = document.all[name];
	   this.style = document.all[name].style;
 }
 else if (document.layers)
 {
	   if (document.layers[name])
	   {
	   	this.obj = document.layers[name];
	   	this.style = document.layers[name];
	   }
	   else
	   {
	    this.obj = document.layers.testP.layers[name];
	    this.style = document.layers.testP.layers[name];
	   }
 }
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

// ##### Add maxlength characteristic to textareas
function textarea_len(obj, maxLen)
{
	if (obj.value.length > maxLen)
	obj.value = obj.value.substring(0, maxLen)
}

var lastdiv = 100;

// ##### Update Game Resolution ###############################################
function game_res(ressize, gamewidth, gameheight)
{
	vBmenu.hide();

	document.getElementById('res_' + ressize).style.fontWeight = 'bold';
	document.getElementById('res_' + lastdiv).style.fontWeight = 'normal';

	gameobj = document.getElementById('game_object');

	if (gameobj)
	{
		gameobj.width = gamewidth;
		gameobj.height = gameheight;
	}

	embedobj = document.getElementById('game_embedobj');
	if (embedobj)
	{
		embedobj.width = gamewidth;
		embedobj.height = gameheight;
	}

	document.getElementById('gameres_row').innerHTML = ressize + '% (' + gamewidth + ' x ' + gameheight + ')';

	lastdiv = ressize;

	return false;
}

// ##### Get the userinfo box #################################################
function show_userinfo(obj, lyr, userid)
{
	var newX = findPosX(obj);
	var newY = findPosY(obj);
	var x = new getObj(lyr);
	x.style.top = newY + 20 + 'px';
	x.style.left = newX - 40 + 'px';

	// set the onmouseout
	obj.onmouseout = function()
	{
		clearTimeout();
		document.getElementById('userpanel').style.visibility = 'hidden';
	}

	xml = new vB_AJAX_Handler(true);
	xml.onreadystatechange(infoprocess);

	// delay it
	if (hoverdelay_len)
	{
		setTimeout("xml.send('arcade.php', 'do=userinfosearch&userid=" + userid + "');", hoverdelay_len);
	}
	else
	{
		xml.send('arcade.php', 'do=userinfosearch&userid=' + userid);
	}

	document.getElementById('userpanel').innerHTML = '';
	document.getElementById('userpanel').style.visibility = 'visible';
}

function infoprocess()
{
	if (xml.handler && xml.handler.readyState == 4 && xml.handler.status == 200 && xml.handler.responseText)
	{
		document.getElementById('userpanel').innerHTML = xml.handler.responseText;
	}
}

function kill_panel()
{
	document.getElementById('userpanel').style.visibility = 'hidden';
}

// ##### Favorites handling ###################################################
function favprocess()
{
	if (xml.handler.readyState == 4 && xml.handler.status == 200 && xml.handler.responseText)
	{
		thisfav = document.getElementById('fav_' + lastfav);
		if (xml.handler.responseText==1)
		{
			thisfav.src = arcade_img_url + '/subfav.gif';
			thisfav.alt = phrase_arcade_sub;
			thisfav.title = phrase_arcade_sub;
		} else if (xml.handler.responseText==2)
		{
			thisfav.src = arcade_img_url + '/addfav.gif';
			thisfav.alt = phrase_arcade_add;
			thisfav.title = phrase_arcade_add;
		}
	}
}

function dofav(gameid)
{
	xml = new vB_AJAX_Handler(true);
	xml.onreadystatechange(favprocess);
	
	lastfav = gameid;
	xml.send('arcade.php', 'do=processfav&gameid=' + gameid );
}

// ##### Ajax Search
var asearch;
var nowsearching;

function searching()
{
	if (nowsearching!=1)
	{
		nowsearching = 1;
		document.getElementById('searchtable').innerHTML = '<div align="center"><img src="images/arcade/search.gif" /></div>';
	}
}

function gamesearch(searchstring)
{
	clearTimeout(asearch);
	searching();
	if (searchstring.length >= min_search_len)
	{
		delaystring = "arcadesearch('" + searchstring + "');";
		asearch = setTimeout(delaystring, search_delay);
	}
}

function arcadesearch(searchstring)
{
	searchstring = PHP.urlencode(searchstring);
	xml = new vB_AJAX_Handler(true);
	xml.onreadystatechange(searchprocess);
	xml.send('arcade.php', 'do=ajaxsearch&searchstring=' + searchstring);
}

function explode(item,delimiter)
{
	tempArray = new Array(1);
	var Count = 0;
	var tempString=new String(item);
	
	while (tempString.indexOf(delimiter) > 0)
	{
		tempArray[Count]=tempString.substr(0, tempString.indexOf(delimiter));
		tempString=tempString.substr(tempString.indexOf(delimiter)+3, tempString.length-tempString.indexOf(delimiter) + 3);
		Count = Count + 1;
	}
	
	tempArray[Count]=tempString;
	return tempArray;
} 

function searchprocess()
{
	if (xml.handler.readyState == 4 && xml.handler.status == 200 && xml.handler.responseText)
	{
		games = xml.handler.responseText;
		games = explode(games, '^^^');

		results = '';
		firstbg = 1;
		for (var i = 0; i < games.length; i++)
		{
			if (firstbg == 1)
			{
				firstbg = 2;
			}
			else
			{
				firstbg = 1;
			}
			game = explode(games[i], '|||');
			results += '<div class="alt' + firstbg + '" style="padding: 5px"><a href="arcade.php?do=play&amp;gameid=' + game[0] + '"><img src="' + arcade_img_url + '/' + game[2] + '" border="0" align="absmiddle" width="' + arcade_img_size + '" height="' + arcade_img_size + '" /></a><span class="smallfont"> <a href="arcade.php?do=play&amp;gameid=' + game[0] + '">' + game[1] + '</a></span></div>';
		}
		document.getElementById('searchtable').innerHTML = results;
		nowsearching = 0;
	}
	
	if (xml.handler.readyState == 4)
	{
		if (xml.handler.responseText=='')
		{
			document.getElementById('searchtable').innerHTML = '<div style="padding: 6px" class="smallfont">' + phrase_no_results + '</div>';
			nowsearching = 0;
		}
	}
}

// ##### Ratings
son = arcade_img_url + '/star_on.gif';
soff = arcade_img_url + '/star_off.gif';
enablerating = 1;
enableratingsend = 1;
	
function starover(sid)
{
	if (enablerating==1)
	{
		counter = 5;
		while (counter<6 && counter>0)
		{
			if (counter > sid)
			{
				document.getElementById('star' + counter).src = soff;
			} else {
				document.getElementById('star' + counter).src = son;
			}
			counter--;
		}
	}
}

function stardown(sid)
{
	enablerating = 1;
	
	if (enableratingsend==1)
	{
		starover(sid);
		xml = new vB_AJAX_Handler(true);
		xml.onreadystatechange(checkratingsend);
		xml.send('arcade.php', 'do=dorating&gameid=' + arcade_gameid + '&rating='+ sid);
		enableratingsend=0;
	}
	
	enablerating = 0;
}

function checkratingsend()
{
	if (xml.handler.readyState == 4 && xml.handler.status == 200 && xml.handler.responseText)
	{
		enableratingsend = 1;
	}
}

// ##### Ajax edit/delete
var editorstring;
var activeid;
var activecontent;

function deletecomment(objId)
{
	confirmdelete = confirm(phrase_are_you_sure);
	if (confirmdelete==true)
	{
		window.location.href = 'arcade.php?do=commentdelete&sessionid=' + objId;
	}
}

function editcomment(objId, page)
{
	if (activeid>0 && activeid!=objId)
	{
		document.getElementById('score' + activeid).innerHTML = activecontent;
	}
	
	if (activeid==objId)
	{
		document.getElementById('score' + objId).innerHTML = activecontent;
		activeid = null;
	} else {
		activeid = objId;
		xml = new vB_AJAX_Handler(true);
		xml.onreadystatechange(editprocess);
		xml.send('arcade.php', 'do=commentfetch&sessionid=' + objId + '&page='+ page);
		activecontent = document.getElementById('score' + objId).innerHTML;
	}
}

function editprocess()
{
	if (xml.handler.readyState == 4 && xml.handler.status == 200 && xml.handler.responseText)
	{
		document.getElementById('score' + activeid).innerHTML = xml.handler.responseText;
	}
}

function NiftyCheck(){
if(!document.getElementById || !document.createElement)
    return(false);
isXHTML=/html\:/.test(document.getElementsByTagName('body')[0].nodeName);
if(Array.prototype.push==null){Array.prototype.push=function(){
      this[this.length]=arguments[0]; return(this.length);}}
return(true);
}

function Rounded(selector,wich,bk,color,opt){
var i,prefixt,prefixb,cn="r",ecolor="",edges=false,eclass="",b=false,t=false;

if(color=="transparent"){
    cn=cn+"x";
    ecolor=bk;
    bk="transparent";
    }
else if(opt && opt.indexOf("border")>=0){
    var optar=opt.split(" ");
    for(i=0;i<optar.length;i++)
        if(optar[i].indexOf("#")>=0) ecolor=optar[i];
    if(ecolor=="") ecolor="#666";
    cn+="e";
    edges=true;
    }
else if(opt && opt.indexOf("smooth")>=0){
    cn+="a";
    ecolor=Mix(bk,color);
    }
if(opt && opt.indexOf("small")>=0) cn+="s";
prefixt=cn;
prefixb=cn;
if(wich.indexOf("all")>=0){t=true;b=true}
else if(wich.indexOf("top")>=0) t="true";
else if(wich.indexOf("tl")>=0){
    t="true";
    if(wich.indexOf("tr")<0) prefixt+="l";
    }
else if(wich.indexOf("tr")>=0){
    t="true";
    prefixt+="r";
    }
if(wich.indexOf("bottom")>=0) b=true;
else if(wich.indexOf("bl")>=0){
    b="true";
    if(wich.indexOf("br")<0) prefixb+="l";
    }
else if(wich.indexOf("br")>=0){
    b="true";
    prefixb+="r";
    }
var v=getElementsBySelector(selector);
var l=v.length;
for(i=0;i<l;i++){
    if(edges) AddBorder(v[i],ecolor);
    if(t) AddTop(v[i],bk,color,ecolor,prefixt);
    if(b) AddBottom(v[i],bk,color,ecolor,prefixb);
    }
}

function AddBorder(el,bc){
var i;
if(!el.passed){
    if(el.childNodes.length==1 && el.childNodes[0].nodeType==3){
        var t=el.firstChild.nodeValue;
        el.removeChild(el.lastChild);
        var d=CreateEl("span");
        d.style.display="block";
        d.appendChild(document.createTextNode(t));
        el.appendChild(d);
        }
    for(i=0;i<el.childNodes.length;i++){
        if(el.childNodes[i].nodeType==1){
            el.childNodes[i].style.borderLeft="1px solid "+bc;
            el.childNodes[i].style.borderRight="1px solid "+bc;
            }
        }
    }
el.passed=true;
}
    
function AddTop(el,bk,color,bc,cn){
var i,lim=4,d=CreateEl("b");

if(cn.indexOf("s")>=0) lim=2;
if(bc) d.className="artop";
else d.className="rtop";
d.style.backgroundColor=bk;
for(i=1;i<=lim;i++){
    var x=CreateEl("b");
    x.className=cn + i;
    x.style.backgroundColor=color;
    if(bc) x.style.borderColor=bc;
    d.appendChild(x);
    }
el.style.paddingTop=0;
el.insertBefore(d,el.firstChild);
}

function AddBottom(el,bk,color,bc,cn){
var i,lim=4,d=CreateEl("b");

if(cn.indexOf("s")>=0) lim=2;
if(bc) d.className="artop";
else d.className="rtop";
d.style.backgroundColor=bk;
for(i=lim;i>0;i--){
    var x=CreateEl("b");
    x.className=cn + i;
    x.style.backgroundColor=color;
    if(bc) x.style.borderColor=bc;
    d.appendChild(x);
    }
el.style.paddingBottom=0;
el.appendChild(d);
}

function CreateEl(x){
if(isXHTML) return(document.createElementNS('http://www.w3.org/1999/xhtml',x));
else return(document.createElement(x));
}

function getElementsBySelector(selector){
var i,selid="",selclass="",tag=selector,f,s=[],objlist=[];

if(selector.indexOf(" ")>0){  //descendant selector like "tag#id tag"
    s=selector.split(" ");
    var fs=s[0].split("#");
    if(fs.length==1) return(objlist);
    f=document.getElementById(fs[1]);
    if(f) return(f.getElementsByTagName(s[1]));
    return(objlist);
    }
if(selector.indexOf("#")>0){ //id selector like "tag#id"
    s=selector.split("#");
    tag=s[0];
    selid=s[1];
    }
if(selid!=""){
    f=document.getElementById(selid);
    if(f) objlist.push(f);
    return(objlist);
    }
if(selector.indexOf(".")>0){  //class selector like "tag.class"
    s=selector.split(".");
    tag=s[0];
    selclass=s[1];
    }
var v=document.getElementsByTagName(tag);  // tag selector like "tag"
if(selclass=="")
    return(v);
for(i=0;i<v.length;i++){
    if(v[i].className.indexOf(selclass)>=0){
        objlist.push(v[i]);
        }
    }
return(objlist);
}

function Mix(c1,c2){
var i,step1,step2,x,y,r=new Array(3);
if(c1.length==4)step1=1;
else step1=2;
if(c2.length==4) step2=1;
else step2=2;
for(i=0;i<3;i++){
    x=parseInt(c1.substr(1+step1*i,step1),16);
    if(step1==1) x=16*x+x;
    y=parseInt(c2.substr(1+step2*i,step2),16);
    if(step2==1) y=16*y+y;
    r[i]=Math.floor((x*50+y*50)/100);
    }
return("#"+r[0].toString(16)+r[1].toString(16)+r[2].toString(16));
} 