var xj = {
    extend : function() {
	    // copy reference to target object
	    var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;

	    // Handle a deep copy situation
	    if ( typeof target === "boolean" ) {
		    deep = target;
		    target = arguments[1] || {};
		    // skip the boolean and the target
		    i = 2;
	    }

	    // Handle case when target is a string or something (possible in deep copy)
	    if ( typeof target !== "object" && !jQuery.isFunction(target) )
		    target = {};

	    // extend jQuery itself if only one argument is passed
	    if ( length == i ) {
		    target = this;
		    --i;
	    }

	    for ( ; i < length; i++ )
		    // Only deal with non-null/undefined values
		    if ( (options = arguments[ i ]) != null )
			    // Extend the base object
			    for ( var name in options ) {
				    var src = target[ name ], copy = options[ name ];

				    // Prevent never-ending loop
				    if ( target === copy )
					    continue;

				    // Recurse if we're merging object values
				    if ( deep && copy && typeof copy === "object" && !copy.nodeType )
					    target[ name ] = jQuery.extend( deep, 
						    // Never move original objects, clone them
						    src || ( copy.length != null ? [ ] : { } )
					    , copy );

				    // Don't bring in undefined values
				    else if ( copy !== undefined )
					    target[ name ] = copy;

			    }

	    // Return the modified object
	    return target;
    }
};

