// Shop --- Quotation --- Arrays of quantities
if (typeof IteBasQuaArr == 'undefined') { var IteBasQuaArr = new Array(); }
if (typeof IteAdvQuaArr == 'undefined') { var IteAdvQuaArr = new Array(); }
if (typeof IteTraQuaArr == 'undefined') { var IteTraQuaArr = new Array(); }

// Shop --- Quotation --- Quantity minus one
function DecNum (Arr, Key)
 {
 if (Arr[Key] > 0)
  {
  Arr[Key] --;
  var EleRem = document.getElementById (Key).childNodes[0];
  document.getElementById (Key).removeChild (EleRem);
  var EleAdd = document.createTextNode (Arr[Key]);
  document.getElementById (Key).appendChild (EleAdd);
  return Arr[Key];
  }
 }

// Shop --- Quotation --- Quantity plus one
function IncNum (Arr, Key)
 {
 if (Arr[Key] < 100)
  {
  Arr[Key] ++;
  var EleRem = document.getElementById (Key).childNodes[0];
  document.getElementById (Key).removeChild (EleRem);
  var EleAdd = document.createTextNode (Arr[Key]);
  document.getElementById (Key).appendChild (EleAdd);
  return Arr[Key];
  }
 }

// Shop --- Quotation --- Store the quantities
function StoNum (Arr, SerCat, Reg)
 {
 for (var Key in Arr)
  {
  var InpNod = document.createElement ('input');
  InpNod.type = 'hidden';
  InpNod.name = 'Ite' + SerCat + 'QuaArr_' + Key;
  InpNod.value = Arr[Key];
  document.getElementById (Reg).appendChild (InpNod);
  }
 var InpNod = document.createElement ('input');
 // The following input is created as the button name and value are not saved with Internet Explorer 6
 InpNod.type = 'hidden';
 InpNod.name = 'QuoSub';
 InpNod.value = SerCat;
 document.getElementById (Reg).appendChild (InpNod);
 }

// Assign a background image to an element
function BackPict (EleIde, BacPic, RepPic)
 {
 document.getElementById (EleIde).style.backgroundImage = 'url(' + BacPic + ')';
 document.getElementById (EleIde).style.backgroundRepeat = RepPic;
 }

// Assign a background color, a position and dimensions to an element
function ElemStyl (Ele, StyRgbBac, StyLef, StyTop, StyWid, StyHei)
 {
 Ele.style.backgroundColor = StyRgbBac;
 Ele.style.position = 'absolute';
 Ele.style.left = StyLef + 'px';
 Ele.style.top = StyTop + 'px';
 Ele.style.width = StyWid + 'px';
 Ele.style.height = StyHei + 'px';
 return Ele.style
 }

// Empty an area orderly which was previously filled with colored rectangles
var EndLoo = 0;
function EmptArea (ParEleIde)
 {
 var TimSte = 0;
 var DivWid = 15;
 var DivHei = 14;
 var DivWidBor = 18;
 var DivHeiBor = 17;
 var OffWid = 3;
 var OffHei = 3;
 var ColNumMax = 46;
 var RowNumMax = 38;
 return (function ()
  {
  var ColNum = Math.round (Math.random () * ColNumMax);
  var RowNum = Math.round (Math.random () * RowNumMax);
  if (ColNum == 0) { var ColPos = 0; }
  else { var ColPos = OffWid + ColNum * DivWid; }
  if (RowNum == 0) { var RowPos = 0; }
  else { var RowPos = OffHei + RowNum * DivHei; }
  var DivEle = document.getElementById ('C'+ColPos+'R'+RowPos);
  if (DivEle != null)
   {
   EndLoo ++;
   document.getElementById (ParEleIde).removeChild (DivEle);
   }
  if (EndLoo != ColNumMax * RowNumMax) { var ConLoo = setTimeout (EmptArea (ParEleIde), TimSte); }
  });
 }

