﻿var LoadErr=0;
var LoadCount=0;
Array.prototype.indexOf=function(o)
{
    for(var i=0;i<this.length;i++)
    {
        if(this[i]==o)
        return i;
    }
    return-1;
};
Array.prototype.lastIndexOf=function(o)
{
    for(var i=this.length-1;i>=0;i--)
    {
        if(this[i]==o)
        return i;
    }
    return-1;
};
Array.prototype.contains=function(o)
{
    return this.indexOf(o)!= -1;
};
Array.prototype.copy=function(o)
{
    return this.concat();
};
Array.prototype.insertAt=function(o,i)
{
    this.splice(i,0,o);
};
Array.prototype.insertBefore=function(o,o2)
{
    var i=this.indexOf(o2);
    if(i== -1)
    this.push(o);
    else this.splice(i,0,o);
};
Array.prototype.removeAt=function(i)
{
    this.splice(i,1);
};
Array.prototype.remove=function(o)
{
    var i=this.indexOf(o);
    if(i!= -1)
    this.splice(i,1);
};
String.prototype.trim=function()
{
    return this.replace(/(^\s+)|\s+$/g,"");
};
String.prototype.XMLEncode=function()
{
   var reg,str;
   reg=/&/g;
   str=this
   str=str.replace(reg,"&amp;");
   reg=/</g;
   str=str.replace(reg,"&lt;");
   reg=/>/g;
   str=str.replace(reg,"&gt;");
   reg=/ /g;
   str=str.replace(reg,"&nbsp;");
   reg=/\"/g;
   str=str.replace(reg,"&quot;");
   return str;
} 
Number.prototype.FormatCurrency=function(decLen)
{
	CNum=this
	var fh=false;
	if (CNum<0)
	{
	   fh=true;
	   CNum=CNum*(-1)
	 }
	var decStr="";
	
	if (typeof(decLen)=="undefined")
	decLen=2;
	for (var i=0;i<decLen;i++)
	{
		decStr+="0"
	}
	if (CNum==null)
	{
		return NewNum="0."+decStr;
	}
	if(Math.round(CNum*(Math.pow(10,decLen)))<(Math.pow(10,decLen)))
	{
		var NewNum='0'+(Math.round(CNum*(Math.pow(10,decLen)))).toString();
	}
	else
		var NewNum=(Math.round(CNum*(Math.pow(10,decLen)))).toString();
	if (NewNum.substring(NewNum.length-decLen,NewNum.length)>0)
		NewNum=NewNum.substring(0,NewNum.length-decLen)+"."+NewNum.substring(NewNum.length-decLen,NewNum.length);
	else
		NewNum=NewNum.substring(0,NewNum.length-decLen);
	if (fh) NewNum="-"+NewNum
	return NewNum;
}

