function submit_action(action)
{
  document.jsform1.action.value=action;
  document.jsform1.submit();
}

function reset()
{
  document.jsform1.reset();
}

function submit_action2(action)
{
  document.jsform2.action.value=action;
  document.jsform2.submit();
}

function reset2()
{
  document.jsform2.reset();
}


function submit_window_action(action)
{
  document.jsform1.action.value=action;
  document.jsform1.submit();
  window.close();
}

function submit_sub_action2(sub_action)
{
  document.jsform1.sub_action.value=sub_action;
  document.jsform1.submit();
}

function submit_sub_action3(action, sub_action)
{
  document.jsform1.action.value=action;
  document.jsform1.sub_action.value=sub_action;
  document.jsform1.submit();
}

function submit_sub_action(obj,subaction,key,value)
{
  document.jsform1.object.value=obj;
  document.jsform1.sub_action.value=subaction;
  document.jsform1.key.value=key;
  document.jsform1.value.value=value;
  document.jsform1.submit();
}

function submit_serv_sub_action(obj,action,subaction,key,value)
{
  document.jsform1.object.value=obj;
  document.jsform1.action.value=action;
  document.jsform1.sub_action.value=subaction;
  document.jsform1.key.value=key;
  document.jsform1.value.value=value;
  document.jsform1.submit();
}

/**
 * The below functions are tailor-made for customized contact us form submission. Two extra arrays are added for special feature management
 *
 * 1.exfields is a 2D array used to house additional field references to customized
 *   contact us info. Upon submission, such additional fields will be concat to MSG textarea element
 *   Each array element stores the name and the caption of one extra field
 *   For each extra field,
 *     Element 0 - Fieldname
 *     Element 1 - Caption of the field
 * 2.nnfields is also a 2D array used to house the mandatory fields for which the visitor has to be filled before submission
 *   Upon submission, the program will first to check whether all the stated mandatory fields are filled or not.
 *   if not so, an alert dialog will display to remind the visitor.
 *   Each array element stores the name and the caption of one mandatory field
 *   For each mandatory field,
 *     Element 0 - Fieldname
 *     Element 1 - Caption of the field
 */
var exfields=new Array();
var nnfields=new Array();
function addExtraField(name,caption) { exfields[exfields.length]=[name,caption]; }
function addMandatoryField(name,caption) { nnfields[nnfields.length]=[name,caption]; }
function submit_contactus(obj,action,key,value)
{
  var err='';
  for (var i=0;i<nnfields.length;i++) {
    var o=document.jsform1.elements[nnfields[i][0]];
    if (!o.value||o.value=='') {
      err+='- '+nnfields[i][1]+'\n';
    }
  }
  if (err!='') {
    alert('The following field(s) are mandatory:\n'+err);
    return;
  }
  var str='';
  for (var i=0;i<exfields.length;i++) {
    str+=exfields[i][1]+': '+document.jsform1.elements[exfields[i][0]].value+'\n';
  }
  if (str!='') document.jsform1.MSG.value=str+'\n'+document.jsform1.MSG.value;
  submit_serv_action(obj,action,key,value);
}

function submit_serv_action(obj,action,key,value)
{
  document.jsform1.object.value=obj;
  document.jsform1.action.value=action;
  document.jsform1.key.value=key;
  document.jsform1.value.value=value;
  document.jsform1.submit();
}

function submit_page(obj,page)
{
  document.jsform1.object.value=obj;
  document.jsform1.pageNo.value=page;
  document.jsform1.sub_action.value='default';
  document.jsform1.submit();
}

function confirm_upload(action, fieldname, newname, displayname, oldname) {
  self.opener.document.jsform1.elements[fieldname].value=newname;
  self.opener.document.jsform1.elements[displayname].value=oldname;
  submit_action(action);
  //window.close();
}

function cancel_upload(action) {
  submit_action(action);
  //window.setTimeout('window.close()', 100);
}

