/*
 * Copyright (c) 2006 Wazap AG, Germany -- all rights reserved.
 */

var debugMode = false;

//Browserdetection
	 var firefox =(navigator.userAgent.indexOf("Firefox")!=-1)? true:false;
	 var netscape =(navigator.userAgent.indexOf("Gecko")!=-1)?true:false;
	 var ns4  =(document.layers)?true:false;
	 var ns6  =(netscape && navigator.userAgent.indexOf("6.")!=-1 && !firefox)?true:false;
	 var ns61 =(parseInt(navigator.productSub)>=20010726)?true:false;
	 var ns7  =(netscape && navigator.userAgent.indexOf("7.")!=-1 && !firefox)?true:false;
	 var ns8  =(netscape && navigator.userAgent.indexOf("8.")!=-1 && !firefox)?true:false;
	 var mac  =(navigator.appVersion.indexOf("Mac")!=-1)?true:false;
	 var mac45=(navigator.appVersion.indexOf("MSIE 4.5")!=-1)?true:false;
	 var opera=(navigator.userAgent.indexOf("Opera")!=-1)?true:false;
	 var opera8=(navigator.userAgent.indexOf("Opera\/8")!=-1)?true:false;
	 var opera9=(navigator.userAgent.indexOf("Opera\/9")!=-1)?true:false;
	 var ie  =(navigator.userAgent.indexOf("MSIE")!=-1)? true:false;
	 var ie4 =(!document.getElementById && document.all)?true:false;
	 var ie5 =(navigator.userAgent.indexOf("MSIE 5.")!=-1)? true:false;
	 var ie6 =(navigator.userAgent.indexOf("MSIE 6.")!=-1)? true:false;
	 var ie7 =(navigator.userAgent.indexOf("MSIE 7.")!=-1)? true:false;
	 var konq=(navigator.userAgent.indexOf("Konqueror")!=-1)?true:false;
 	 var safari =(navigator.userAgent.indexOf("Safari")!=-1)? true:false;
// delivered ad campain-ids
   var adIds = new Array();

// Window size
	 function getWindowHeight(){return (netscape)? parseInt(window.innerHeight) : parseInt(document.body.offsetHeight);}
	 function getWindowWidth(){return(netscape)? parseInt(window.innerWidth) : parseInt(document.body.offsetWidth);}

 // Screen Size
	 function getSreenHeight(){return parseInt(screen.height)}
	 function getScreenWidth(){return parseInt(screen.width)}


// absolute positions
	function getAbsTop(el) {return (el.offsetParent)? el.offsetTop+getAbsTop(el.offsetParent) : el.offsetTop;}
	function getAbsLeft(el) {return (el.offsetParent)? el.offsetLeft+getAbsLeft(el.offsetParent) : el.offsetLeft;}

// Get Element By Id
	function $(id){return document.getElementById(id);}


function setHomePage(href, clickText, lang) {
	if (navigator.userAgent.indexOf("MSIE") >= 0 && !opera){
		document.write('<span class="small-icon homepage"><a href="javascript:history.go(0);" '
				+ 'onclick="this.style.behavior=\'url(#default#homepage)\'; this.setHomePage(\''
				+ href + '\');">' + clickText + '</a></span>&nbsp;&nbsp;\n');
		return true;
	}
	return false;
}

function setBookmark(clickText, lang) {
	if (navigator.userAgent.indexOf("MSIE") >= 0 && navigator.userAgent.indexOf("7.")<0  && !opera) {
		document.write('<span class="small-icon bookmark">');
		document.write('<a href="javascript:bookmark(\''+lang+'\');">');
		document.write(clickText+'<\/a><\/span>&nbsp;&nbsp;\n');
		return true;
	}
	return false;
}

function setPlugin(clickText, lang) {
	if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) {
		document.write('<span class="small-icon plugin"><a href="javascript:addEngine(\'Wazap!\',\''+lang+'\',\'gif\',\'Games\');">'+clickText+'</a></span>&nbsp;&nbsp;\n');
		return true;
	}
	return false;
}

function setOpenSearch(clickText, lang){
	if (navigator.userAgent.indexOf("MSIE") >= 0 && navigator.userAgent.indexOf("7.") >= 0 ) {
		document.write('<span class="small-icon plugin"><a href="javascript:addOpenSearchIE7();">'+clickText+'</a></span>&nbsp;&nbsp;\n');
    	return true;
	}
	return false;
}

