var MIN_REQUIRED_DAYS = 4;
var MIN_REQUIRED_QTY  = 1000;

function init(frm)
{ validateMonth(frm.month1, frm.day1, frm.year1);
}

/*************************************/
//        RefreshProvince()
/*************************************/
function RefreshProvince(country_id, frm)
{ frm.province.length = 0;

  if(country_id)
  { for(var i=0;i< provinceArray.length ;i++)
    { if(provinceArray[i][0] == country_id)
      { var provinceValue =  provinceArray[i][1];
        var provinceText =  provinceArray[i][2];
        var newOpt = document.createElement("OPTION");
        newOpt.text = provinceText;
        newOpt.value = provinceValue;
        frm.province.add(newOpt);
      }
    }
  }

  if(country_id == 1)
    frm.province.selectedIndex = 8;
  else if(country_id == 2)
    frm.province.selectedIndex = 31;
}

/*************************************/
//         submitForm()
/*************************************/
function submitForm(frm)
{ if(validateUpload(frm))
    confirmLegalInformation();
}

/*************************************/
//         submitStart()
/*************************************/
function submitStart()
{ var frm = document.submitfrm;
  document.getElementById("buttBlock").style.display = "none";
  document.getElementById("progBlock").style.display = "block";

  startAnimation();
  frm.submit();
}

/***************************************/
//       confirmLegalInformation()
/***************************************/
function confirmLegalInformation()
{ openPopupWindow('/upload/legal.html', 600, 400, 'no', '', '', 'yes', 'no');
}

