function blocknroll(){
  window.showModalDialog('http://do.getmyip.com/webgames/blocknroll/','','dialogHeight:300px;dialogWidth:550px;resizable:no');
}

function paqman(){
  window.showModalDialog('http://www.arcazoid.com/linkdemo/game/6','','dialogHeight:512px;dialogWidth:512px;resizable:no;scroll:0');
}

function bombjack(){
  window.showModalDialog('http://do.getmyip.com/webgames/bombjack/','','dialogHeight:638px;dialogWidth:541px;resizable:no;scroll:0');
}










//Floating Collapsible Menu Left
/**
 * util.js 
 * by Garrett Smith 
 * Provides functionality for working nodeLists.
 */
Browser = new function () {
	this.isSupported = function(){
		return typeof document.getElementsByTagName != "undefined"
			&& typeof document.getElementById != "undefined";
	};
	var u = navigator.userAgent;
	var OMNI = u.indexOf("Omni") > 0;
	this.OP5 = /Opera [56]/.test(u);
	this.OP7 = /Opera [7]/.test(u);
	this.MAC = /Mac/.test(u);
	if(!this.OP5 && !OMNI){
		this.IE5 = /MSIE 5/.test(u);
		this.IE5_0 = /MSIE 5.0/.test(u);
		this.MOZ =/Gecko/.test(u);
		this.MAC_IE5 = this.MAC && this.IE5;
		this.IE6 = /MSIE 6/.test(u);
		this.WIN9X = /Win9|Windows 9/.test(u);
	}		
};
TokenizedExps = {EXT:/(\.(.[^\.]+)$)/};
function getTokenizedExp(t, flag){
	var x = TokenizedExps[t];
	if(!x)
		x = TokenizedExps[t] = new RegExp("(^|\\s)"+t+"($|\\s)", flag);
	return x;
}
function hasToken(s, t){
	return getTokenizedExp(t,"").test(s);
};
/** Returns an Array of all childNodes
 *  who have a className that matches the className
 *  parameter.
 *
 *	Nested elements are not returned, only
 *	direct descendants (i.e. childNodes).
 */
function getChildNodesWithClass(p, k){
	var collection = p.childNodes;
	var returnedCollection = [];
	var exp = getTokenizedExp(k,"");
	for(var i = 0, counter = 0, len = collection.length; i < len; i++)
		if(exp.test(collection[i].className))
			returnedCollection[counter++] = collection[i];
	return returnedCollection;
}
/** Returns an Array of all descendant elements
 *  who have a className that matches the className
 *  parameter. This method differs from getChildNodesWithClass
 *  because it returns ALL descendants (deep).
 */	
function getElementsWithClass(p, tagName, k){
	var returnedCollection = [];
	try{
	var exp = getTokenizedExp(k,"");
	var collection = (tagName == "*" && p.all) ?
		p.all : p.getElementsByTagName(tagName);
	for(var i = 0, counter = 0, len = collection.length; i < len; i++){
		if(exp.test(collection[i].className))
			returnedCollection[counter++] = collection[i];
	}
	return returnedCollection;
	}
	catch(x){	alert("p = "+ p  +" tagName = "+ tagName+" k = "+k);throw x;
}
}
/** Returns an Array of all descendant elements
 *  where each element has a className that matches 
 *  any of the classNames in classList.
 *
 *  This method is like getElementsWithClass except it accepts 
 *  an Array of classes to search for.
 */	
function getElementsFromClassList(el, tagName, classList){
    var returnedCollection = new Array();
    var collection = (tagName == "*" && el.all) ?
    	el.all : el.getElementsByTagName(tagName);
    var len = classList.length
    var exps = [len];
	for(var i = 0; i < len; i++)
		exps[i] = getTokenizedExp(classList[i],"");
	for(var j = 0, c = 0, coLen = collection.length; j < coLen; j++){
		kloop: for(var k = 0; k < len; k++){
			if(exps[k].test(collection[j].className)){
				returnedCollection[c++] = collection[j];
				break kloop;
			}
		}
	}
    return returnedCollection;
}
function findAncestorWithClass(el, k) {
	if(el == null)
		return null;
	var exp = getTokenizedExp(k,"");
	for(var p = el.parentNode;p != null;){
		if( exp.test(p.className) )
			return p;
		p = p.parentNode;
	}
	return null;
}
function getDescendantById(p, id){
	var childNodes = p.all ? p.all : p.getElementsByTagName("*");
	for(var i = 0, len = childNodes.length; i < len; i++)
		if(childNodes[i].id == id)
			return childNodes[i];
	return null;
}
function removeClass(el, k){
	el.className = el.className.replace(getTokenizedExp(k, "g")," ").normalize();
}
function repaintFix(el){
	el.style.visibility = 'hidden';
	el.style.visibility = 'visible';
}
var trimExp = /^\s+|\s+$/g;
String.prototype.trim = function(){
		return this.replace(trimExp, "");
};
var wsMultExp = /\s\s+/g;
String.prototype.normalize = function(){
		return this.trim().replace(wsMultExp, " ");
};
var extExp = /(\.(.[^\.]+)$)/;
if(!Array.prototype.unshift)
	Array.prototype.unshift = function() {
        this.reverse();
        for(var i=arguments.length-1; i > -1; i--)
            this[this.length] = arguments[i];
        this.reverse();
        return this.length;
};
function fireOnload(fn) {
  // DOM					  	
	if(window.addEventListener) {
		window.addEventListener("load", fn, false);
	}
  // IE
	else if(window.attachEvent){
		window.attachEvent("onload", fn);
	}
  // Mac IE
	else {
		var oldFp = (document.onreadystatechange != null) ?
			document.onreadystatechange : function() {};
		document.onreadystatechange = function() {
			if(document.readyState == "interactive") {
				oldFp();
				fn();
			}
		};
	}
}
TreeParams = { 
	OPEN_MULTIPLE_MENUS	: false,
	TIME_DELAY          : 10,
	OPEN_WHILE_CLOSING	: true,
	OPEN_INSTANTLY		: false,
	ICON_TYPE_INDIVIDUAL  : true,
	IMG_EXT : {
		DOWN : "-open",
		OVER : "",
		DOWN_OVER : "-open"
	}
};
var LISTENER_SCRIPT_SRC  =  "jscripts/animtree/src/global.js";
/**
 * PERSISTENCE_MILLIS - int 
 * How long to save the tree state between visits.
 */