function loadImages() {
  if (document.getElementById) {  // DOM3 = IE5, NS6
    document.getElementById('hidepage').style.visibility = 'hidden';
  }
  else {
    if (document.layers) {  // Netscape 4
      document.hidepage.visibility = 'hidden';
    }
    else {  // IE 4
      document.all.hidepage.style.visibility = 'hidden';
    }
  }
}

function transit_action(obj,action,key) {
//  var leafcat  = document.jsform1.cat_drop_down_select.value.substring(0,1);
//  var catvalue = document.jsform1.cat_drop_down_select.value.substring(2);
  if ( document.jsform1.cat_drop_down_select[document.jsform1.cat_drop_down_select.selectedIndex].value == -1 ) return;
  var leafcat  = document.jsform1.cat_drop_down_select[document.jsform1.cat_drop_down_select.selectedIndex].value.substring(0,1);
  var level    = parseInt(document.jsform1.cat_drop_down_select[document.jsform1.cat_drop_down_select.selectedIndex].value.substring(2,4),10);
  var catvalue = document.jsform1.cat_drop_down_select[document.jsform1.cat_drop_down_select.selectedIndex].value.substring(5);
  var target   = leafcat == '1' ? 'prod_list' : 'sub_cat';
  submit_serv_action(level,target+action,key,catvalue);
}

function cdrom_transit_action(currloc,obj,action,key) {
//  var leafcat  = document.jsform1.cat_drop_down_select.value.substring(0,1);
//  var catvalue = document.jsform1.cat_drop_down_select.value.substring(2);
  var leafcat  = document.jsform1.cat_drop_down_select[document.jsform1.cat_drop_down_select.selectedIndex].value.substring(0,1);
  var level    = parseInt(document.jsform1.cat_drop_down_select[document.jsform1.cat_drop_down_select.selectedIndex].value.substring(2,4),10);
  var catvalue = document.jsform1.cat_drop_down_select[document.jsform1.cat_drop_down_select.selectedIndex].value.substring(5);
  var target   = leafcat == '1' ? 'prod_list' : 'sub_cat';
  window.location= currloc + "_" + target + "_" + catvalue + ".html";
}

function transit_action1(obj,leafcat,catvalue,action,key) {
  var target   = leafcat == '1' ? 'prod_list' : 'sub_cat';
  submit_serv_action(obj,target+action,key,catvalue);
}

function change_language(value) {
  document.jsform1.new_language.value = value;
  document.jsform1.submit();
}

function submit_service(target) {
  var obj    = '';
  var key    = '';
  var action = '#diyhp.cgibean.storefront.content.XMLContentMenu#diyhp.cgibean.storefront.control.XMLControlMenu';
  var value  = '';
  submit_serv_action(obj,target+action,key,value);
}

function open_window(url)
{
   open_window(url, "pop",false,false);
}

function cdrom_open_window(url)
{
   open_window(url, "pop",true,false);
}