/*************************************/
//         validateUpload()
/*************************************/
function validateUpload(frm)
{ var regInvalidQty = /[^0-9]/;
  var regFileType   = /\.(tif|eps|jpg|jpeg|pdf|ai|sit|sitx|zip)$/i;

  // company
  if(frm.company.value=="")
  { alert("Please enter your [Company] name.     ");
    frm.company.focus();
    return false;
  }
  // first name
  if(frm.fname.value=="")
  { alert("Please enter your [First Name].     ");
    frm.fname.focus();
    return false;
  }
  // last name
  if(frm.lname.value=="")
  { alert("Please enter your [Last Name].     ");
    frm.lname.focus();
    return false;
  }
  // email
  var theStr = new String(frm.email.value);
  var index = theStr.indexOf("@");
  var pindex = theStr.indexOf(".",index);
  
  if(theStr == "")
  { alert("Please enter your [Email] address.     ");
    frm.email.focus();
    return false;
  }
  if(theStr.indexOf("@") <= 0)
  { alert("Please enter a valid [Email] address.     \n\n"
        + "( yourname@yourdomain.com )" );
    frm.email.focus();
    return false;
  }
  if ( !((pindex > index+1) && (theStr.length > pindex+1)) )
  { alert("Please enter a valid [Email] address.     \n\n"
        + "( yourname@yourdomain.com )" );
    frm.email.focus();
    return false;
  }
  
  // phone
  if(frm.phone.value=="")
  { alert("Please enter your [Phone] number.     ");
    frm.phone.focus();
    return false;
  }
  
  // check if delivery required and if address is completed
  for(job_no=1; job_no<=4; job_no++)
  { var jobchk = 0;

    if(job_no==1)
    { jobchk = 1;
    }
    else
    { var oJobChk = eval('document.submitfrm.jobchk'+job_no);
      if(oJobChk.checked)
        jobchk  = 1;
    }
 
    if(jobchk)
    { var delivery = eval('document.submitfrm.delivery'+job_no);

      if(delivery.value == 'Y')
      { // address
        if(frm.address.value=="")
        { alert("JOB "+job_no+" [Delivery Required] is 'Yes'.     \n\nPlease enter your [Address] for delivery.     ");
          frm.address.focus();
          return false;
        }
        // city
        if(frm.city.value=="")
        { alert("JOB "+job_no+" [Delivery Required] is 'Yes'.     \n\nPlease enter your [City] for delivery.     ");
          frm.city.focus();
          return false;
        }
        // postal
        if(frm.postal.value=="")
        { alert("JOB "+job_no+" [Delivery Required] is 'Yes'.     \n\nPlease enter your [Postal / Zip] code for delivery.     ");
          frm.postal.focus();
          return false;
        }
      }// end if delivery
    }
  }

  // sales person
  if(frm.salesperson.value=="")
  { alert("Please select [Sales Representative].     ");
    frm.salesperson.focus();
    return false;
  }

  // Payment Method
  if(frm.payment_method.value=="")
  { alert("Please select [Payment Method].     ");
    frm.payment_method.focus();
    return false;
  }

  for(job_no=1; job_no<=4; job_no++)
  { var jobchk = 0;

    if(job_no==1)
    { jobchk = 1;
    }
    else
    { var oJobChk = eval('document.submitfrm.jobchk'+job_no);
      if(oJobChk.checked)
        jobchk  = 1;
    }
 
    if(jobchk)
    { var print_size  = eval('document.submitfrm.print_size'+job_no);
      var size_other  = eval('document.submitfrm.size_other'+job_no);
      var stock       = eval('document.submitfrm.stock'+job_no);
      var stock_other = eval('document.submitfrm.stock_other'+job_no);
      var quantity    = eval('document.submitfrm.quantity'+job_no);
      var delivery    = eval('document.submitfrm.delivery'+job_no);
      var year        = eval('document.submitfrm.year'+job_no);
      var month       = eval('document.submitfrm.month'+job_no);
      var day         = eval('document.submitfrm.day'+job_no);
      var FILE_f      = eval('document.submitfrm.FILE'+(job_no*2-1));
      var FILE_b      = eval('document.submitfrm.FILE'+(job_no*2));

      // print size
      if(print_size.value=="")
      { alert("Please select [Print Size] for JOB "+job_no+".     ");
        print_size.focus();
        return false;
      }
      // size other
      if(print_size.value==1 && size_other.value=="")
      { alert("Please enter [Other Size] for JOB "+job_no+".     ");
        size_other.focus();
        return false;
      }
      // stock selection
      if(stock.value=="")
      { alert("Please select [Stock Selection] for JOB "+job_no+".     ");
        stock.focus();
        return false;
      }
      // stock other
      if(stock.value==1 && stock_other.value=="")
      { alert("Please enter [Other Stock] for JOB "+job_no+".     ");
        stock_other.focus();
        return false;
      }
      // quantity
      if(quantity.value=="")
      { alert("Please enter [Quantity] for JOB "+job_no+".     ");
        quantity.focus();
        return false;
      }
      if(regInvalidQty.test(quantity.value))
      { alert("Please enter valid [Quantity] for JOB "+job_no+".     ");
        quantity.focus();
        return false;
      }
      if(quantity.value*1 < MIN_REQUIRED_QTY)
      { alert("Minimum required quantity is "+MIN_REQUIRED_QTY+".     \n\nPlease enter valid [Quantity] for JOB "+job_no+".     ");
        quantity.focus();
        return false;
      }
      // delivery required
      if(delivery.value=="")
      { alert("Please select [Delivery Required] for JOB "+job_no+".     ");
        delivery.focus();
        return false;
      }
      // date required by
      if(delivery.value=="Y" && (year.value+month.value+day.value)*1 < getTodayYMD() + MIN_REQUIRED_DAYS)
      { alert("Printing process takes at least "+MIN_REQUIRED_DAYS+" days.     \n\nPlease select valid [Required By] date for JOB "+job_no+".     ");
        day.focus();
        return false;
      }
      // files
      if(FILE_f.value=="" && FILE_b.value=="" )
      { alert("Please select at least 1 file for JOB "+job_no+".     ");
        FILE_f.focus();
        return false;
      }
      if(!regFileType.test(FILE_f.value.toLowerCase()) && FILE_f.value != "")
      { alert("Please select a valid file for [Job "+job_no+" Front File].     \n\nFile Type:  [.tif] [.eps] [.jpg] [.pdf] [.ai] [.sit] [.sitx] [.zip]      ");
        FILE_f.focus();
        return false;
      }
      if(!regFileType.test(FILE_b.value.toLowerCase()) && FILE_b.value != "" )
      { alert("Please select a valid file for [Job "+job_no+" Back File].     \n\nFile Type:  [.tif] [.eps] [.jpg] [.pdf] [.ai] [.sit] [.sitx] [.zip]      ");
        FILE_b.focus();
        return false;
      }
    }
  }

  return true;
}

/*************************************/
//         getTodayYMD()
/*************************************/
function getTodayYMD()
{ var ymd = thisyear*10000
          + thismonth*100
          + today;
  return ymd;
}

/*************************************/
//         validateMonth()
/*************************************/
function validateMonth(mm, dd, yy)
{ mm.length = 0;
  if(thisyear == yy.value)
  { for(i=0;i<=12-thismonth;i++)
    { row = i+thismonth;
      if(row<10)
        row = '0' + row;
      opt = new Option(row, row);
      mm.options[i] = opt;
    }
  }
  else
  { for(i=0;i<12;i++)
    { row = i+1;
      if(row<10)
        row = '0' + row;
      opt = new Option(row, row);
      mm.options[i] = opt;
    }
  }

  mm.selectedIndex = 0;
  validateDay(mm, dd, yy);
}

