
var brower_is_ie = (navigator.appName.indexOf('Internet Explorer') >= 0) ? true : false;
function changeCode(id)
{
	if (id == null)	{
		//alert($("codePic").src);
		$("codePic").src="/nissan2008/html/code/code.php?"+Math.random();
	} else {
		$(id).src="/nissan2008/html/code/code.php?"+Math.random();
	}
}
function getEditorHTMLContents(EditorName) {
      	var oEditor = FCKeditorAPI.GetInstance(EditorName);
      	return(oEditor.GetXHTML(true));
			}
function setEditorContents(EditorName, ContentStr)
{
    var oEditor = FCKeditorAPI.GetInstance(EditorName) ;
    oEditor.SetHTML(ContentStr) ;
}

var $ = function(){
  var elements = new Array();
  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof(element) == 'string') {
      element = document.getElementById(element);
    }

    if (arguments.length == 1) {
      return element;
    }

    elements.push(element);
  }

  return elements;
}

var get_style = function(id){
  var html_obj = $(id);
  var result = (html_obj) ? html_obj.style : null;
  return result;
}

var get_style_attr = function(html_obj, attr){
  var cur_val = (html_obj.currentStyle) ? html_obj.currentStyle : document.defaultView.getComputedStyle(html_obj, null);
  return cur_val[attr];
}

/* include js function */
var IncludeJavaScript = function(js_file_path){
  document.write('<script type="text/javascript" src="' + js_file_path + '"></script>');
}
/* include js function */

var open_win = function(url, width, height){
  window.open(url, 'view', 'target=' + datagrid_id + ',height=' + height + ',width=' + width + ',scrollbars=yes,resizable=yes,status=no,toolbar=no,menubar=no,location=no');
}

/* useless ----- begin */
var view_info = function(id, width, height, datagrid_id){
  open_win(datagrid_id + '_view.php?id=' + id, width, height);
}
/* useless ----- end */

var load_wating = function(id, style, status){
  var doc = $(id);
  if(doc){
    if(status == true){
      doc.innerHTML='<div id="ajaxlogin"><img src="/loading/'+ style +'.gif"/></div>';
    }
    if(status == false){
      doc.innerHTML='';
    }
  }
}

/* validate methods ----- begin */
var value_in_array = function(var_value, array_values){
  return (('.' + array_values.join('.') + '.').indexOf(var_value) > -1);
}

var validate_input = function(event, type){
  //alert(event.keyCode);
  /* 8: backspace, 46: delete , 35: end, 36: home, 37: <-, 39: -> */
  /* 48-57: [0-9], 96-105: [0-9] on right side number key area */
  var result = false;
  switch(type){
    case 'int':
      if(event.shiftKey || event.ctrlKey){
        result = false;
      }
      var key_codes = [8, 46, 35, 36, 37, 39, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105];
      if(value_in_array(event.keyCode, key_codes)){
        result = true;
      }
      break;
    case 'float':
      if(event.shiftKey || event.ctrlKey){
        result = false;
      }
      var key_codes = [8, 46, 35, 36, 37, 39, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 190];
      if(value_in_array(event.keyCode, key_codes)){
        result = true;
      }
      break;
    case 'none':
      result = false;
      break;
  }

  return result;
}

/* filtrate the ip lawful or not */
var check_ip = function(ip){
  var ip_reg =  /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/;
  if (!ip_reg.test(ip)){
    return false;
  }
  return true;
}

/* filtrate the site lawful or not */
var check_site = function(site){
  var site_reg = /^([0-9a-zA-Z\-]+\.){1,3}[a-zA-Z]{2,3}$/;
  if (!site_reg.test(site)){
    return false;
  }
  return true;
}

/* filtrate the space on the first and last position */
var trim = function(str){
  return str.replace(/(^\s*)|(\s*$)/g, "");
}

/* filtrate the leave type's date 'start' and 'to' */
var check_date = function(date_start, date_to){
  if(Date.parse(date_start.replace(/-/g, "/")) > Date.parse(date_to.replace(/-/g, "/"))){
    //alert('Date To must be later than Date Start.');
    return false;
  }
  return true;
}

/* filtrate the Chinese input length */
  var check_length = function(string, maxlength){
    var ch_exist = string.match(/[\u4e00-\u9fa5]/g) || new Array();

    /* "*3" because we use utf-8, a Chinese character use 3 times room of a English character */
    var ch_character_room = ch_exist.length * 3;
    if((string.length - ch_exist.length + ch_character_room) > maxlength){
      return false;
    }
  return true;
}



