//shows and dom element and show another. both elements are optional

function showhide( idHide , idShow )
{
	if( idHide != null )
		dojo.html.hide( dojo.byId( idHide ) );
	if( idShow != null )
		dojo.html.show( dojo.byId( idShow ) );
}

function show_hide_region( id )
{
	if( id != null )
		if( dojo.html.isShowing( dojo.byId( id ) ) )
			dojo.html.hide( dojo.byId( id ) );
		else
			dojo.html.show( dojo.byId( id ) );
}


var activePopup = null;

function hide_active_popup()
{
	if(activePopup!=null)
	{
		var nodeActive = dojo.byId(activePopup);
		if(nodeActive != null)
			hide_popup( activePopup );
	}
}

function hide_popup( id )
{
	if( id == null )
		return;

	var htmlnode =  dojo.byId( id );
	if( !htmlnode )
		return;

	if( dojo.html.isShowing( htmlnode ) )
	{ dojo.html.hide( htmlnode ); activePopup=null; return; }
}

function show_as_popup( id )
{
	if( id == null )
		return;

	var htmlnode =  dojo.byId( id );
	if( !htmlnode )
		return;

	var poz = dojo.html.getAbsolutePosition( htmlnode.parentNode, true );

	htmlnode.style.top = (poz.y+15)+"px";
	htmlnode.style.left = poz.x+"px";

	if(activePopup!=null)
	{
		var nodeActive = dojo.byId(activePopup);
		if(nodeActive != null)
			hide_popup( activePopup );
	}
	activePopup = id;

	dojo.html.show( htmlnode );

	setTimeout('hide_active_popup()',6000);
}

var main_menu_active_item = null;
function show_hide_menu_action( id )
{
	node = dojo.byId( id );
	if( node != null)
	{
		if( dojo.html.isShowing(node) )
		{
			dojo.html.hide( node );
		}
		else
		{
			if( main_menu_active_item != null )
				dojo.html.hide( dojo.byId( main_menu_active_item ) );
			dojo.html.show( node );
			main_menu_active_item = id;
		}
	}
}

function gotopage( url )
{
	page = url;
	if( dojo.string.startsWith( url, "page:", true) )
		page = page.substr(5);
	window.location = page;
}

function gotonewpage( url )
{
	page = url;
	if( dojo.string.startsWith( url, "newpage:", true) )
		page = page.substr(8);

	var newwin = window.open(url,'mywindow','width=1024,height=768,toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes,resizable=yes');

	if(!newwin)
		window.location = url;
}

function goinpage( anchor )
{
	url = ''+window.location;
	pos = url.lastIndexOf('#');
	if(pos>-1)
		url = url.substring(0,pos)+"#"+anchor;
	else
		url = url+"#"+anchor;
	window.location = url;
}

function getRadioValue( parent )
{
	/*var user_input = null;
	for (i=0;i<radio.length;i++)
	{
		if (radio[i].checked)
		{
			user_input = radio[i].value;
			break;
		}
	}
	return user_input;*/
	var radios = dojo.html.getElementsByClass("formradiob",parent,"input");
	var i = 0;
	var retval = "";

	for( i = 0; i < radios.length; i++ )
	{
		if( radios[i].checked )
		{
			retval += dojo.html.getAttribute( radios[i], "value" );
			break;
		}
	}
	return retval;
}

function cloasetoast()
{
	//alert('aa'+et);
	et.hide();
}

function toast( text )
{
	var text = '<div class="toasterclosebut"><a id="toastcloseb" onclick="cloasetoast()">close</a></div>' + text;

	dojo.event.topic.publish('maintoaster', {message:text,type:'MESSAGE',delay:20000});

	//dojo.connect(dojo.byId('toastcloseb'),'onclick','cloasetoast()');
}

function isChboxChecked( id )
{
	var chb = dojo.byId( id );
	if(chb.checked)
		return 'true';
	else
		return 'false';
}

function isChecked(object)
{
if (object.checked) return 1
return 0;
}

// required line
dojo.require("dojo.io.IframeIO");
// ***
var ctr = 0;
function upload_file_submit() {
	var bindArgs = {
		formNode: document.getElementById("clanstatform"), //form's id
		mimetype: "text/plain", //Enter file type info here
		content: {
			//increment: ctr++,
			name: "avatar", //file name in the form
			post_field: "clan_id" // add more fields here .. field will be accessible by $_POST["post_field"]
		},
		handler: function(type, data, evt) {
			//handle successful response here
			if(type == "error") alert("Error occurred.");
			else {
				//getting error message from PHP's file upload script
				res = dojo.byId("dojoIoIframe").contentWindow.document.getElementById("output").innerHTML;
				//Incase of an error, display the error message
				if(res != "true") alert(res);
				else alert("File uploaded successfully.");
			}
		}
	};
	var request = dojo.io.bind(bindArgs);
}

