function isNumeric(sText)
{
  var ValidChars = "0123456789.";
  var IsNumber=true;
  var Char;
 
  for (i = 0; i < sText.length && IsNumber == true; i++) 
  { 
    Char = sText.charAt(i); 
    if (ValidChars.indexOf(Char) == -1) 
    {
      IsNumber = false;
    }
  }
  return IsNumber;
}

function toggleCharity(thisForm)
{
  if (document.forms[thisForm].ckbxCharity.checked)
  {
    document.forms[thisForm].cmbCharityPercentage.disabled=false;
    document.forms[thisForm].cmbCharity.disabled=false;
  }
  else
  {
    document.forms[thisForm].cmbCharityPercentage.disabled=true;
    document.forms[thisForm].cmbCharity.disabled=true;
  }
}


// Button state controlling functions
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
  if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

// Helper used in image upload
function updateImage(url)
{
  document['BigImage'].src=url;
  return;
}

// Browser detection routine
function Is()
{
  // convert all characters to lowercase to simplify testing
  var agt=navigator.userAgent.toLowerCase();;
  // *** BROWSER VERSION ***
  // Note: On IE5, these return 4, so use is_ie5up to detect IE5.
  this.major = parseInt(navigator.appVersion);
  this.minor = parseFloat(navigator.appVersion);

  // Note: Opera and WebTV spoof Navigator.  We do strict client detection.
  // If you want to allow spoofing, take out the tests for opera and webtv.
  this.nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
        && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
        && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));

  this.nav2 = (this.nav && (this.is_major == 2));
  this.nav3 = (this.nav && (this.major == 3));
  this.nav4 = (this.nav && (this.major == 4));
  this.nav4up = this.nav && (this.major >= 4);
  this.navonly = (this.nav && ((agt.indexOf(";nav") != -1) ||
          (agt.indexOf("; nav") != -1)));
  this.nav6 = (this.nav && (this.major == 5));
  this.nav6up = (this.nav && (this.major >= 5));
  this.gecko = (agt.indexOf('gecko') != -1);
  if (this.gecko)
    this.gecko_ver = agt.substr(agt.indexOf('gecko') + 6, 8);


  this.ie   = (agt.indexOf("msie") != -1);
  this.ie3  = (this.ie && (this.major == 2));
  this.ie4  = (this.ie && (this.major == 4));
  this.ie4up  = this.ie  && (this.major >= 4);


  this.ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
  this.ie3 = (this.ie && (this.major < 4));
  this.ie4 = (this.ie && (this.major == 4) && (agt.indexOf("msie 4")!=-1));
  this.ie4up  = (this.ie && (this.major >= 4));
  this.ie5    = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.0")!=-1));
  this.ie5_5  = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.5") !=-1));
  this.ie5up  = (this.ie && !this.ie3 && !this.ie4);
  this.ie5_5up =(this.ie && !this.ie3 && !this.ie4 && !this.ie5);
  this.ie6 = (this.ie && (this.major == 4) && (agt.indexOf("msie 6.")!=-1));
  this.ie6up  = (this.ie && !this.ie3 && !this.ie4 && !this.ie5 && !this.ie5_5);

  this.aol   = (agt.indexOf("aol") != -1);
  this.aol3  = (this.aol && this.ie3);
  this.aol4  = (this.aol && this.ie4);
  this.aol5  = (agt.indexOf("aol 5") != -1);
  this.aol6  = (agt.indexOf("aol 6") != -1);

  this.opera = (agt.indexOf("opera") != -1);
  this.opera2 = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1);
  this.opera3 = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1);
  this.opera4 = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1);
  this.opera5 = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1);
  this.opera5up = (this.opera && !this.opera2 && !this.opera3 && !this.opera4);

  this.webtv = (agt.indexOf("webtv") != -1);

  this.TVNavigator = ((agt.indexOf("navio") != -1) || (agt.indexOf("navio_aoltv") != -1));
  this.AOLTV = this.TVNavigator;

  this.hotjava = (agt.indexOf("hotjava") != -1);
  this.hotjava3 = (this.hotjava && (this.major == 3));
  this.hotjava3up = (this.hotjava && (this.major >= 3));
}

if(typeof(is)=="undefined")
  var is=new Is();

// Helper used in dynamic list paging control
function getPageURL(URL, SelectAllCheckBoxID ,param, inputID, itemsPerPage)
{
  var ret = URL;
  //var n = document.all.item(inputID).value;
  var txtPage = document.getElementById(inputID);
  if( txtPage != null )
  {
    var n = txtPage.value;
      ret += "&" + param + "=" + (n*itemsPerPage-itemsPerPage+1);
    if(SelectAllCheckBoxID.length != 0)
    {
    var chkAll = document.getElementById(SelectAllCheckBoxID);
      if(chkAll != null)
      {
        if( chkAll.checked == true )
          ret += "&SELALL=1";
        else
          ret += "&SELALL=0";
      }
    }
  }

  return document.location.href=ret;
}

// HTML processing
function htmlEscape(s)
{
  s=s.replace(/&/g,'&amp;');
  s=s.replace(/>/g,'&gt;');
  s=s.replace(/</g,'&lt;');
  s=s.replace(/"/g,'&quot;');
  s=s.replace(/'/g,'&apos;');
  s=s.replace(/%/g,'&percent;');
   return s;
}

function htmlUnescape(s)
{
  s=s.replace(/&amp;/g,'&');
  s=s.replace(/&gt;/g,'>');
  s=s.replace(/&lt;/g,'<');
  s=s.replace(/&quot;/g,'"');
  s=s.replace(/&apos;/g,'\'');
  s=s.replace(/&percent;/g,'%');
   return s;
}

// Common SYI submission function
function doSave(form)
{
  var editor = document.getElementById('richEdit').contentWindow.document;

  if(is.nav)
  {
    if (document.forms[form].EDITORMODE.value == "html")
    {
      var html = editor.body.ownerDocument.createRange();
      html.selectNodeContents(editor.body);
      editor.body.innerHTML = html.toString();
    }
    document.forms[form].HTMLCONTENT.value = htmlEscape(editor.body.innerHTML);
  }
  else
  {
    if (document.forms[form].EDITORMODE.value == "html")
      editor.body.innerHTML = editor.body.innerText;
    document.forms[form].HTMLCONTENT.value = htmlEscape(editor.body.innerHTML);
  }
}

// Universal form submit stub
function doSubmit(form, mode)
{
  document.forms[form].MODE.value = mode;
  document.forms[form].submit();
}

// Checked SYI submission function
function doSubmitWithCheck(form, mode)
{
  if ( CheckInformations() == false )
  {
    return false;
  }

  doSave(form);
  document.forms[form].MODE.value = mode;
  return true;
}

// SYI resubmit function used for category selector
function doSellSubmit(form, mode, cmbID, isButtonSelect)
{
  var selElement = document.getElementById(cmbID);

  if (isButtonSelect || (selElement.selectedIndex != 1 && parseInt(selElement.value) >= 0))
  {
    if (isButtonSelect)
    {
      // Handle the case of last level in categories - for button, not combo
      var selParentElement = document.getElementById(cmbID+"Parent");
      selElement.value = selParentElement.value;
    }
    doSave(form);
    document.forms[form].MODE.value = mode;
    document.forms[form].submit();
  }
}

// Used in  edit item details form to go to a selected Item ID
function goItemID(cgi)
{
  var nameValues = document.getElementById('ItemID').value;
  var url_path = cgi + "?PAGE=SELL&MODE=E&PRODUCTID=";
  var addCalURL = url_path + nameValues;
  location.href = addCalURL;
}

// Various helper checking routines

// Used from registration.js
function isEmailEx(str)
{
  // are regular expressions supported?
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }

  if (!supported)
    return IsEmail(str);

  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{1,}|[0-9]{1,})(\\]?)$");
  return (!r1.test(str) && r2.test(str));
}

