﻿function JSAddFavorite()
{
    if ( window.sidebar && "object" == typeof( window.sidebar ) && "function" == typeof( window.sidebar.addPanel ) )
    {
        window.sidebar.addPanel('OPoll调查网', 'http://www.OPoll.com', "");
    }
    else if ( document.all && "object" == typeof( window.external ) )
    {
        window.external.addFavorite('http://www.OPoll.com','OPoll调查网');
    }
}
function DoSearch(txtKey,ddlType)
{
	window.open("/Search/Search.aspx?key="+escape(document.getElementById(txtKey).value)+"&type="+document.getElementById(ddlType).value,"_self");
	return false;
}
function OnSearchTextKeyDown(btSearch,evt)
{
	var code = window.event?event.keyCode:evt.keyCode;
	if(code == "13")
	{
		document.getElementById(btSearch).onclick();
		return false;
	}
	return true;
}
//判断字符串是否为数值
function IsDigi(str)
{
	var reg = /^(-|\+)?\d+(\.\d+)?$/;
	return  reg.test(str);   
}
//判断字符串是否为正数 
function IsPositiveNum(str)
{
	var reg = /^(\+)?\d+(\.\d+)?$/;
	return  reg.test(str);   
}
//判断字符串是否为自然数  
function IsNaturalInt(str)
{
	var reg = /^(\d+)?$/;
	return  reg.test(str); 
}
function IsDate(str)
{
	//判断1,3,5,7,8,10,12等天数为31的月份
	var reg = /^\d{4}([\.\/-])((0?[13578])|(1[02]))\1((0?[1-9])|([1-2][0-9])|(3[0-1]))$/;
	if(reg.test(str))
		return true;
	//判断4,6,9,11等天数为30的月份 
	reg = /^\d{4}([\.\/-])((0?[469])|(11))\1((0?[1-9])|([1-2][0-9])|(30))$/;
	if(reg.test(str))
		return true;
	//判断2月份
	reg = /^(\d{4})([\.\/-])(0?2)\2((0?[1-9])|([1-2][0-9]))$/;
	if(reg.test(str))
	{
		var year = parseInt(RegExp.$1,10);
		var day = parseInt(RegExp.$4,10);
		if((year%400==0)||((year%100!=0)&&(year%4==0)))
		{
			if(day<=29)
				return true;
		}
		else 
		{
			if(day<=28)
				return true;
		}
	}
	return false;
}
//裁剪字符串，区字节数为len的长度
function CutString(src,len)
{
    var tmpLen = 0;
    for(var i = 0;i<src.length;i++)  //遍历字符串中的每个字符
    {
        if(src.charCodeAt(i) >255)   //如果当前字符的编码大于255
        {
            tmpLen += 2;    //所占字节数加2
        }
        else
        {
            tmpLen += 1;   //否则所占字节数加1
        }
        
        if(tmpLen>=len)
        {
            break;
        }
    }
    
    return src.substring(0,i+1);
}


String.prototype.len=function(){ 
	return this.replace(/[^\x00-\xff]/g,"**").replace(/\r\n/g, "").length; 
} 

function IsEmail(str)
{
	var reg = /^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$/;
	return  reg.test(str); 
}
function GetQueryString(name)   
{   
     var reg  =new   RegExp("(^|&)"+     name     +"=([^&]*)(&|$)");   
     var r  =  window.location.search.substr(1).match(reg);
     if(r!=null)
        return unescape(r[2]);   
     return null;   
} 
/*
*	通过js操作cookie的简单封装
*	
*	var _c=new Cookie();
*	_c.SetValue("list1","啊",1);
*	_c.SetValue("list2","噢",1);
*	cAlert(_c.GetValue("list2"))
*/
function Cookie()
{
	this.SetValue=function(name,value,hours,path,domain,secure)
	{
		var str=new String();
		var nextTime=new Date();
		nextTime.setHours(nextTime.getHours()+hours);
		str=name+"="+escape(value);
		if(hours)
			str+=";expires="+nextTime.toGMTString();
		if(path)
			str+=";path="+path;
		if(domain)
		str+=";domain="+domain;
		if(secure)
		str+=";secure";
		document.cookie=str;
	}
	this.GetValue=function(name)
	{
		var rs=new RegExp("(^|)"+name+"=([^;]*)(;|$)","gi").exec(document.cookie),tmp;
		if(tmp=rs)
		return unescape(tmp[2]);
		return null;
	}
}

