/*============================================================================
   Utility JS Library, 2006, by Howard Ruan-Lu, Openfind Inc.,

   this library provides some utility functions.
    
   $Author: oris $
   $Date: 2006/04/19 01:16:01 $
   $Id: util.js,v 1.2 2006/04/19 01:16:01 oris Exp $
============================================================================*/


function TrimStr(str)
{
   return str.replace(/^[ \t\r\n]+|[ \t\r\n]+$/g, "");
}

function IsDigitStr(str, ignoreCharList)
{
   if(null != ignoreCharList)
      var re = new RegExp("[^0-9" + ignoreCharList + "]","g");
   else
      var re = /[^0-9]/g;
   
   if(str.search(re) == -1)
      return true;
   else
      return false;
}

function IsAlphaStr(str, ignoreCharList)
{
   if(null != ignoreCharList)
      var re = new RegExp("[^a-zA-Z" + ignoreCharList + "]","g");
   else
      var re = /[^a-zA-Z]/g;
   
   if(str.search(re) == -1)
      return true;
   else
      return false;
}

function IsAlNumStr(str, ignoreCharList)
{
   if(null != ignoreCharList)
      var re = new RegExp("[^0-9a-zA-Z" + ignoreCharList + "]","g");
   else
      var re = /[^a-zA-Z]/g;
   
   if(str.search(re) == -1)
      return true;
   else
      return false;
}

function IncludeLib(libSrc)
{
   var lib = document.createElement("SCRIPT");
   
   lib.src = libSrc;
   document.getElementsByTagName("HEAD")[0].appendChild(lib);
   return true;
}

function GenCookieList(cookieStr)
{
   /* init cookie parse */
   var rawList = null;
   var cookieList = new Array();
   var sepPos = -1;
   var fSave = false;
   
   if(null == cookieStr)
      rawList = document.cookie.split(";");
   else
      rawList = cookieStr.split(";");
    
   /* parse cookie with name-value pair */
   for(var i = 0; i < rawList.length; i++)
   {
      if((sepPos = rawList[i].indexOf("=")) < 1)
         continue;
      cookieList[TrimStr(rawList[i].substring(0, sepPos))] = rawList[i].substr(sepPos+1);
      fSave = true;
   }
   
   if(fSave)
      return cookieList;
   else
      return null;
}

/* when string is more than n byte use ... to replace  */
function CutString(n, str)
{  
   var i = 0;
   var j = 0;
   var code = 0;
   var tradoff = 0;
   var ret = "";
   for(i = 0; i < str.length; i++)
   {
      code = str.charCodeAt(i);
      if(code < 127)
      {
         if(code >= 65 && code <=90
            || code >= 35 && code <=38
            || code == 47 || code == 63 
            || code == 60 || code == 62
            || code == 92 || code == 94
            || code == 64)
            {
             j++; 
             tradoff++;
            }
         j++;
      }
      else
      {
         j=j+2;
      }
      if(tradoff == 2)
      {
         tradoff = 0;
         j--;
      }
      if(j > n)
         break;
      ret = ret + str.charAt(i);
   }
   if(i != str.length)
      ret = ret + "...";
   return ret;
}

/* encode "<", ">", "'", """, "\" */
function EntityHtmlEncode(str)
{
   str = str.replace(/</g, "&lt;");
   str = str.replace(/>/g, "&gt;");
   str = str.replace(/\'/g, "&#39;");
   str = str.replace(/\"/g, "&#34;");
   str = str.replace(/\\/g, "&#92;");   
   return str;
}