// Used from billing checking below
function isPhone(str) {
  // are regular expressions supported?
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }

  if (!supported)
    return !isNaN(parseInt(str));

//  var re = /^\([1-9]\d{2}\)\d{3}\-\d{4}$/;
//  var re = /^\D*\d{3}?\D*\d{3}?\D*\d{4}?\D*$/;
//  var re = /^\D*\d{3}?\D*\d{3}?\D*\d{1,4}-?\d{1,4}\D*$/;
//  var re = /^\+{0,1}\d{0,3}[ |-]{0,1}\(\d{2,3}\)[ |-]{0,1}\d{3}?\D*\d{1,4}-?\d{1,4}$/;
  var re = /^\+{0,1}\d{0,3}[ |-]{0,1}\(\d{2,3}\)[ |-]{0,1}\d{3}?\D*\d{1,4}-?\d{1,4}|^\+{0,1}\d{0,3}[ |-]{0,1}\d{3}?\D*\d{1,4}-?\d{1,4}$/;

  return (re.test(str));
}

function CheckPhone(phone, elm)
{
  var red = "#CC0000";
  var black = "#000000";

  if(!isPhone(phone))
  {
    ChangeColor(elm, red);
    return false;
  }
  ChangeColor(elm, black);
  return true;
}

// Used from register page
function IsEmail(strEmail)
{
  var iAmp = strEmail.indexOf('@');
  if (iAmp < 1)
  {
    return false;
  }
  var iPnt = strEmail.indexOf('.', iAmp);
  if ((iPnt < iAmp) || (iPnt > strEmail.length-2))
  {
    return false;
  }
  return true;
}

// Used in doSubmitWithCheck for checked SYI submission
function CheckInformations()
{
  var bValidRequired = true;
  var bValidPrices = true;
  var red = "#CC0000";
  var itemTitle = document.getElementById('EDTITLEXID').value;
  var itemCity = document.getElementById('edLocationCity').value;
  var itemState = document.getElementById('cmbLocationStateID').value;
  var itemStartPrc = document.getElementById('edStartPriceID').value;
  var itemReservePrc = document.getElementById('edReservedPriceID').value;
  var itemGetNowPrc = document.getElementById('edGetNowPriceID').value;
  var itemShipType = document.getElementsByName('edShippingType');
  var itemShipPrc = document.getElementById('edShippingPriceID').value;
  var itemTaxType = document.getElementsByName('edChargeTax');
  var itemTaxPrc = document.getElementById('editTaxID').value;
  var itemTaxState = document.getElementById('cmbSalesTaxID').value;
  var editor = document.getElementById('richEdit').contentWindow.document;
  var itemDescription = editor.body.innerHTML;

  if(itemDescription.length > 100000)
  {
     ChangeColor("lbDescription", red);
     bValidRequired = false;
  }
  else
  {
     ChangeColor("lbDescription", "#000000");
  }


  for(var i=0; i < itemShipType.length; i++)
  {
    if (itemShipType[i].checked
        && itemShipType[i].value == 'F'
  && itemShipPrc == "")
    {
      ChangeColor("lbShipFee", red);
      bValidRequired = false;
    }
    else if (itemShipType[i].checked)
    {
      ChangeColor("lbShipFee", "#000000");
    }
  }

  var fSalesTax = parseTax(itemTaxPrc);

  for(var j=0; j < itemTaxType.length; j++)
  {
    if (itemTaxType[j].checked
        && itemTaxType[j].value == 'F'
        && (itemTaxPrc == "" || itemTaxState == "" || fSalesTax < 0.01))
    {
         ChangeColor("lbSalesTax", red);
         bValidRequired = false;
    }
    else if (itemTaxType[j].checked)
    {
      ChangeColor("lbSalesTax", "#000000");
    }
  }



  if (document.getElementById('isCategoryPostablecmbMainCategoryID').value
       == 'N')
  {
    ChangeColor("lbMainCategory", red);
    bValidRequired = false;
  }
  else
  {
    ChangeColor("lbMainCategory", "#000000");
  }

  if (document.getElementById('isCategoryPostablecmbSecondCategoryID').value
        == 'N')
  {
    ChangeColor("lbSecondCategory", red);
    bValidRequired = false;
  }
  if ( itemTitle == "" )
  {
    ChangeColor("lbTitle", red);
    bValidRequired = false;
  }
  else
  {
    ChangeColor("lbTitle", "#000000");
  }
  if ( itemCity == "" )
  {
    ChangeColor("lbCity", red);
    bValidRequired = false;
  }
  else
  {
    ChangeColor("lbCity", "#000000");
  }
  if ( itemState == "" )
  {
    ChangeColor("lbState", red);
    bValidRequired = false;
  }
  else
  {
    ChangeColor("lbState", "#000000");
  }

  var fReservePrice = parseMoney(itemReservePrc);
  var fGetNowPrice = parseMoney(itemGetNowPrc);
  var fStartPrice = parseMoney(itemStartPrc);
  var el2 = document.getElementById("ValidationMsg2");
  var mimDiff = parseMoney(0.01);

    el2.innerHTML = "";

    if (fStartPrice < 0.01)
    {
      ChangeColor("lbStartPrice", red);
      bValidRequired = false;
    }
    else if(!isNumeric(itemGetNowPrc)) {
      ChangeColor("lbGetNowPrice", red);
      bValidPrices = false;
    }
    else if(fGetNowPrice < 0.00) {
      ChangeColor("lbGetNowPrice", red);
      bValidPrices = false;
    }
    else
    {
      if (fReservePrice > 0 && fGetNowPrice > 0 && fGetNowPrice < fReservePrice || ( fReservePrice < 0.0 && fGetNowPrice < 0.0 ))
      {
        ChangeColor("lbGetNowPrice", red);
        ChangeColor("lbReservedPrice", red);
        bValidPrices = false;
      }
      else
      {
        ChangeColor("lbGetNowPrice", "#000000");
        ChangeColor("lbReservedPrice", "#000000");
      }
      if (fReservePrice > 0 && fReservePrice < fStartPrice || (fReservePrice < 0.0 && fReservePrice != -1))
      {
        ChangeColor("lbReservedPrice", red);
        bValidPrices = false;
        el2.innerHTML += "<br>The Reserve Price is incorrect.  Make sure it " +
           "has a valid value.<br>";
      }
      else
      {
        ChangeColor("lbReservedPrice", "#000000");
      }

      // NOTE (jbf) please update ServiceBroker/src/main/cpp/service/ItemService.cpp:checkItemAmounts
      if (fGetNowPrice > 0 && (fGetNowPrice < (fStartPrice + mimDiff) ||
          fGetNowPrice < 0.0 || fGetNowPrice < fReservePrice ))
      {
         if (fGetNowPrice < (fStartPrice + mimDiff))
         {
            el2.innerHTML += "<br>The Make It Mine price must be at least one cent more than the start price.(Starting price < Make It Mine Price + $0.01)<br>";
         }
         else
         {
            el2.innerHTML += "<br>The MIM price is incorrect. Make sure it " +
              "has a valid value.<br>";
         }
        ChangeColor("lbGetNowPrice", red);
        bValidPrices = false;
      }
      else
      {
        ChangeColor("lbGetNowPrice", "#000000");
      }

      ChangeColor("lbStartPrice", "#000000");
    }
  if(fStartPrice > 0.0 )
    document.getElementById('edStartPriceID').value = fStartPrice;
  if(fReservePrice > 0.0 )
    document.getElementById('edReservedPriceID').value = fReservePrice;
  if(fGetNowPrice > 0.0 )
    document.getElementById('edGetNowPriceID').value = fGetNowPrice;


  var el = document.getElementById("ValidationMsg");

  var pisz = document.getElementById('edtPaymentInstruction').value.length ;
  if ( pisz > 512) {
    el.innerHTML += "<br>The information you've entered exceeded the maximum length for the following field(s):<br>" ;
    el.innerHTML += ('Field <i>"Payment Instruction"</i>: 512 characters max, entered ' + pisz + '<br>') ;
    ChangeColor("lblpayminstr", red);
    bValidRequired = false;
  }

  var itemMainCtg = document.getElementById('cmbMainCategoryID').value;
  var itemSecCtg = document.getElementById('cmbSecondCategoryID').value;
  //Murali checking if primary ctg is equal to secondary ctg
  if(itemMainCtg==itemSecCtg)
  {
     bValidRequired = false;
  }

  ChangeColor("ValidationMsg", red);
	// TODO (jbf) we should have some logic, so if the user starts selecting a second category, we display
  // this till it is full, for now, just turn it off
//  ChangeColor("ValidationMsg2", red);
  if(bValidRequired && bValidPrices)
  {
    el.style.display = 'none';
    el2.style.visibility = 'hidden';
  }
  else
  {
    el.style.display = 'block';
    el2.style.visibility = 'visible';
  }

  // figure out where we are
  var url = window.location.href;
  // define an anchor tag to use
  var anchorName = "#VALMSG";
  // if we have our anchor tag, remove it
  if (url.indexOf(anchorName) > -1) {
    url = url.substr(0, url.indexOf(anchorName));
  }
  // put on our anchor tag and point the browser to the url
  window.location = url + anchorName;
  return bValidRequired && bValidPrices;
}

