/*----------common.js  Start----------*/
/*初始化浏览器类型*/
var userAgent = navigator.userAgent.toLowerCase();
var is_webtv = userAgent.indexOf('webtv') != -1;
var is_kon = userAgent.indexOf('konqueror') != -1;
var is_mac = userAgent.indexOf('mac') != -1;
var is_saf = userAgent.indexOf('applewebkit') != -1 || navigator.vendor == 'Apple Computer, Inc.';
var is_opera = userAgent.indexOf('opera') != -1 && opera.version();
var is_moz = (navigator.product == 'Gecko' && !is_saf) && userAgent.substr(userAgent.indexOf('firefox') + 8, 3);
var is_ns = userAgent.indexOf('compatible') == -1 && userAgent.indexOf('mozilla') != -1 && !is_opera && !is_webtv && !is_saf;
var is_ie = (userAgent.indexOf('msie') != -1 && !is_opera && !is_saf && !is_webtv) && userAgent.substr(userAgent.indexOf('msie') + 5, 3);
var charset = "gbk";

var VirtualPath = "/StockInfo";//虚拟目录
var cookiePrefix = 'Fly_';//cookie前缀
var cookieDomain = '.mashang8.com';//cookie 的域名
var report_error = true;//是否报告js错误

//var scrollbarWidth = parseInt(document.body.offsetWidth)-parseInt(document.body.scrollWidth);

function ResumeError() { 
  return true; 
} 

if (!report_error){ //如果不允许报告错误
  window.onerror = ResumeError; 
}

function ReturnFalse(){ //返回false
  return false;
}

function $(id) {/*查找控件*/
  if(!id){return null; }
  if(document.getElementById){
    return eval('document.getElementById("' + id + '")');
  }else if(document.layers){
    return eval("document.layers['" + id +"']");
  }else{
    return eval('document.all.' + id);
  }
}

function ExecScript(str){
  try{
    window.execScript(str);
  } catch (ex) {
    window.eval(str);//这个不是全局
    /*
    try {
      (new Function(str))();
    } catch (ex){ 
      
    };*/
  };
}

function RequireJS(u,id){//给head标签加js脚本
  var id = escape(u);
  if (!$(id)){
    var obj = document.createElement('script');
    var obj = document.getElementsByTagName('head')[0].appendChild(obj);
    obj.setAttribute('src',u);
    obj.setAttribute('language','javascript');
    obj.setAttribute('type','text/javascript');
    obj.setAttribute('id',id);
    if (!isUndefined(id)){
      obj.setAttribute('id',id);
    }
    
  }
}

function IncludeJS(u) {//读取js并执行,此项会优先于require执行
  var x = window.ActiveXObject ? new ActiveXObject("MSXML2.XMLHTTP") : new XMLHttpRequest();
  x.open("GET",u,false);
  x.send(null);
  try {
    var c = x.responseText;
  }  catch (ex){};
  var id = escape(u);
  if ((c != null) && (!document.getElementById(id))){
  var head = document.getElementsByTagName("head")[0];
  var script = document.createElement("script");
  script.language = "javascript";
  script.type = "text/javascript";
  script.id = id;
  script.defer = true;
  script.text = c;
  head.appendChild(script);
  }/*
  try{
    window.execScript(c);
  } catch (ex) {
    window.eval(c);
  }*/
}
function RequireCSS(u,media){//给head标签加css样式
  var id = escape(u);
  if (!$(id)){
    var obj = document.createElement('link');
    var obj = document.getElementsByTagName('head')[0].appendChild(obj);
    obj.setAttribute('href',u);
    obj.setAttribute('rel','stylesheet');
    obj.setAttribute('type','text/css');
    if (!isUndefined(media)){
      obj.setAttribute('media',media);
    }
  }
}