/* for get ajax request ----- begin */
var get_remote_result = function(urlstr){
  if (window.XMLHttpRequest){
    var httpRequest = new XMLHttpRequest();
    httpRequest.open('GET', urlstr, false);
    httpRequest.send(null);
    return httpRequest.responseText;
  }else if (window.ActiveXObject){
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    httpRequest.open('GET', urlstr, false);
    httpRequest.send(null);
    return httpRequest.responseText;
  }else{
    return 'ERROR: your browser does not have AJAX capability!';
  }
}
/* for get ajax request ----- end */

/* js_webservice related ----- begin */
var get_remote_data = function(url, func_rmt, request_detail, after_get_remote_data, method, result_type,quiet){
	var request_obj =  new Object();
  request_obj.func = func_rmt;
  //request_obj.func = 'js_webservice';
  //request_obj.func_rmt = func_rmt;

  for(var detail in request_detail){
    eval('request_obj.' + detail + ' = ' + 'request_detail.' + detail + ';');
  }

  after_get_remote_data = after_get_remote_data || function(){};
  /*
  if(func_rmt == 'list_items'){
    var result_type = false;
  }
  */
	var asyn = true;
  //Ajax.call('/', request_obj, after_get_remote_data, method, result_type);
	Ajax.call(url, request_obj, after_get_remote_data, method, result_type,asyn,quiet);
}
/* js_webservice related ----- end */

/* for html string encode ----- begin */
var unescape_csv = function(str){
  var enc = new RegExp("%([0-9A-F][0-9A-F])", "i");
  while (c = enc.exec(str)){
    v = String.fromCharCode(parseInt('0x' + c[1]));
    t = new RegExp(c[0], "gi");
    str = str.replace(t, v);
  }
  return str;
}
/* for html string encode ----- end */

/* for window popup ----- begin */
var pop_up_window = function(caller, popup_id, width, height, on_complete){
  if (caller && $(popup_id)){
    $('popup_cover').style.zIndex = caller.style.zIndex + 1;
    $('popup_cover').style.display = 'block';

    $('popup').style.zIndex = $('popup_cover').style.zIndex + 1;
    $('popup').style.display = 'block';

    $('popup').style.left = ((window.screen.width - width) / 2) + 'px';
    $('popup').style.top = '0px';

    $(popup_id).style.zIndex = $('popup').style.zIndex + 1;
    $(popup_id).style.display = 'block';

    if (width){
      $(popup_id).style.width = width;
    }

    if (height){
      $(popup_id).style.height = height;
    }

    $(popup_id).caller = caller;

    on_complete = on_complete || function(){};
    on_complete(caller);
  }else{
    alert('error popup window cannot be found!');
  }
}

var close_pop_up_window = function(popup_id, before_close, on_close){
  before_close = before_close || function(){};
  before_close($($(popup_id).caller));
  if ($(popup_id)){
    on_close = on_close || function(){};
    on_close($($(popup_id).caller));

    $(popup_id).style.display = 'none';
    $('popup').style.display = 'none';
    $('popup_cover').style.display = 'none';

    on_close = on_close || function(){};
    on_close($($(popup_id).caller));
  }else{
    alert('ERROR: popup window cannot be found!');
  }
}

var drag_start = function(){
  var x_o = parseInt(get_style_attr($('popup'), 'left')) - event.clientX;
  var y_o = parseInt(get_style_attr($('popup'), 'top'))  - event.clientY;

  var max_x = document.body.offsetWidth  - $('popup').clientWidth;
  var max_y = document.body.offsetHeight - $('popup').clientHeight;

  document.onmouseup = function(){
    document.onmousemove = null;
  }

  document.onmousemove = function(){
    var target_x = x_o + event.clientX;
    if (target_x >= 0 && target_x <= max_x){
      $('popup').style.left = target_x + "px";
    }

    var target_y = y_o + event.clientY;
    if (target_y >= 0 && target_y <= max_y){
      $('popup').style.top  = target_y + "px";
    }
  }
}
/* for window popup ----- end */

/**
 * AJAX transport object
 */
