function changestyleover(element){
	var el = document.getElementById(element);
	el.className='atsidenavhover';
	el.style.cursor='pointer';
}
function changestyleout(element){
	var el = document.getElementById(element);
	el.className='atsidenav';
}
function SelectAll() {
	
	if (document.artsearch.Selection.value == 'true') {
		var elval = false;
		document.artsearch.Selection.value = 'false'
		document.artsearch.selectbutton.value = 'Select All'
	} else {
		var elval = true;
		document.artsearch.Selection.value = 'true'
		document.artsearch.selectbutton.value = 'Clear All'
	}
  for (var i=0;i<document.artsearch.elements.length;i++)
    {
    var e = document.artsearch.elements[i];
	  if (e.name == 'ATVAR_SEARCHTOPIC') {
	      e.checked = elval;
	}
	 }
	}

function WinOpen(url,x,y) {
	var options = "toolbar=no,scrollbars=yes,resizable=yes,width=" + x + ",height=" + y;
	msgWindow=window.open(url,"ATRATINGS",options);
}

function winopennamed(url,winname,x,y){
	var options = "toolbar=no,scrollbars=yes,resizable=yes,width=" + x + ",height=" + y;
	msgWindow=window.open(url,winname,options);
}

function PrintWindow(url,x,y) {
	var options = "toolbar=no,menubar=yes,scrollbars=yes,resizable=yes,width=" + x + ",height=" + y;
	msgWindow=window.open(url,"PRINTARTICLE",options);
}

function forumpost(url,x,y) {
	var options = "toolbar=no,scrollbars=yes,resizable=yes,width=" + x + ",height=" + y;
	msgWindow=window.open(url,"fpost",options);
}

function checkemail(formObj){
	var error = "";
	var emailFilter=/^.+@.+\..{2,3}$/;
	var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
	if(!(emailFilter.test(formObj.value))) { 
	    error += "Please enter a valid email address.\n";
	}
	if(formObj.value.match(illegalChars)) {
		error += "The email address contains illegal characters.\n";
	}
	if (error != "") {
	       alert(error);
	       return false;
	}
	return true;
}

function collapseMe(TextLabel,TextBottomLinkBar,TextContent,image1){
	var elem = document.getElementById(TextLabel);
	var elem2 = document.getElementById(TextBottomLinkBar);
	var elem3 = document.getElementById(TextContent);
	var imgelem = document.getElementById(image1);
	
	if(elem2.className.indexOf('Collapsed') <= 0){
		elem.style.display='none';
		elem2.className = 'TreeBottomLinkBar_Collapsed';
		elem3.className = 'TreeContent_Collapsed';
		document[image1].src='/i/tree/downarron.gif';
	}else{
		elem.style.display='';
		elem2.className = 'TreeBottomLinkBar';
		elem3.className = 'TreeContent';
		elem3.style.display='';
		document[image1].src='/i/tree/downarroff.gif';
	}
}

function openpanel(element){
	var elem = document.getElementById('npanel');
	var filterElem = document.getElementById('filterLink');
	if(elem.style.display != 'block'){
		elem.style.display='block';
		filterElem.innerHTML='close filter';
	}else{
		elem.style.display='';
		filterElem.innerHTML='open filter';
	}
}

function IsNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
   }
  
 function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
	if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function setActiveStyleSheet(operation) {
  var i, a, main, sheetname='';
  
  if(getActiveStyleSheet() == "largetext"){
	if(operation == "smaller"){
		sheetname = 'mediumtext';
	}
  }
  
  if(getActiveStyleSheet() == "mediumtext"){
	if(operation == "smaller"){
		sheetname = 'smalltext';
	}else if(operation = "larger"){
		sheetname = 'largetext';
	}
  }
  
  if(getActiveStyleSheet() == "smalltext"){
	if(operation == "larger"){
		sheetname = 'mediumtext';
	}
  }
  

    if(sheetname.length > 0){
		var thisDate = new Date();
		thisDate.setYear(2040);
		thisDate.setMonth(0);
		thisDate.setDate(1);
	
		setCookie('AnandTechFont',sheetname,thisDate,'/','.anandtech.com');
	  	DoSetActiveStyleSheet(sheetname);
  }
}

function setFont(){
	if(getCookie('AnandTechFont')){
		DoSetActiveStyleSheet(getCookie('AnandTechFont'));
	}
	if(jsAreaAutoPopup){
	    delay = 2;
	    timer = setTimeout("PopupAreaNew('divPoll')", delay*1000);	    
	}
	
}

function setCookie(name, value, expires, path, domain, secure)
{
    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function getCookie(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));
}




function DoSetActiveStyleSheet(sheetname){
	 var i, a;
	 for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
		if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
		  a.disabled = true;
		  if(a.getAttribute("title") == sheetname) a.disabled = false;
		}
	  }
}





// MACROMEDIA FLASH JS
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '<object ';
  for (var i in objAttrs)
    str += i + '="' + objAttrs[i] + '" ';
  str += '>';
  for (var i in params)
    str += '<param name="' + i + '" value="' + params[i] + '" /> ';
  str += '<embed ';
  for (var i in embedAttrs)
    str += i + '="' + embedAttrs[i] + '" ';
  str += ' ></embed></object>';

  document.write(str);
}