function htmlspecialchars(str){//将html标签转义
  str = str.replace(/&/g,"&amp;");
  str = str.replace(/</g,"&lt;");
  str = str.replace(/>/g,"&gt;");
  str = str.replace(/"/g,"&quot;");
  return str;
}

function Random(limit){
  if (isUndefined(limit)) limit = 1;
  return Math.floor(Math.random()*limit);
}

function in_array(needle, haystack) {/*是否存在于数组*/
  if(typeof needle == 'string') {
    for(var i in haystack) {
      if(haystack[i] == needle) {
          return true;
      }
    }
  }
  return false;
}

function isUndefined(variable) {/*是否underfined*/
  return typeof variable == 'undefined' ? true : false;
}

function findtags(parentobj, tag) { /*寻找Tag*/
  if(!isUndefined(parentobj.getElementsByTagName)) {
    return parentobj.getElementsByTagName(tag);
  } else if(parentobj.all && parentobj.all.tags) {
    return parentobj.all.tags(tag);
  } else {
    return null;
  }
}
function findcss(className,cssIndex){ /*查找CSS文件中的某样式*/
  cssIndex = !isUndefined(cssIndex) ? cssIndex : 0;
  var arr = document.styleSheets(cssIndex).rules;
  for (var i=0;i<arr.length;i++){
    if (arr(i).selectorText == className){
      return document.styleSheets(cssIndex).rules(i);
    }
  }
  return null;
}
function getStyle(oElm, strCssRule){ /*获取某控件的某个style属性*/
  /*注意，对于缩略式表达式，FF无法获取！例如“padding:4px”，在FF下面，只能按照标准返回"padding-left"。简言之var getPadding = getStyle(someElement, "padding");是无效的，需要用var getPadding = getStyle(someElement, "padding-left");*/
  var strValue = "";
  if(document.defaultView && document.defaultView.getComputedStyle){
    strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
  }
  else if(oElm.currentStyle){
    strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
      return p1.toUpperCase();
    });
    strValue = oElm.currentStyle[strCssRule];
  }
  return strValue;
}
function array_obj(){
  this.index = -1;
  this.arr = new Array();
  this.add = function(value) {
    if (value != 'undefined') {
      this.index++;
      this.arr[(this.index)] = value;
      this.arr.length  = (this.index) + 1;
    }
  }
  this.result = function() {
    return this.arr;
  }
}

function doane(event) {
  e = event ? event : window.event ;
  if(is_ie) {
    e.returnValue = false;
    e.cancelBubble = true;
  } else {
    e.stopPropagation();
    e.preventDefault();
  }
}

function arraypop(a) {/*数组最高项删除*/
  if(typeof a != 'object' || !a.length) {
    return null;
  } else {
    var response = a[a.length - 1];
    a.length--;
    return response;
  }
}

function arraypush(a, value) {/*添加一项到数组*/
  a[a.length] = value;
  return a.length;
}

function createXMLDOM()      { //创建一个XMLDOM对象
        if(window.ActiveXObject)
        {
            var arrSignatures = ["MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0","MSXML2.DOMDocument.3.0",
                                "MSXML2.DOMDocument","Microsoft.XmlDom"];
            for(var i = 0;i<arrSignatures.length;i++)
            {
                try
                {
                    var oXmlDom = new ActiveXObject(arrSignatures[i]);
                    return oXmlDom;
                }
                catch(oError)
                {}
            }
            throw new Error("MSXML is not installed on your system.");
        }
        else if(document.implementation && document.implementation.createDocument)
        {
            var oXmlDom = document.implementation.createDocument("","",null);
            oXml.parseError = {
                valueOf:function(){return this.errorCode;},
                toString:function(){return this.errorCode.toString()}};
                
            oXmlDom.__initError__();
            oXmlDom.addEventListener("load",function()
            {
                this.__checkForError__();
                this.__changeReadyState__(4);
            },false);
            
            return oXmlDom;
        }
        else
        {
            throw new Error("Your browser doesn't support an XML Dom Object。");
        }
}

//------------------------------------------------------------------------
function RaiseEnterSet(ControlID)
{
  if(event.keyCode==13)
  {
    var Control = $(ControlID);
    if (Control != null) Control.click();
    event.returnValue=false;
  }
}


//取查询字符串
String.prototype.getQueryString = function(name)
{
  var reg = new RegExp("(^|&|\\?)"+ name +"=([^&]*)(&|$)"), r;
  if ((r=this.match(reg))!=null) return unescape(r[2]); return null;
}

//内部变量
tPopWait=50;//停留tWait豪秒后显示提示。
tPopShow=5000;//显示tShow豪秒后关闭提示
showPopStep=20;
popOpacity=99;

sPop=null;
curShow=null;
tFadeOut=null;
tFadeIn=null;
tFadeWaiting=null;

//Alt Title提示文本
document.write("<style type='text/css'id='defaultPopStyle'>");
document.write(".cPopText {  background-color: #F8F8F5;color:#000000; border: 1px #000000 solid;font-size: 12px; padding-right: 4px; padding-left: 4px; height: 20px; padding-top: 2px; padding-bottom: 2px; filter: Alpha(Opacity=0)}");
document.write("</style>");
document.write("<div id='dypopLayer' style='position:absolute;z-index:1000;' class='cPopText'></div>");