String.prototype.TextEncode=function()
{
       var reg,str;
       str=this
	   reg=/&amp;/g;
	   str=str.replace(reg,"&");
	   reg=/&lt;/g;
       str=str.replace(reg,"<");
	   reg=/&gt;/g;
       str=str.replace(reg,">");
	   reg=/&nbsp;/g;
       str=str.replace(reg," ");
	   reg=/&quot;/g;
       str=str.replace(reg,"\"");
       return str;
}
Function.READ=1;
Function.WRITE=2;
Function.READ_WRITE=3;
Function.prototype.addProperty=function(sName,nReadWrite)
{
    nReadWrite=nReadWrite||Function.READ_WRITE;
    var capitalized=sName.charAt(0).toUpperCase()+sName.substr(1);
    if(nReadWrite&Function.READ)
this.prototype["get"+capitalized]=new Function("","return this._"+sName+";");
if(nReadWrite&Function.WRITE)
this.prototype["set"+capitalized]=new Function(sName,"this._"+sName+" = "+sName+";");
};
window.jsNamespace=new function()
{
this.SnNumber = 0x7B9;
this.runtime= new function ()	
	{
		this.Version = "1.01.060608";
		this.navigator = "unknow";
		this.jsBase = ".";
		this.mode = "standalone";
		this.classpath = "";
		this.debug = false;

		this.window = window;
		this.element = null;
		this.parent = null;
		this.JSVM = null;
		this.resources = {};
		this.extModules = [];
		this.logs = [];
		this.state = 1;		
		this.Models=[];
		this.Model=[];
		this.ResultXml=new ActiveXObject("MSXML.DOMDocument");
		this.ResultXml.async =false;        
	        this.ResultDataRoots=[];
	        this.ModuleDataRoots=[];
	        this.PageNos=[];
	        this.PageNames=[];
		this.config ={getParameter : function(){}};
		this.live = function()
		{
			return (!this.window.closed);
		}
		this.PageName = function (PageName)
		{
			this.PageNames[this.PageNames.length] = PageName;
		}
		this.log = function (log)
		{
			this.logs[this.logs.length] = log;
		}
		this.Model = function (Model)
		{
			this.Models[this.Models.length] = Model;
		}
		this.PageNo = function (PageNo)
		{
			this.PageNos[this.PageNos.length] = PageNo;
		}
		this.getModelNo=function(DataSetName)
		{
			var rv;
			for (var i=0;i<this.Models.length;i++)
			{
				if(this.Models[i]==DataSetName)
				rv=i;
			}
			return rv;
		}
		this.DataSetRoot=null;
		this.ResultDataRoot=null;		
		this.ResultDataRoot = function (ResultDataRoot,el)
		{
			var ContStr="";				
			var ReCount=parseInt(this.ResultDataRoots.length)			
			this.ResultDataRoots[this.ResultDataRoots.length] = ResultDataRoot;				
			if(this.ModuleDataRoots[ReCount]!=null&&this.ResultDataRoots[ReCount]!=null)
				{
					
					
					var ModuleDataRoot=this.ModuleDataRoots[ReCount];
					var DataSetRoot=ModuleDataRoot.selectSingleNode("DataSet[@Name='"+el.DataSetName+"']");					
					var ResultDataRoot=this.ResultDataRoots[ReCount];
					var ResultSetRoot=ResultDataRoot.selectSingleNode("DataSet[@DataSetName='"+el.DataSetName+"']")				
					var errorRoot=ResultDataRoot.selectSingleNode("DataSet/DataCol")
					if (errorRoot!=null)
					{
						if (errorRoot.getAttribute("ErrorMsg")!=null)
						{
							alert(el.HomeName+"中sql错误:\n"+errorRoot.getAttribute("ErrorMsg")+"\n"+"配置文件:"+el.PageName+"\n模块名:"+el.DataSetName)
							return false;
						}
					}
					if(DataSetRoot!=null&&ResultSetRoot!=null)
					{
						ContStr=el.DataSetName
						var FillFlag=false;
						switch(DataSetRoot.getAttribute("ShowStyle"))
						{
							case "DataGrid":
								ContStr=DataGrid(DataSetRoot,ResultSetRoot);
								FillFlag=true;
								break;
							case "DataList":
								ContStr=DataList(DataSetRoot,ResultSetRoot,el.PageNo);
								break;
							case "DivDataGrid":
								ContStr=DivDataGrid(DataSetRoot,ResultSetRoot,el.PageNo,el.PageSize);								
								break;
						}
						if (this.debug==true) alert(ContStr)
						var reg=new RegExp("{#nbsp}","gi")
						ContStr=ContStr.replace(reg,"&nbsp;")						
						el.innerHTML=ContStr;
						if(FillFlag)
							DataFill(el,DataSetRoot,ResultSetRoot,el.PageNo);
					}
					
				}
		}

		this.ResultDataRootReLoad=function(ResultDataRoot,el)
		{
			var ContStr="";	
			var ModelNo=0;
			for(var i=0;i<this.Models.length;i++)
			{
				if (this.Models[i]==el.DataSetName)
				ModelNo=i;			
			}
			
			var ReCount=ModelNo		
			this.ResultDataRoots[ModelNo] = ResultDataRoot;	
			if(this.ModuleDataRoots[ReCount]!=null&&this.ResultDataRoots[ReCount]!=null)
				{
					
					var ModuleDataRoot=this.ModuleDataRoots[ReCount];
					var DataSetRoot=ModuleDataRoot.selectSingleNode("DataSet[@Name='"+el.DataSetName+"']");					
					var ResultDataRoot=this.ResultDataRoots[ReCount];
					var ResultSetRoot=ResultDataRoot.selectSingleNode("DataSet[@DataSetName='"+el.DataSetName+"']")				
					var errorRoot=ResultDataRoot.selectSingleNode("DataSet/DataCol")
					if (errorRoot!=null)
					{
						if (errorRoot.getAttribute("ErrorMsg")!=null)
						{
							alert(el.HomeName+"中sql错误:\n"+errorRoot.getAttribute("ErrorMsg")+"\n"+"配置文件:"+el.PageName+"\n模块名:"+el.DataSetName)
							return false;
						}
					}
					//alert(ModelNo+"\n"+ModuleDataRoot.xml)
					//alert(ModelNo+"\n"+ResultDataRoots.xml)
					if(DataSetRoot!=null&&ResultSetRoot!=null)
					{
						ContStr=el.DataSetName
						var FillFlag=false;
						
						switch(DataSetRoot.getAttribute("ShowStyle"))
						{
							case "DataGrid":
								ContStr=DataGrid(DataSetRoot,ResultSetRoot);
								FillFlag=true;
								break;
							case "DataList":
								ContStr=DataList(DataSetRoot,ResultSetRoot,el.PageNo);
								break;
							case "DivDataGrid":
								ContStr=DivDataGrid(DataSetRoot,ResultSetRoot,el.PageNo,el.PageSize);								
								break;
						}
						
						
						if (this.debug==true) alert(ContStr)
						var reg=new RegExp("{#nbsp}","gi")
						ContStr=ContStr.replace(reg,"&nbsp;")
						el.innerHTML=ContStr;
						if(FillFlag)
							DataFill(el,DataSetRoot,ResultSetRoot,el.PageNo);
					}
			}
		}
		this.ModuleDataRoot = function (ModuleDataRoot)
		{
			this.ModuleDataRoots[this.ResultDataRoots.length] = ModuleDataRoot;
			return true
		}
		this.getParent = function ()
		{
			if (this.parent != null)
			{
				try
				{
					this.parent.live();
				}
				catch(ex)
				{
					this.parent = null;
				}
			}
			return this.parent;
		}
		this.getResource = function (name)
		{
			return ((res = this.resources[name]) != null) ?
				res : jsNamespace.plugIn.localCache.get(name);
		}
		this.setResource = function (name, obj)
		{
			jsNamespace.plugIn.localCache.put(name,
				(this.resources[name] = String(obj)));
		}
	}

	/* Kernel Component */
	this.kernel = {};

	/* Development Kit */
	this.developmentKit = {};

	/* Plug-In */
	this.plugIn = {
		localCache : {
			get : function(){},
			put : function(){} },
		systemResloader : {}
	};
}
try
{
var jsre = jsNamespace.runtime;
}
catch(ex)
{
	jsre.log((!ex.description) ? ex.toString()
		: ("Error: " + ex.description));
	jsre.log("jsNamespace.rtenv: load jsvm.js error!");
	alert("JSVM Load Error , logs: \r\n ---------\r\n"
		+ "URL: " + document.URL + "\r\n ---------\r\n"
		+ jsre.logs.join("\r\n"));
}
finally
{
	//scripts = element = rjsre
	//	= winHDL = _loadModule
	//	= _getResourceInfo = void(0);
	// or delete these;
}