//PB// dom tree functions
function p_descendantTest(suspectedParent, suspectedChild) //function that tests if suspectedChild is a descendent of suspectedParent (not necesarily direct descendent)
	{
	if (!suspectedChild || suspectedChild==document.body || suspectedChild==document.documentElement) return false;
	else
	  {
	  if (suspectedParent==suspectedChild) return true;
	  else return p_descendantTest(suspectedParent, suspectedChild.parentNode);
	  }
	}

//PB// event canceling functions
function p_stopTriggerInside(element, handler, event)
	{
	try {
		if (element.addEventListener && !p_descendantTest(element, event.relatedTarget))
		  handler(event);
		else if (element.attachEvent && !p_descendantTest(element, ((window.event.type=="mouseover")?window.event.fromElement:window.event.toElement)))
		  handler(window.event);
		}
	catch(err){};
	}


//PB//Accelereaza
function Accelereaza(val_start, val_stop, pasi, timp, actiune, pas, continua, tip_acceleratie, contor_export, override)
{

if (tip_acceleratie) this.contor=val_start+(Math.sqrt(1-Math.pow(pas/pasi-1,2)))*(val_stop-val_start)
else this.contor=val_start+(1-Math.sqrt(1-Math.pow(pas/pasi,2)))*(val_stop-val_start)
eval(contor_export+"="+this.contor);

if (override==1)
  {
  eval(continua+"=1");
  override=0;
  }
else
  {
  override=0;
  }

if (pas==0)
  {
  if (eval(continua+"==1"))
    {
    eval(continua+"=0");
    override=1;
    }
  else
    {
    eval(continua+"=1");
    }
  }

if (!override) eval(actiune);

if (pas<pasi)
  {
  if (override==1||eval(continua+"==1"))
    {
    setTimeout("Accelereaza("+val_start+","+val_stop+","+pasi+","+timp+",'"+actiune+"',"+(pas+1)+",'"+continua+"',"+tip_acceleratie+",'"+contor_export+"',"+override+")",timp/pasi)
    }
  }
else continua=0
}

//PB//GPR (Game Presentations) / aka Top Games

function gpr_activateImage(image)
{
document.getElementById("gpr_largegame_screenshot").innerHTML="";
document.getElementById("gpr_largegame_screenshot").style.backgroundImage="url(resizeimage.php?maxsize=500&image=files/gpr/gameimages/"+image+".jpg)";
}

function gpr_activateYoutubeVideo(code)
{
document.getElementById("gpr_largegame_screenshot").style.backgroundImage="none";
document.getElementById("gpr_largegame_screenshot").innerHTML='\
	<div style="width:500px; height:355px; margin-top:73px; border-top:#000000 1px solid; border-bottom:#000000 1px solid; background:#D0D0D0; text-align:center; padding-top:5px; padding-bottom:5px;">\
		<object width="425" height="355">\
		<param name="movie" value="http://www.youtube.com/v/'+code+'&autoplay=1"></param>\
		<param name="wmode" value="transparent"></param>\
		<embed src="http://www.youtube.com/v/'+code+'&autoplay=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed>\
		</object>\
	</div>\
	';
}

function lreg_prepare(object, type)
{
object.className="data_item_value_focused";

description=document.getElementById("lreg_description");
formholder=document.getElementById("lreg_formholder");
desctriangle=document.getElementById("lreg_desctriangle");

description.style.display="block";
desctriangle.style.display="block";

if (0>(object.offsetTop+(object.offsetTop+(object.offsetHeight-description.offsetHeight)/2))) //nu are loc sus
	{
	description.style.top="-1px";
	}
else if ((object.offsetTop+(object.offsetHeight+description.offsetHeight)/2)>formholder.offsetHeight) //nu are loc jos
	{
	description.style.top=(formholder.offsetHeight+3-description.offsetHeight)+"px";
	}
else //are loc
	{
	description.style.top=(object.offsetTop+(object.offsetHeight-description.offsetHeight)/2)+"px";
	}
desctriangle.style.top=(object.offsetTop+(object.offsetHeight-desctriangle.offsetHeight)/2)+"px"
}

function lreg_isNickname(sText)
{
for (i = 0; i < sText.length; i++)
  {
  CharCode = sText.charCodeAt(i);
  if (CharCode<14 || CharCode>256) return false;
  }
return true;
}