function addOpenSearchIE7 () {
	try {
		window.external.AddSearchProvider("/opensearch/wazap_description.xml");
		var expires = new Date();
		expires.setTime(expires.getTime()+(5*365*24*60*60*1000));
		setCookie("plugindl", "1", expires, "/", null, false)
	} catch (ex) {
		// ignore
	}
}

function addEngine(name, lang, ext, cat) {
	lang = lang.toUpperCase();
	try {
		if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) {
			window.sidebar.addSearchEngine(
				"http://cn.wazap.com/plugins/" + name + lang + ".src",
				"http://cn.wazap.com/plugins/" + name + lang + "." + ext,
				name, cat
			);

			var expires = new Date();
			expires.setTime(expires.getTime()+(5*365*24*60*60*1000));
			setCookie("plugindl", "1", expires, "/", null, false)
			showPluginInfo();
		}
	} catch (ex) {
		// ignore
	}
}

function bookmark(lang)
{
	var title = "";
	var addr = "";

	title = "Tom ��Ϸ����";
	addr = "http://i.games.tom.com";

	if (navigator.userAgent.indexOf("MSIE") >= 0)
	{
		// Any type of MS Internet Explorer
		window.external.AddFavorite(addr, title);
	}
	else
	{
		// No bookmark function available
	}
}

function getElementsByClassName(class_name, elem)
{
  	var all_obj, ret_obj=new Array(), j=0, teststr;
	var root = (elem != null ? elem : document);

  if (root.all)
  	all_obj = root.all;
  else if(root.getElementsByTagName)
  	all_obj = root.getElementsByTagName("*");

  if(!all_obj)
    return null;

  for(var i=0; i<all_obj.length; i++)
  {
   if(all_obj[i]!=null && all_obj[i].className != null){
    if(all_obj[i].className.indexOf(class_name) != -1)
    {
      teststr=","+all_obj[i].className.split(" ").join(",")+",";
      if(teststr.indexOf(","+class_name+",")!=-1)
      {
        ret_obj[j]=all_obj[i];
        j++;
      }
    }
   }
  }
  return ret_obj;
}

/*
 *Register onclick-event for all links
 */
function addTrackingEvents(){
  links = document.getElementsByTagName("a");
	var isAd = false;

  for(i=0; i< links.length;i++){
    lnk = links[i];

	//is it a sponsored link?
	isAd = (lnk.className.indexOf("adUrl")> -1)? true:false;

    if (isExternalUrl(lnk) && !isAd) {
    	lnk.className = lnk.className + " extlink";
    }

	  if(window.addEventListener){// DOM
	    lnk.addEventListener('click',aClicked,false);
	  }else{
	    if(window.attachEvent){ // IE
	      lnk.attachEvent('onclick',aClicked);
	    }else
	      lnk.onclick = aClicked;
      }

  }
}

/*
 * Method for all a.onclick events
 */
function aClicked (elem){
  if (isExternalUrl(this)) {
  	var path = '/outgoing';
  	var h = getHost(this);
  	if (h != null) {
  		path = path + '/' + h;
  	}

  	var box = getAncestorWithClass(this, 'wzbox');
  	if (box != null) {
  		path = path + '/' + box.id;
  	}

  	if (typeof urchinTracker == 'function') {
  		//alert(path);
  		urchinTracker(path);
  	}
  }
}

/*
 * track clicks:
 */
function trc (p, m , g, tag) {
	var targetUrl = tag;
	if (typeof encodeURIComponent == 'function') {
		targetUrl = encodeURIComponent(targetUrl);
	}
	var img = new Image();
	img.src = "/trc?p="+p+"&g="+g+"&m="+m+"&u="+targetUrl;
}

