
function doPriceSync(gp, bShowWithGST, obj)
{
 // Note: Keep tenths of cents...
 var p1 = obj.value;

 if (bShowWithGST)
 {
  obj.value = Math.round(p1 * (1.0 + gp / 100.0) * 1000) / 1000.0;
 }
 else
 {
  obj.value = Math.round(p1 / (1.0 + gp / 100.0) * 1000) / 1000.0;
 }
}


function window_openWH(url, w, h)
{
 window.open(url, '_blank', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=' + w + ',height=' + h);
}


function validateEmail(obj, msg, bAllowBlank)
{
 var str = obj.value;
 if (jsTrim(str) == "")
 {
  if (bAllowBlank)
  {
   return true;
  }
  else
  {
   alert(msg);
   obj.focus();
   return false;
  }
 }

 var at = "@";
 var dot = ".";
 var lat = str.indexOf(at);
 var lstr = str.length;
 var ldot = str.indexOf(dot);

 if ( (str.indexOf(at) == -1)
   || (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr)
   || (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr)
   || (str.indexOf(at, (lat + 1)) != -1)
   || (str.substring(lat - 1, lat) == dot || str.substring(lat + 1, lat + 2) == dot)
   || (str.indexOf(dot, (lat + 2)) == -1)
   || (str.indexOf(" ") != -1) )
 {
  alert(msg);
  obj.focus();
  return false;
 }
 return true;
}

 
function nonWS(s)
{
 if (s == " ") return false;
 if (s == "\t") return false;
 return true;
}


function jsTrim(s)
{
 var nLen = s.length;
 var nStart = 0;
 var nEnd = nLen - 1;
 var i;

 for (nStart = 0; nStart <= nEnd; nStart++)
  if (nonWS(s.charAt(nStart))) break;

 for (nEnd = nLen - 1; nEnd >= nStart; nEnd--)
  if (nonWS(s.charAt(nEnd))) break;

 return s.substr(nStart, nEnd - nStart + 1);
}


function validateNoQuotes (obj, msg)
{
 var s = new String(obj.value);
 var i;
 for (i = 0; i < s.length; i++)
 {
  switch (s.charAt(i))
  {
   case "'":
   case '"':
    alert(msg);
    obj.focus();
    return false;
  }
 }
 return true;
}


function validateNonZero(obj, msg)
{
 if (obj == null)
 {
  return true;
 }
 if (obj.value == '0')
 {
  alert(msg);
  obj.focus();
  return false;
 }
 return true;
}


function validatePresence(obj, msg)
{
 if (obj == null)
 {
  return true;
 }
 if (jsTrim(obj.value) == '')
 {
  alert(msg);
  obj.focus();
  return false;
 }
 return true;
}


function validatePresenceAlphaNumeric(obj, msg, msgAlpha)
{
 if (jsTrim(obj.value) == '')
 {
  alert(msg);
  obj.focus();
  return false;
 }
 if (!isStringAlphaNumeric(obj.value))
 {
  alert(msgAlpha);
  obj.focus();
  return false;
 }
 return true;
}


function validatePresenceNonNegNumber(obj, msg)
{
 if (jsTrim(obj.value) == '')
 {
  alert(msg);
  obj.focus();
  return false;
 }
 if (!isFinite(obj.value) || obj.value < 0)
 {
  alert(msg);
  obj.focus();
  return false;
 }
 return true;
}


function validateLimit(obj, nLimit, sLimitMsg)
{
 if (obj.value.length > nLimit)
 {
  alert(sLimitMsg);
  obj.focus();
  return false;
 }
 return true;
}


function validatePresenceLimit(obj, sMsg, nLimit, sLimitMsg)
{
 if (jsTrim(obj.value) == "")
 {
  alert(sMsg);
  obj.focus();
  return false;
 }
 if (obj.value.length > nLimit)
 {
  alert(sLimitMsg);
  obj.focus();
  return false;
 }
 return true;
}


function validateCurrency(sName, sDesc)
{
 var ta;
 ta = document.getElementById(sName);
 if (ta)
 {
  if (!isFinite(ta.value))
  {
   alert('Please enter a number for ' + sDesc + '.');
   ta.focus();
   return false;
  }
 }
 return true;
}


function validatePresenceBound(obj, sMsg, nLow, nHigh, sBoundMsg)
{
 if (!isFinite(obj.value))
 {
  alert(sMsg);
  obj.focus();
  return false;
 }
 if (obj.value < nLow || obj.value > nHigh)
 {
  alert(sBoundMsg);
  obj.focus();
  return false;
 }
 return true;
}


function validatePresenceAtLeast(obj, sMsg, nLow)
{
 if (jsTrim(obj.value) == "")
 {
  alert(sMsg);
  obj.focus();
  return false;
 }
 if (!isFinite(obj.value))
 {
  alert(sMsg);
  obj.focus();
  return false;
 }
 if (obj.value < nLow)
 {
  alert(sMsg);
  obj.focus();
  return false;
 }
 return true;
}


function isStringAlphaNumeric(s)
{
 var i;
 for (i = s.length - 1; i >= 0; i--)
  if (!isCharAlphaNumeric(s.charAt(i))) return false;

 return true;
}


function isCharAlphaNumeric(c)
{
 return ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || (c == '_') || (c == ' '));
}


function validateImageSelection(sSel, sImgBrowse, sMsg)
{
 var imgSel = document.getElementById(sSel);
 if (imgSel.value == '/upload')
 {
  var imgUp = document.getElementById(sImgBrowse);
  if (jsTrim(imgUp.value) == '')
  {
   alert(sMsg);
   imgUp.focus();
   return false;
  }
 }
 return true;
}

function validateInput (nID)
{
 var obj = document.getElementById("Qty" + nID);
 var s = obj.value;
 if (!((isFinite(s)) && (s > 0)))
 {
  alert('Please enter the quantity.');
  obj.focus();
  return false;
 }
 return true;
}