function lreg_isPhoneNumber(sText)
{
var ValidChars = " +0123456789.";
var Char;


for (i = 0; i < sText.length; i++)
  {
  Char = sText.charAt(i);
  if (ValidChars.indexOf(Char) == -1)
     {
     return false;
     }
  }
return true;
}

function lreg_isName(sText)
{
var inValidChars = "`~!@#$%^&*()_+={}|\\][:\";?><,./1234567890";
var Char;

for (i = 0; i < sText.length; i++)
  {
  Char = sText.charAt(i);
  if (inValidChars.indexOf(Char) != -1)
     {
     return false;
     }
  }
return true;
}

function lreg_isEmail(sText)
{
var inValidChars = " `~!#$%^&*()+={}-|\\][:\";?><,/";
var Char;

for (i = 0; i < sText.length; i++)
  {
  Char = sText.charAt(i);
  if (inValidChars.indexOf(Char) != -1)
     {
     return false;
     }
  }
return true;
}

function lreg_isUsername(sText)
{
var theChars = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-";
var Char;

for (i = 0; i < sText.length; i++)
  {
  Char = sText.charAt(i);
  if (theChars.indexOf(Char) == -1)
     {
     return false;
     }
  }
return true;
}

function lreg_isNumeric(sText)
{
var theChars = "1234567890";
var Char;

for (i = 0; i < sText.length; i++)
  {
  Char = sText.charAt(i);
  if (theChars.indexOf(Char) == -1)
     {
     return false;
     }
  }
return true;
}

function lreg_isSteamID(sText)
{
if (sText.toUpperCase().substring(0,6)!="STEAM_") return false;
if (!lreg_isNumeric(sText.substring(6,7))) return false;
if (sText.substring(7,8)!=":") return false;
if (!lreg_isNumeric(sText.substring(8,9))) return false;
if (sText.substring(9,10)!=":") return false;
if (!lreg_isNumeric(sText.substring(10))) return false;
if (!sText.substring(10).length>0) return false;
return true;
}


function lreg_message(message)
{
return document.getElementById("lreg_message_"+message).innerHTML;
}

function lreg_URLEncode(plaintext)
{
// The Javascript escape and unescape functions do not correspond
// with what browsers actually do...
var SAFECHARS = "0123456789" + // Numeric
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" + // Alphabetic
"abcdefghijklmnopqrstuvwxyz" +
"-_.!~*'()"; // RFC2396 Mark characters
var HEX = "0123456789ABCDEF";

var encoded = "";
for (var i = 0; i < plaintext.length; i++ ) {
var ch = plaintext.charAt(i);
if (ch == " ") {
encoded += "+"; // x-www-urlencoded, rather than %20
} else if (SAFECHARS.indexOf(ch) != -1) {
encoded += ch;
} else {
var charCode = ch.charCodeAt(0);
if (charCode > 255) {

} else {
encoded += "%";
encoded += HEX.charAt((charCode >> 4) & 0xF);
encoded += HEX.charAt(charCode & 0xF);
}
}
} // for
return encoded;
}