/*************************************/
//         validateDay()
/*************************************/
function validateDay(mm, dd, yy)
{ dd.length = 0;
  for(i=0;i<=30;i++)
  { row = i+1;
      if(row<10)
        row = '0' + row;
    opt = new Option(row, row);
    dd.options[i] = opt;
  }

  switch(mm.value)
  { case '02': dd.options[30] = null;
               dd.options[29] = null;
               var year = yy.value;
               if(!isLeapYear(year))
                 dd.options[28] = null;
               break;
    case '04':
    case '06':
    case '09':
    case '11': dd.options[30] = null;
               break;
  }
  if(yy.value*1 == thisyear && mm.value*1 == thismonth)
  { for(i=0;i<today-1;i++)
      dd.options[0] = null;
  }
  dd.selectedIndex = 0;
}

/*************************************/
//         isLeapYear()
/*************************************/
function isLeapYear(year)
{ // the value is leap year?
  var leap = false;
  if(year%400 == 0)
    leap = true;
  else if(year%100 == 0)
    leap = false;
  else if(year%4 == 0)
    leap = true;
  return leap;
}

/*************************************/
//         startAnimation()
/*************************************/
delay = 300;
imgNumber = 0;
totalimgNumber = 6;
animArray = new Array();

for(i=0;i<totalimgNumber; i++)
{ animArray[i] = new Image (338, 17);
  animArray[i].src = '/images/upbars/upbar_' + (i + 1) + '.gif';
}

function switchImage()
{ if(document.images)
    document.images['upanim'].src = animArray[imgNumber].src;
  imgNumber++;
  if(imgNumber >= totalimgNumber)
    imgNumber = 0;
}

function startAnimation()
{ switchImage();
  setTimeout("startAnimation()", delay);
}

/*************************************/
//       showHideJobBlock()
/*************************************/
function showHideJobBlock(job_no)
{ var jobchck = eval('document.submitfrm.jobchk'+job_no);

  var print_size  = eval('document.submitfrm.print_size'+job_no);
  var stock       = eval('document.submitfrm.stock'+job_no);
  var stock_other = eval('document.submitfrm.stock_other'+job_no);
  var quantity    = eval('document.submitfrm.quantity'+job_no);
  var delivery    = eval('document.submitfrm.delivery'+job_no);
  var year        = eval('document.submitfrm.year'+job_no);
  var month       = eval('document.submitfrm.month'+job_no);
  var day         = eval('document.submitfrm.day'+job_no);
  var FILE_f      = eval('document.submitfrm.FILE'+(job_no*2-1));
  var FILE_b      = eval('document.submitfrm.FILE'+(job_no*2));
  var description = eval('document.submitfrm.description'+job_no);

  if(jobchck.checked)
  { var resure = confirm("If you close this window, JOB "+job_no+" will NOT be sent.      \n\n"
                       + "Are you sure you want to close JOB "+job_no+" window?      ");

    if(resure)
    { document.getElementById('jobBlock'+job_no).style.display = 'none';
      document.images['imgJob' + job_no].src = '/images/titles/job_'+job_no+'_exp.gif';
      jobchck.checked = false;
      
      print_size.disabled  = true;
      stock.disabled       = true;
      stock_other.disabled = true;
      quantity.disabled    = true;
      delivery.disabled    = true;
      year.disabled        = true;
      month.disabled       = true;
      day.disabled         = true;
      FILE_f.disabled      = true;
      FILE_b.disabled      = true;
      description.disabled = true;
    }
  }
  else
  { document.getElementById('jobBlock'+job_no).style.display = 'block';
    document.images['imgJob' + job_no].src = '/images/titles/job_'+job_no+'.gif';
    jobchck.checked = true;

    print_size.disabled  = false;
    stock.disabled       = false;
    if(stock.value==1)
      stock_other.disabled = false;
    else
      stock_other.disabled = true;
    quantity.disabled    = false;
    delivery.disabled    = false;
    year.disabled        = false;
    month.disabled       = false;
    day.disabled         = false;
    FILE_f.disabled      = false;
    FILE_b.disabled      = false;
    description.disabled = false;
  
    if(month.value=='')
      validateMonth(month, day, year);
  }
}

/*************************************/
//       jobchkClick()
/*************************************/
function jobchkClick(jobchck, job_no)
{ jobchck.checked = !(jobchck.checked);
  showHideJobBlock(job_no);
}

/*************************************/
//       printSizeChange()
/*************************************/
function printSizeChange(print_size, size_other)
{ if(print_size.value==1)
  { size_other.disabled = false;
    size_other.focus();
  }
  else
  { size_other.value = '';
    size_other.disabled = true;
  }
}

/*************************************/
//       stockSelectionChange()
/*************************************/
function stockSelectionChange(stock, stock_other)
{ if(stock.value==1)
  { stock_other.disabled = false;
    stock_other.focus();
  }
  else
  { stock_other.value = '';
    stock_other.disabled = true;
  }
}