function showPopupText(){
var o=event.srcElement;
  MouseX=event.x;
  MouseY=event.y;
  if(o.alt!=null && o.alt!=""){o.dypop=o.alt;o.alt=""};
        if(o.title!=null && o.title!=""){o.dypop=o.title;o.title=""};
  if(o.dypop!=sPop) {
      sPop=o.dypop;
      clearTimeout(curShow);
      clearTimeout(tFadeOut);
      clearTimeout(tFadeIn);
      clearTimeout(tFadeWaiting);  
      if(sPop==null || sPop=="") {
        dypopLayer.innerHTML="";
        dypopLayer.style.filter="Alpha()";
        dypopLayer.filters.Alpha.opacity=0;  
        }
      else {
        if(o.dyclass!=null) popStyle=o.dyclass 
          else popStyle="cPopText";
        curShow=setTimeout("showIt()",tPopWait);
      }
      
  }
}

function showIt(){
    dypopLayer.className=popStyle;
    dypopLayer.innerHTML=sPop;
    popWidth=dypopLayer.clientWidth;
    popHeight=dypopLayer.clientHeight;
    if(MouseX+12+popWidth>document.body.clientWidth) popLeftAdjust=-popWidth-24
      else popLeftAdjust=0;
    if(MouseY+12+popHeight>document.body.clientHeight) popTopAdjust=-popHeight-24
      else popTopAdjust=0;
    dypopLayer.style.left=MouseX+12+document.body.scrollLeft+popLeftAdjust;
    dypopLayer.style.top=MouseY+12+document.body.scrollTop+popTopAdjust;
    dypopLayer.style.filter="Alpha(Opacity=0)";
    fadeOut();
}

function fadeOut(){
  if(dypopLayer.filters.Alpha.opacity<popOpacity) {
    dypopLayer.filters.Alpha.opacity+=showPopStep;
    tFadeOut=setTimeout("fadeOut()",1);
    }
    else {
      dypopLayer.filters.Alpha.opacity=popOpacity;
      tFadeWaiting=setTimeout("fadeIn()",tPopShow);
      }
}

function fadeIn(){
  if(dypopLayer.filters.Alpha.opacity>0) {
    dypopLayer.filters.Alpha.opacity-=1;
    tFadeIn=setTimeout("fadeIn()",1);
    }
}

