//wbc/scoreboard was generated by espn/Collection.tea on February 7, 2006 1:48:02 PM PST from Production/Production/Javascript

var bakedCookies = 0;
function CookieFactory(){}

CookieFactory.prototype.bakeCookie = function()
{
	var cookie = null;
	if(bakedCookies == 0)
	{
		bakedCookies++;
		cookie = new CookieManager();
	}
	return cookie;
}

function CookieManager(){}

CookieManager.prototype.setCookie = function(name, value,expires, path, domain, secure)
{
	var curCookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : "");
  	document.cookie = curCookie;
};


CookieManager.prototype.getCookie = function(name) 
{
  	var dc = document.cookie;
  	var prefix = name + "=";
  	var begin = dc.indexOf("; " + prefix);
  	if (begin == -1) 
	{
    	begin = dc.indexOf(prefix);
    	if (begin != 0)
		{
			return null;
		}
  	} 
	else
	{
    		begin += 2;
	}
  	var end = document.cookie.indexOf(";", begin);
  	if (end == -1)
	{
    		end = dc.length;
	}
  	return unescape(dc.substring(begin + prefix.length, end));
}

CookieManager.prototype.deleteCookie = function(name, path, domain)
{
  	if (this.getCookie(name)) 
	{
    		document.cookie = name + "=" + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  	}
}
var g_isInited = false;
var g_rails = [];
var g_timer = 0;
var g_motionModule = null;
var g_railsSet = false;
var g_className = null;
var g_handleNode = null;
var g_cookieFactory = new CookieFactory();
var g_cookieManager = g_cookieFactory.bakeCookie();
var g_pref = null;
var g_pre = '';
var g_funcs = new Object();
var g_savePrefs = true;
var g_modCount = 0;

g_funcs['set'] = null;
g_funcs['init'] = null;

/********
Helper Function. Returns array of elements or an empty array.
*********/
function getElementsByTagName(elName)
{
	return document.getElementsByTagName?document.getElementsByTagName(elName):new Array();
}

function removeWhiteSpace(parent,node)
{
	if(node.nodeType == 3)
	{
		parent.removeChild(node);
	}
}

function setHandleClass(className)
{
	g_className = className;
}

function getNodeByClassName(node,className)
{
	if(node.className == className)
	{
		return node;
	}
	else if(node.hasChildNodes())
	{
		for(var i=0; i<node.childNodes.length; i++)
		{
			if(node.childNodes[i].nodeType == 1)
			{
				return getNodeByClassName(node.childNodes[i],className);
			}
		}
	}
	else
	{
		return null;
	}
}

function setCookiePrefix(pre)
{
	g_pre = pre;
}

function initialSort()
{
	var pref;
	var savedRails;
	var savedMods;
	var modName;
	var modBody;
	var modPieces;
	var parent;
	var nodeToInsert;
	var spacerNode;
	
	pref = g_cookieManager.getCookie(g_pre + '_order');
	if(pref != null)
	{
		pref = pref.substring(0,pref.length - 2);
		savedRails = pref.split(';')
		
		for(var i=0; i<savedRails.length; i++)
		{
			modPieces = savedRails[i].split(':');
			if(modPieces.length < 2){continue;}
			modName = modPieces[0];
			modBody = modPieces[1].substring(0, modPieces[1].length - 1);
			
			if(modBody != ',' && modBody.length > 0)
			{
				savedMods = modBody.split(',');
				parent = getElem(modName);
				spacerNode = getNodeByClassName(parent,'dummy');
				if(spacerNode != null)
				{
					parent.removeChild(spacerNode);
				}
				spacerNode = null;
				for(var j=0; j<savedMods.length; j++)
				{
					nodeToInsert = getElem(savedMods[j]);
					if(!nodeToInsert){continue;}
					parent.appendChild(nodeToInsert);
				}
				spacerNode = document.createElement('div');
				spacerNode.style.position = 'relative';
				spacerNode.style.width = '1px';
				spacerNode.style.height = '1px';
				spacerNode.className = 'dummy';
				parent.appendChild(spacerNode);
			}
		}
		if(g_funcs['init'] != null)
		{
			g_funcs['init']();
		}
	}
}

/*******
Main function. Called to set all modules
********/
function buildModules(rails)
{
	if(!g_isInited)
	{
		for(var i=0; i<rails.length; i++)
		{
			if(rails[i].id == '' || rails[i].id == null)
			{
				rails[i].id = 'rail_' + i;
			}
		}
		setElementsInRail(rails);
		g_isInited = true;
		initialSort();
	}
}