function catSelectSubmit(elem) {
	var platId = 0;
	var platShort = null;
	var r = document.forms.catform.platId;
	for (i=0; i<r.length; i++){
		if(r[i].checked == true){
			platId = parseInt(r[i].value);
		}
	}

	if (platId > 0) {
		/*
		switch (platId) {
			case 1: platShort = 'pc'; break;
			case 2: platShort = 'gb'; break;
			case 3: platShort = 'gba'; break;
			case 4: platShort = 'gc'; break;
			case 5: platShort = 'giz'; break;
			case 6: platShort = 'mac'; break;
			case 9: platShort = 'ngage'; break;
			case 7: platShort = 'n64'; break;
			case 8: platShort = 'nds'; break;
			case 10: platShort = 'ps'; break;
			case 11: platShort = 'ps2'; break;
			case 13: platShort = 'dc'; break;
			case 621: platShort = 'genesis'; break;
			case 14: platShort = 'saturn'; break;
			case 12: platShort = 'psp'; break;
			case 15: platShort = 'xbox'; break;
			case 572: platShort = 'x360'; break;
		}
		*/

		if (!(typeof(cleanedQuery) == 'undefined')) {
			document.forms.catform.q.value = cleanedQuery;
		}
	}

	if (elem.name == 'platId') {
		document.forms.catform.catId.value = 0;
		document.forms.catform.subCatId.value = 0;
		document.forms.catform.pubId.value = 0;
	}
	if (elem.name == 'catId') {
		document.forms.catform.subCatId.value = 0;
	}

	document.forms.catform.submit();
}

function getHost(myurl) {
	var regex = /http:\/\/([^\/:]+)/;
	regex.exec(myurl);
  return RegExp.$1;
}

function isExternalUrl(myurl) {
	var h1 = getHost(document.URL).toLowerCase();
	var h2 = getHost(myurl).toLowerCase();
	if (h1 != h2 && h2.indexOf('wazap.') == -1) {
		return true;
	}
	return false;
}


function getAncestorWithClass (elem, myclass) {
	var p = elem.parentNode;
	if (p != null) {
		var cl = p.className.split(" ");
		for (var i=0; i<cl.length; i++)
			if (cl[i] == myclass)
				return p;
		return getAncestorWithClass (p, myclass);
	} else
		return null;
}


   /*
     * Change a single stylesheet-rule independent of a HTML-Object
     */
	function changeStyleAttribute(selectorText, attribute, value){
	 try{
	  for(x=0; x< document.styleSheets.length;x++){
	   myRules = (netscape)? document.styleSheets[x].cssRules : document.styleSheets[x].rules;
	   if(!myRules)return;
	   for(i=0; i < myRules.length; i++){
	      if(myRules[i].selectorText.toLowerCase() == selectorText.toLowerCase()){
	       myRules[i].style[attribute] = value;
 	       return;
	     }
	    }
	   }
	  }catch(ex){
	    handleException(ex.message);
	    return true;
	  }

		//window.status = "CSS '" + selectorText + "' not found!";
}

/* Definition Object PageQuery*/

 function PageQuery(q) {
	if(q.length > 1)
		this.q = q.substring(1, q.length);
	else
		this.q = null;

	this.keyValuePairs = new Array();
	if(q) {
		for(var i=0; i < this.q.split("&").length; i++) {
			this.keyValuePairs[i] = this.q.split("&")[i];
		}
	}

	this.getKeyValuePairs = function() { return this.keyValuePairs; }

    this.getValue = function(s) {

		for(var j=0; j < this.keyValuePairs.length; j++) {
			if(this.keyValuePairs[j].split("=")[0] == s)
				return this.keyValuePairs[j].split("=")[1];
		}
	return false;
	}

	this.getParameters = function() {
		var a = new Array(this.getLength());
			for(var j=0; j < this.keyValuePairs.length; j++) {
				a[j] = this.keyValuePairs[j].split("=")[0];
			}
	return a;
	}

	this.getLength = function() { return this.keyValuePairs.length; }

 }

 /*return request parameter*/
	function queryString(key){
		var page = new PageQuery(window.location.search);
		return unescape(page.getValue(key));
	}

	function getParams(){
		var page = new PageQuery(window.location.search);
		return page.getKeyValuePairs();
	}


function toggleAdCaption(){
	var adElems = getElementsByClassName('adcaption',document);
	var i=0;
	for(i=0;i<adElems.length;i++){
	  var hrs = adElems[i].getElementsByTagName("*");
	  if(hrs.length >4) {
	  	var regex = /clientid=([0-9]+)/;
			var res = regex.exec(adElems[i].innerHTML);
			if (res.length > 0) {
			  var clientId = parseInt(RegExp.$1);
			  if (clientId > 0)
			  	adIds.push(clientId);
		  }

			adElems[i].style.display="block";
		}
	}
}

