String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g,""); }
String.prototype.ltrim = function() { return this.replace(/^\s+/,""); }
String.prototype.rtrim = function() { return this.replace(/\s+$/,""); }

function is_alpha(str)
 {
 if (str.length == 0)
     return false;
 var valid="abcdefghijklmnopqrstuvwxyz";
 var t = str.toLowerCase();
 for (var a=0; a < str.length; a++)
      if (valid.indexOf(t.charAt(a)) < 0)
          return false;
 return true;
 }

function is_numeric(str)
 {
 if (str.length == 0)
     return false;
 var valid="0123456789";
 for (var a=0; a < str.length; a++)
      if (valid.indexOf(str.charAt(a)) < 0)
          return false;
 return true;
 }

function parseTag(tagName,str)
 {
 var p1 = str.indexOf("<" + tagName + ">");
 var p2 = str.indexOf("</" + tagName + ">");

 if (p1 == -1 || p2 == -1)
     return '';

 return str.substring(p1 + tagName.length + 2, p2);
 }

function valsToArray(data)
 {
 data = data.replace(/}{/g,",");
 data = data.replace(/{|}/g,"");
 return data.split(',');
 }

function capInputLength(obj,divTag)
 {
 var mlength = obj.getAttribute ? parseInt(obj.getAttribute("maxlength")) : "";
 if (obj.getAttribute && obj.value.length > mlength)
     obj.value = obj.value.substring(0,mlength);

 var d = document.getElementById(divTag);
 if (d != null)
     d.innerHTML = '(' + (mlength-obj.value.length) + ' remaining)';
 }

function ajaxExecute(url,callback)
 {
 var req = null;

 if (window.XMLHttpRequest)
    {
    req = new XMLHttpRequest();
    if (req.overrideMimeType)
       {
       req.overrideMimeType('text/xml');
       }
    }
 else
 if (window.ActiveXObject)
    {
    try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch(e)
      {
      try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
      catch(e) { }
      }
    }

 req.onreadystatechange = function()
   {
   if (req.readyState == 4)
      {
      if (callback != null)
          callback(req.status,req.statusText,req.responseText);
      }
   };
 req.open("GET",url,true);
 req.send(null);
 }

function readCookie(name)
 {
 var nameEQ = name + "=";
 var ca = document.cookie.split(';');
 for (var i=0;i < ca.length;i++)
     {
     var c = ca[i];
     while (c.charAt(0)==' ')
        c = c.substring(1,c.length);

     if (c.indexOf(nameEQ) == 0)
         return c.substring(nameEQ.length,c.length);
     }
 return null;
 }