// Countdown timer implementation
var timeTag = "SPAN";
var timeDecrementor;
function decrementTime()
{
  var timeValues = document.getElementsByTagName(timeTag);
  for (var i = 0; i < timeValues.length; i++)
  {
    if (timeValues[i].getAttribute("type") == "auctionTime")
    {
      var diffString = "";
      timePeriod = timeValues[i].getAttribute("period");

      if (timePeriod > 0)
      {
        timeValues[i].setAttribute("period", timePeriod - 1);

        diffDays = Math.floor(timePeriod/86400);
        if(diffDays > 0)
        {
          diffString = diffDays;
          if (diffDays > 1)
            diffString += " days ";
          else
            diffString += " day ";
          timePeriod -= diffDays * 86400;
        }

        diffHours = Math.floor(timePeriod/3600);
        diffString += diffHours + " hours ";
        timePeriod -= diffHours * 3600;

        diffMinutes = Math.floor(timePeriod/60);
        if (diffDays == 0)
        {
          diffString += diffMinutes + " mins ";
        }
        timePeriod -= diffMinutes * 60;

        diffSeconds = timePeriod;
        if (diffDays == 0)
        {
          if (diffSeconds < 10)
            diffString += "0";
          diffString += diffSeconds + " sec ";
        }

        if ((diffDays == 0) && (diffHours == 0) && (diffMinutes == 0))
          diffString = "less than one minute";
      }
      else
      {
        diffString = "Auction Ended";
      }
      timeValues[i].innerHTML = diffString;
      break;
    }
  }
  timeDecrementor = window.setTimeout(decrementTime, 1000);
}

// Begin Thumbs Selector

var UserRating = 0;
function Rate(img1, img2, img3, img4, img5, id)
{
   document.getElementById(1).src = img1;
   document.getElementById(2).src = img2;
   document.getElementById(3).src = img3;
   document.getElementById(4).src = img4;
   document.getElementById(5).src = img5;
   UserRating = parseInt(id);
}

function changeImage(id, img)
{
  note = document.getElementById("the_note");

  nVal = parseInt(id) - 3;
  var checkVal = parseInt(id);

  if(checkVal != UserRating)
  {
    document.getElementById(id).src = img;
  }

   switch (nVal)
   {
      case -2:
        note.innerHTML = "-2 - Bad";
        break;
      case -1:
        note.innerHTML = "-1 - Poor";
        break;
      case 0:
        note.innerHTML = "0 - Normal";
        break;
      case 1:
        note.innerHTML = "1 - Good";
        break;
      case 2:
        note.innerHTML = "2 - Excellent";
        break;
   }
}

// BEGIN Stargraph selector
var bIsStar = false;
function OverStar(StarId, halfStarPath, nIsStar)
{
  bIsStar = (nIsStar == 1) ? true : false;
  note = document.getElementById("the_note");

  nVal = (bIsStar) ? parseInt(StarId) : parseInt(StarId) - 3;

  if (bIsStar)
  {
    if (StarId == 1)
      note.innerHTML = "rate with " + nVal + " star"
    else
        note.innerHTML = "rate with " + nVal + " stars"
  }
  else
  {
    switch (nVal)
    {
      case -2:
        note.innerHTML = "-2 - Bad";
        break;
      case -1:
        note.innerHTML = "-1 - Poor";
        break;
      case 0:
        note.innerHTML = "0 - Normal";
        break;
      case 1:
        note.innerHTML = "1 - Good";
        break;
      case 2:
        note.innerHTML = "2 - Excellent";
        break;
    }
  }

  for (i = UserRating + 1; i <= StarId; i++)
  {
      document.getElementById(i).src = halfStarPath;
  }
}

function Rated(StarId, fullStarPath, emptyStarPath)
{
  UserRating = parseInt(StarId);

  for (i = 1; i <= StarId; i++)
  {
    document.getElementById(i).src = fullStarPath;
  }
  restore(emptyStarPath);
}