function loadBgSkin () {

	if (document.body.className != 'mode_' && document.body.className != 'mode_startcat') {
		var bgimg = null;
		if (adIds != null && adIds.length > 0) {
			for (var i=0; i<adIds.length; i++) {
				var cid = adIds[i];
				switch (cid) {
					case 50:
						bgimg = '/static/img/misc/DOA_Backgroundskinning.jpg';
						break;
				}

				if (bgimg != null)
					break;
			}

			if (bgimg != null) {
				document.body.style.backgroundImage = 'url('+bgimg+')';
				document.body.style.backgroundRepeat = 'repeat';
				return true;
			}
		}
	}
	return false;
}

function toggleSponsoredInfo(e){
	// create element on demand
    if(!$("sponsLinkInfo")) createSponsoredLinkInfo();

   	info = $("sponsLinkInfo");

    if(e.type == "mouseout")
	    info.style.display = "none";
	else{
	    coord = new XY(e);
	   	info.style.left =(coord.x - 420) + "px";
	   	info.style.top = coord.y + "px";
	   	info.style.display = "block";
   	}
}

// search query functions
function removeModifiers(s) {
	if (s != null) {
		s = trimChar(s, "\"");

		var newQuery = "";
		var parts = s.split(" ");
		for (var i=0; i<parts.length; i++) {
			if (parts[i] != "OR" && parts[i] != "AND") {
				newQuery += trimX(trimChar(trimChar(parts[i], "-"), "+"));
				if (i+1 != parts.length) {
					newQuery += " ";
				}
			}
		}
		newQuery = newQuery.replace(/[ ]{2,}/g, " ");

		s = newQuery;
	}
	return s;
}

function toBooleanAndSearch () {
	setHdInput(removeModifiers(getHdInput()));
}

function toBooleanOrSearch () {
	var oldQuery = removeModifiers(getHdInput());

	if (oldQuery != null) {
		var newQuery = "";
		var parts = oldQuery.split(" ");
		for (var i=0; i<parts.length; i++) {
			newQuery += parts[i];
			if (i+1 != parts.length) {
				newQuery += " OR ";
			}
		}
		setHdInput(newQuery);
	}
}

function toExactSearch () {
	var oldQuery = removeModifiers(getHdInput());
	if (oldQuery != null) {
		setHdInput("\""+oldQuery+"\"");
	}
}

function toBooleanNotSearch () {
	var oldQuery = removeModifiers(getHdInput());
	var stopWords = $('hdStopWords').value;

	if (stopWords != null && stopWords != "") {
		var newQuery = oldQuery + " ";
		var parts = stopWords.split(" ");
		for (var i=0; i<parts.length; i++) {
			newQuery += "-";
			newQuery += parts[i];
			if (i+1 != parts.length) {
				newQuery += " ";
			}
		}
		setHdInput(newQuery);
	}
}

function toggleHdStopWords(){
 $('hdStopWordsCnt').style.display = $('hdStopWordsCnt').style.display == 'block' ? 'none':'block';
}

function setHdInput (newvalue) {
	if (newvalue != null) {
		var field = document.getElementById("hdInputField");
		if (field != null) {
			field.value = newvalue;
		}
	}
}

function getHdInput () {
	var field = document.getElementById("hdInputField");
	if (field != null) {
		return field.value;
	}
	return null;
}

function trimX(s) {
	return trimChar(s, " ");
}

function trimChar(s, c) {
	if (s != null && c != null && s.length > 0 && c.length == 1) {
		while (s[0] == c) {
			s = (s.length > 1) ? s.substring(1) : "";
		}
		while (s[s.length - 1] == c)
			s = (s.length > 1) ? s.substring(0, s.length - 1) : "";
	}
	return s;
}

function winState(txt){
  txt = (txt==null)? '' : txt ;
  window.status = txt;
  return true;
}

function docOnClick(func){
  document.onclick = func ;
}

function XY(e){
	this.x = 0;
    this.y = 0;

	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		this.x = e.pageX;
		this.y = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		this.x = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		this.y = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
}

/*------------------------  Move Box --------------------------------*/
var startDragX=0;
var startDragY=0;
var boxX=0;
var boxY=0;
var dragObj = null;

 function dragIt(e){
   button =(netscape)?e.which:event.button;
   if(button==1){
    var coord = new XY(e);
	startDragX=coord.x;
    startDragY=coord.y;
	return true;
  }

  return false;

 }

function dragBox(boxId, e){

  dragObj = $(boxId);

  if(dragIt(e) && dragBox){

    boxX = dragObj.offsetLeft;
    boxY = dragObj.offsetTop;
    document.onmousemove= moveBox;
    document.onmouseup=dropBox;
  }
}