var Transport = {
  /* *
  * file name where exist this object
  *
  * @static
  */
  filename : "ajax.js",

  /* *
  * save whether it is to debug, method to print the debug information, line symbol, container id of debugging
  *
  * @private
  */
  debugging :{
    isDebugging : 0,
    debuggingMode : 0,
    linefeed : "",
    containerId : 0
  },

  /* *
  * set debug model and way to print the debug result
  *
  * @public
  * @param   {int}   wether or not to debug           0 shut off ?????ゆ??1 open up
  * @param   {int}   way to print the debug result    0 alert      1 innerHTML
  *
  */
  debug : function (isDebugging, debuggingMode){
    this.debugging = {
      "isDebugging" : isDebugging,
      "debuggingMode" : debuggingMode,
      "linefeed" : debuggingMode ? "<br />" : "\n",
      "containerId" : "dubugging-container" + new Date().getTime()
    };
  },

  /* *
  * method automaticly called when finished transport, whose priority is higher than the call back function from run()
  *
  * @public
  */
  onComplete : function (){
  },

  /* *
  * method automaticly called when finished transport
  *
  * @public
  */
  onRunning : function (){
  },

  /* *
  * send http request via this method
  *
  * @public
  * @param   {string}    url             request URL
  * @param   {mix}       params          parameters to send
  * @param   {Function}  callback        call back function
  * @param   {string}    ransferMode     method to send request, include "GET" and "POST"
  * @param   {string}    response_type   response type, include "XML", "JSON" and "TEXT"
  * @param   {boolean}   asyn            the method of send request, asynchronous or not
  * @param   {boolean}   quiet           quiet model request or not
  */
  run : function (url, params, callback, transfer_mode, response_type, asyn, quiet){

    /* deal with the parameters passed by user who called this method */
    callback = callback || function(){};
    transfer_mode = transfer_mode || 'POST';
    response_type = response_type || 'JSON';
    asyn = asyn || true;
    quiet = quiet || false;
		//alert(quiet);
    params = this.parseParams(params);
    transfer_mode = (typeof(transfer_mode) === "string" && transfer_mode.toUpperCase() === "GET") ? "GET" : "POST";
	//alert(url);
    if (transfer_mode === "GET"){
      var d = new Date();
      url += params ? (url.indexOf("?") === - 1 ? "?" : "&") + params : "";
      url = encodeURI(url) + (url.indexOf("?") === - 1 ? "?" : "&") + d.getTime() + d.getMilliseconds();
      params = null;
    }

    response_type = (typeof(response_type) === "string" && ((response_type = response_type.toUpperCase()) === "JSON" || response_type === "XML")) ? response_type : "TEXT";
    asyn = (asyn === false) ? false : true;
		asyn = false;
    /* deal with http request and response */
    var xhr = this.createXMLHttpRequest();

    try{
      var self = this;

      if (typeof(self.onRunning) === "function" && !quiet){
        self.onRunning();
      }

      xhr.open(transfer_mode, url, asyn);
      if (transfer_mode === "POST"){
				xhr.setRequestHeader("cache-control","no-cache");
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				//xhr.setRequestHeader("Content-type", "text/html; charset=utf-8");
      }

      xhr.setRequestHeader("If-Modified-Since", "0");
      xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
      if (asyn){
        xhr.onreadystatechange = function (){
          if (xhr.readyState == 4){
            switch ( xhr.status ){
              case 0:
              case 200: // OK!
                /*
                 *
                 */
                //alert("xhr.responseText:\r\n" + xhr.responseText);
                if (typeof(self.onComplete) === "function"){
                  self.onComplete();
                }

                if (typeof(callback) === "function"){
                  callback.call(self, self.parseResult(response_type, xhr), xhr.responseText);
                }
                break;
              case 304:
                /*
                 *
                 *
                 *
                 */
                break;
              case 400: // Bad Request
                /*
                 *
                 *
                 *
                 */
                alert("XmlHttpRequest status: [400] Bad Request");
								alert('服务器连接有问题，请再试一次');
                break;
              case 404: // Not Found
                alert("XmlHttpRequest status: [404] \nThe requested URL "+url+" was not found on this server.");
								alert('服务器连接有问题，请再试一次');
                break;
              case 409: // Conflict
                /*
                 *
                 *
                 *
                 *
                 */
                break;
              case 503: // Service Unavailable
                /*
                 *
                 *
                 *
                 */
                alert("XmlHttpRequest status: [503] Service Unavailable");
								alert('服务器连接有问题，请再试一次');
                break;
              default:
                alert("XmlHttpRequest status: [" + xhr.status + "] Unknow status.");
								alert('服务器连接有问题，请再试一次');
            }

            xhr = null;
          }
        }

        if (xhr != null){

					//params = encodeURI(params);
          xhr.send(encodeURI(params));
					//xhr.send(params);
        }
      }else{
        if (typeof(self.onRunning) === "function"){
          self.onRunning();
        }

        xhr.send(params);

        var result = self.parseResult(response_type, xhr);
				
        //xhr = null;

        if (typeof(self.onComplete) === "function"){
          self.onComplete();
        }
        if (typeof(callback) === "function"){
          callback.call(self, result, xhr.responseText);
        }
        return result;
      }
    }catch (ex){
      if (typeof(self.onComplete) === "function"){
        self.onComplete();
      }

      //alert(this.filename + "/run() error:" + ex.description);
    }
  },

  /* *
  * if the debug model is open, this method will print the debug result information
  *
  * @private
  * @param   {string}    info    debug informatin
  * @param   {string}    type    information type
  */
  displayDebuggingInfo : function (info, type){
    if ( ! this.debugging.debuggingMode){
      alert(info);
    }else{
      var id = this.debugging.containerId;
      if ( ! document.getElementById(id)){
        div = document.createElement("DIV");
        div.id = id;
        div.style.position = "absolute";
        div.style.width = "98%";
        div.style.border = "1px solid #f00";
        div.style.backgroundColor = "#eef";
        var pageYOffset = document.body.scrollTop || window.pageYOffset || 0;
        div.style.top = document.body.clientHeight * 0.6 + pageYOffset + "px";
        document.body.appendChild(div);
        div.innerHTML = "<div></div><hr style='height:1px;border:1px dashed red;'><div></div>";
      }

      var subDivs = div.getElementsByTagName("DIV");
      if (type === "param"){
        subDivs[0].innerHTML = info;
      }else{
        subDivs[1].innerHTML = info;
      }
    }
  },

  /* *
  * create xmlHttpRequest object
  *
  * @private
  * @return      return a xmlHttpRequest object
  * @type    Object
  */
  createXMLHttpRequest : function (){
    var xhr = null;

    if (window.ActiveXObject){
      var versions = ['Microsoft.XMLHTTP', 'MSXML6.XMLHTTP', 'MSXML5.XMLHTTP', 'MSXML4.XMLHTTP', 'MSXML3.XMLHTTP', 'MSXML2.XMLHTTP', 'MSXML.XMLHTTP'];

      for (var i = 0; i < versions.length; i ++ ){
        try{
          xhr = new ActiveXObject(versions[i]);
          break;
        }catch (ex){
          continue;
        }
      }
    }else{
      xhr = new XMLHttpRequest();
    }

    return xhr;
  },

  /* *
  * this method will be called when something goes wrong in the transport process
  *
  * @private
  * @param   {Object}    xhr     XMLHttpRequest object
  * @param   {String}    url     HTTP request URL
  */
  onXMLHttpRequestError : function (xhr, url){
    throw "URL: " + url + "\n"
    +  "readyState: " + xhr.readyState + "\n"
    + "state: " + xhr.status + "\n"
    + "headers: " + xhr.getAllResponseHeaders();
  },

  /* *
  * format the parameters to send
  *
  * @private
  * @params {mix}    params      parameters to send
  * @return return valid parameters
  * @type string
  */
  parseParams : function (params){
    var legalParams = "";
    params = params ? params : "";

    if (typeof(params) === "string"){
      legalParams = params;
    }else if (typeof(params) === "object"){
      try{
        legalParams += "func="  + params.func + "&";
        legalParams += "details=" + JSON.stringify(params);
      }catch (ex){
        alert("Can't stringify JSON!");
        return false;
      }
    }else{
      alert("Invalid parameters!");
      return false;
    }

    if (this.debugging.isDebugging){
      var lf = this.debugging.linefeed,
      info = "[Original Parameters]" + lf + params + lf + lf
      + "[Parsed Parameters]" + lf + legalParams;

      this.displayDebuggingInfo(info, "param");
    }

    return legalParams;
  },

  /* *
  * filter the response result of http
  *
  * @public
  * @params   {mix}   result   HTTP response result
  * @return  return filtered result
  * @type string
  */
  preFilter : function (result){
    return result.replace(/\xEF\xBB\xBF/g, "");
  },

  /* *
  * format the result returned
  *
  * @private
  * @return return result of special format
  * @type mix
  */
  parseResult : function (response_type, xhr){
//alert(xhr.responseText);
    var result = null;
    switch (response_type){
      case "JSON":
        result = this.preFilter(xhr.responseText).split("\r\n");
        //result = result.split("text/html");
        //var tepRS = result.split("charset=utf-8");
        for (var r in result){
          var temp_r = trim(result[r]);
          if (temp_r.substr(0,1) == '{' || temp_r.substr(1,1) == '{' || temp_r.substr(0,1) == '['){
            result = temp_r;
            break;
          }
        }

        try{
          result = eval('('+ result +')');
        }catch (ex){
          throw this.filename + "/parseResult() error: can't parse to JSON.\n\n" + xhr.responseText;
        }
        break;
      case "XML" :
        result = xhr.responseXML;
        break;
      case "TEXT" :
        result = this.preFilter(xhr.responseText);
        break;
      default :
        throw this.filename + "/parseResult() error: unknown response type:" + response_type;
    }

    if (this.debugging.isDebugging){
      var lf = this.debugging.linefeed,
      info = "[Response Result of " + response_type + " Format]" + lf + result;

      if (response_type === "JSON"){
        info = "[Response Result of TEXT Format]" + lf + xhr.responseText + lf + lf + info;
      }

      this.displayDebuggingInfo(info, "result");
    }

    return result;
  }
};