function getMotionModule()
{
	if(!g_motionModule)
	{
		g_motionModule = document.createElement('div');
		g_motionModule.style.display = 'none';
		g_motionModule.style.zIndex = 600;
		g_motionModule.style.position = 'absolute';
		g_motionModule.style.cursor = 'move';
		g_motionModule.style.backgroundColor = '#ffffff';
		g_motionModule.style.paddingBottom = '0px';
		document.body.appendChild(g_motionModule);
	}
	return g_motionModule;
}

var elModel = {
	'el':null,
	'init':function(moduleHeaderNode)
	{
		var mm = getMotionModule();
		moduleHeaderNode.onmousedown = elModel.start;
		if(isNaN(parseInt(getMotionModule().style.left)))
		{
			mm.style.left = '0px';
		}
		if(isNaN(parseInt(getMotionModule().style.top)))
		{
			mm.style.top = '0px';
		}
		//reset the default event handlers
		moduleHeaderNode.onDragStart = new Function();
		moduleHeaderNode.onDragEnd = new Function();
		moduleHeaderNode.onDrag = new Function();
	}
	,'start':function(theEvent)
	{
		var selectedNode = this;
		var mm = getMotionModule();
		var mm_y = parseInt(mm.style.top);
		var mm_x = parseInt(mm.style.left);
		elModel.el = selectedNode;
		theEvent = elModel.adjustForIE(theEvent);
		selectedNode.onDragStart(mm_x,mm_y);
		//EXTEND THE PROPERTIES OF THE NODE SELECTED TO CAPTURE MOUSE X AND Y WHICH WILL BE USED TO KEEP CURSOR WHERE IT CLICKED
		selectedNode.lastMouseX = theEvent.clientX;
		selectedNode.lastMouseY = theEvent.clientY;
		document.onmousemove = elModel.drag;
		document.onmouseup = elModel.end;
		return false;
	}
	,'drag':function(theEvent)
	{
		theEvent = elModel.adjustForIE(theEvent);
		var mm = getMotionModule();
		var selectedNode = elModel.el;
		var mouse_y = theEvent.clientY;
		var mouse_x = theEvent.clientX;
		var mm_y = parseInt(mm.style.top);
		var mm_x = parseInt(mm.style.left);
		var current_x = mm_x + mouse_x - selectedNode.lastMouseX;
		var current_y = mm_y + mouse_y - selectedNode.lastMouseY;
		
		mm.style.left = current_x + 'px';
		mm.style.top = current_y + 'px';
		selectedNode.lastMouseX = mouse_x;
		selectedNode.lastMouseY = mouse_y;
		selectedNode.onDrag(current_x,current_y);
		return false;
	}
	,'end':function()
	{
		var mm = getMotionModule();
		var mm_x = parseInt(mm.style.left);
		var mm_y = parseInt(mm.style.top);
		document.onmousemove = null;//VERY IMPORTANT!!! WILL CAUSE CLIENT TO SLOW DOWN/CRASH
		document.onmouseup = null;
		elModel.el.onDragEnd(mm_x,mm_y);
		elModel.el = null;
	}
	,'adjustForIE':function(theEvent)
	{
		//IF IE, CREATE EVENT AND THEN EXTEND IT TO INCLUDE MOZ PROPERTIES
		if(!theEvent)
		{
			theEvent = window.event;
		}
		if(typeof theEvent.layerX == 'undefined')
		{
			theEvent.layerX = theEvent.offsetX;
		}
		if(typeof theEvent.layerY == 'undefined')
		{
			theEvent.layerY = theEvent.offsetY;
		}
		return theEvent;
	}
};

function setHandleNode(module)
{
	var handleNode = getNodeByClassName(module,g_className);
	if(typeof handleNode != 'undefined')
	{
		handleNode.style.cursor = 'move'; 
		handleNode.module = module;
		elModel.init(handleNode);
		
		handleNode.onDragStart = function(x,y)
		{
			clearInterval(g_timer);
			var mm = getMotionModule();
			var dragModule = this.module;
			setPagePosition(dragModule);
			dragModule.origNextSibling = dragModule.nextSibling;
			
			mm.style.left = getPosition(dragModule,true) + 'px';
			mm.style.top = getPosition(dragModule,false) + 'px';
			
			//mm.style.left = dragModule.pagePosLeft  + 'px';
			//mm.style.top = dragModule.pagePosTop + 'px';
			
			mm.style.height = dragModule.offsetHeight + 'px';
			mm.style.width = dragModule.offsetWidth + 'px';
			mm.style.display = 'block';
			mm.style.opacity = 0.8;
			mm.style.filter = 'alpha(opacity=80)';
			mm.innerHTML = dragModule.innerHTML;
			mm.className = dragModule.className;
			this.dragged = false;
		}
		
		handleNode.onDrag = function(x,y)
		{
			shuffleModulesByDistance(this.module,x,y);
			this.dragged = true;
		}
		
		handleNode.onDragEnd = function(x,y)
		{
			if(this.dragged)
			{
				g_timer = animateModule(this.module,150,g_modCount)
			}
			else
			{
				hideMotionModule();
			}

			if(this.module.nextSibling != this.module.origNextSibling)
			{
				if(g_funcs['set'] != null)
				{
					g_funcs['set']();
				}
				
				if(g_savePrefs)
				{
					setUsersModuleOrder();
				}
			}
		}
	}
}