function escapeScript(str)
{
	if(str == null)//在firefox下，如果str为空，下面的replace语句将执行不下去
		return "";
	var retStr = str;
	retStr = retStr.replace(/&/g, "&amp;");	
	retStr = retStr.replace(/"/g, "&quot;");	
	return retStr;	
}

String.prototype.trim = function()
{
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

function dateAdd(datestr,d)
{
	var tempy=datestr.substring(0,4);
    var tempm=datestr.substring(4,6);
    var tempd=datestr.substring(6,8);
    var tempDate = new Date(tempy+"/"+tempm+"/"+tempd+" 8:0:0");
    tempDate.setDate(tempDate.getDate()+parseInt(d));
    tempy = tempDate.getFullYear();
    tempm = tempDate.getMonth()+1;
    tempd = tempDate.getDate();
    if(tempm<10)
		tempm="0"+tempm;
	if(tempd<10)
		tempd="0"+tempd;
	return tempy+''+tempm+''+tempd;
}

/***********************************************************
Function formatnumber(value,num)
Written by zergling
javascript版本的FormatNumber函数，用法与VBScript相同，第一个参数是待格式化的数值，第二个是保留小数位数
注意：返回的是字符串类型
第一个函数需要调用第二个函数，所以第二个不能去掉
***********************************************************/
function adv_format(value,num) //四舍五入
{
	var a_str = formatnumber(value,num);
	var a_int = parseFloat(a_str);
	if (value.toString().length>a_str.length)
	{
	var b_str = value.toString().substring(a_str.length,a_str.length+1)
	var b_int = parseFloat(b_str);
	if (b_int<5)
	{
	return a_str
	}
	else
	{
	var bonus_str,bonus_int;
	if (num==0)
	{
	bonus_int = 1;
	}
	else
	{
	bonus_str = "0."
	for (var i=1; i<num; i++)
	bonus_str+="0";
	bonus_str+="1";
	bonus_int = parseFloat(bonus_str);
	}
	a_str = formatnumber(a_int + bonus_int, num)
	}
	}
	return a_str
}

//直接去尾
function formatnumber(value,num) 
{
	var a,b,c,i
	a = value.toString();
	b = a.indexOf('.');
	c = a.length;
	if (num==0)
	{
	if (b!=-1)
	a = a.substring(0,b);
	}
	else
	{
	if (b==-1)
	{
	a = a + ".";
	for (i=1;i<=num;i++)
	a = a + "0";
	}
	else
	{
	a = a.substring(0,b+num+1);
	for (i=c;i<=b+num;i++)
	a = a + "0";
	}
	}
	return a
}

function escapeCode(str)
{
    var div = document.createElement('div');
    var text = document.createTextNode(str);
    div.appendChild(text);
    return div.innerHTML;
}

function setMsg(str)
{
	var msg = document.getElementById("msgDiv");

	if (msg != null)
	{
		if (str == null || str == '')
		{
			msg.style.display="none";
			return;
		}
		//msg.innerHTML = (str == null ? "连接错误或未知错误。" : (str + '').trim());
//		if(tdMsg!=null)
//		{
//			tdMsg.innerHTML = (str == null ? "连接错误或未知错误。" : (str + '').trim());
//		}
        msg.innerText = str;
		msg.style.display='';
	}
}

function cAlert(str,url)
{
	//var msg = document.getElementById("msg");
	alert(str);
	if(url != null && url!="")
	{
		window.location=url;
	}
}

if( document.implementation.hasFeature("XPath", "3.0") )
{
	XMLDocument.prototype.selectNodes = function(cXPathString, xNode)
	{
		if( !xNode ) { xNode = this; } 

		var oNSResolver = this.createNSResolver(this.documentElement)
		var aItems = this.evaluate(cXPathString, xNode, oNSResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
		var aResult = [];
		for( var i = 0; i < aItems.snapshotLength; i++)
		{
			aResult[i] =  aItems.snapshotItem(i);
		}
		
		return aResult;
	}
	XMLDocument.prototype.selectSingleNode = function(cXPathString, xNode)
	{
		if( !xNode ) { xNode = this; } 

		var xItems = this.selectNodes(cXPathString, xNode);
		if( xItems.length > 0 )
		{
			return xItems[0];
		}
		else
		{
			return null;
		}
	}

	Element.prototype.selectNodes = function(cXPathString)
	{
		if(this.ownerDocument.selectNodes)
		{
			return this.ownerDocument.selectNodes(cXPathString, this);
		}
		else{throw "For XML Elements Only";}
	}

	Element.prototype.selectSingleNode = function(cXPathString)
	{	
		if(this.ownerDocument.selectSingleNode)
		{
			return this.ownerDocument.selectSingleNode(cXPathString, this);
		}
		else{throw "For XML Elements Only";}
	}
	
	XMLDocument.prototype.LoadXML = function(xmlString)
	{
		var childNodes = this.childNodes;
		for (var i = childNodes.length - 1; i >= 0; i--)
			this.removeChild(childNodes[i]);

		var dp = new DOMParser();
		var newDOM = dp.parseFromString(xmlString, "text/xml");
		var newElt = this.importNode(newDOM.documentElement, true);
		this.appendChild(newElt);
	}
	
	Document.prototype.__defineGetter__("xml",function(){
			return (new XMLSerializer()).serializeToString(this);
		}
    )
    
    Element.prototype.__defineSetter__("text",function(textString){
          if(this.nodeType==1)
           { 
            	this.textContent = textString ;
           }
        }
    )
     
    Element.prototype.__defineGetter__("text",function(){
          if(this.nodeType==1)
           { 
            	return this.textContent;
           }
           else
			{ 
				return null;
			}
      }
	  )
    
}

if(window.HTMLElement) {
    HTMLElement.prototype.__defineSetter__("outerHTML",function(sHTML){
        var r=this.ownerDocument.createRange();
        r.setStartBefore(this);
        var df=r.createContextualFragment(sHTML);
        this.parentNode.replaceChild(df,this);
        return sHTML;
        });

    HTMLElement.prototype.__defineGetter__("outerHTML",function(){
     var attr;
        var attrs=this.attributes;
        var str="<"+this.tagName.toLowerCase();
        for(var i=0;i<attrs.length;i++){
            attr=attrs[i];
            if(attr.specified)
                str+=" "+attr.name+'="'+attr.value+'"';
            }
        if(!this.canHaveChildren)
            return str+">";
        return str+">"+this.innerHTML+"</"+this.tagName.toLowerCase()+">";
        });
        
	HTMLElement.prototype.__defineGetter__("canHaveChildren",function(){
			switch(this.tagName.toLowerCase()){
				case "area":
				case "base":
				case "basefont":
				case "col":
				case "frame":
				case "hr":
				case "img":
				case "br":
				case "input":
				case "isindex":
				case "link":
				case "meta":
				case "param":
				return false;
			}
			return true;

		});
	
	HTMLElement.prototype.__defineSetter__
	(
		"innerText", 
		function (anything) 
		{
		this.innerHTML = "";

		var sText = String(anything);
		var textS = sText.split("\n");
		for(var i=0; i<textS.length; i++)
		{
			var txtNode = null;
			var retNode = null;

			if(textS[i].length)
			txtNode = document.createTextNode(textS[i]);

			if(i<textS.length-1)
			retNode = document.createElement("BR");

			if(txtNode)
			this.appendChild(txtNode);

			if(retNode)
			this.appendChild(retNode);
		}
		}
	);

	HTMLElement.prototype.__defineGetter__
	(
		"innerText", 
		function () 
		{
		var anyString = "";

		var childS = this.childNodes;
		for(var i=0; i<childS.length; i++)
		{
			if(childS[i].nodeType==1)
			anyString += childS[i].tagName=="BR" ? '\n' : childS[i].innerText;
			else if(childS[i].nodeType==3)
			anyString += childS[i].nodeValue;
		}

		return anyString;
		}
	);
	
	HTMLElement.prototype.removeNode = function(bool)
	{
		this.parentNode.removeChild(this);
	};

}



function setClipboard(maintext) {
   if (window.clipboardData) {
      return (window.clipboardData.setData("Text", maintext));
   }
   else if (window.netscape) {
	  try
	  {
      netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
      }catch(e)
      {
		alert("被浏览器拒绝！请在浏览器地址栏输入'about:config'并回车，然后将'signed.applets.codebase_principal_support'设置为'true'");
      }
      var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
      if (!clip) return;
      var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
      if (!trans) return;
      trans.addDataFlavor('text/unicode');
      var str = new Object();
      var len = new Object();
      var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
      var copytext=maintext;
      str.data=copytext;
      trans.setTransferData("text/unicode",str,copytext.length*2);
      var clipid=Components.interfaces.nsIClipboard;
      if (!clip) return false;
      clip.setData(trans,null,clipid.kGlobalClipboard);
      return true;
   }
   return false;
}

/**************************************************
http://www.codebase.nl/index.php/command/viewcode/id/174
**************************************************/
function getClipboard() {
   if (window.clipboardData) {
      return(window.clipboardData.getData('Text'));
   }
   else if (window.netscape) {
      netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
      var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
      if (!clip) return;
      var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
      if (!trans) return;
      trans.addDataFlavor('text/unicode');
      clip.getData(trans,clip.kGlobalClipboard);
      var str = new Object();
      var len = new Object();
      try {
         trans.getTransferData('text/unicode',str,len);
      }
      catch(error) {
         return null;
      }
      if (str) {
         if (Components.interfaces.nsISupportsWString) str=str.value.QueryInterface(Components.interfaces.nsISupportsWString);
         else if (Components.interfaces.nsISupportsString) str=str.value.QueryInterface(Components.interfaces.nsISupportsString);
         else str = null;
      }
      if (str) {
         return(str.data.substring(0,len.value / 2));
      }
   }
   return null;
}



function showHiddenParam(objName)
{
	var hp = document.getElementById(objName);
	var otherObjName = "";
	if(objName == "tdInvite" || objName == "tdAddin")
	{
		otherObjName = objName == "tdInvite"?"tdAddin":"tdInvite";
	}
	
	var otherHp = document.getElementById(otherObjName);
	if (hp != null)
	{
		if (hp.style.display == 'none')
		{
			hp.style.display = '';
			if(otherObjName != "")
			{
				otherHp.style.display = 'none';
			}
		}
		else
		{
			hp.style.display = 'none';
			if(otherHp != null)
			{
				otherHp.style.display = 'none';
			}
		}
	}
} 

var setOuterHtml = function(s){
   var range = this.ownerDocument.createRange();
   range.setStartBefore(this);
   var fragment = range.createContextualFragment(s);
   //alert(fragment.xml);
   this.parentNode.replaceChild(fragment, this);
};

if(window.HTMLElement && window.navigator.userAgent.indexOf("Firefox")>=1) {
  HTMLElement.prototype.__defineSetter__("outerHTML", setOuterHtml);
}

function closeWindow()
{
    window.opener=null;
    window.open('','_self');
    window.close();
}