function lreg_validate(object, type, writing, notextfieldchange, execute, final_validation_function)
{
var description=document.getElementById("lreg_description");
var desctriangle=document.getElementById("lreg_desctriangle");
var desctitle=document.getElementById("lreg_description_title");
var desccontent=document.getElementById("lreg_description_content");
var smalldesc=document.getElementById("data_item_smalldesc_"+type);

switch(type)
	{
	case "fullname":
		condition=object.value && object.value.length>=5 && object.value.lastIndexOf(" ")>0 && object.value.indexOf(" ")!=object.value.length-1 && lreg_isName(object.value) //must have 5 characters and a space
	break;

	case "phone":
		condition=object.value && object.value.length>=3 && lreg_isPhoneNumber(object.value)
	break;

	case "email":
		condition=object.value && object.value.length>=6 && object.value.indexOf("@")>0 && object.value.lastIndexOf(".")>object.value.indexOf("@")+1 && object.value.lastIndexOf(".")<object.value.length-1 && object.value.indexOf("@")==object.value.lastIndexOf("@") && lreg_isEmail(object.value)
	break;

	case "steam_id":
		condition=lreg_isSteamID(object.value);
	break;

	case "username":
		lreg_validate_ajax_total_fields++;
		condition=object.value && object.value.length>=4 && lreg_isUsername(object.value);
		if (condition)
			{
			if (typeof lreg_username_timeout!="undefined") clearTimeout (lreg_username_timeout);
			lreg_username_timeout=setTimeout(function()
				{
				dojo.io.bind({
				url: "/lreg_checkavailability.php?u="+lreg_URLEncode(object.value)+"&i="+lreg_user,
				load: function(type, data, evt){
				if (data=="0")
					{
					if (writing)
						{
						desctitle.innerHTML=lreg_message("username_available");
						desccontent.innerHTML=lreg_message("username_available_details");
						}
					else {
						smalldesc.innerHTML=lreg_message("username_available");
						}
					object.className="data_item_value_valid";
					lreg_validate_ajax_valid_fields++;
					if (typeof execute!="undefined" && typeof final_validation_function!="undefined") final_validation_function(execute);
					}
				else
					{
					if (writing)
						{
						desctitle.innerHTML=lreg_message("username_unavailable");
						desccontent.innerHTML=lreg_message("username_unavailable_details");
						}
					else {
						smalldesc.innerHTML=lreg_message("username_unavailable");
						}
					object.className="data_item_value_error";
					}

				},
				error: function(type, error) {},
				content: {},
				method: "post",
				mimetype: "text/plain"
				});
				},500);
			}
	break;

	case "nickname":
		lreg_validate_ajax_total_fields++;
		condition=object.value && object.value.length>=2 && lreg_isNickname(object.value);
		if (condition)
			{
			if (typeof lreg_nickname_timeout!="undefined") clearTimeout (lreg_nickname_timeout);
			lreg_nickname_timeout=setTimeout(function()
				{
				dojo.io.bind({
				url: "/lreg_checkavailability.php?n="+lreg_URLEncode(object.value)+"&i="+lreg_nick,
				load: function(type, data, evt){
				if (data=="0")
					{
					if (writing)
						{
						desctitle.innerHTML=lreg_message("nickname_available");
						desccontent.innerHTML=lreg_message("nickname_available_details");
						}
					else {
						smalldesc.innerHTML=lreg_message("nickname_available");
						}
					object.className="data_item_value_valid";
					lreg_validate_ajax_valid_fields++;
					if (typeof execute!="undefined" && typeof final_validation_function!="undefined") final_validation_function(execute);
					}
				else
					{
					if (writing)
						{
						desctitle.innerHTML=lreg_message("nickname_unavailable");
						desccontent.innerHTML=lreg_message("nickname_unavailable_details");
						}
					else {
						smalldesc.innerHTML=lreg_message("nickname_unavailable");
						}
					object.className="data_item_value_error";
					}

				},
				error: function(type, error) {},
				content: {},
				method: "post",
				mimetype: "text/plain"
				});
				},500);
			}
	break;

	case "clanname":
		lreg_validate_ajax_total_fields++;
		condition=object.value && object.value.length>=2 && lreg_isNickname(object.value);
		if (condition)
			{
			if (typeof lreg_clanname_timeout!="undefined") clearTimeout (lreg_clanname_timeout);
			lreg_clanname_timeout=setTimeout(function()
				{
				dojo.io.bind({
				url: "/lreg_checkavailability.php?c="+lreg_URLEncode(object.value)+"&i="+lreg_clan,
				load: function(type, data, evt){
				if (data=="0")
					{
					if (writing)
						{
						desctitle.innerHTML=lreg_message("clanname_available");
						desccontent.innerHTML=lreg_message("clanname_available_details");
						}
					else {
						smalldesc.innerHTML=lreg_message("clanname_available");
						}
					object.className="data_item_value_valid";
					lreg_validate_ajax_valid_fields++;
					if (typeof execute!="undefined" && typeof final_validation_function!="undefined") final_validation_function(execute);
					}
				else
					{
					if (writing)
						{
						desctitle.innerHTML=lreg_message("clanname_unavailable");
						desccontent.innerHTML=lreg_message("clanname_unavailable_details");
						}
					else {
						smalldesc.innerHTML=lreg_message("clanname_unavailable");
						}
					object.className="data_item_value_error";
					}

				},
				error: function(type, error) {},
				content: {},
				method: "post",
				mimetype: "text/plain"
				});
				},500);
			}
	break;

	case "password":
		condition=object.value && object.value.length>=6
		if (condition && document.lreg.retype_password.value==object.value && document.lreg.retype_password.value.length>=6)
			{
			document.lreg.retype_password.className="data_item_value_valid";
			document.getElementById("data_item_smalldesc_retype_password").innerHTML=lreg_message("ok");
			}
		else if (!document.lreg.retype_password.value.length)
			{
			document.lreg.retype_password.className="data_item_value_error";
			document.getElementById("data_item_smalldesc_retype_password").innerHTML=lreg_message("retype_password_missing");
			}
		else
			{
			document.lreg.retype_password.className="data_item_value_error";
			document.getElementById("data_item_smalldesc_retype_password").innerHTML=lreg_message("retype_password_invalid");
			}
	break;

	case "retype_password":
		condition=object.value==document.lreg.password.value && object.value.length>=6;
	break;
	}

if (condition)
	{
	state="ok";
	desctitle.innerHTML=lreg_message("ok");
	desccontent.innerHTML=lreg_message(type+"_ok_details");
	if (!writing) smalldesc.innerHTML=lreg_message("ok");
	}
else
	{
	if (type=="steam_id" && !object.value.length) // optional fields
		{
		state="ok";
		desctitle.innerHTML=lreg_message(type+"_optional");
		desccontent.innerHTML=lreg_message(type+"_optional_details");
		if (!writing) smalldesc.innerHTML=lreg_message(type+"_optional");
		}
	else
		{
		if(!object.value.length)
			{
			state="error";
			desctitle.innerHTML=lreg_message(type+"_missing");
			desccontent.innerHTML=lreg_message(type+"_missing_details");
			if (!writing) smalldesc.innerHTML=lreg_message(type+"_missing");
			}
		else
			{
			state="error";
			desctitle.innerHTML=lreg_message(type+"_invalid");
			desccontent.innerHTML=lreg_message(type+"_invalid_details");
			if (!writing) smalldesc.innerHTML=lreg_message(type+"_invalid");
			}
		}
	}

if (!notextfieldchange)
	{
	switch (state)
		{
		case "writing":
		//object.className="data_item_value_focused"; //e deja setat de lreg_prepare
		break;

		case "error":
		object.className="data_item_value_error";
		break;

		case "ok":
		object.className="data_item_value_valid";
		break;
		}
	}

if (!writing)
	{
	description.style.display="none";
	desctriangle.style.display="none";
	}
else
	{
	document.getElementById("data_item_smalldesc_"+type).innerHTML="";
	}
}