/* define two bynames */
var Ajax = Transport;
Ajax.call = Transport.run;

Ajax.onRunning  = showLoader;
Ajax.onComplete = hideLoader;

/* *
 * display load information
 */
function showLoader(){
  load_wating('comment_list', 2 ,true);
  /*use loading process bar interface*/
}

/* *
 * hide the load information
 */
function hideLoader(){
   load_wating('comment_list', 2 ,false);
  /*hide loading process bar interface*/
}

/* for javascript json encode ----- begin */
if (!this.JSON) {
    JSON = function () {
        function f(n) {
            return n < 10 ? '0' + n : n;
        }

        Date.prototype.toJSON = function (key) {
            return this.getUTCFullYear()   + '-' +
                 f(this.getUTCMonth() + 1) + '-' +
                 f(this.getUTCDate())      + 'T' +
                 f(this.getUTCHours())     + ':' +
                 f(this.getUTCMinutes())   + ':' +
                 f(this.getUTCSeconds())   + 'Z';
        };

        var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
            escapeable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
            gap,
            indent,
            meta = {
                '\b': '\\b',
                '\t': '\\t',
                '\n': '\\n',
                '\f': '\\f',
                '\r': '\\r',
                '"' : '\\"',
                '\\': '\\\\'
            },
            rep;

        function quote(string) {
            escapeable.lastIndex = 0;
            return escapeable.test(string) ?
                '"' + string.replace(escapeable, function (a) {
                    var c = meta[a];
                    if (typeof c === 'string') {
                        return c;
                    }
                    return '\\u' + ('0000' +
                            (+(a.charCodeAt(0))).toString(16)).slice(-4);
                }) + '"' :
                '"' + string + '"';
        }

        function str(key, holder) {
            var i,
                k,
                v,
                length,
                mind = gap,
                partial,
                value = holder[key];

            if (value && typeof value === 'object' && typeof value.toJSON === 'function') {
                value = value.toJSON(key);
            }

            if (typeof rep === 'function') {
                value = rep.call(holder, key, value);
            }

            switch (typeof value) {
            case 'string':
                return quote(value);

            case 'number':


                return isFinite(value) ? String(value) : 'null';

            case 'boolean':
            case 'null':


                return String(value);


            case 'object':


                if (!value) {
                    return 'null';
                }


                gap += indent;
                partial = [];


                if (typeof value.length === 'number' &&
                        !(value.propertyIsEnumerable('length'))) {


                    length = value.length;
                    for (i = 0; i < length; i += 1) {
                        partial[i] = str(i, value) || 'null';
                    }


                    v = partial.length === 0 ? '[]' :
                        gap ? '[\n' + gap +
                                partial.join(',\n' + gap) + '\n' +
                                    mind + ']' :
                              '[' + partial.join(',') + ']';
                    gap = mind;
                    return v;
                }


                if (rep && typeof rep === 'object') {
                    length = rep.length;
                    for (i = 0; i < length; i += 1) {
                        k = rep[i];
                        if (typeof k === 'string') {
                            v = str(k, value, rep);
                            if (v) {
                                partial.push(quote(k) + (gap ? ': ' : ':') + v);
                            }
                        }
                    }
                } else {


                    for (k in value) {
                        if (Object.hasOwnProperty.call(value, k)) {
                            v = str(k, value, rep);
                            if (v) {
                                partial.push(quote(k) + (gap ? ': ' : ':') + v);
                            }
                        }
                    }
                }
                v = partial.length === 0 ? '{}' :
                    gap ? '{\n' + gap +
                            partial.join(',\n' + gap) + '\n' +
                            mind + '}' :
                          '{' + partial.join(',') + '}';
                gap = mind;
                return v;
            }
        }
        return {
            stringify: function (value, replacer, space) {
                var i;
                gap = '';
                indent = '';

                if (typeof space === 'number') {
                    for (i = 0; i < space; i += 1) {
                        indent += ' ';
                    }


                } else if (typeof space === 'string') {
                    indent = space;
                }

                rep = replacer;
                if (replacer && typeof replacer !== 'function' &&
                        (typeof replacer !== 'object' ||
                         typeof replacer.length !== 'number')) {
                    throw new Error('JSON.stringify');
                }

                return str('', {'': value});
            },

            parse: function (text, reviver) {

                var j;

                function walk(holder, key) {

                    var k, v, value = holder[key];
                    if (value && typeof value === 'object') {
                        for (k in value) {
                            if (Object.hasOwnProperty.call(value, k)) {
                                v = walk(value, k);
                                if (v !== undefined) {
                                    value[k] = v;
                                } else {
                                    delete value[k];
                                }
                            }
                        }
                    }
                    return reviver.call(holder, key, value);
                }
                cx.lastIndex = 0;
                if (cx.test(text)) {
                    text = text.replace(cx, function (a) {
                        return '\\u' + ('0000' +
                                (+(a.charCodeAt(0))).toString(16)).slice(-4);
                    });
                }

                if (/^[\],:{}\s]*$/.
test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {

                    j = eval('(' + text + ')');


                    return typeof reviver === 'function' ?
                        walk({'': j}, '') : j;
                }


                throw new SyntaxError('JSON.parse');
            }
        };
    }();
}
/* for javascript json encode ----- end */



