var toolDiv;
var popDivFrame;  
var vArguments;

function fGetXY(obj)
{
  var pt = new Object();
	var curleft = 0;
	var curtop = 0;
	if(obj.clientX || obj.clientY)
	{
	  pt.x = obj.clientX;
  	pt.y = obj.clientY;
	}
  else
  {
	  if (obj.offsetParent)
	  {
	  	while (obj.offsetParent)
	  	{
	  		curleft += obj.offsetLeft
	  		curtop += obj.offsetTop
	  		obj = obj.offsetParent;
	  	}
	  }
	  else
	  {
	    if (obj.x)
	    	curleft += obj.x;
	    if (obj.clientY)
	    	curtop += obj.clientY;
    }
	  pt.x = curleft;
  	pt.y = curtop;
  }
  
  //var idBody = document.body;
  //var rct = obj.getBoundingClientRect();
  //pt.x  = rct.left + idBody.scrollLeft;
  //pt.y  = rct.top + idBody.scrollTop;

  return pt;
}

function getXMLHttpRequest()
{
	var xmlHttpObject = null;  

	if (window.ActiveXObject)
	{
  		try {
  			xmlHttpObject=new ActiveXObject("Msxml2.XMLHTTP")
 		  } catch (e) {
  			try {
   		 		xmlHttpObject=getXMLHttpRequest()
  			} catch (E) {}
 		  }
 	}else
 	{
			xmlHttpObject = new XMLHttpRequest(); 	
 	}
	
	return xmlHttpObject;
}

function getServerInfo(strUrl,strXml)
{
    var objXMLReq = getXMLHttpRequest();
    objXMLReq.open("POST", strUrl, false);
    objXMLReq.send(strXml);
    //alert(objXMLReq.responseText);
    return objXMLReq.responseText;
}
function sendMessage(eventName,params,xmlString, server)
{
  if(!server)
    server="";
  var strURL;
  if(!params)
    params="";
  strURL = server+"/scs31/controller/controller.aspx?pEvent="+eventName+"&"+params;
  //alert(strURL)  
  var objXMLReq = sendHttpMessage(strURL,"",xmlString);

  if(objXMLReq)
  {
 	  var strHtml= objXMLReq.responseText;
    if(strHtml.indexOf("WCException:")>-1)
    {
      var no=strHtml.indexOf(":")+1;
      alert(strHtml.substring(no));
      return false;
    }
    else
      return strHtml;
  }
  else
    return false;
}

//Return the event object on all platforms(IE and Firefox)
function getEventObject(eventObject){
	if (eventObject==null || (navigator.appName == 'Microsoft Internet Explorer')){
		return window.event;
	}else{
		return eventObject;
	}
}

//Return the event source object on all platforms(IE and Firefox)
function getEventSource(eventObject){
	if (eventObject==null || (navigator.appName == 'Microsoft Internet Explorer')){
		return window.event.srcElement;
	}else{
		return eventObject.target;
	}
}

String.prototype.Trim=function()
{
  return  this.replace(/(^\s*)|(\s*$)/g, "");
}
String.prototype.trim=function()
{
  return  this.replace(/(^\s*)|(\s*$)/g, "");
}


function Required(){
   var aReturn=document.getElementsByTagName("input");
   for(var i=0;i<aReturn.length;i++)
   {
   if(aReturn[i].required != undefined && aReturn[i].required=="true")
      aReturn[i].className="required";
   }
}

//---------------------------------------------------------------
// SetCookieEZ - Quickly sets a cookie which will last until the
//               user shuts down his browser
//---------------------------------------------------------------
function fSetCookieEZ(name, value) {
    document.cookie = name + "=" + escape(value);
}

var keyStr___0000 = "ABCDEFGHIJKLMNOP" +
                "QRSTUVWXYZabcdef" +
                "ghijklmnopqrstuv" +
                "wxyz0123456789+/" +
                "=";