var MS_PER_DAY  =  1000 * 60 * 60 * 24;
var PERSISTENCE_MILLIS  =  1 * MS_PER_DAY; // 1 day

//Get Text from location bar
var style="";
var play="";
var game="";
function replace(string,text,by) {
    // Replaces text with by in string
    var i = string.indexOf(text), newstr = '';
    if ((!i) || (i == -1))
        return string;
    newstr += string.substring(0,i) + by;
    if (i+text.length < string.length)
        newstr += replace(string.substring(i+text.length,string.length),text,by);
    return newstr;
}
var passed = replace(replace(location.search.substring(1),"+"," "),"=","&");
function split(string,text) {
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return;
    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return;
    if (i == -1) {
        splitArray[splitIndex++] = string;
        return;
    }
    splitArray[splitIndex++] = string.substring(0,i);
    if (i+txtLength < strLength)
        split(string.substring(i+txtLength,strLength),text);
    return;
}














//Fading thumbs mouseovers
nereidFadeObjects = new Object();
nereidFadeTimers = new Object();
function nereidFade(object, destOp, rate, delta) {
  if (!document.all)
  return
  if (object != "[object]"){ //do this so I can take a string too
  setTimeout("nereidFade("+object+","+destOp+","+rate+","+delta+")",0);
  return;
}
clearTimeout(nereidFadeTimers[object.sourceIndex]);
diff = destOp-object.filters.alpha.opacity;
direction = 1;
if (object.filters.alpha.opacity > destOp){
  direction = -1;
}
delta=Math.min(direction*diff,delta);
object.filters.alpha.opacity+=direction*delta; 
if (object.filters.alpha.opacity != destOp) {
  nereidFadeObjects[object.sourceIndex]=object;
  nereidFadeTimers[object.sourceIndex]=setTimeout("nereidFade(nereidFadeObjects["+object.sourceIndex+"],"+destOp+","+rate+","+delta+")",rate);
  }
}

//Pop if not she8my.com or load in same window
var domaene="";
function openpopup(popurl){
  var winpops=window.open(popurl,"captured","width=1024,height=768,toolbar,location,status,scrollbars,menubar,resizable")
  if (window.focus) winpops.focus();
}


/******************************************************************* 
* File    : JSFX_ImageZoom.js  © JavaScript-FX.com
* Created : 2001/08/31 
* Author  : Roy Whittle  (Roy@Whittle.com) www.Roy.Whittle.com 
* Purpose : To create a zooming effect for images
* History 
* Date         Version        Description 
* 2001-08-09	1.0		First version
* 2001-08-31	1.1		Code split - others became JSFX_FadingRollovers,
*                             JSFX_ImageFader and JSFX_ImageZoom.
* 2002-01-27	1.2		Completed development by converting to JSFX namespace
* 2002-04-25	1.3		Added the functions stretchIn & expandIn
* 2004-01-06	1.4		Allowed for the image (tag) being forcibly sized
***********************************************************************/ 
/*** Create some global variables ***/
if(!window.JSFX)
	JSFX=new Object();