function restore(emptyStarPath)
{
  for (i = UserRating + 1; i <= 5; i++)
  {
    document.getElementById(i).src = emptyStarPath;
  }

  note = document.getElementById("the_note");
  nVal = (bIsStar) ? parseInt(UserRating) : parseInt(UserRating) - 3;

  if (UserRating == 0)
    note.innerHTML = (bIsStar) ? "click on star to Rate Me" : "Please click to rate me:"
  else
    if (bIsStar)
    {
      if (UserRating == 1)
        note.innerHTML = "rated with " + nVal + " star"
      else
        note.innerHTML = "rated with " + nVal + " stars"
    }
    else
    {
      switch (nVal)
      {
        case -2:
          note.innerHTML = "-2 - Bad";
          break;
        case -1:
          note.innerHTML = "-1 - Poor";
          break;
        case 0:
          note.innerHTML = "0 - Normal";
          break;
        case 1:
          note.innerHTML = "1 - Good";
          break;
        case 2:
          note.innerHTML = "2 - Excellent";
          break;
      }
    }
}
// END Stargraph selector

// Used for feedback submit
function doSubmitPersonalFeedback(form, mode)
{
  document.forms[form].MODE.value = mode;
  document.forms[form].RATE.value = UserRating;
  if( document.forms[form].RATE.value == 0)
  {
  alert('You should rate person first!');
  return false;
  }
  else if(document.getElementById("edtComments").value.length == 0)
  {
  alert('You must leave a comment in order to leave a rating!');
  return false;
  }

  username=document.forms[form].edtUserID.value;
  msg='You are about to leave a negative rating for '+username+'. Once a rating is submitted, it cannot be changed or removed. Press OK to confirm.';

  //alert('bbb = '+b);
  if(UserRating < 3 && confirm(msg)){
  document.forms[form].submit();
  return true;
  }else if(UserRating >= 3){
  document.forms[form].submit();
  return true;
  }

  return false;
}

// Used by SYI and feedback pages
function LimitLength(formObj, e, size)
{
  var returnvalue = true;
  if(!e.which && formObj.value.length > size) // IE
  {
    formObj.value = formObj.value.substr(0,size);
    returnvalue = false;
  }
  else if(e.which && e.which!=8 && formObj.value.length > size) //NS4, NS6+ (allow backspace key)
  {
    formObj.value = formObj.value.substr(0,size);
    returnvalue = false;
  }
  return returnvalue;
}

// BEGIN SYI OnScreen fees calculation
// Calculates an abstract ranged fee value
function getRangedFee(fTarget, arrBounds, arrFeeValues, arrPercentage)
{
  var fFee = 0.0;
  var nFees = arrFeeValues.length;

  if (fTarget > 0.0)
  {
    for (var i = 0; i < nFees; ++i)
    {
      if(fTarget >=  arrBounds[i] && fTarget <  arrBounds[i+1])
      {
        if (arrPercentage[i] > 0)
        {
          var fPercentAmount =
            fTarget / 100.0 * arrPercentage[i];
          if (fPercentAmount < arrFeeValues[i])
          {
            fFee = fPercentAmount;
            break;
          }
          else
          {
            fFee = arrFeeValues[i];
            break;
          }
        }
        else
        {
          fFee = arrFeeValues[i];
          break;
        }
      }
    }
  }
  return g_bIsSecondCategory? fFee*2: fFee; // Double fee if a second category is selected
}

// Calculates Starting price fee value
function getInitial_InsertionFee(fTarget)
{
  return fFee = getRangedFee(fTarget, g_arrInsertionFeesBounds, g_arrInsertionFeesInitials, g_arrInsertionFeesPercentage);
}
// Calculates Reserved price fee value
function getInitial_ReservedPriceFee(fTarget)
{
  return getRangedFee(fTarget, g_arrReservedFeesBounds, g_arrReservedFeesInitials, g_arrReservedFeesPercentage);
}

function validRelistValues(initStartPrice, initReservePrice, initMimPrice,
   check)
{
   var note = "Because the Start Price, Make It Mine" +
      " Price, or Reserve Price was increased this " +
      " Auction is not eligible for a relisting credit.";
   var noteTarget = window.document.getElementById("lblRelistNoteID");

   startPrice = window.document.getElementById("edStartPriceID");
   reservePrice = window.document.getElementById("edReservedPriceID");
   mimPrice = window.document.getElementById("edGetNowPriceID");

   if(((parseMoney(startPrice.value) > initStartPrice) ||
       (parseMoney(reservePrice.value) > initReservePrice) ||
       ((initMimPrice > 0 && parseMoney(mimPrice.value) > initMimPrice))) &&
      (check > 0))
   {
      noteTarget.innerHTML = note;
      return false;
   }
   else
   {
      noteTarget.innerHTML = "";
      return true;
   }
}

// Called on onChanged and onKeyUp
function OnSYIChanged(srcElementID, value, isOnSubscription)
{
   isOnSubscription = isOnSubscription || false;
   //alert("isOnSubscription: " + isOnSubscription);
  switch (srcElementID)
  {
    //Edit box 'StartPrice'
    case "edStartPriceID":
    {
       var oTarget = window.document
          .getElementById("lblStartPriceFeeID");
       var oSource = window.document
          .getElementById(srcElementID);
       if (!g_bIsRealEstate)
       {
          var fStartPrice = 0.0;
          fStartPrice = parseMoney(oSource.value);
          if (!isOnSubscription)
            {
               var strValue = "($" +
                        getInitial_InsertionFee(fStartPrice).toFixed(2) + ")";
            }
            else
            {
               var strValue = "($0.00)";
            }
          oTarget.innerHTML = strValue;
       }
       else
          oTarget.innerHTML = "";
    }
    break;
    //Edit box 'ReservedPrice'
    case "edReservedPriceID":
    {
       var oSource = window.document
      .getElementById(srcElementID);
       var oTarget = window.document
      .getElementById("lblReservedPriceFeeID");
       if (!g_bIsRealEstate)
       {
      var fReservedPrice = 0.0;
      fReservedPrice = parseMoney(window.document.getElementById(srcElementID).value);
      var strValue = "($" + getInitial_ReservedPriceFee(fReservedPrice).toFixed(2) + ")";
        oTarget.innerHTML = strValue;
       }
       else
      oTarget.innerHTML = "";
    }
    break;
    //Edit box 'Make It Mine'
    case "edGetNowPriceID":
    {
    }
    break;
    //Images fees update
    case "lblImageFeeID":
    {
      for (i = 1; i <= g_nImagesCount; ++i)
      {
        var oTarget = window.document.getElementById(srcElementID + i.toString());
        if (i > 1)
        {
          var fFee = g_bIsSecondCategory? g_dblAditionalPicFeesInitials*2: g_dblAditionalPicFeesInitials;
          oTarget.innerHTML = "($" + fFee.toFixed(2) + ")";
        }
        else
          oTarget.innerHTML = "(Free)";
      }
    }
    break;
    //Combobox 'Duration'
     case "cmbDurationID":
     {
      var oTarget = window.document.getElementById("lblDurationRealEstateFeeID");
      var oSource = window.document.getElementById(srcElementID);
      if (g_bIsRealEstate)
      {
        var fFee = 0.0;
        var nDuration = 0;
        if( !isNaN(Number(oSource.value)))
        {
          nDuration = parseFloat(oSource.value);
          fFee = nDuration < 90 ? g_dblShortRealEstateFeeInitials: g_dblLongRealEstateFeeInitials;
        }
        fFee = g_bIsSecondCategory? fFee*2: fFee;
        var strValue = "($" + fFee.toFixed(2) + ")";
        oTarget.innerHTML = strValue;
      }
      else
        oTarget.innerHTML = "";
    }
    break;
  }
}
// Called on onClicked
function OnSYIClicked(srcElementID)
{
  var oSource;
  switch (srcElementID)
  {
    //Check box 'Featured'
    case "edtFeaturedID":
    {
      var oTarget = window.document.getElementById("lblFeaturedFeeID");
      var bRes = window.document.getElementById(srcElementID).checked;
      oTarget.innerHTML = "($0.00)";
      if( bRes )
      {
        var fFee = g_bIsSecondCategory? g_dblFeaturedFeesInitials*2: g_dblFeaturedFeesInitials;
        oTarget.innerHTML = "($"+ fFee.toFixed(2) +")";
      }
    }
    break;
    //Check box 'Bold'
    case "edtBoldID":
    {
      var oTarget = window.document.getElementById("lblBoldFeeID");
      var bRes = window.document.getElementById(srcElementID).checked;
      oTarget.innerHTML = "($0.00)";
      if( bRes )
      {
        var fFee = g_bIsSecondCategory? g_dblBoldFeesInitials*2: g_dblBoldFeesInitials;
        oTarget.innerHTML = "($"+ fFee.toFixed(2) +")";
      }
    }
    break;
    //Check box 'Highlight'
    case "edtHighlightID":
    {
      var oTarget = window.document.getElementById("lblHighlightFeeID");
      var bRes = window.document.getElementById(srcElementID).checked;
      oTarget.innerHTML = "($0.00)";
      if( bRes == true )
      {
        var fFee = g_bIsSecondCategory? g_dblHighlightFeesInitials*2: g_dblHighlightFeesInitials;
        oTarget.innerHTML = "($"+ fFee.toFixed(2) +")";
      }
    }
  }
}
// END SYI OnScreen fees calculation