// Fill an area orderly with colored rectangles
function FillArea (ParEleIde)
 {
 var DivWid = 15;
 var DivHei = 14;
 var DivWidBor = 18;
 var DivHeiBor = 17;
 var OffWid = 3;
 var OffHei = 3;
 var ColNumMax = 46;
 var RowNumMax = 38;
 document.getElementById (ParEleIde).style.backgroundColor = 'rgb(196, 76, 0)';
 for (var ColNum = 0; ColNum < ColNumMax; ColNum ++)
  {
  if (ColNum == 0) { var ColPos = 0; }
  else { var ColPos = OffWid + ColNum * DivWid; }
  for (var RowNum = 0; RowNum < RowNumMax; RowNum ++)
   {
   if (RowNum == 0) { var RowPos = 0; }
   else { var RowPos = OffHei + RowNum * DivHei; }
   var DivEle = document.createElement ('div');
   DivEle.id = 'C'+ColPos+'R'+RowPos;
   DivEle.style.backgroundColor = 'rgb(196, 76, 0)';
   DivEle.style.position = 'absolute';
   DivEle.style.left = ColPos + 'px';
   DivEle.style.top = RowPos + 'px';
   if (ColNum == 0 || ColNum == ColNumMax - 1) { DivEle.style.width = DivWidBor + 'px'; }
   else { DivEle.style.width = DivWid + 'px'; }
   if (RowNum == 0 || RowNum == RowNumMax - 1) { DivEle.style.height = DivHeiBor + 'px'; }
   else { DivEle.style.height = DivHei + 'px'; }
   document.getElementById (ParEleIde).appendChild (DivEle);
   }
  }
 }

// Fill an area randomly with colored rectangles
function RandFill (ParEleIde)
 {
 var TimSte = 5;
 var DivWid = 30;
 var DivHei = 28;
 var OffWid = 3;
 var OffHei = 3;
 var ColNum = 22;
 var RowNum = 18;
 var RgbTra = 640;
 var RedMin = 240;
 var GreMin = 192;
 var BluMin = 128;
 var RedNum = RedMin + Math.round (Math.random () * (255 - RedMin));
 var GreNum = GreMin + Math.round (Math.random () * (255 - GreMin));
 var BluNum = BluMin + Math.round (Math.random () * (255 - BluMin));
 return (function ()
  {
  if (RedNum + GreNum + BluNum > RgbTra)
   {
   var RgbBac = 'transparent';
   }
  else
   {
   var RgbBac = 'rgb(' + RedNum + ',' + GreNum + ',' + BluNum + ')';
   }
  var ColPos = OffWid + Math.round (Math.random () * ColNum) * DivWid;
  var RowPos = OffHei + Math.round (Math.random () * RowNum) * DivHei;
  var DivIde = 'ColPos'+ColPos+'RowPos'+RowPos;
  var DivEle = document.getElementById (DivIde)
  if (DivEle == null)
   {
   DivEle = document.createElement ('div');
   ElemStyl (DivEle, RgbBac, ColPos, RowPos, DivWid, DivHei);
   DivEle.id = DivIde;
   document.getElementById (ParEleIde).appendChild (DivEle);
   }
  else
   {
   ElemStyl (DivEle, RgbBac, ColPos, RowPos, DivWid, DivHei);
   }
  var ConLoo = setTimeout (RandFill (ParEleIde), TimSte);
  });
 }

// Place the "Contact" and "Legal" elements at the bottom of the "Body" element
onload = PlaceElement;
function PlaceElement ()
 {
 var HeiRefEle = (document.getElementById ('Body').offsetHeight - 0) + (18 - 0);
 document.getElementById('Contact').style.top = HeiRefEle + 'px';

 var HeiRefEle = (document.getElementById ('Body').offsetHeight - 0) + (102 - 0);
 document.getElementById('Legal').style.top = HeiRefEle + 'px';
 }

