﻿var g_isDebug = false;	
var g_debugurl = "none";	//非debug时，取消
var g_cgi_path = "/cgi-bin/beta2/";
var g_cur_requrl;
var g_ifIE = !!document.all;
var g_sub_domain=(0 <= window.location.href.indexOf(".oa.com"))?"oa":"qq";

Function.prototype.bind = function(){   
      var __method = this;   
      var arg = arguments;   
      return   function() {   
          __method.apply(window,arg);   
      }   
  }
Object.prototype.attachEvent=function(method,func){
 if(!this[method])
  this[method]=func;
 else
  this[method]=this[method].attach(func);
}


Function.prototype.attach=function(func){
 var f=this;
 return function(){
  f();
  func();
 }
}
function toNum(a){
	if(!isNaN(a))
		return parseInt(a);	
	else
		return false;
}

String.prototype.realLength = function(){
	return this.replace(/[^\x00-\xff]/g,"**").length;
}

String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"");}

function uri_param_encode(s){
    return s.replace(/&/g, "&&");
}

function $(id){
	return document.getElementById(id);
}

function getCookie(name){
    var search;
    search = name + "=";
    var cookies = document.cookie.split(" ");
    for (var i=0;i<cookies.length;i++){ 
        var pair = cookies[i].split(";")[0];
        if(pair.indexOf(search)!=-1) {
            offset = search.length;
            end = pair.length;
            return unescape(pair.substring(offset, end));
         }
    }
    return "";
}

function setCookie(pars,value){
	var date=new Date();
	var expiresday=10;
	date.setTime(date.getTime()+expiresday*3600*1000);
  document.cookie = pars + "=" + value + ";path=/;expires="+date.toUTCString();
}