// BEGIN Used by auction item details
function doDateAvailable(chk, Month, Year, Day)
{
  chkBox = document.getElementById(chk);
  cmbMonth = document.getElementById(Month);
  cmbYear = document.getElementById(Year);
  cmbDay = document.getElementById(Day);

  cmbMonth.disabled = !chkBox.checked
  cmbYear.disabled = !chkBox.checked
  cmbDay.disabled = !chkBox.checked

  SetAIDPModified();
}

//AuctionItemDEtailsPage controls on change handler
function SetAIDPModified(control_id, cost)
{
   var total = 0.0;
   var selected = document.forms['frmItemDetails'].cmbState.selectedIndex;
   var percent =
      (
         document.forms['frmItemDetails'].SHIPPINGSTATE.value ==
         document.forms['frmItemDetails'].cmbState[selected].value
      ) ? parseMoney(document.getElementById(
            'edAgreedSaleTaxPercent').value) : 0;
   var shipping_price = parseMoney(document.getElementById(
            'edAgreedShippedPrice').value);
   var insurance_price = parseMoney(document.getElementById(
            'edShippingInsurance').value);

   if (cost != null)
   {
      var tax_amount = percent * cost / 100.0;
      total = shipping_price + insurance_price + cost + tax_amount;
      document.getElementById('lblTotal').innerHTML =
         (Math.round( total * 100 ) / 100).toFixed(2);
      if (control_id == 'edAgreedSaleTaxPercent' || control_id == 'cmbState')
         document.getElementById('lblAgreedSaleTaxAmount').innerHTML =
            (Math.round( tax_amount * 100 ) / 100).toFixed(2);
   }
}

// Helper used in doSubmitProductDetails below
function checkMoney(ID, alertmsg)
{
  control = document.getElementById(ID);
  if( parseMoney(control.value) < 0.0 )
  {
    alert(alertmsg);
    control.focus();
    return false;
  }
  return true;
}

function doSubmitProductDetails(form, mode)
{
  if (!checkMoney(
           'edShippingInsurance',
           'Invalid shipping insurance price!'))
     return false;

  if (!checkMoney('edAgreedShippedPrice', 'Invalid shipping price!'))
     return false;

  if (!checkMoney('edAgreedSaleTaxPercent', 'Invalid sales tax rate!'))
     return false;

  if (!checkMoney('edItemCost', 'Invalid actual item cost!'))
     return false;

  if (!checkMoney('edShippingCost', 'Invalid actual shipping cost!'))
     return false;

  document.forms[form].MODE.value = mode;
  document.forms[form].submit();
}
// END Used by auction item details

// Used by auctions selling Items I've Sold to submit multiple emails
function doSubmitMultipleEmails(SelectAllCheckBoxID, obj, cgiURL, strPage)
{
  var strhref = cgiURL + "?PAGE=" + strPage;
  if( g_arrSoldItemsChks.length > 0 )
  {
    var isChecked = false;
    strhref += "&ITEMIDS=";
    for (i=0;i < g_arrSoldItemsChks.length;i++)
    if (g_arrSoldItemsChks[i] != null && g_arrSoldItemsChks[i].length != 0)
    {
      if  (document.getElementById(g_arrSoldItemsChks[i]).checked == true)
      {
        var arrTemp = g_arrSoldItemsChks[i].split("_");
        if (arrTemp.length == 2)
        {
          strhref += (arrTemp[1] + ";");
          isChecked = true;
        }
      }
    }
    if (!isChecked)
    {
      //There is no checked itenms
      alert("Please select an item, then try again.");
      obj.href = "";
      return false;
    }
    document.location.href = strhref;
    return true;
  }
  else
  {
    //There is no sold items
    obj.href = "";
    return false;
  }
}

// Used by auctions selling
function doSubmitDownload(SelectAllCheckBoxID, divID, userID, obj, cgiURL, strPage)
{
  var strhref = cgiURL + "?PAGE=" + strPage + "&USERID=" + userID + "&INVOICE=0";
  if(SelectAllCheckBoxID.length != 0)
  {
    var chkAll = document.getElementById(SelectAllCheckBoxID);
      var div = document.getElementById(divID);
      var all_checkbox = div.getElementsByTagName("input");
    if (chkAll != null)
    {
      if (chkAll.checked == true)
      {
        strhref += "&SELALL=1";

        if(all_checkbox.length > 0 )
        {
              strhref += "&ITEMIDS=";
               for (i=0; i < all_checkbox.length; i++)
               {
                  if ((all_checkbox[i].type == 'checkbox') &&
                        (all_checkbox[i].checked))
                  {
                     strhref += all_checkbox[i].value + ";";
                  }
               }
        }
        else
        {
          //There is no sold items
               obj.href = "";
          return false;
        }
      }
      else
      {
        strhref += "&SELALL=0";
        //If 'select all' checkbox has not been selected
        //then we should find out the checkboxes with checked set to true
        //and in the future include them into the items list
        if(all_checkbox.length > 0 )
        {
          var isChecked = false;
          strhref += "&ITEMIDS=";
               for (i=0; i < all_checkbox.length; i++)
               {
                  if ((all_checkbox[i].type == 'checkbox') &&
                        (all_checkbox[i].checked))
                  {
                     strhref += all_checkbox[i].value + ";";
                     isChecked = true;
                  }
               }
          if (!isChecked)
                                        {
            //There is no checked itenms
            alert("Please select an item, then try again.");
            obj.href = "";
            return false;
          }
        }
        else
        {
          //There is no sold items
          obj.href = "";
          return false;
        }

      }
      document.location.href = strhref;
      return true;
    }
  }
  obj.href = "";
  return false;
}