/**
* @check form element js function
* 
* @author: Timcai
*
* @Date: 2008-12-25
*/

function checkEmail(emailvalue)
{
	if(emailvalue.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) == -1)
	{
		return false;
	}
	else
	{
		return true;
	}
}

function validatePassword(pwdvalue)
{
	var re1 = new RegExp("^([a-zA-Z0-9]){6,16}$");
	if(!re1.test(pwdvalue))
	{
		return false;
	}
	else
	{
		return true;
	}
}

function validateAreaCode(areaCodeValue)
{
	reg = /^[0-9]{3,4}$/;
	if(!areaCodeValue.match(reg))
	{
		return false;
	}
	else
	{
		return true;
	}
}

function validateTel(telValue)
{
	reg = /^[0-9]{6,20}$/;
	if(!telValue.match(reg))
	{
		return false;
	}
	else
	{
		return true;
	}
}

function validateCellPhone(cellPhoneValue)
{
	reg = /^[0-9]{11,11}$/;
	if(!cellPhoneValue.match(reg))
	{
		return false;
	}
	else
	{
		return true;
	}
}

function validateDate(dateValue)
{
	if(!/\d{4}-(0[0-9]|1[0-2])-([0-2][0-9]|3[0-1])/.test(dateValue))
	{
		return false;
	}
	else
	{
		return true;
	}
}