function moveBox(e){

  if(dragObj){
     posDiffX=(netscape)?e.pageX-startDragX : event.clientX - startDragX;
     posDiffY=(netscape)?e.pageY-startDragY : event.clientY - startDragY;
     if(dragObj){
       dragObj.style.left = (boxX + posDiffX) + "px";
       dragObj.style.top = (boxY + posDiffY) + "px";
     }
  }
}

function dropBox(){
   dragObj = null;
   document.onmousemove = new function(){return false;}
}

function setCursor(id){
  if(opera) return;
  switch (id) {
  	case 1:
   		document.body.style.cursor = "move";
    	break;
   	default:
   		document.body.style.cursor = "auto";
    	break;
	}

}
/*------------------------  END Move Box --------------------------------*/

// These functions are called at the end of Index.jsp and Error.jsp
function startUpFuncs(){
	try{	addTrackingEvents();	}catch(ex){handleException(ex.message);}
	try{	initResizer();			}catch(ex){handleException(ex.message);}
	try{	setFocus();				}catch(ex){handleException(ex.message);}
	try{	toggleAdCaption();		}catch(ex){handleException(ex.message);}
	try{	loadBgSkin();		}catch(ex){handleException(ex.message);}
}


function showPluginInfo(){
  	if(!$("pluginInfo")) createPluginInfo();
	info = $("pluginInfo");
	if(info){
		srCnt = $("srch_cnt");
	  	info.style.display="block";
      	info.style.left = (5 + srCnt.offsetLeft + srCnt.offsetWidth) + "px";
      	info.style.display="block";
	 }
}

function hidePluginInfo(){
 info = $("pluginInfo");
	if(info)
	   info.style.display= "none";
}
function hfilterQuery(query)
{
    query = query.replace(/\s/g, '+');
    query = query.replace(/"/g, '');
    query = query.replace(/'/g, '');
    query = query.replace(/\\/g, '');
    return query;
}
function hhl(innerT)
{
	var innerT = hfilterQuery(innerT);
	innerT = innerT.split("+");
	var theIn;
	for (var i=1; i <= innerT.length; i++) {
		theIn = innerT[i-1];
		if (theIn == '') {
			continue;
		} else {
			hl(theIn);
		}
	}
}
function hl(innerT)
{
	var needDo = document.getElementsByClassName('highLight');
	for (var i = 1; i <= needDo.length; i++) {
		theNeed = needDo[i-1];
		var theString = theNeed.innerHTML;
		theNeed.innerHTML = doHighlight(theString, innerT);
	}
}

var startTime = 0;
function debug(msg){
if(!ie6) return ;

  var zeit = new Date();
  var ms = zeit.getMilliseconds();
  var dif = ms - startTime;
  startTime = ms;
  var dbg = $('debug');

  if(!dbg){

   dbg = document.createElement('div');
   dbg.id ="debug";
   objLeft = $('left');
   objLeft.appendChild(dbg);
   dbg = $('debug');
   dbg.style.border="2px solid red";
   }

   dbg.innerHTML += msg + "[" + dif + "]<br/>";

}

function handleException(msg){
	if(debugMode)
		alert(msg);
}

function hSlideUp(objName)
{
    var SpanBars = new Array();
    SpanBars['coverslider'] = "<A type=\"text/javascript\" href=\"javascript:hSlideDown('coverslider');\">热门游戏</a> | ";
    SpanBars['news'] = "<A type=\"text/javascript\" href=\"javascript:hSlideDown('news');\">游戏新闻</a> | ";
    SpanBars['cheats'] = "<A type=\"text/javascript\" href=\"javascript:hSlideDown('cheats');\">游戏攻略</a> | ";
    SpanBars['downloads'] = "<A type=\"text/javascript\" href=\"javascript:hSlideDown('downloads');\">游戏下载</a> | ";
    SpanBars['articles'] = "<A type=\"text/javascript\" href=\"javascript:hSlideDown('articles');\">其它信息</a> | ";
    SpanBars['cloud'] = "<A type=\"text/javascript\" href=\"javascript:hSlideDown('cloud');\">热门专区</a>";
    new Effect.SlideUp($(objName));
	var Span = objName+'Bar';
    $(Span).innerHTML = SpanBars[objName];
}
function hSlideDown(objName)
{
	new Effect.SlideDown($(objName));
	var Span = objName+'Bar';
	$(Span).innerHTML = '';
}