function delCookie(name, path){
	var domain = g_sub_domain+".com";
    if (getCookie(name)){
        document.cookie = name + "=" +
		((path) ? ";path=" + path : "") +
		((domain) ? ";domain=" + domain : "") +
		";expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}

function getUrlParam(paramName) {
	var rtnValue = "";
	var userData = window.location.href;
	var specIndex = userData.indexOf(paramName + "=", 0);
	if(specIndex>=0) {
		var tempSingleStr;
		for(var i=specIndex+paramName.length+1; i<userData.length; i++) {
			tempSingleStr = userData.charAt(i);
			if(tempSingleStr!="&")
				rtnValue += tempSingleStr;
			else
				break;
		}
	}
	if ( rtnValue.indexOf("#")>-1){
		rtnValue	= rtnValue.replace("#", "");
	}
	rtnValue = rtnValue.replace("*", "&");
	return unescape(rtnValue);
}


function parseXML(st){
	if (g_ifIE){ //如果不是IE浏览器
		var result =  new ActiveXObject("microsoft.XMLDOM");
		result.loadXML(st);
	} else { //IE浏览器
		var parser = new DOMParser();
		var result = parser.parseFromString(st,"text/xml");
	}
	return result;
}

if (!g_ifIE){//如果不是IE浏览器
	var ex;
	XMLDocument.prototype.__proto__.__defineGetter__("xml", function (){
		try{
			return  new XMLSerializer().serializeToString(this);
		} catch (ex){
	       	var d = document.createElement("div");
			d.appendChild(this.cloneNode(true));
			return d.innerHTML;
		}
	});

	Element.prototype.__proto__.__defineGetter__("xml", function (){
		try {
			return  new XMLSerializer().serializeToString(this);
		} catch (ex){
			var d = document.createElement("div");
			d.appendChild(this.cloneNode(true));
			return d.innerHTML;
		}
	});

	XMLDocument.prototype.__proto__.__defineGetter__("text", function (){
		return  this.firstChild.textContent
	});

	Element.prototype.__proto__.__defineGetter__("text", function (){
		return  this.textContent
	});


	XMLDocument.prototype.selectSingleNode = Element.prototype.selectSingleNode = function (xpath){
		var x = this.selectNodes(xpath)
		if (! x || x.length <1) return  null ;
		return x[0];
	}
	
	XMLDocument.prototype.selectNodes = Element.prototype.selectNodes = function (xpath){
		var xpe =  new XPathEvaluator();
		var nsResolver = xpe.createNSResolver(this.ownerDocument ==  null  ? 
		this.documentElement : this.ownerDocument.documentElement);
		var result = xpe.evaluate(xpath, this , nsResolver, 0 , null);
		var found = [];
		var res;
		while (res = result.iterateNext())
			found.push(res);
		return found;
  }
}

function createXmlHttp(){
 var xmlhttp;

	try{ xmlhttp = new XMLHttpRequest();}
	catch(e){ try{ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}
		catch(e){ try{ xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}
		 catch(faild){ 
		 xmlhttp=null; 
		 alert("抱歉，您的浏览器不支持XMLHttp!,无法正常显示。");
			}
		}
	}
	return xmlhttp;
}

/*
创建Msxml2.XMLHTTP对象
*/
function Ajax(url,pars,callback,xml,m,errCallback){
	var xmlhttp;
	g_cur_requrl = url;
	
	if (g_isDebug)
		if (pars!="") g_cur_requrl += "?"+pars;	
	
	var strurl = g_cur_requrl;

	try {
	    xmlhttp = createXmlHttp();
    } catch(e) {
	    xmlhttp = false;
    }

    xmlhttp.onreadystatechange = function ()
	{
		
		if (xmlhttp.readyState == 4){ 
			window.status = "";
			if ($("loading")) $("loading").style.display="none";
			if	(xmlhttp.status==404)
			{
				alert("数据请求不存在,返回404，请联系管理员！\r\n\r\n请求URL："+strurl);
				g_cur_requrl = "";
				return;
			}

			if	(xmlhttp.status==500)
			{
				alert("服务器错误返回500，请联系管理员！\r\n\r\n请求URL："+strurl);
				g_cur_requrl = "";
				return;
			}
			
			if (xmlhttp.status==200 || xmlhttp.status==0){ 
				if(typeof(callback)=="function")
					if(typeof(xml)!="undefined"&&xml.toLowerCase()=="xml") {
						
						if(check_retcode(getnodedata(xmlhttp.responseXML,"/root/er","-1"),strurl))	{
							callback(xmlhttp.responseXML,m);
						}else{
							if(typeof(errCallback)!="undefined"){
								errCallback();
							}
						}
					}
					else
						callback(xmlhttp.responseText);
	        } else { 
	            alert("Error code:"+xmlhttp.status+"\r\n\r\n请求URL："+strurl);
	        }
			g_cur_requrl = "";
	    }
	}

	window.status = "XML请求："+strurl+"......";
	if ($("loading")) {$("loading").style.display = "block"; };

	
	if (pars!="")	{
		xmlhttp.open("POST",url,true);
		xmlhttp.setRequestHeader("If-Modified-Since","0");	
		xmlhttp.send(pars);
	}
	else {
		xmlhttp.open("GET",strurl,true);
		xmlhttp.setRequestHeader("If-Modified-Since","0");	
		xmlhttp.send(null);
	}
}


function getnodedata(xmlDoc,nodeID,defaultvalue)
{
	var str=defaultvalue;
	try{
		str = xmlDoc.selectSingleNode(nodeID).text;
	}
	catch(e){ 
		if (g_cur_requrl.indexOf(g_debugurl)>=0)
			alert("URL:"+g_cur_requrl+"\r\n\r\n获取xml数据失败！xml节点：" + nodeID + "默认值：" + str);
	}
	
	return str;
}

function getnodes(xmlDoc,nodeID,defaultvalue)
{
	var obj_array = defaultvalue;
	try{
		obj_array = xmlDoc.selectNodes(nodeID);
	}
	catch(e){
	}
	return obj_array;
}

function check_retcode(retcode,strurl) {
	var errstr="（errcode："+retcode+"）";

	switch (toNum(retcode))	{
		case 0: 
			return true;	break;
		case -1: 
			return false;
		case  -20978:
			errstr += "该用户没有被封锁";	break;
		case -20979:
			errstr += "不允许访问";break;
		case -20986:
		case -20987:
			errstr += "登录超时，请重新登陆";	break;
		case  -20990,-20991:
			errstr += "您的请求参数有误，请联系管理员！";	break;
		case -20995:
			errstr += "您输入的帖子内容太长，请输入<1万个字！";	break; 	
		case -20996:
			errstr += "您输入的帖子内容太短，请输入>15个汉字或30个字节！";	break; 			
		case -20997:
			errstr += "您输入的帖子标题太长，请输入<30个汉字或60个字节！";	break; 
		case -20998:
			errstr += "您输入的帖子标题太短，请输入>4个汉字！";	break;   
		case -20999:		
		case  -21300:
			errstr += "您不是版主，没有权限执行该操作！"; break;
		case  -21301:
			errstr += "您不是管理员，没有权限执行该操作！"; break;
		case  -21302:
			errstr += "您没有权限执行这个操作，有问题请联系管理员!";	break;
		case  -21203:
			errstr += "您发帖频率过快，请稍等!";	break;
		case  -21306:
		case  -21307:
			errstr += "抱歉，管理员不存在！";	break;
		case  -21308:
			errstr += "抱歉，管理员已存在！";	break;
		case  -21309:
			errstr += "抱歉，版主已存在！";	break;
		case  -21310:
			errstr += "抱歉，版主不存在！";	break;
		case  -21311:
			errstr += "抱歉，团队成员已存在！";	break;
		case  -21312:
			errstr += "抱歉，团队成员不存在！";	break;
		case  -21313:
			errstr += "抱歉，主管理员已存在！";	break;
		case  -21354:
			errstr += "本帖已经存在权威回答，请您在回帖时不要选择权威回答!";	break;
		case -26002:
			errstr += "抱歉，版面不存在，请您联系管理员！";	break; 
		case -26475:
			errstr += "抱歉，帖子不存在，请您联系管理员！";	break; 
    case -39996:
			return false;
 		default:
			errstr += "系统繁忙，请您联系管理员！";	break;
	}

	//errstr += "\r\n\r\n请求URL："+strurl;
	alert(errstr);
	return false;	
}
/*---------------------------------*/
function isadmin(q){
	var j = DATA_ORG.length;
	for(var i=0;i<j;i++){
		if(DATA_ORG[i]["admin"].indexOf("|"+q+"|")!=-1 || DATA_ORG[i]["admin"].indexOf(q+"|")==0)
		return true;
	}
	return false;
}

function logout(){
	var url = g_cgi_path+"logout";
	var logout_callback = function(){
		delCookie("skey", "/");
		delCookie("uin", "/");
		//window.location.href = "/simple/index.html?fid="+fid;
		//window.location.href = "/portal/index.html";
        window.location.reload();
	};
	Ajax(url,"",logout_callback,"xml");
}

function leave(){
	window.self.close();
}

function login(fid){
	var str = "";
	if(((getCookie("uin") != ""&&getCookie("skey")!="")||(getCookie("qqmail_username")!=""))&&g_loginFlag=="1"){
		var qq = getCookie("uin").replace(/^[^1-9]*/,"");
		var isQQMail = false;
		if(qq==""){
			qq = getCookie("qqmail_username");
			isQQMail = true;
		}
		if(isQQMail)
			str = "欢迎您,["+qq+"] | <a href='/portal/myinfo.html?fid=8'>我的资料</a> | <a href='javascript:leave();'>离开</a>";
		else
			str = "欢迎您,["+qq+"] | <a href='/portal/myinfo.html?fid=8'>我的资料</a> | <a href='javascript:logout();'>退出</a>";
		//添加管理入口
		if((inip==1) || isadmin(qq)) 
			str += " | <a target='_blank' style='color:red' href='/beta2/simple_admin/index.html?fid="+fid+"'>管理后台</a>";
	}else{
		var url = window.location.href;
		if(url.indexOf("url")!=-1)
            str = "欢迎您,来到腾讯客服中心! | <a href='"+window.location.href+"'>登录帐号</a>";
		else
			str = "欢迎您,来到腾讯客服中心! | <a href='/portal/login.html?fid="+fid+"&url="+escape(window.location.href)+"'>登录帐号</a>";
	}
	
	$("logo2").innerHTML = str;
	
	//给菜单加链接
	if(fid!=""){
		//$("item0").href = "/simple/index.html?fid="+fid;
        if ($("item1"))
		$("item1").href = "/portal/write.html?fid="+fid;
		//$("item2").href = "/cgi-bin/beta1/titlelist_simple?pn=0&order=3&fid="+fid;
		//$("logo1").style.background = "url(/simple/images/logo_"+fid+".gif) 20px no-repeat";
	}
}