lreg_validate_ajax_valid_fields=0;
lreg_validate_ajax_total_fields=0;

function lreg_validate_all(execute)
{
lreg_validate_ajax_valid_fields=0;
lreg_validate_ajax_total_fields=0;
lreg_validate (document.lreg.fullname, "fullname");
lreg_validate (document.lreg.phone, "phone");
lreg_validate (document.lreg.email, "email");
lreg_validate (document.lreg.steam_id, "steam_id");
lreg_validate (document.lreg.username, "username", 0, 0, execute, lreg_validate_all_final);
lreg_validate (document.lreg.nickname, "nickname", 0, 0, execute, lreg_validate_all_final);
lreg_validate (document.lreg.clanname, "clanname", 0, 0, execute, lreg_validate_all_final);
lreg_validate (document.lreg.password, "password");
lreg_validate (document.lreg.retype_password, "retype_password");
}

function lreg_validate_all_final(execute)
{
if (lreg_validate_ajax_valid_fields==lreg_validate_ajax_total_fields)
	{
	if (document.lreg.fullname.className=="data_item_value_valid" &&
		document.lreg.phone.className=="data_item_value_valid" &&
		document.lreg.email.className=="data_item_value_valid" &&
		document.lreg.steam_id.className=="data_item_value_valid" &&
		document.lreg.username.className=="data_item_value_valid" &&
		document.lreg.clanname.className=="data_item_value_valid" &&
		document.lreg.nickname.className=="data_item_value_valid" &&
		document.lreg.password.className=="data_item_value_valid" &&
		document.lreg.retype_password.className=="data_item_value_valid")
			{
			execute();
			}
	}
}

function lreg_validate_member(execute)
{
lreg_validate_ajax_valid_fields=0;
lreg_validate_ajax_total_fields=0;
lreg_validate (document.lreg.fullname, "fullname");
lreg_validate (document.lreg.phone, "phone");
lreg_validate (document.lreg.email, "email");
lreg_validate (document.lreg.steam_id, "steam_id");
lreg_validate (document.lreg.nickname, "nickname", 0, 0, execute, lreg_validate_member_final);
}

function lreg_validate_member_final(execute)
{
if (lreg_validate_ajax_valid_fields==lreg_validate_ajax_total_fields)
	{
	if (document.lreg.fullname.className=="data_item_value_valid" &&
		document.lreg.phone.className=="data_item_value_valid" &&
		document.lreg.email.className=="data_item_value_valid" &&
		document.lreg.steam_id.className=="data_item_value_valid" &&
		document.lreg.nickname.className=="data_item_value_valid")
			{
			execute();
			}
	}
}