// Show and hide elements
function ShowHide (Obj11, Obj12, Obj21, Obj22)
 {
 if (document.getElementById (Obj11) && document.getElementById (Obj12) && document.getElementById (Obj21) && document.getElementById (Obj22))
  {
  document.getElementById (Obj11).style.visibility = 'visible';
  document.getElementById (Obj12).style.visibility = 'hidden';
  if (Obj11 != Obj22 && Obj12 != Obj21 && Obj21 != '' && Obj22 != '')
   {
   document.getElementById (Obj21).style.visibility = 'visible';
   document.getElementById (Obj22).style.visibility = 'hidden';
   }
  }
 }

// Show a picture in an HTML page
function ShowPict (RowStr, IdeNum, RemMsg, ShoMsg)
 {
 // Update the link from "Show Picture" to "Remove Picture"
 var LinIde = 'Link' + IdeNum;
 document.getElementById (LinIde).href = 'javascript:RemoPict (\'' + RowStr + '\', \'' + IdeNum + '\', \'' + RemMsg + '\', \'' + ShoMsg + '\')';
 document.getElementById (LinIde).childNodes[0].nodeValue = RemMsg;
 // Show the picture
 var ParNodIde = 'Cont' + IdeNum;
 var PicNod = document.createElement ('div');
 PicNod.className = RowStr + '-' + IdeNum;
 PicNod.id = 'Pict' + IdeNum;
 document.getElementById (ParNodIde).appendChild (PicNod);
 // Place the "Contact" and "Legal" elements at the bottom of the "Body" element
 PlaceElement ();
 }

// Remove a picture from an HTML page
function RemoPict (RowStr, IdeNum, RemMsg, ShoMsg)
 {
 // Update the link from "Remove Picture" to "Show Picture"
 var LinIde = 'Link' + IdeNum;
 document.getElementById (LinIde).href = 'javascript:ShowPict (\'' + RowStr + '\', \'' + IdeNum + '\', \'' + RemMsg + '\', \'' + ShoMsg + '\')';
 document.getElementById (LinIde).childNodes[0].nodeValue = ShoMsg;
 // Remove the picture
 var ParNodIde = 'Cont' + IdeNum;
 var PicNodIde = 'Pict' + IdeNum;
 var PicNod = document.getElementById (PicNodIde);
 document.getElementById (ParNodIde).removeChild (PicNod);
 // Place the "Contact" and "Legal" elements at the bottom of the "Body" element
 PlaceElement ();
 }

// Show a list in an HTML page
function ShowList (IdeNum, RemMsg, ShoMsg)
 {
 // Update the link from "Show list" to "Remove list"
 var LinIde = 'Link' + IdeNum;
 document.getElementById (LinIde).href = 'javascript:RemoList (\'' + IdeNum + '\', \'' + RemMsg + '\', \'' + ShoMsg + '\')';
 document.getElementById (LinIde).childNodes[0].nodeValue = RemMsg;
 // Get the data
 var TexArr	= new Array ();
 eval ('List' + IdeNum + ' (TexArr)');
 // Show the list
 var ParNodIde = 'Cont' + IdeNum
 var ParLisNod = document.createElement ('ul');
 ParLisNod.className = 'Body';
 ParLisNod.id = 'List' + IdeNum;
 document.getElementById (ParNodIde).appendChild (ParLisNod);
 for (var RowNum = 0; RowNum < TexArr.length; RowNum ++)
  {
  var LisNod = document.createElement ('li');
  LisNod.className = 'Body';
  LisNod.id = 'List' + IdeNum + RowNum;
  var LisVal = document.createTextNode (TexArr[RowNum]);
  LisNod.appendChild (LisVal);
  ParLisNod.appendChild (LisNod);
  }
 // Place the "Contact" and "Legal" elements at the bottom of the "Body" element
 PlaceElement ();
 }