function rect_object(){ //Rect数据类型
  this.left = null;
  this.top = null;
  this.width = null;
  this.height = null;
}
function setRect(id,rect){ //以某一控件来设置Rect的值
  if (id.style.position != "absolute"){ //浮动层和固定层的算法不同
    var l = id.offsetLeft;
    var t = id.offsetTop;
    var vParent = id.offsetParent;
    while (vParent.tagName.toUpperCase() != "BODY") //相对于body的left和top
    {
      l += vParent.offsetLeft;
      t += vParent.offsetTop;
      vParent = vParent.offsetParent;
    }
    rect.left = l;
    rect.top = t;
    rect.width = id.clientWidth;
    rect.height = id.clientHeight;
  } else {
    rect.left = id.style.left;
    rect.top = id.style.top;
    rect.height = id.style.height;
    rect.width = id.style.width;
  }
}
/*----------common.js  End----------*/
/*----------ajaxrequest.js  Start----------*/
/*--------------------------------------
Name: AJAXRequest
Version: 0.7.12
Author: xujiwei
E-mail: vipxjw@163.com
Website: http://www.xujiwei.cn
License: http://www.gnu.org/licenses/gpl.html GPL
Copyright (c) 2007, xujiwei, All Rights Reserved

AjaxRequest Deveoper Manual:
    http://ajax.xujiwei.cn/
--------------------------------------*/
function AJAXRequest() {
	var xmlPool=[],objPool=[],AJAX=this,ac=arguments.length,av=arguments;
	var xmlVersion=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
	var eF=emptyFun=function(){};
	var av=(ac>0?(typeof(av[0])=="object"?av[0]:{}):{});
	var encode=$GEC(av.charset+"");
	this.url=getp(av.url,"");
	this.oncomplete=getp(av.oncomplete,eF);
	this.content=getp(av.content,"");
	this.method=getp(av.method,"POST");
	this.async=getp(av.async,true);
	this.onexception=getp(av.onexception,eF);
	this.ontimeout=getp(av.ontimeout,eF);
	this.timeout=getp(av.timeout,3600000);
	this.onrequeststart=getp(av.onrequeststart,eF);
	this.onrequestend=getp(av.onrequestend,eF);
	if(!getObj()) return false;
	function getp(p,d) { return p!=undefined?p:d; }
	function getObj() {
		var i,j,tmpObj;
		for(i=0,j=xmlPool.length;i<j;i++) if(xmlPool[i].readyState==0||xmlPool[i].readyState==4) return xmlPool[i];
		try { tmpObj=new XMLHttpRequest; }
		catch(e) {
			for(i=0,j=xmlVersion.length;i<j;i++) {
				try { tmpObj=new ActiveXObject(xmlVersion[i]); } catch(e2) { continue; }
				break;
			}
		}
		if(!tmpObj) return false;
		else { xmlPool[xmlPool.length]=tmpObj; return xmlPool[xmlPool.length-1]; }
		// mozilla某些版本没有readyState属性
    if (tmpObj.readyState == null)
    {
      tmpObj.readyState = 0;
      tmpObj.addEventListener("load", function ()
      { tmpObj.readyState = 4;
        if (typeof tmpObj.onreadystatechange == "function"){tmpObj.onreadystatechange();}
      },  false);
    }
	}
	function $(id){return document.getElementById(id);}
	function $N(d){var n=d*1;return(isNaN(n)?0:n);}
	function $VO(v){return(typeof(v)=="string"?(v=$(v))?v:false:v);}
	function $GID(){return((new Date)*1);}
	function $SOP(id,ct){objPool[id+""]=ct;}
	function $LOP(id){return(objPool[id+""]);}
	function $SRP(f,r,p){return(function(s){s=f(s);for(var i=0;i<r.length;i++) s=s.replace(r[i],p[i]);return(s);});}
	function $GEC(cs){
		if(cs.toUpperCase()=="UTF-8") return(encodeURIComponent);
		else return($SRP(escape,[/\+/g],["%2B"]));
	}
	function $ST(obj,text) {
		var nn=obj.nodeName.toUpperCase();
		if("INPUT|TEXTAREA".indexOf(nn)>-1) obj.value=text;
		else try{obj.innerHTML=text;} catch(e){};
	}
	function $CB(cb) {
		if(typeof(cb)=="function") return cb;
		else {
			cb=$VO(cb);
			if(cb) return(function(obj){$ST(cb,obj.responseText);});
			else return emptyFun; }
	}
	function $GP(p,v,d,f) {
		var i=0;
		while(i<v.length){p[i]=v[i]?f[i]?f[i](v[i]):v[i]:d[i];i++;}
		while(i<d.length){p[i]=d[i];i++;}
	}
	function send(purl,pc,pcbf,pm,pa) {
		var purl,pc,pcbf,pm,pa,ct,ctf=false,xmlObj=getObj(),ac=arguments.length,av=arguments;
		if(!xmlObj) return false;
		var pmp=pm.toUpperCase()=="POST"?true:false;
		if(!pm||!purl) return false;
		var ev={url:purl, content:pc, method:pm};
		purl+=(purl.indexOf("?")>-1?"&":"?")+"timestamp="+$GID();
		xmlObj.open(pm,purl,pa);
		AJAX.onrequeststart(ev);
		if(pmp) xmlObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		ct=setTimeout(function(){ctf=true;xmlObj.abort();},AJAX.timeout);
		xmlObj.onreadystatechange=function() {
			if(ctf) { AJAX.ontimeout(ev); AJAX.onrequestend(ev); }
			else if(xmlObj.readyState==4) {
				ev.status=xmlObj.status;
				try{ clearTimeout(ct); } catch(e) {};
				try{ if(xmlObj.status==200 || xmlObj.status == 304) pcbf(xmlObj); else AJAX.onexception(ev); }
				catch(e) { AJAX.onexception(ev); }
				AJAX.onrequestend(ev);
			}
		}
		if(pmp) xmlObj.send(pc); else xmlObj.send("");
		return true;
	}
	this.setcharset=function(cs) { encode=$GEC(cs); }
	this.get=function() {
		var p=[],av=arguments;
		$GP(p,av,[this.url,this.oncomplete],[null,$CB]);
		if(!p[0]&&!p[1]) return false;
		return(send(p[0],"",p[1],"GET",this.async));
	}
	this.update=function() {
		var p=[],purl,puo,pinv,pcnt,av=arguments;
		$GP(p,av,[emptyFun,this.url,-1,-1],[$CB,null,$N,$N]);
		if(p[2]==-1) p[3]=1;
		var sf=function(){send(p[1],"",p[0],"GET",this.async);};
		var id=$GID();
		var cf=function(cc) {
			sf(); cc--; if(cc==0) return;
			$SOP(id,setTimeout(function(){cf(cc);},p[2]));
		}
		cf(p[3]);
		return id;
	}
	this.stopupdate=function(id) {
		clearTimeout($LOP(id));
	}
	this.post=function() {
		var p=[],av=arguments;
		$GP(p,av,[this.url,this.content,this.oncomplete],[null,null,$CB]);
		if(!p[0]&&!p[2]) return false;
		return(send(p[0],p[1],p[2],"POST",this.async));
	}
	this.postf=function() {
		var p=[],fo,vaf,pcbf,purl,pc,pm,ac=arguments.length,av=arguments;
		fo=ac>0?$VO(av[0]):false;
		if(!fo||(fo&&fo.nodeName!="FORM")) return false;
		vaf=fo.getAttribute("onvalidate");
		vaf=vaf?(typeof(vaf)=="string"?new Function(vaf):vaf):null;
		if(vaf&&!vaf()) return false;
		$GP(p,[av[1],fo.action,fo.method],[this.oncomplete,this.url,this.method],[$CB,null,null]);
		pcbf=p[0];purl=p[1];
		if(!pcbf&&!purl) return false;
		pc=this.formToStr(fo); if(!pc) return false;
		if(p[2].toUpperCase()=="POST")
			return(send(purl,pc,pcbf,"POST",true));
		else {
			purl+=(purl.indexOf("?")>-1?"&":"?")+pc;
			return(send(purl,"",pcbf,"GET",true));
		}
	}
	/* formToStr
	// from SurfChen <surfchen@gmail.com>
	// @url     http://www.surfchen.org/
	// @license http://www.gnu.org/licenses/gpl.html GPL
	// modified by xujiwei
	// @url     http://www.xujiwei.cn/
	*/
	this.formToStr=function(fc) {
		var i,qs="",and="",ev="";
		for(i=0;i<fc.length;i++) {
			e=fc[i];
			if (e.name!='') {
				if (e.type=='select-one'&&e.selectedIndex>-1) ev=e.options[e.selectedIndex].value;
				else if (e.type=='checkbox' || e.type=='radio') {
					if (e.checked==false) continue;
					ev=e.value;
				}
				else ev=e.value;
				ev=encode(ev);
				qs+=and+e.name+'='+ev;
				and="&";
			}
		}
		return qs;
	}
}
/*----------ajaxrequest.js  End----------*/
/*----------cookies.js  Start----------*/

