var regexp_email = new Array('^([\\!\\#-\\\'\\*\\+\\-\\/-9\\=\\?A-Z\\^-\\~]+\\.?)+\\@([a-z0-9]([0-9a-z-]{0,61}[0-9a-z])?\\.)+[a-z]{2,}$', 'i');

//regexp for float numbers with precision 2
var regexp_amount = '^[0-9]*(\\.[0-9]{1,2})?$'; 
//reg exp for float numbers with variable precision 
//Use: sprintf(regexp_amount_custom_precision, precision)
var regexp_amount_custom_precision = '^[0-9]*(\\.[0-9]{1,%d})?$'; 

function valid_amount(amount, precision)
{
  var tmp_regexp = (typeof(JSL_SPRINTF) != 'undefined' && typeof(precision) != 'undefined') ?
                    sprintf(regexp_amount_custom_precision, precision) :
                    regexp_amount;
  return regexp_test(tmp_regexp, amount) &&
         !isNaN(parseFloat(amount));
}

var regexp_zip = '^[0-9]{5}$';
var regexp_dimension = new Array('^\\s*\\d*(\\.\\d+)?\\s*$', 'i');

var isNav, isIE, isNav6, isSafari;
var coll = "";
var styleObj = "";
if (document.layers) {isNav = true;}
else if (document.all) {isIE = true; coll = 'all.'; styleObj = '.style';}
else if (document.getElementById) { isNav6 = true; coll = "getElementById('"; styleObj = "').style";}
isSafari = navigator.userAgent.toLowerCase().indexOf('safari') > -1 ? true : false;

function getCursor(event)
{
  if(isIE) { Xpos = event.clientX; Ypos = event.clientY+document.body.scrollTop; }
  else { Xpos = event.pageX; Ypos = event.pageY; }
}

function getObject (obj)
{
  var theObj;
  if (typeof obj =="string") { theObj = eval("document." + coll + obj + styleObj); }
  else { theObj = obj; }
  return theObj;
}

function hide(obj) { var theObj = getObject(obj); theObj.visibility = 'hidden'; }
function show(obj, offx, offy)
{
  var theObj = getObject(obj);
  if (isIE) {
    if (typeof(offx) == 'undefined') {
      offx = +10;
    }
    if (typeof(offy) == 'undefined') {
      offy = -20;
    }
    theObj.pixelTop = Ypos + offy;
    theObj.pixelLeft = Xpos + offx;
  }
  else {
    if (typeof(offx) == 'undefined') {
      offx = +10;
    }
    if (typeof(offy) == 'undefined') {
      offy = -50;
    }
    theObj.top = Ypos + offy;
    theObj.left = Xpos + offx;
  }
  theObj.visibility = 'visible';
}

function plain2html(text, empty, tab) {
  if (typeof(empty) == "undefined") {
    empty = "<img src=/img/spacers/pixel.gif border=0>";
  }
  if (typeof(tab) == "undefined") {
    tab = " &nbsp; &nbsp; &nbsp; &nbsp;";
  }

  text += '';

  text = text.replace(/&/g, '&amp;');
  text = text.replace(/</g, '&lt;');
  text = text.replace(/>/g, '&gt;');
  text = text.replace(/"/g, '&quot;');

  text = text.replace(/\n/g, '<br>'); // convert \n to <br>
  text = text.replace(/\t/g, tab); // convert TABs
  text = text.replace(/^ /, '&nbsp;'); // convert heading space to &nbsp; for displaying within <td>s
  text = text.replace(/(<br[^>]*>) /g, '$1&nbsp;'); // // same per lin
  text = text.replace(/  /g, ' &nbsp;'); // convert 2 spaces sequences to one space and one &nbsp;
  text = text.replace(/ $/, '&nbsp;'); // convert trailing space to &nbsp; for displaying within <td>s
  text = text.replace(/ (<br[^>]*>)/g, '&nbsp;$1'); // same per line
  text = text.replace(/^$/, empty); // replace empty string with a pixel (by default)
  return text;
}

function set_visible(id, v) {
    if (navigator.userAgent.indexOf("Opera") != -1) {
        var d = document.getElementById(id);
        eval("d.style.visibility = v ? 'visible' : 'hidden'");
        return;
    }

    if (document.getElementById && document.getElementById(id)) {
        var d = document.getElementById(id);
        eval("d.style.display = v ? 'block' : 'none'");
        return;
    }

    if (document.all && document.all(id)) {
        var d = document.all(id);
        eval("d.style.display = v ? 'block' : 'none'");
        return;
    }

    if (document.layers && document.layers[id]) {
        var d = document.layers[id].document;
        eval("d.open(); d.write('');d.close();d.visibility = v ? 'visible' : 'hidden'");
        return;
    }

}

function stopwatch(startTime)
{
  if (typeof(startTime) == "undefined") {
    return new Date();
  }

  var endTime = new Date();
  return endTime - startTime;
}

function object_is_array(arr)
{
  if (typeof(arr) != 'object')
    return 0;

  var i = 0;
  for (var prop in arr) {
    if (typeof(prop) != "number" || prop != i)
      return 0;
    i++;
  }
  return 1;
}

function white_space(c) {
  return (c == " " || c == "\t" || c == "\n" || c == "\r");
}

function sp_trim_no_regex(s) {
  if (typeof(s) != "string") {
    return s;
  }
  var ss = s;
  while (white_space(ss.substring(0, 1))) {
    ss = ss.substring(1, ss.length);
  }
  while (white_space(ss.substring(ss.length-1, ss.length))) {
    ss = ss.substring(0, ss.length-1);
  }
  return ss;
}

function sp_trim(s) {
  return sp_trim_no_regex(s);
}

function regexp_test(p, s) {
  if (navigator.userAgent.indexOf("Mac") != -1) {
    // Disable regexps for Mac
    return 1;
  }
  var regexp = "";
  if (typeof(p) == 'object') {
    regexp = new RegExp(p[0], p[1]);
  } else {
    regexp = new RegExp(p);
  }
  return regexp.test(s);
}

function clone_object(obj)
{
  var clone = new Object();
  for (var prop in obj){
    if (typeof(obj[prop]) == 'object')
      clone[prop] = clone_object(obj[prop]);
    else 
      clone[prop] = obj[prop];
  }
  return clone;
}

function trim(str) 
{ 
  return str.replace(/^\s+|\s+$/g,"");
}
// Last line
var JSL_GENERAL = 1;