// Remove a list from an HTML page
function RemoList (IdeNum, RemMsg, ShoMsg)
 {
 // Update the link from "Remove list" to "Show list"
 var LinIde = 'Link' + IdeNum;
 document.getElementById (LinIde).href = 'javascript:ShowList (\'' + IdeNum + '\', \'' + RemMsg + '\', \'' + ShoMsg + '\')';
 document.getElementById (LinIde).childNodes[0].nodeValue = ShoMsg;
 // Get the data
 var TexArr	= new Array ();
 eval ('List' + IdeNum + ' (TexArr)');
 // Remove the list
 var ParLisNod = document.getElementById ('List' + IdeNum);
 for (var RowNum = 0; RowNum < TexArr.length; RowNum ++)
  {
  var LisNod = document.getElementById ('List' + IdeNum + RowNum)
  ParLisNod.removeChild (LisNod);
  }
 var ParNodIde = 'Cont' + IdeNum
 document.getElementById (ParNodIde).removeChild (ParLisNod);
 // Place the "Contact" and "Legal" elements at the bottom of the "Body" element
 PlaceElement ();
 }

// Check a decimal color value
function DecCheck (DecNum)
 {
 if (DecNum == '') { DecNum = '000'; }
 if (/\D/.test(DecNum)) { DecNum = '255'; }
 if ((DecNum - 0) > 255) { DecNum = '255'; }
 return DecNum;
 }

// Check an hexadecimal color value
function HexCheck (HexNum)
 {
 if (HexNum == '') { HexNum = '00'; }
 if (/[^\dabcdef]+/i.test(HexNum)) { HexNum = 'FF'; }
 if (HexNum.length > 2) { HexNum = 'FF'; }
 return HexNum;
 }

// Format a decimal number
function DecFormat (DecNum)
 {
 if ((DecNum + '').length == 1) { DecNum = '00' + DecNum; }
 if ((DecNum + '').length == 2) { DecNum = '0' + DecNum; }
 return DecNum;
 }

// Format an hexadecimal number
function HexFormat (HexNum)
 {
 HexNum = HexNum.toUpperCase();
 if (HexNum.length == 1) { HexNum = '0' + HexNum; }
 return HexNum;
 }

// Convert a decimal number to an hexadecimal number
function Dec2Hex (DecNum)
 {
 var HexArr = new Array (6);
 var DecArr = new Array (6);
 HexArr[0] = 'A'; DecArr[0] = '10';
 HexArr[1] = 'B'; DecArr[1] = '11';
 HexArr[2] = 'C'; DecArr[2] = '12';
 HexArr[3] = 'D'; DecArr[3] = '13';
 HexArr[4] = 'E'; DecArr[4] = '14';
 HexArr[5] = 'F'; DecArr[5] = '15';
 var HexNum000 = DecNum % 16;
 var HexNum001 = (DecNum - DecNum % 16) / 16;
 for (var IndNum = 0; IndNum < DecArr.length; IndNum ++)
  {
  if (HexNum000 == DecArr[IndNum]) { HexNum000 = HexArr[IndNum]; }
  if (HexNum001 == DecArr[IndNum]) { HexNum001 = HexArr[IndNum]; }
  }
 var HexNum = (HexNum001 + '') + (HexNum000 + '');
 return HexNum;
 }

// Convert an hexadecimal number to a decimal number
function Hex2Dec (HexNum)
 {
 var HexArr = new Array (6);
 var DecArr = new Array (6);
 HexArr[0] = 'A'; DecArr[0] = '10';
 HexArr[1] = 'B'; DecArr[1] = '11';
 HexArr[2] = 'C'; DecArr[2] = '12';
 HexArr[3] = 'D'; DecArr[3] = '13';
 HexArr[4] = 'E'; DecArr[4] = '14';
 HexArr[5] = 'F'; DecArr[5] = '15';
 var HexNum000 = HexNum.substr (1,1);
 var HexNum001 = HexNum.substr (0,1);
 for (var IndNum = 0; IndNum < HexArr.length; IndNum ++)
  {
  if (HexNum000 == HexArr[IndNum]) { HexNum000 = DecArr[IndNum]; }
  if (HexNum001 == HexArr[IndNum]) { HexNum001 = DecArr[IndNum]; }
  }
 var DecNum = (HexNum001 - 0) * 16 + (HexNum000 - 0);
 return DecFormat (DecNum);
 }