// Helper routine used across validation functions to change invalid control's color
function ChangeColor(id, clr)
{
  var el;
  el = document.getElementById(id);
  el.style.color = clr;
}

// Helper routine used across validation functions to change control's value
function ChangeValue(id, val)
{
  var el = document.getElementById(id);
  el.innerHTML = val;
}

// Used in ask question page
function ValidateQuestionMessage(button, id1, len)
{
  var bOK = true ;
  var lblerr = document.getElementById('lbMessage') ;
  var pisz = document.getElementById(id1).value.length ;

  if(pisz == 0)
  {
    ChangeValue('lbMessage', 'Question content can not be empty<br>');
    bOK = false ;
  }
  else
  {
    lblerr.innerHTML = "" ;
  }

  if ( pisz > len)
  {
    lblerr.innerHTML = "Question content is too long. Please enter less than " + len + " characters total.<br>";
    bOK = false;
  }

  if(bOK == true)
  {
    button.disabled=true;
    doSubmit('ASKQUESTION', 'S');
  }
  else
  {
    ChangeColor('lbMessage', '#CC0000');
  }
}

// Used in my account page
function OnViewAccountStatus()
{
  if(document.forms["ViewAccountStatus"].AccountStatusMode[0].checked)
   {
      return true;
   }
  var mmFrom    = parseInt(Number(document.getElementById("mmFrom").value));
  var ddFrom    = parseInt(Number(document.getElementById("ddFrom").value));
  var yyyyFrom    = parseInt(Number(document.getElementById("yyyyFrom").value));

  var mmTo    = parseInt(Number(document.getElementById("mmTo").value));
  var ddTo    = parseInt(Number(document.getElementById("ddTo").value));
  var yyyyTo  = parseInt(Number(document.getElementById("yyyyTo").value));

  if(isNaN(mmFrom) || mmFrom<1 || mmFrom>12 ||
     isNaN(ddFrom) || ddFrom<1 || ddFrom>31 ||
     isNaN(yyyyFrom) || yyyyFrom<1970 || yyyyFrom>2038 ||
     isNaN(mmTo) || mmTo<1 || mmTo>12 ||
     isNaN(ddTo) || ddTo<1 || ddTo>31 ||
     isNaN(yyyyFrom) || yyyyFrom<1970 || yyyyFrom>2038)
  {
    alert("Invalid data");
     return false;
  }

  var from = mmFrom + "/" + ddFrom + "/" + yyyyFrom;
  var to   = mmTo + "/" + ddTo + "/" + yyyyTo;

  document.forms["ViewAccountStatus"].FROM.value = from;
  document.forms["ViewAccountStatus"].TO.value = to;
  return true;
}

// Used in my account page
function OnViewSelectedInvoice()
{
  var url = document.location.protocol + "//" + document.location.host + "/cgi-bin/auctions.cgi?PAGE=VIEWINV";
  url += "&FOR="+document.getElementById("selectMonth").value;
  return document.location.href=url;
}

// Used ot submit violation report
function doSubmitViolationReport(button)
{
  if(!is.nav)
    el = document.getElementById('VIOLTEXT');
  else
    el = eval("document.forms['VIOLREP']."+'VIOLTEXT');

  if(el.value != "")
  {
    document.forms['VIOLREP'].submit();
    button.disabled=true;
    return true;
  }

  ChangeValue('lbMessage', '&nbsp Violation report can not be empty');
  ChangeColor('lbMessage', '#CC0000');
  button.disabled=false;
  return false;
}

//Page AUCTSELL, updates the checkboxes near the sold items
function UpdateAllChks(bState)
{
  for(i=0;i < g_arrSoldItemsChks.length;i++)
  if( g_arrSoldItemsChks[i] != null  && g_arrSoldItemsChks[i].length != 0)
    document.getElementById(g_arrSoldItemsChks[i]).checked = bState;
}

// Support of checked list for paging control
function appendSelectAllChk(SelectAllCheckBoxID, obj)
{
  if(SelectAllCheckBoxID.length != 0)
  {
    var chkAll = document.getElementById(SelectAllCheckBoxID);
    if(chkAll != null)
    {
      var nBookmarkIndex = obj.href.lastIndexOf("#");
      if( nBookmarkIndex > 0 )
      {
        var arrURL = obj.href.split('#');
        if( arrURL.length == 2 )
        {
          if( chkAll.checked == true )
            obj.href = arrURL[0] + "&SELALL=1#" + arrURL[1];
          else
            obj.href = arrURL[0] + "&SELALL=0#" + arrURL[1];
        }
      }
      else
      {
        if( chkAll.checked == true )
          obj.href += "&SELALL=1";
        else
          obj.href += "&SELALL=0";
      }
    }
  }
}

// BEGIN Submit of user preferences from my auction preferences page
// Used in CheckBillingInfo below
function CheckRequiredValue(val, elm)
{
  var red = "#CC0000";
  var black = "#000000";
  if (val == "")
  {
    ChangeColor(elm, red);
    return false;
  }
  ChangeColor(elm, black);
  return true;
}

// Used in CheckBillingInfo below
function CheckRequiredValueInSelect(val, elm)
{
  var red = "#CC0000";
  var black = "#000000";
  if (val == 0)
  {
    ChangeColor(elm, red);
    return false;
  }
  ChangeColor(elm, black);
  return true;
}

// Used in CheckBillingInfo below
function CheckExpirationDate(m, y, elm)
{
  var red = "#CC0000";
  var black = "#000000";
  var now = new Date();
  var year = now.getYear();
  var month = now.getMonth() + 1;

  if(y == 0 || m == 0 || (y < year) || ((y == year) && (m < month)))
  {
    ChangeColor(elm, red);
    return false;
  }
  ChangeColor(elm, black);
  return true;
}