/*
函数:设置cookie
expires:过期时间,单位(秒),不填即关闭浏览器失效
*/
function SetCookie(name,value){
  //检测参数
  if(!name || !value){
    //throw new Error("SetCookie(name,value) 参数必须")
  }
  var argv = arguments;
  var argc = arguments.length;
  var expires = (argc > 2) ? argv[2] : 0; 
  var path = (argc > 3) ? argv[3] : null; 
  var domain = (argc > 4) ? argv[4] : null; 
  var secure = (argc > 5) ? argv[5] : false; 

  //var path = window.VirtualPath;
  //var domain = window.cookieDomain;

  var nextyear = new Date();
  nextyear.setFullYear(nextyear.getFullYear() + 1);
  
  var exp = new Date();
  exp.setTime(exp.getTime() + expires * 1000);

  var c = window.cookiePrefix + name + "=" + value + ";" + 
    "expires=" + exp.toGMTString() + ";" + 
    (path  == null ? "" : "path=" + path + ";") + 
    (domain == null ? "" : "domain=" + domain + ";") + 
    (secure == true ? "secure=1;" : "");  
  document.cookie = c;
 }
/*
函数:返回指定name的cookie值
*/
function GetCookie(name){
  var arg = window.cookiePrefix + name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg){
      return getCookieVal (j); 
    }
    i = document.cookie.indexOf("", i) + 1;
    if (i == 0){
      break;
    } 
  }
  return null;
}
function getCookieVal (offset){
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1){
    endstr = document.cookie.length;
  }
  return unescape(document.cookie.substring(offset, endstr));
}
/*
函数:删除指定name的cookie
*/
function DelCookie(name) {
    var expdate = new Date ();
    expdate.setTime (expdate.getTime()-1);
    SetCookie (name, "", expdate);
}
/*
函数:检测浏览器是否支持Cookies
*/
function IsCookie(){
  var now_time = new Date().getTime().toString();
  SetCookie(now_time,now_time);
  if(GetCookie(now_time) == now_time){
    SetCookie(now_time,"");
    return true;
  }
  return false;
}
/*
函数:按规则返回CookieName
*/
function getCookieName(name,classname){
  return window.cookiePrefix + (classname ? classname + "_" : "") + name;
}
/*----------cookies.js  End----------*/