function setElementsInRail(rails)
{
	var module;
	var moduleTitleNode;
	var moduleANode;
	var spacerNode;
	var textNodes = new Array();
	if(g_railsSet){ return; }
	g_railsSet = true;
	g_rails = rails;
	for(var i=0;i<rails.length;i++)
	{
		for(var j=0;j<rails[i].childNodes.length;j++)
		{
			module = rails[i].childNodes[j];
			g_modCount++;

			if(module.id == '' || module.id == null)
			{
				module.id = 'rail_' + i + '_module_' + j;
			}
			
			if(module.nodeType == 1)
			{
				setHandleNode(module);
			}
			else if(module.nodeType == 3)
			{
				textNodes.push(module);
			}
		}
		for(var k=0; k<textNodes.length; k++)
		{
			removeWhiteSpace(rails[i],textNodes[k]);
		}
		textNodes = new Array();
		spacerNode = document.createElement('div');
		spacerNode.style.position = 'relative';
		spacerNode.style.width = '1px';
		spacerNode.style.height = '1px';
		spacerNode.className = 'dummy';
		rails[i].appendChild(spacerNode);
	}
}

function hideMotionModule()
{
	getMotionModule().style.display = 'none';
}

function animateModule(module,baseTimer,numberOfModules)
{
	var module_x = getPosition(module,true);
	var module_y = getPosition(module,false);
	var mm = getMotionModule();
	var mm_x = parseInt(mm.style.left);
	var mm_y = parseInt(mm.style.top);
	var x_step = (mm_x - module_x)/numberOfModules;
	var y_step = (mm_y - module_y)/numberOfModules;
	var interval;
	var timerFunction = function()
	{
		if(numberOfModules < 1)
		{
			clearInterval(g_timer);
			hideMotionModule();
			return;
		}
		numberOfModules--;
		mm_x -= x_step;
		mm_y -= y_step;
		mm.style.left = parseInt(mm_x) + 'px';
		mm.style.top = parseInt(mm_y) + 'px';
	}
	interval = baseTimer/numberOfModules;
	return setInterval(timerFunction,interval);
}

function setPagePosition(module)
{
	var height = 0;
	var testModule;
	for(var i=0; i<g_rails.length;i++)
	{
		height = 0;
		for(var j=0;j<g_rails[i].childNodes.length;j++)
		{
			testModule = g_rails[i].childNodes[j];
			if(testModule == module)
			{
				height = testModule.offsetHeight;
			}
			testModule.pagePosLeft = getPosition(testModule,true);
			testModule.pagePosTop = getPosition(testModule,false) - height;
		}
	}
}

function getPosition(module,isLeft)//FIXES DIFFERENT IMPLEMENTATIONS OF offsetLeft and offsetTop
{
	var pos = 0;
	while(module != null)
	{
		pos += module['offset' + (isLeft?'Left':'Top')];
		module = module.offsetParent;
	}
	return pos;
}

function shuffleModulesByDistance(module,x,y)
{
	var nullMod = null;
	var bigNumber = 100000000;
	var selectedModule;
	var distance;
	var selectedRail;
	for(var i=0; i<g_rails.length; i++)
	{
		for(var j=0; j<g_rails[i].childNodes.length; j++)
		{
			selectedModule = g_rails[i].childNodes[j];
			if(selectedModule == module){ continue; }
			distance = Math.sqrt(Math.pow(x - selectedModule.pagePosLeft,2)+Math.pow(y-selectedModule.pagePosTop,2));
			if(isNaN(distance)){ continue; }
			if(distance < bigNumber)//IF THE DISTANCE TO SELECTED MOD IS LESS THAN BIG NUMBER, PREPARE THAT MOD TO BE MOVED
			{
				bigNumber = distance;
				nullMod = selectedModule;
			}
		}
	}
	if(nullMod != null && module.nextSibling != nullMod)
	{
		nullMod.parentNode.insertBefore(module,nullMod);
		hideModuleParent(module);
	}
}