//----------------------------------------------------------------------------------//
//Function: encode64(input)
//By: MMZ
//----------------------------------------------------------------------------------//
function encode64(input) {
      input = escape(input);
      var output = "";
      var chr1, chr2, chr3 = "";
      var enc1, enc2, enc3, enc4 = "";
      var i = 0;
      do {
         chr1 = input.charCodeAt(i++);
         chr2 = input.charCodeAt(i++);
         chr3 = input.charCodeAt(i++);

         enc1 = chr1 >> 2;
         enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
         enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
         enc4 = chr3 & 63;

         if (isNaN(chr2)) {
            enc3 = enc4 = 64;
         } else if (isNaN(chr3)) {
            enc4 = 64;
         }
         output = output +
            keyStr___0000.charAt(enc1) +
            keyStr___0000.charAt(enc2) +
            keyStr___0000.charAt(enc3) +
            keyStr___0000.charAt(enc4);
         chr1 = chr2 = chr3 = "";
         enc1 = enc2 = enc3 = enc4 = "";
      } while (i < input.length);
      return output;
}
//----------------------------------------------------------------------------------//
//Function: decode64(input)
//By: MMZ
//----------------------------------------------------------------------------------//
function decode64(input) {
      var output = "";
      var chr1, chr2, chr3 = "";
      var enc1, enc2, enc3, enc4 = "";
      var i = 0;
      // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
      var base64test = /[^A-Za-z0-9\+\/\=]/g;
      if (base64test.exec(input)) {
         alert(key_108_UserManager_TW+"\n" +key_109_UserManager_VB+"\n" +key_110_UserManager_EE);
      }
      input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
      do {
         enc1 = keyStr___0000.indexOf(input.charAt(i++));
         enc2 = keyStr___0000.indexOf(input.charAt(i++));
         enc3 = keyStr___0000.indexOf(input.charAt(i++));
         enc4 = keyStr___0000.indexOf(input.charAt(i++));
         chr1 = (enc1 << 2) | (enc2 >> 4);
         chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
         chr3 = ((enc3 & 3) << 6) | enc4;
         output = output + String.fromCharCode(chr1);
         if (enc3 != 64) {
            output = output + String.fromCharCode(chr2);
         }
         if (enc4 != 64) {
            output = output + String.fromCharCode(chr3);
         }
         chr1 = chr2 = chr3 = "";
         enc1 = enc2 = enc3 = enc4 = "";
      } while (i < input.length);
      return unescape(output);
}
   
function validation(){
  var aReturn=document.getElementsByTagName("input");
   for(var i=0;i<aReturn.length;i++)
   {
     if(aReturn[i].required != undefined && aReturn[i].required=="true")
       {
       aReturn[i].className="required";
       if(aReturn[i].value=="")
         {
          alert(Sglobal2);
          aReturn[i].className="validation";
          aReturn[i].focus();
          return false;
         }
       }
   }
   return true;
}

function Required(){
   var aReturn=document.getElementsByTagName("input");
   for(var i=0;i<aReturn.length;i++)
   {
   if(aReturn[i].required != undefined && aReturn[i].required=="true")
      aReturn[i].className="required";
   }
}

function validation(){
  var aReturn=document.getElementsByTagName("input");
   for(var i=0;i<aReturn.length;i++)
   {
     if(aReturn[i].required != undefined && aReturn[i].required=="true")
       {
       aReturn[i].className="required";
       if(aReturn[i].value=="")
         {
          alert(Sglobal2);
          aReturn[i].className="validation";
          aReturn[i].focus();
          return false;
         }
       }
   }
   return true;
}
////////////////////////////////////////////////////////////////
// function :getSysOptionValueByID                           //
// author   :suxu					     //
// param    :sysoption_id--system option id example --'1100' //
// content  :get the option value by option id               //
// return   :option vlaue                                    //
///////////////////////////////////////////////////////////////
function getSysOptionValueByID(sysoption_id)
{
	var oRoot;
	var oChild;
	var oDataNode;
	var xmlDom=new ActiveXObject("Microsoft.XMLDOM");
	oRoot=xmlDom.createNode("element","systemoption","");
	oRoot.setAttribute("option_id",sysoption_id);
	xmlDom.appendChild(oRoot);
        /**
    	* send collection  datas embeded in xml string to servlet to process
   	*/
   	var url=strServer+"mccontroller?event=GETSYSOPTIONVALUE";
    	//alert(url);
    	var objXMLReq = new ActiveXObject("Microsoft.XMLHTTP");
    	objXMLReq.open("POST", url, false);
    	objXMLReq.send(xmlDom.xml);
	var returnvalue=objXMLReq.responseText;
	if(returnvalue.length>12)
	{
    		if(returnvalue.indexOf("MIException:")>-1)
    		{
      			var no=returnvalue.indexOf(":")+1;
      			alert(returnvalue.substring(no));
      			return "ERROR";
                }
  	}
     	//check return XML to show property message
     	xmlDom.loadXML(returnvalue)
//     	alert(objXMLReq.responseText);
     	var root = xmlDom.documentElement;

	var returnValue = root.attributes.getNamedItem("return").nodeValue;
//	alert(returnValue)
        return returnValue;
}