function open_window(url, win, cdrom) {
   open_window(url, "pop",cdrom,false);
}
function open_window(url, win, cdrom,disablerightclick)
{
  var y=url.indexOf("#");
  while (y!=-1) {
    url=url.substring(0,y)+"%23"+url.substring(y+1);
    y=url.indexOf("#");
  }
  var drc="";
  if (disablerightclick) {
    drc="&disablerightclick=true";
  }
  if ( cdrom ) {
    window.open(url, win, "toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=1,resizable=1,width=790,height=500").focus();
  } else if ( url.indexOf(".jpg") != -1 || url.indexOf(".jpe") != -1 || url.indexOf(".gif") != -1 ) {
    window.open("/diyhp/jsp/sf_popup.jsp?img="+url+drc, win, "toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=1,resizable=1,width=790,height=500").focus();
  } else {
    window.open(url, win, "toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=1,resizable=1,width=790,height=500").focus();
  }
}
/* struts format */
function submitPage(exec,dp) {
  document.cartform.exec.value=exec;
  if (dp) document.cartform.dispatch.value=dp;
  document.cartform.submit();
}
function swImg(o,over) {
  if (over) {
    o.src=o.src.replace('_but','_but_over');
    o.style.cursor='pointer';
  } else o.src=o.src.replace('_but_over','_but');
}
function swButton(o,over) {
  if (over) {
    o.innerHTML=o.innerHTML.replace('_but','_but_over');
    o.style.cursor='pointer';
  } else o.innerHTML=o.innerHTML.replace('_but_over','_but');
}
function popupCart(sid,dp,ex,p) {
  var l='/site.do?shop_id='+sid+'&dispatch='+dp+'&exec='+ex;
  if (p) l+=p;
  l+='&pk='+new Date().getTime();
  var pr='hotkeys=0,toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=1,resizable=1,top=0,left=0,width=800,height=600';
  var w=open(l,'cartsystem'+sid,pr);
  w.focus();
}
function submitCartAction(sid,dp,ex) {
  var f=document.jsform1,chk=false,p='';
  if (dp=='cart'&&ex=='view') chk=true;
  else {
    if (dp=='order'||dp=='basket') {
      var err=valid_order(f.product_id);
      if (err) {
        alert('Failed to execute your request w/- the following exception detected:\n\n'+err);
        return;
      }
    }
    for (var i=0;i<f.elements.length;i++) {
      var o=f.elements[i];
      if (o.name=='product_id'&&(o.checked||o.type.toLowerCase()=='hidden')) {
        p+='&product_id='+o.value;
        chk=true;
      } else if (o.name.indexOf('odr_qty_')==0) p+='&'+o.name+'='+o.value;
    }
  }
  if (!chk) alert('No items were selected!');
  else {
    if (dp=='basket') {
      if (ex=='prod_details')
        submit_serv_action('','add#diyhp.cgibean.storefront.content.XMLContentProductDetails#diyhp.cgibean.storefront.control.XMLControlSection2','','');
      else {
        submit_serv_action('',sid+'#'+ex+'#diyhp.cgibean.storefront.control.XMLControlSection2','','');
      }
    } else popupCart(sid,dp,ex,p);
  }
}
function valid_order(pid) {
  if (typeof ilist == "undefined") return null;
  var apid=new Array();
  if (!pid.length) {
    if ((pid.checked||pid.type.toLowerCase()=='hidden')&&document.jsform1.elements['odr_qty_'+pid.value]) 
      apid[0]=pid.value;
  } else {
    for (var i=0;i<pid.length;i++) {
      if (pid[i].checked&&document.jsform1.elements['odr_qty_'+pid[i].value]) 
        apid[apid.length]=pid[i].value;
    }
  }
  if (apid.length==0) return null;
  var err='',cnt=1;
  for (var i=0;i<apid.length;i++) {
    for (var j=1;j<ilist.length;j++) {
      var min=ilist[j].min_qty?parseInt(ilist[j].min_qty):1;
      var max=ilist[j].max_qty?parseInt(ilist[j].max_qty):-1;
      if (apid[i]==ilist[j].product_id) {
        var cqty=document.jsform1.elements['odr_qty_'+apid[i]].value;
        var qty=parseInt(cqty);
        if (isNaN(qty))
          err+=(cnt++)+'. '+ilist[j].product_name+' - Invalid Number\n';
        else if (qty!=parseFloat(cqty))
          err+=(cnt++)+'. '+ilist[j].product_name+' - Order qty must be positive integer\n';
        else if (qty<min)
          err+=(cnt++)+'. '+ilist[j].product_name+' - Minimum order qty is '+min+'\n';
        else if (max!=-1&&qty>max)
          err+=(cnt++)+'. '+ilist[j].product_name+' - Available qty is '+max+'\n';
        break;
      }
    }
  }
  return err;
}