function hideModuleParent(module)
{
	module.parentNode.style.display = 'none';
	module.parentNode.style.display = '';
}

function setUsersModuleOrder()
{
	var module;
	var pref = new String();
	var futdate = new Date();
	var expdate = futdate.getTime();
	var oldCookieValue;

	expdate += 3600*36000; //expires in 72 hours(milliseconds) or 3 days
	futdate.setTime(expdate);
	for(var i=0;i<g_rails.length;i++)
	{
		if(pref != '')
		{
			pref += ';';
		}
		pref += g_rails[i].id + ':';
		for(var j=0;j<g_rails[i].childNodes.length;j++)
		{
			module = g_rails[i].childNodes[j];
			pref += module.id + ',';
		}
	}
	
	pref = pref.replace(',,',',');
	g_cookieManager.setCookie(g_pre + '_order',pref,futdate,null,null,null);
}

function debug_dd(text)
{
	var el = getElem('debug_dd');
	if(!el)
	{
		/*el = document.createElement('div');
		el.id = 'debug_dd';
		el.style.position = 'absolute';
		el.style.left = '772px';
		el.style.backgroundColor = '#FFF';
		el.style.top = '0px';
		el.style.zIndex = 109;
		document.body.appendChild(el);*/
	}
	el.innerHTML = text + '<br><br>' + el.innerHTML;
}

function gotosite(loc)
{
	if(loc != null && loc != '')
	{
		location.href = loc;
	}
}
function getElem(name)
{
	if (document.getElementById)
	{
		return document.getElementById(name);
	}
	else if (document.all)
	{
		return document.all[name];
	}
	else if (document.layers)
	{
		return document.layers[name];
	}
	else
	{
		return null;
	}
}
var g_ajax_debug = false;
var RequestFactory = {
	'requests':new Object(),
	'createRequest':function(url,id,func,argObj,abortable,abortOthers,query,type)
	{
		if(abortOthers)
		{
			RequestFactory.abortAll();
		}
		
		if(!RequestFactory.requests[id])
		{
			RequestFactory.requests[id] = new CustomRequest(url,id,func,argObj,abortable,query,type);
		}
		
		RequestFactory.requests[id].init(id);
		return RequestFactory.requests[id];
	},
	'abortAll':function()
	{
		for(var i in RequestFactory.requests)
		{
			RequestFactory.requests[i].abort();
		}
	},
	'getRequest':function(id)
	{
		return RequestFactory.requests[id];
	}
};

function CustomRequest(url,id,func,argObj,abortable,query,type)
{
	this.id = id;
	this.req = null;
	this.type = type;
	this.url = url;
	this.query = query;
	this.argObj = argObj;
	this.func = func;
	this.abortable = null;

	if(typeof abortable == 'undefined' || abortable == null)
	{
		this.abortable = true;
	}
	else
	{
		this.abortable = abortable;
	}
	
	this.abort = function()
	{
		if(this.req && this.abortable)
		{
			this.req.abort();
		}
	}
	
	this.init = function(id)
	{
		if(!this.type)
		{
			this.type = 'GET';
		}
		
		if(!this.argObj)
		{
			this.argObj = new Object();
		}
		
		if(!this.query)
		{
			this.query = '';
		}
		
		if(this.req == null)
		{
			if(window.XMLHttpRequest)
			{
				try
				{
					this.req = new XMLHttpRequest();
				} 
				catch(e)
				{
					this.req = null;
				}
			}
			else if(window.ActiveXObject)
			{
				try
				{
					this.req = new ActiveXObject("Msxml2.XMLHTTP");
				}
				catch(e)
				{
					try
					{
						this.req = new ActiveXObject("Microsoft.XMLHTTP");
					}
					catch(e)
					{
						this.req = null;
					}
				}
			}
		}
		
		if(this.req)
		{
			this.req.onreadystatechange = function()
			{
				var localReq = RequestFactory.getRequest(id);
				if (localReq.req.readyState == 4)
				{
					if (localReq.req.status == 200 || g_ajax_debug)
					{
						localReq.argObj['responseXML'] = localReq.req.responseXML;
						localReq.func(localReq.argObj);
					}
				}
			}
			
			this.req.open(this.type,this.url, true);
			if(this.type == 'POST')
			{
				this.req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
			}
			this.req.send(this.query);
		}
	}
}