////////////////////////////////////////////////////////////////
// function :hasUsedInSysLink		                     //
// author   :suxu					     //
// param    :objname,example 'lookupvalue' , id exmaple "1"  //
// content  :check if the object has used 	             //
// return   :1--used 0--no use                               //
///////////////////////////////////////////////////////////////
function hasUsedInSysLink(objname , id, obj_value)
{
	var oRoot;
	var oChild;
	var oDataNode;
	var xmlDom=new ActiveXObject("Microsoft.XMLDOM");
	oRoot=xmlDom.createNode("element","obj","");
	oRoot.setAttribute("obj_name",objname);
	oRoot.setAttribute("obj_id",id);
	oRoot.setAttribute("obj_value",obj_value);

	xmlDom.appendChild(oRoot);
        /**
    	* send collection  datas embeded in xml string to servlet to process
   	*/
   	var url=strServer+"mccontroller?event=HASUSEDINSYSLINK";
    	//alert(url);
    	var objXMLReq = new ActiveXObject("Microsoft.XMLHTTP");
    	objXMLReq.open("POST", url, false);
    	objXMLReq.send(xmlDom.xml);
	var returnvalue=objXMLReq.responseText;
	if(returnvalue.length>12)
	{
    		if(returnvalue.indexOf("MIException:")>-1)
    		{
      			var no=returnvalue.indexOf(":")+1;
      			alert(returnvalue.substring(no));
      			return "ERROR";
                }
  	}
     	//check return XML to show property message
     	xmlDom.loadXML(returnvalue)
//     	alert(objXMLReq.responseText);
     	var root = xmlDom.documentElement;
	var returnValue = root.attributes.getNamedItem("reutrnfind").nodeValue;
        return returnValue;
}

//------------------------------------ ZHL --------------------------------------//
/**
* Public
*/
//---------------------------------------------------------------
// GetCookie - Quickly get  a cookie  by the cookie name
//---------------------------------------------------------------
function fGetCookie (name) {
   var result = null;
   var myCookie = " " + document.cookie + ";";
   var searchName = " " + name + "=";
   var startOfCookie = myCookie.indexOf(searchName)
   var endOfCookie;
   var thesaurusNameLogo="";
   var hierarchyNameLogo="";
   var oPopup=null;
   if (startOfCookie != -1) {
     startOfCookie += searchName.length; // skip past cookie name
     EndOfCookie = myCookie.indexOf(";", startOfCookie);
     result = unescape(myCookie.substring(startOfCookie, endOfCookie));
   }
   //alert(name+"="+result);
   return result;
}
//---------------------------------------------------------------
// Setcookie - Quickly set a cookie  value , name  and the out days
//---------------------------------------------------------------
function fSetCookie(name, value, days){
    //alert("fSetCookie");
    var expDays = days;
    var exp = new Date();
    exp.setTime(exp.getTime() + (expDays*24*60*60*1000));
    fSetCookie(name, value, exp, null, null, null);
}
//---------------------------------------------------------------
// SetCookieEZ - Quickly sets a cookie which will last until the
//               user shuts down his browser
//---------------------------------------------------------------
function fSetCookieEZ(name, value) {
    document.cookie = name + "=" + escape(value);
}
//---------------------------------------------------------------
// SetCookie - Adds or replaces a cookie. Use null for parameters
//             that you don't care about
//---------------------------------------------------------------
function fSetCookie(name, value, expires, path, domain, secure) {
     var expString = ((expires == null) ? "" : ("; expires=" + expires.toGMTString()))
     var pathString = ((path == null) ? "" : ("; path=" + path))
     var domainString = ((domain == null) ? "" : ("; domain=" + domain))
     var secureString = ((secure == true) ? "; secure" : "")
     document.cookie = name + "=" + escape(value) + expString + pathString + domainString+ secureString;
}
//---------------------------------------------------------------
// ClearCookie  - Removes a cookie by setting an expiration date
//                three days in the past
//---------------------------------------------------------------
function fClearCookie(name) {
    var ThreeDays = 3 * 24 * 60 * 60 * 1000;
    var expDate = new Date();
    ExpDate.setTime (expDate.getTime() - ThreeDays);
    document.cookie = name + "=ImOutOfHere; expires="+ expDate.toGMTString();
}

function getSubNodes(oElement,id, tagname)
{
  if(!oElement)
    return null;
    
  var oElements = oElement.getElementsByTagName(tagname);
  for(var i =0; i<oElements.length;++i)
  {
    if(oElements[i].getAttribute("id")==id)
      return oElements[i];
  }
  
  return null;
}

if(typeof _window_setTimeout=="undefined")
{
var _window_setTimeout = window.setTimeout;
window.setTimeout = function(fRef, mDelay)
{
  if(typeof fRef == 'function')
  {
    var argu = Array.prototype.slice.call(arguments,2);
    var f = (function(){ fRef.apply(null, argu); });
    return _window_setTimeout(f, mDelay);
  }
  return _window_setTimeout(fRef,mDelay);
}
}
var _window_setTimeout = _window_setTimeout; 