function vaildateAccount(accountValue)
{
	var re1 = new RegExp("^([\u4E00-\uFA29]|[\uE7C7-\uE7F3]|[a-zA-Z0-9_])*$");
	if(!re1.test(accountValue))
	{
		return false;
	}
	else
	{
		return true;
	}
}

function validateZipcode(cellPhoneValue)
{
	reg = /^[0-9]{6,6}$/;
	if(!cellPhoneValue.match(reg))
	{
		return false;
	}
	else
	{
		return true;
	}
}

function vaildateNumber(accountValue)
{
	var re1 = new RegExp("^([0-9])*");
	if(!re1.test(accountValue))
	{
		return false;
	}
	else
	{
		return true;
	}
}

function vaildateCN(accountValue){
	var reg = /^[\u4e00-\u9fa5]+$/i; 
	if (!reg.test(accountValue)) 
	{
		return false; 
	}else{
	return true;
	}
}
function vaildateEN(accountValue){
		var reg = /^[A-Za-z]/;
		if (!reg.test(accountValue)) 
		{
			return false; 
		}else{
		return true;
		}
}
function vaildateName(accountValue)
{
	var re1 = new RegExp("^([\u4E00-\uFA29]|[\uE7C7-\uE7F3]|[a-zA-Z0-9])*$");
	if(!re1.test(accountValue))
	{
		return false;
	}
	else
	{
		return true;
	}
}