// Show a selected color
function ColorChart (ColCha)
 {
 var BacCol = document.getElementById (ColCha).style.backgroundColor;
 ColorShow ('ColOld001', 'ColNew001', BacCol)
 ColorShow ('ColOld002', 'ColNew002', BacCol)
 if (/^rgb\(\d+\,\s?\d+\,\s?\d+\)$/.test (BacCol))
  {
  var DecColArr = new Array (3);
  DecColArr = BacCol.match (/\d+/g);
  document.getElementById ('DecRed').value = DecFormat (DecColArr[0]);
  document.getElementById ('DecGre').value = DecFormat (DecColArr[1]);
  document.getElementById ('DecBlu').value = DecFormat (DecColArr[2]);
  document.getElementById ('HexRed').value = Dec2Hex (document.getElementById ('DecRed').value);
  document.getElementById ('HexGre').value = Dec2Hex (document.getElementById ('DecGre').value);
  document.getElementById ('HexBlu').value = Dec2Hex (document.getElementById ('DecBlu').value);
  }
 if (/^#[\dabcdef]{6}$/i.test (BacCol))
  {
  document.getElementById ('HexRed').value = HexFormat (BacCol.substr (1,2));
  document.getElementById ('HexGre').value = HexFormat (BacCol.substr (3,2));
  document.getElementById ('HexBlu').value = HexFormat (BacCol.substr (5,2));
  document.getElementById ('DecRed').value = Hex2Dec (document.getElementById ('HexRed').value);
  document.getElementById ('DecGre').value = Hex2Dec (document.getElementById ('HexGre').value);
  document.getElementById ('DecBlu').value = Hex2Dec (document.getElementById ('HexBlu').value);
  }
 }

// Decimal - hexadecimal color code conversion
function ColorConvert (ButVal)
 {
 if (ButVal == 'DecHex')
  {
  document.getElementById ('DecRed').value = DecCheck (document.getElementById ('DecRed').value);
  document.getElementById ('DecGre').value = DecCheck (document.getElementById ('DecGre').value);
  document.getElementById ('DecBlu').value = DecCheck (document.getElementById ('DecBlu').value);
  document.getElementById ('DecRed').value = DecFormat (document.getElementById ('DecRed').value);
  document.getElementById ('DecGre').value = DecFormat (document.getElementById ('DecGre').value);
  document.getElementById ('DecBlu').value = DecFormat (document.getElementById ('DecBlu').value);
  document.getElementById ('HexRed').value = Dec2Hex (document.getElementById ('DecRed').value);
  document.getElementById ('HexGre').value = Dec2Hex (document.getElementById ('DecGre').value);
  document.getElementById ('HexBlu').value = Dec2Hex (document.getElementById ('DecBlu').value);
  var BacCol = 'rgb(' + (document.getElementById ('DecRed').value - 0) + ',' + (document.getElementById ('DecGre').value - 0) + ',' + (document.getElementById ('DecBlu').value - 0) + ')';
  ColorShow ('ColOld001', 'ColNew001', BacCol)
  ColorShow ('ColOld002', 'ColNew002', BacCol)
  }
 if (ButVal == 'HexDec')
  {
  document.getElementById ('HexRed').value = HexCheck (document.getElementById ('HexRed').value);
  document.getElementById ('HexGre').value = HexCheck (document.getElementById ('HexGre').value);
  document.getElementById ('HexBlu').value = HexCheck (document.getElementById ('HexBlu').value);
  document.getElementById ('HexRed').value = HexFormat (document.getElementById ('HexRed').value);
  document.getElementById ('HexGre').value = HexFormat (document.getElementById ('HexGre').value);
  document.getElementById ('HexBlu').value = HexFormat (document.getElementById ('HexBlu').value);
  document.getElementById ('DecRed').value = Hex2Dec (document.getElementById ('HexRed').value);
  document.getElementById ('DecGre').value = Hex2Dec (document.getElementById ('HexGre').value);
  document.getElementById ('DecBlu').value = Hex2Dec (document.getElementById ('HexBlu').value);
  var BacCol = 'rgb(' + (document.getElementById ('DecRed').value - 0) + ',' + (document.getElementById ('DecGre').value - 0) + ',' + (document.getElementById ('DecBlu').value - 0) + ')';
  ColorShow ('ColOld001', 'ColNew001', BacCol)
  ColorShow ('ColOld002', 'ColNew002', BacCol)
  }
 }

// Show the current and previous colors
function ColorShow (ColOld, ColNew, BacCol)
 {
 if (document.getElementById (ColOld) && document.getElementById (ColNew))
  {
  document.getElementById (ColOld).style.backgroundColor = document.getElementById (ColNew).style.backgroundColor;
  document.getElementById (ColNew).style.backgroundColor = BacCol;
  if (/^rgb\(\d+\,\s?\d+\,\s?\d+\)$/.test (document.getElementById (ColOld).style.backgroundColor))
   {
   var DecOldArr = new Array (3);
   var DecNewArr = new Array (3);
   DecOldArr = document.getElementById (ColOld).style.backgroundColor.match (/\d+/g);
   DecNewArr = document.getElementById (ColNew).style.backgroundColor.match (/\d+/g);
   var DecRedOld = DecFormat (DecOldArr[0]);
   var DecGreOld = DecFormat (DecOldArr[1]);
   var DecBluOld = DecFormat (DecOldArr[2]);
   var DecRedNew = DecFormat (DecNewArr[0]);
   var DecGreNew = DecFormat (DecNewArr[1]);
   var DecBluNew = DecFormat (DecNewArr[2]);
   var HexRedOld = Dec2Hex (DecRedOld);
   var HexGreOld = Dec2Hex (DecGreOld);
   var HexBluOld = Dec2Hex (DecBluOld);
   var HexRedNew = Dec2Hex (DecRedNew);
   var HexGreNew = Dec2Hex (DecGreNew);
   var HexBluNew = Dec2Hex (DecBluNew);
   }
  if (/^#[\dabcdef]{6}$/i.test (document.getElementById (ColOld).style.backgroundColor))
   {
   var HexRedOld = HexFormat (document.getElementById (ColOld).style.backgroundColor.substr (1,2));
   var HexGreOld = HexFormat (document.getElementById (ColOld).style.backgroundColor.substr (3,2));
   var HexBluOld = HexFormat (document.getElementById (ColOld).style.backgroundColor.substr (5,2));
   var HexRedNew = HexFormat (document.getElementById (ColNew).style.backgroundColor.substr (1,2));
   var HexGreNew = HexFormat (document.getElementById (ColNew).style.backgroundColor.substr (3,2));
   var HexBluNew = HexFormat (document.getElementById (ColNew).style.backgroundColor.substr (5,2));
   var DecRedOld = Hex2Dec (HexRedOld);
   var DecGreOld = Hex2Dec (HexGreOld);
   var DecBluOld = Hex2Dec (HexBluOld);
   var DecRedNew = Hex2Dec (HexRedNew);
   var DecGreNew = Hex2Dec (HexGreNew);
   var DecBluNew = Hex2Dec (HexBluNew);
   }
  document.getElementById (ColOld).style.color = FontColor (DecRedOld, DecGreOld, DecBluOld);
  document.getElementById (ColNew).style.color = FontColor (DecRedNew, DecGreNew, DecBluNew);
  document.getElementById (ColOld).childNodes[0].nodeValue = '#' + HexRedOld + HexGreOld + HexBluOld + ' (R=' + DecRedOld + ' G=' + DecGreOld + ' B=' + DecBluOld + ')';
  document.getElementById (ColNew).childNodes[0].nodeValue = '#' + HexRedNew + HexGreNew + HexBluNew + ' (R=' + DecRedNew + ' G=' + DecGreNew + ' B=' + DecBluNew + ')';
  }
 }

// Select a relevant font color
function FontColor (DecRed, DecGre, DecBlu)
 {
 var FonCol = '';
 if ((DecRed - 0) + (DecGre - 0) + (DecBlu - 0) < 256)
  {
  FonCol = '#CCCCCC';
  }
 else
  {
  FonCol = '#333333';
  }
 return FonCol;
 }