//v1.0
function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version="
     , "http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"
     , "application/x-shockwave-flash", "7,0,0,0"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , "http://fpdownload.macromedia.com/pub/shockwave/cabs/director/sw.cab#version="
     , "http://www.macromedia.com/shockwave/download/"
     , null, "8,5,0,0"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, codebase, pluginsPage, mimeType, cbVers){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "codebase":
      case "pluginspage":
      case "type":
      case "classid":
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "minversion":
        cbVers = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "id":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  ret.objAttrs["codebase"] = codebase + cbVers;
  ret.embedAttrs["pluginspage"] = pluginsPage;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}



//Popup
var jsAreaAutoPopup = false;
var jsAreaShowTime = 500;
var JsAreas = new Object();

function GetArea(id)
{
	return JsAreas[id] ? JsAreas[id] : (JsAreas[id] = new JsArea(id));
}

// A single popup window
function JsArea(id)
{
	this.AreaId = id;
}

// Function to return the DIV Layer
JsArea.prototype.ContentArea= function()
{
	var divArea = document.getElementById(this.AreaId);
	if (divArea != null)
	{
		return divArea;
	}
	return null;
}

var activeAreaId = null;

// Function to show the DIV Layer
JsArea.prototype.popareaup = function(x, y)
{
if (activeAreaId != null)	
	jsAreaClose(activeAreaId);
	
	var divLayer = this.ContentArea();
	divLayer.style.position = 'absolute';
	divLayer.style.display = 'block';
	divLayer.style.left = x;
	divLayer.style.top = y;
	divLayer.onmouseover= JsAreaMouseOver;
	divLayer.onmouseout = jsAreaMouseOut;
	activeAreaId = this.AreaId;
	
	return false;
}

// Function to hide the DIV Layer
JsArea.prototype.hide = function()
{
	var divLayer = this.ContentArea();
	if (divLayer != null)
		divLayer.style.display = 'none';
		
	return false;
}

// Function to be called
// by Web forms to show the Popup Window
function PopupAreaNew(areaId)
{
	posx = 155; //e.clientX + document.body.scrollLeft;
	posy = 295; //e.clientY + document.body.scrollTop;
	
	var area = GetArea(areaId);
	area.popareaup(posx, posy);
}

// Function to be called
// by Web forms to show the Popup Window
function PopupArea(e, areaId)
{
	if (e.pageX || e.pageY)
	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else 
	if (e.clientX || e.clientY)
	{
		posx = e.clientX + document.body.scrollLeft;
		posy = e.clientY + document.body.scrollTop;
	}
	var area = GetArea(areaId);
	area.popareaup(posx, posy);
}

// Function to hide the DIV Layer
function jsAreaClose(areaId)
{
	GetArea(areaId).hide();
	activeAreaId = divHangTimer = null;	
}

var divHangTimer = null;

// Function to keep the Div Layer
// showing for a "period" of time
// after that period, if the mouse
// has been outside the DIV Layer, 
// it will be hidden automatically
function KeepArea(areaId)
{
	if (areaId == activeAreaId && divHangTimer != null)
	{
		clearTimeout(divHangTimer);
		divHangTimer = null;
	}
}

// Function to release the DIV Layer
function RelArea(areaId)
{
	//if (areaId == activeAreaId && divHangTimer == null)
		divHangTimer = setTimeout('jsAreaClose(\'' + areaId + '\')', jsAreaShowTime);
}

// Function fired when mouse is over the 
// DIV Layer, used to keep the layer showing
function JsAreaMouseOver(e)
{
	if (!e) 
		var e = window.event;
	var targ = e.target ? e.target : e.srcElement;
	KeepArea(activeAreaId);
}

// Function that fires when mouse is out of
// the scope of the DIV Layer
function jsAreaMouseOut(e)
{
	if (!e) 
		var e = window.event;
	var targ = e.relatedTarget ? e.relatedTarget : e.toElement;
	var activeAreaView = document.getElementById(activeAreaId);
	if (activeAreaView != null && !jsAreaContains(activeAreaView, targ))
		RelArea(activeAreaId);
}
function jsAreaContains(parent, child)
{
	while(child)
		if (parent == child) return true;
		else 
			child = child.parentNode;
		
		return false;
}

function RenderTab(name) {

	var s = '<table cellpadding="0" cellspacing="0" border="0"><tr><td style="background-image: url(i/activeTab.gif); color: #72727b; font-weight: bold; font-family: \'Trebuchet MS\'; font-size: 12px; padding-left: 10px; padding-bottom: 2px;">' + name + '&nbsp;</td><td style="background-image: url(i/activeTab.gif); background-position: top right;"><div style="width: 5px; height: 26px; overflow: hidden;">&nbsp;</div></td></tr></table>';
	return s;
}

function RenderInactiveTab(name) {

	var s = '<table cellpadding="0" cellspacing="0" border="0"><tr><td style="background-image: url(i/inactiveTab.gif); color: #f3f4f5; font-weight: bold; font-family: \'Trebuchet MS\'; font-size: 12px; padding-left: 10px; padding-bottom: 2px;">' + name + '&nbsp;</td><td style="background-image: url(i/inactiveTab.gif); background-position: top right;"><div style="width: 5px; height: 26px; overflow: hidden;">&nbsp;</div></td></tr></table>';	
	return s;
}