// Used in CheckCreditCard below
function ValidCard(cardNumber, cardType)
{
 var isValid = false;
  var ccCheckRegExp = /[^\d ]/;
  isValid = !ccCheckRegExp.test(cardNumber);

  if (isValid)
  {
    var cardNumbersOnly = cardNumber.replace(/ /g,"");
    var cardNumberLength = cardNumbersOnly.length;
    var lengthIsValid = false;
    var prefixIsValid = false;
    var prefixRegExp;

    switch(cardType)
    {
  //<<HovhannesT
  // for additional types and characteristics see http://www.beachnet.com/~hstiles/cardtype.html
      case "MC":
        lengthIsValid = (cardNumberLength == 16);
        prefixRegExp = /^5[1-5]/;
        break;

      case "VISA":
        lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
        prefixRegExp = /^4/;
        break;

      case "AMEX":
        lengthIsValid = (cardNumberLength == 15);
        prefixRegExp = /^3(4|7)/;
        break;

     case "DISC":
        lengthIsValid = (cardNumberLength == 16);
        prefixRegExp = /^6011/;
        break;

      default:
        prefixRegExp = /^$/;
        alert("Card type not found");
    }

    prefixIsValid = prefixRegExp.test(cardNumbersOnly);
    isValid = prefixIsValid && lengthIsValid;
  }

  if (isValid)
  {
    var numberProduct;
    var numberProductDigitIndex;
    var checkSumTotal = 0;

    for (digitCounter = cardNumberLength - 1;digitCounter >= 0;digitCounter--)
    {
      checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
      digitCounter--;
      numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
      for (var productDigitCounter = 0;productDigitCounter < numberProduct.length;productDigitCounter++)
      {
        checkSumTotal +=
          parseInt(numberProduct.charAt(productDigitCounter));
      }
    }
    isValid = (checkSumTotal % 10 == 0);
  }
  return isValid;
}

// Used in CheckBillingInfo below
function CheckCreditCard(cardNumber,cardType, elm)
{
  var red = "#CC0000";
  var black = "#000000";

  if(!ValidCard(cardNumber, cardType))
  {
    ChangeColor(elm, red);
    return false;
  }
  ChangeColor(elm, black);
  return true;
}

// Used in doSubmitWithFormCheck below
function CheckBillingInfo()
{

  var bResult = true;

  var cardNumber = String(document.getElementById("CCNUM").value).replace(/ /g,"");
  var cardType = document.getElementById("CCTYPE").value;

  var cardFName = document.getElementById("CCFNAME").value;
  var cardLName = document.getElementById("CCLNAME").value;

  var cardExpYear = document.getElementById("cmbYear").value;
  var cardExpMonth = document.getElementById("cmbMonth").value;

  var billStreet = document.getElementById('BILLSTRADDR').value;
  var billCity = document.getElementById('BILLCITY').value;
  var billState = document.getElementById('BILLSTATE').value;
  var billZip = document.getElementById('BILLZIP').value;
  var billPhon = document.getElementById('BILLPHONE').value;

  var shipStreet = document.getElementById('SHIPSTRADDR').value;
  var shipCity = document.getElementById('SHIPCITY').value;
  var shipState = document.getElementById('SHIPSTATE').value;
  var shipZip = document.getElementById('SHIPZIP').value;
  var shipPhon = document.getElementById('SHIPPHONE').value;

  if ((!CheckRequiredValue(cardNumber, "labelCCNumTxt")) || (!CheckCreditCard(cardNumber, cardType , "labelCCNumTxt")))
  {
    bResult = false;
    }

  if (!CheckRequiredValue(cardFName, "labelCCFNameTxt"))
  {
    bResult = false;
  }

  if (!CheckRequiredValue(cardLName, "labelCCLNameTxt"))
  {
    bResult = false;
  }

  if (!CheckRequiredValue(billStreet, "labelStreetText"))
  {
    bResult = false;
  }

  if (!CheckRequiredValue(billCity, "labelCityText"))
  {
    bResult = false;
  }

  if (!CheckRequiredValueInSelect(billState, "labelStateText"))
  {
    bResult = false;
  }

  if (!CheckRequiredValue(billZip, "labelZipText"))
  {
    bResult = false;
  }

  if ((!CheckRequiredValue(billPhon, "labelPhoneText")) || (!CheckPhone(billPhon, "labelPhoneText")))
  {
    bResult = false;
  }

  if (!CheckRequiredValue(shipStreet, "labelShipStreetText"))
  {
    bResult = false;
  }

  if (!CheckRequiredValue(shipCity, "labelShipCityText"))
  {
    bResult = false;
  }

  if (!CheckRequiredValueInSelect(shipState, "labelShipStateText"))
  {
    bResult = false;
  }

  if (!CheckRequiredValue(shipZip, "labelShipZipText"))
  {
    bResult = false;
  }

  if ((!CheckRequiredValue(shipPhon, "labelShipPhoneText")) || (!CheckPhone(shipPhon, "labelShipPhoneText")))
  {
    bResult = false;
  }

  if (!CheckExpirationDate(cardExpMonth, cardExpYear, "labelCCExpTxt"))
  {
    bResult = false;
  }

  var el = document.getElementById("ValidationMsg");
  var red = "#CC0000";
  ChangeColor("ValidationMsg", red);
  if(bResult)
    el.style.display = 'none';
  else
    el.style.display = 'block';

  return bResult;
}

// Used in submit of user preferences
function doSubmitWithFormCheck(form, mode)
{
  if (form == "frmChangeBillingInfo")
  {
    if (CheckBillingInfo() == false)
    {
      return false;
    }
  }

  document.forms[form].MODE.value = mode;
//  document.forms[form].submit();
   return true;
}
// END Submit of user preferences from my auction preferences page

// Used from SYI page
function EnableChargeTax(cmb, edt, state)
{
  var cmbState = document.getElementById(cmb);
  var edtTax = document.getElementById(edt);

  if (state)
  {
    edtTax.disabled = false;
    cmbState.disabled = false;
  }
  else
  {
    edtTax.disabled = true;
    cmbState.disabled = true;
  }
}

function EnableViolation(cmb)
{
  document.getElementById('firstId').disabled = true;
  document.getElementById('secondId').disabled = true;
  document.getElementById('thirdId').disabled = true;
  document.getElementById('fourthId').disabled = true;

  document.getElementById(cmb).disabled = false;
}

// Used in doCheckSaveSubmit below
function checkOneAndWarn(elbl, elname, lblname, size, fname) {
  var result = true ;
  var el  = document.getElementById(elname) ;
  var lbl = document.getElementById(lblname) ;
  if (el.value.length > size) {
    result = false ;
    elbl.innerHTML += ('Field <i>"' + fname + '"</i>: ' + size + ' characters max, entered ' + el.value.length + '<br>') ;
    lbl.style.color = '#CC0000' ;
  } else {
    lbl.style.color = '#335c8d' ;
  }
  return result ;
}