JSFX.ImageZoomRunning = false;
/*******************************************************************
*
* Function    : zoomIn
*
* Description : This function is based on the turn_on() function
*		      of animate2.js (animated rollovers from www.roy.whittle.com).
*		      Each zoom object is given a state. 
*			OnMouseOver the state is switched depending on the current state.
*			Current state -> Switch to
*			===========================
*			null		->	OFF.
*			OFF		->	ZOOM_IN + start timer
*			ZOOM_OUT	->	ZOOM_IN
*			ZOOM_IN_OUT	->	ZOOM_IN
*****************************************************************/
JSFX.zoomOn = function(img, zoomStep, maxZoom)
{
	if(img)
	{
		if(!zoomStep)
		{
			if(img.mode == "EXPAND")
				zoomStep = img.height/10;
			else
				zoomStep = img.width/10;
		}

		if(!maxZoom)
		{
			if(img.mode == "EXPAND")
				maxZoom = img.height/2;
			else
				maxZoom = img.width/2;
		}


		if(img.state == null)
		{
			img.state = "OFF";
			img.index = 0;
			img.orgWidth =  img.width;
			img.orgHeight = img.height;
			img.zoomStep = zoomStep;
			img.maxZoom  = maxZoom;
		}

		if(img.state == "OFF")
		{
			img.state = "ZOOM_IN";
			start_zooming();
		}
		else if( img.state == "ZOOM_IN_OUT"
			|| img.state == "ZOOM_OUT")
		{
			img.state = "ZOOM_IN";
		}
	}
}
JSFX.zoomIn = function(img, zoomStep, maxZoom)
{
	img.mode = "ZOOM";
	JSFX.zoomOn(img, zoomStep, maxZoom);
}
JSFX.stretchIn = function(img, zoomStep, maxZoom)
{
	img.mode = "STRETCH";
	JSFX.zoomOn(img, zoomStep, maxZoom);
}
JSFX.expandIn = function(img, zoomStep, maxZoom)
{
	img.mode = "EXPAND";
	JSFX.zoomOn(img, zoomStep, maxZoom);
}
/*******************************************************************
*
* Function    : zoomOut
*
* Description : This function is based on the turn_off function
*		      of animate2.js (animated rollovers from www.roy.whittle.com).
*		      Each zoom object is given a state. 
*			OnMouseOut the state is switched depending on the current state.
*			Current state -> Switch to
*			===========================
*			ON		->	ZOOM_OUT + start timer
*			ZOOM_IN	->	ZOOM_IN_OUT.
*****************************************************************/
JSFX.zoomOut = function(img)
{
	if(img)
	{
		if(img.state=="ON")
		{
			img.state="ZOOM_OUT";
			start_zooming();
		}
		else if(img.state == "ZOOM_IN")
		{
			img.state="ZOOM_IN_OUT";
		}
	}
}
/*******************************************************************
*
* Function    : start_zooming
*
* Description : This function is based on the start_animating() function
*	        	of animate2.js (animated rollovers from www.roy.whittle.com).
*			If the timer is not currently running, it is started.
*			Only 1 timer is used for all objects
*****************************************************************/
function start_zooming()
{
	if(!JSFX.ImageZoomRunning)
		ImageZoomAnimation();
}

JSFX.setZoom = function(img)
{
	if(img.mode == "STRETCH")
	{
		img.width  = img.orgWidth  + img.index;
		img.height = img.orgHeight;
	}
	else if(img.mode == "EXPAND")
	{
		img.width  = img.orgWidth;
		img.height = img.orgHeight + img.index;
	}
	else
	{
		img.width  = img.orgWidth   + img.index;
		img.height = img.orgHeight  + (img.index * (img.orgHeight/img.orgWidth));
	}
}

/*******************************************************************
*
* Function    : ImageZoomAnimation
*
* Description : This function is based on the Animate function
*		    of animate2.js (animated rollovers from www.roy.whittle.com).
*		    Each zoom object has a state. This function
*		    modifies each object and (possibly) changes its state.
*****************************************************************/
function ImageZoomAnimation()
{
	JSFX.ImageZoomRunning = false;
	for(i=0 ; i<document.images.length ; i++)
	{
		var img = document.images[i];
		if(img.state)
		{
			if(img.state == "ZOOM_IN")
			{
				img.index+=img.zoomStep;
				if(img.index > img.maxZoom)
					img.index = img.maxZoom;

				JSFX.setZoom(img);

				if(img.index == img.maxZoom)
					img.state="ON";
				else
					JSFX.ImageZoomRunning = true;
			}
			else if(img.state == "ZOOM_IN_OUT")
			{
				img.index+=img.zoomStep;
				if(img.index > img.maxZoom)
					img.index = img.maxZoom;

				JSFX.setZoom(img);
	
				if(img.index == img.maxZoom)
					img.state="ZOOM_OUT";
				JSFX.ImageZoomRunning = true;
			}
			else if(img.state == "ZOOM_OUT")
			{
				img.index-=img.zoomStep;
				if(img.index < 0)
					img.index = 0;

				JSFX.setZoom(img);

				if(img.index == 0)
					img.state="OFF";
				else
					JSFX.ImageZoomRunning = true;
			}
		}
	}
	/*** Check to see if we need to animate any more frames. ***/
	if(JSFX.ImageZoomRunning)
		setTimeout("ImageZoomAnimation()", 40);
}