//open form in the window center
function winOpen(Url,wName, width,height,resize,scrollbar)
{
	// Url 
	// wName window's name
	// widht
	// height 	
	// scrollbar 0 yes 1 no 
	// resize 0 true 1 false
	ow = width;
	oh = height;
	os = scrollbar;
	or = resize;
	var xposition=0; 
	var yposition=0;
	if ((parseInt(navigator.appVersion) >= 4 ))
	{
		xposition = (screen.width - width) / 2;
	    yposition = (screen.height - height-70) / 2;
	}
	var newWindonw = window.open(Url,wName,"width ="+ow+",height="+oh+",scrollbars = "+os+",resizable="+or+",left="+xposition+",top="+yposition+",menubar=no,toolbar=no,location=no,status=yes" );
	newWindonw.focus();
	return newWindonw;
}

//reset widow 
function refreshWindow(width,height)
{
	ow = width;
	oh = height;
	var xposition=0; 
	var yposition=0;
	if ((parseInt(navigator.appVersion) >= 4 ))
	{
	  	xposition = (screen.width - width) / 2;
	    yposition = (screen.height - height-70) / 2;
	}

	window.resizeTo(width,height);
	window.moveTo(xposition,yposition);
	window.focus();

}

function showdiv(div_, left_, top_)
{
	div_.style.left = left_;
 	div_.style.top  = top_;
	div_.style.display="";
}

function hiddenToolDiv()
{
  toolDiv.style.display="none";
  restoreWinForPopup();
}

function disableWinForPopup()
{
  var bugEles = document.getElementsByTagName("select");
  for(var i=0; i<bugEles.length; ++i)
  {
    bugEles[i].disabled0 = bugEles[i].disabled;
    bugEles[i].disabled = true;
  }
  var bugEles = document.getElementsByTagName("input");
  for(var i=0; i<bugEles.length; ++i)
  {
    if(bugEles[i].type!="hidden")
    {
      bugEles[i].disabled0 = bugEles[i].disabled;
      bugEles[i].disabled = true;
    }
  }
  var bugEles = document.getElementsByTagName("textarea");
  for(var i=0; i<bugEles.length; ++i)
  {
    bugEles[i].disabled0 = bugEles[i].disabled;
    bugEles[i].disabled = true;
  }  
}

function restoreWinForPopup()
{
  var bugEles = document.getElementsByTagName("select");
  for(var i=0; i<bugEles.length; ++i)
  {
    bugEles[i].disabled = bugEles[i].disabled0;
  }
  var bugEles = document.getElementsByTagName("input");
  for(var i=0; i<bugEles.length; ++i)
  {
    if(bugEles[i].type!="hidden")
    {
      bugEles[i].disabled = bugEles[i].disabled0;
    }
  }
  var bugEles = document.getElementsByTagName("textarea");
  for(var i=0; i<bugEles.length; ++i)
  {
    bugEles[i].disabled = bugEles[i].disabled0;
  }
}
var popDivFrame;
var toolDiv;

function getWebAppUrl(web_) 
{
			var web = web_;
			web = web.substring(7);
			web="http://"+web.replace(/\/\//g, "/");
			var arrStr = web.split('/');
			var strServer = arrStr[0]+"//"+arrStr[2]+"/"+arrStr[3]+"/";
			var strServer = arrStr[0]+"//"+arrStr[2]+"/";
			
			return strServer;
}

function ajustWindowSize(myFrame)
{
    var winshandler = window.onresize;
    window.onresize = null;
    var sizehandler = myFrame.contentWindow.onresize; 
    myFrame.contentWindow.onresize = null;  
    
    myFrame.style.height="200px";  //important!, set small first, then it will be fit autmacally, orelse if it is very large length...
    var h = myFrame.contentWindow.document.body.scrollHeight;
    //if(h<460)      h=460;
    myFrame.height=h
    myFrame.style.height=h+"px";
    //alert("0000000------"+myFrame.style.height);

    myFrame.contentWindow.onresize = sizehandler;  
    window.onresize = winshandler;
}

/*****************************************************/
//Array.prototype.indexOf=function(o){
//	for(var i=0;i<this.length;i++)
//		if(this[i]==o)return i;
//	return -1;
//}
//
//Array.prototype.removeAt=function(i){
//	return this.slice(0,i).concat(this.slice(i+1))
//}
//
//Array.prototype._remove=function(o){
//	var i=this.indexOf(o);
//	if(i!= -1) return this.removeAt(i)
//	return this
//}
//
//Array.prototype.remove=function(o){
//	var i=this.indexOf(o);
//	if(i!= -1) return this.removeAt(i)
//	return this
//}
/*****************************************************/