// Used by my home edit page
function doCheckSaveSubmit(form, mode) {
  var bOK = true ;
  var tOK = true ;
  var elbl = document.getElementById('lblError') ;
  elbl.innerHTML = "The information you've entered exceeded the maximum length for the following field(s):<br>" ;

  tOK = checkOneAndWarn(elbl, 'USLYSELL', 'lbUsuallySell',     250, 'Things I usually sell') ;
  bOK = bOK && tOK ;
  tOK = checkOneAndWarn(elbl, 'LIKEBUY',  'lblLikeToBuy',      250, 'Things I like to buy') ;
  bOK = bOK && tOK ;
  tOK = checkOneAndWarn(elbl, 'LOOKFOR',  'lblLookingFor',     250, 'Things I am looking for') ;
  bOK = bOK && tOK ;
  tOK = checkOneAndWarn(elbl, 'OTHERINT', 'lblOtherInterests', 250, 'Other Interests') ;
  bOK = bOK && tOK ;

  tOK = checkOneAndWarn(elbl, 'SHIPPINGPOL', 'lblSHIPPINGPOL', 250, 'My shipping policy') ;
  bOK = bOK && tOK ;
  tOK = checkOneAndWarn(elbl, 'PAYMENTPOL',  'lblPAYMENTPOL', 250, 'My payment policy') ;
  bOK = bOK && tOK ;
  tOK = checkOneAndWarn(elbl, 'RETURNPOL',  'lblRETURNPOL', 250, 'My return policy') ;
  bOK = bOK && tOK ;

  if (bOK == true) {
    doSave(form);
    document.forms[form].MODE.value = mode;
    document.forms[form].submit();
  } else {
    elbl.style.visibility = 'visible' ;
    scroll(0, 0);
  }
}

// Used by my auction preferences page
function doCheckSubmit(form, mode) {
  var bOK = true ;
  var elbl = document.getElementById('lblError') ;
  elbl.innerHTML = "The information you've entered exceeded the maximum length for the following field(s):<br>" ;

  bOK = checkOneAndWarn(elbl, 'edPayInstr', 'payminstr', 512, 'Payment Instructions') ;

  if (bOK == true) {
    document.forms[form].MODE.value = mode;
  } else {
    elbl.style.visibility = 'visible' ;
  }
  return bOK;
}

// Used in CheckInformations and checkMoney functions
function parseMoney(strValue)
{
  isMoneyFormatAmount = 0.00;
  isMoneyFormatString = "0.00";
  //at this moment we assuming that the application has to accept only USA format money format
  if( isMoneyFormat(strValue, 0) )
  {
      return isMoneyFormatAmount;
  }
  //error
  else
  {
      return -1.0;
  }
}

// Used in parseMoney function
function isMoneyFormat(str,eur) {
   isMoneyFormatAmount = 0.00;
   isMoneyFormatString = "0.00";
   if(!str) return true;
   str = "" + str; // force string
   for (var i=0; i<str.length;i++) {
      var ch = str.charAt(i);
      if (!isNum(ch) && ch!='.' && ch != ',' && ch !='-') return false
   }

   var sign = 1;
   var signChar = '';
   isMoneyFormatAmount = 0.00;
   isMoneyFormatString = "0.00";

   if (str.length > 1) {
      signChar = str.substring(0,1);
      if (signChar == '-' || signChar == '+' ) {
         if (signChar == '-') sign = -1;
         str = str.substring(1);
      }
      else signChar = '';
   }
   var decimalPoint = '.';
   var thDelim = ',';
   if (eur) {
      decimalPoint = ','
      thDelim = '.';
   }
   var test1 = str.split(decimalPoint);
   if (test1.length == 2) { // Decimals found
      if (test1[1].length > 2) return false; // more than 2 decimals
      if (isNum(test1[1])) {
         if (test1[1] < 9 && test1[1].charAt(0) > 0) test1[1] = new String(test1[1]+"0");
      }
      else return false;
   }
   else if(test1.length > 2)
   { // Has more then one decimal point
     return false;
   }
   else test1[1] = "00"; // force decimals

   if (test1[0] == '') test1[0] = 0;
   if (test1[0] && test1[0].indexOf(thDelim) != -1) {
      test2 = test1[0].split(thDelim);
      if (test2.length >= 2)
    { // thousands found
         var thError = false;
         for (var i=0;i<test2.length;i++)
     {
            if (test2[i].length != 3 && i != 0) { thError = true; break; } // all thousands exept the first.
      if (test2[i].length > 3 && i == 0) { thError = true; break; }  // the first thousands.
            if (!isNum(test2[i])) { thError = true; break; } // all numbers
         }
         if (thError) return false;
         test1[0] = test2.join('')
      }
   }
   isMoneyFormatAmount = parseFloat(test1[0] + '.' + test1[1])*sign;
   isMoneyFormatString = new String(""+signChar+""+parseInt(test1[0])) +'.'+test1[1];
   return true;
}

// Used in isMoneyFormat function
function isNum(str) {
  if(!str) return false;
  for(var i=0; i<str.length; i++){
    var ch=str.charAt(i);
    if ("0123456789".indexOf(ch) ==-1) return false;
  }
  return true;
}

// Uses by my auction preferences page
function SetMode(form, mode)
{
  document.forms[form].MODE.value = mode;
  return true;
}

function setAddrInfo(form)
{
   if(form.ctrSameAddr.checked)
   {
      form.SHIPSTRADDR.value = form.BILLSTRADDR.value;
      form.SHIPSTRADDR2.value = form.BILLSTRADDR2.value;
      form.SHIPCITY.value = form.BILLCITY.value;
      form.SHIPSTATE.value = form.BILLSTATE.value;
      form.SHIPZIP.value = form.BILLZIP.value;
      form.SHIPPHONE.value = form.BILLPHONE.value;
   }
   else
   {
      form.SHIPSTRADDR.value = "";
      form.SHIPSTRADDR2.value = "";
      form.SHIPCITY.value = "";
      form.SHIPSTATE.value = "0";
      form.SHIPZIP.value = "";
      form.SHIPPHONE.value = "";
   }
}

function parseTax(strValue)
{
   var test1 = new RegExp("[0-9]+\\.[0-9]{0,4}$|^[0-9]*$");
   return test1.test(strValue);
}

// Used by AuctionItemDetails page
function toggleShippingInsurance(form)
{
   var opt = document.getElementById('optRadio');
   var req = document.getElementById('reqRadio');

   if (form.addShippingInsurance.checked)
   {
      form.edShippingInsurance.className = "";
      form.edShippingInsurance.readOnly = false;
      opt.style.display = 'inline';
      req.style.display = 'inline';
   }
   else
   {
      form.edShippingInsurance.className = "disabled";
      form.edShippingInsurance.readOnly = true;
      form.edShippingInsurance.value = "0.00";
      opt.style.display = 'none';
      req.style.display = 'none';
   }
}

function openNewWindow(url)
{
  var msg = "Notification: This link has directed you to a third-party";
   msg += " website to complete your purchase. This site is not affiliated";
   msg += " with Overstock.com and is not governed by the Overstock";
   msg += " Auctions user agreement.";
//   alert(msg);
   newWin = window.open(url, "", "", "", false);
   if(newWin == null)
   {
      alert("You will need to allow popups from this site to be able to use the check out process.  ");
   }
}

//test
function cancelItem(itemNumber, itemTitle, object)
{
   var msg = "Please note: You will still be charged listing fees for this" +
             " auction even if you cancel it. Click 'OK' if you want to" +
             " cancel Item #" + itemNumber + " - " + itemTitle + ".";

   if(confirm(msg))
   {
      return true;
   }
   else
   {
      object.href = "#";
      return false;
   }
}