(function(){
xj.extend({
        

getJSON : function (text)
{
    return eval( "(" + text + ")");
},
toJSON : function (object)
{
    if(object == null)
    {return;}
    var type = typeof object;
    if ('object' == type)
    {
    if ("[object Array]" == Object.prototype.toString.call(object))
    { type = 'array';}
    else if (RegExp == object.constructor)
    { type = 'regexp';}
    else
     {type = 'object';}
    }
      switch(type)
    {
         case 'undefined':
       case 'unknown': 
     return;
     break;
    case 'function':
    return;
       case 'boolean':
    case 'regexp':
    { return object.toString();
     break;
     }
    case 'number':
     {return isFinite(object) ? object.toString() : 'null';
       break;}
    case 'string':
     return '"' + object.replace(/(\\|\")/g,"\\$1").replace(/\n|\r|\t/g,
       function(){   
                 var a = arguments[0];                   
        return  (a == '\n') ? '\\n':   
                       (a == '\r') ? '\\r':   
                       (a == '\t') ? '\\t': ""  
             }) + '"';
     break;
    case 'object':
     if (object === null) return 'null';
        var results = [];
        for (var property in object) {
          var value = xj.toJSON(object[property]);
          if (value !== undefined)
            results.push(xj.toJSON(property) + ':' + value);
        }
        return '{' + results.join(',') + '}';
     break;
    case 'array':
     var results = [];
        for(var i = 0; i < object.length; i++)
     {
      var value = xj.toJSON(object[i]);
           if (value !== undefined) results.push(value);
     }
        return '[' + results.join(',') + ']';
     break;
     }
},
subString:function(str,l,text){    
    var strlen = str.replace(/[^\x00-\xff]/g,"**").length;
    if( strlen >= l)
        return str.substring(0,l-1)+text;
    else
        return str;
},
subStr:function(str,length,text){
    return xj.subString(str,0,length,text);
},
subString:function(str,index, len, tailString){
	    var temp = str.substring( index, (this.length<len+1)?this.length:len+1);
	    var outString = '';	    
	    var count = 0;
	    var lst = /[u00-uFF]/;
	    for(var i= 0;i<temp.length; i++){
	      if(!lst.test(temp.charAt(i))){
	          count += 2;
	      } else {
	          count += 1;
	      }
	      
	      if( count <= len - tailString.length)
	          outString += temp.charAt(i);
	      else if( count>len)
	        break;
	    }
	    
	    if(count<=len){
	       outString = temp;
	       tailString = "";
	    }
	    
	    outString += tailString;
	    
	    return outString;
},
queryString:function(C){
      if(!/^\w+$/.test(C)){
        return ;
      }
      var B=location.href,A=new RegExp("(?:\\?|\\&)"+C+"=([^\\&]*)","i");
      if(!A.test(B)){
        return "";
      }
      return B.match(A)[1];
},
converfilelength:function(size){
    var length = size/1024;
    if (length > 1024)
    {
        length = length / 1024;
        return length.toFixed("2") + "M";
    }
    else
    {
        return length.toFixed("n2") + "KB";
    }
}

        
        
});
})(xj);


xj.extend(xj,{xmlHttp:function(){
    window.ISIE=/msie/i.test(navigator.userAgent);
    window.ISFF=/firefox/i.test(navigator.userAgent);
    if(ISIE){
      for(var A=0;A<5;A++){
        try{
          var B=new ActiveXObject(["Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0","MSXml2.XMLHTTP","Microsoft.XMLHTTP"][A]);
          return B;
        }
        catch(C){
        }
      }
      return false;
    }else {
      return new XMLHttpRequest();
    }
  },xmlDom:function(){
    if(ISIE){
      for(var A=0;A<5;A++){
        try{
          var B=new ActiveXObject(["MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","Microsoft.XmlDom"][A]);
          return B;
        }
        catch(C){
        }
      }
      return false;
    }else {
      if(document.implementation&&document.implementation.createDocument){
        return document.implementation.createDocument("","",null);
      }
    }
  },loadHttp:function(D,A,C){
    var B=this.xmlHttp();
    B.open("GET",D,(A?true:false));
    if(A){
      B.onreadystatechange=function(){
        if(B.readyState==4){
          C(B);
        }
      };
      B.send(null);
    }else {
      try{
        B.send(null);
      }
      catch(E){
      }
      return B.responseText;
    }
  },loadXml:function(D,A,C){
    var B=this.xmlDom();
    B.async=A?true:false;
    B.load(D);
    if(A){
      if(ISIE){
        B.onreadystatechange=function(){
          if(B.readyState==4){
            C&&C(B);
          }
        };
      }else {
        B.onload=function(){
          C&&C(B);
        };
      }
    }else {
      return B;
    }
}});

  function GetReplaceHtml(obj, tab_obj, len, t_data){
   if(obj!=null&&obj!=undefined){
     if(obj.name!=undefined&&obj.name!=null&&obj.name!=""){
       if(len>0){
        t_data = eval("t_data.replace(/"+tab_obj.name+"/g,xj.subStr(\""+obj.name+"\","+len+",\"...\"));");
       } else {
        t_data = eval("t_data.replace(/"+tab_obj.name+"/g,\""+obj.name+"\");");
       }
     }
     if(tab_obj.mark!=undefined&&tab_obj.mark!=null&&tab_obj.mark!=""){
        t_data = eval("t_data.replace(/"+tab_obj.mark+"/g,\"'"+obj.name+"'\");");
     }
     if(obj.date!=undefined&&obj.date!=null&&obj.date!=""){
        t_data = eval("t_data.replace(/"+tab_obj.date+"/g,\""+obj.date+"\");");
     } 
     if(obj.picCss!=undefined&&obj.picCss!=null&&obj.picCss!=""){
        t_data = eval("t_data.replace(/"+tab_obj.picCss+"/g,\""+obj.picCss+"\");");
     }      
     if(obj.picUrl!=undefined&&obj.picUrl!=null){
       if(obj.picUrl!=""){
        t_data = eval("t_data.replace(/"+tab_obj.picUrl+"/g,\""+obj.root+"/"+obj.picUrl+"\");");
       } else {
         t_data = eval("t_data.replace(/"+tab_obj.picUrl+"/g,\""+obj.root+"/Template/images/nopic.gif\");");
       }
     }
     if(obj.bigPicUrl!=undefined&&obj.bigPicUrl!=null){
       if(obj.bigPicUrl!=""){
        t_data = eval("t_data.replace(/"+tab_obj.bigPicUrl+"/g,\""+obj.root+"/"+obj.bigPicUrl+"\");");
       } else {
         t_data = eval("t_data.replace(/"+tab_obj.bigPicUrl+"/g,\""+obj.root+"/Template/images/noBigPic.gif\");");
       }
     }            
     if(obj.url!=undefined&&obj.url!=null){
        switch(obj.type){
           case "1":
              t_data = eval("t_data.replace(/"+tab_obj.url+"/g,\""+obj.url+"\");");
             break;
           default:
              if(obj.ArtiID!=undefined&&obj.ArtiID!=null&&obj.ArtiID!=""){
                t_data = eval("t_data.replace(/"+tab_obj.url+"/g,\""+obj.root+"/Html/"+obj.colID+"/"+obj.ArtiID+".htm\");");
              } else {
                t_data = eval("t_data.replace(/"+tab_obj.url+"/g,\""+obj.root+"/Html/"+obj.colID+".htm\");");
              }
             break;
        }            
     } 
    }
    return t_data;   
}

 function IsHrefHead(str_url){
  str_url=str_url.toLowerCase();
  var strRegex = "^(https|http|ftp|rtsp|mms)?://*$";

        var re=new RegExp(strRegex); 
  //re.test()
        if (re.test(str_url)){
            return (true); 
        }else{ 
            return (false); 
        }
    }      