/*
            To add a column to db you need to change the following:
1. Add global variable for new column
2. Add column variable to drawing function
3. Increase the "minus' variable by the number of new columns

There should be as many column rows as category rows in the text files
*/

//Glogal Variables

//First DB Load Function ( Menu Control File )
var minus=0;
var dbarray= new Array();
var NoOfLines=0;
var NoOfFields=0;
var no1=0;//Categories
var no2=0;//Description
var no3=0;//Number of Columns
var no4=0;//Number of Items
//var no5=0;//Column Label Y or N
var numline=0;

//Second DB Load Function ( Menu Items )
var minus1=0;
var dbarray1= new Array();
var NoOfLines1=0;
var NoOfFields1=0;
var no1_1=0;//description
var no2_1=0;//price1
var no3_1=0;//price2
var no4_1=0;//price3
var no5_1=0;//price4
var numline1=0;

//Third DB Load Function ( Column Labels )
var minus2=0;
var dbarray2= new Array();
var NoOfLines2=0;
var NoOfFields2=0;
var no1_2=0;//Column Label 1
var no2_2=0;//Column Label 2
var no3_2=0;//Column Label 3
var no4_2=0;//Column Label 4
var numline2=0;

function removeSpaces(string) {
 return string.split(' ').join('');
}

function removeNL(s) {
  //
  // Remove NewLine, CarriageReturn and Tab characters from a String
  //   s  string to be processed
  // returns new string
  //

  r = "";
  for (i=0; i < s.length; i++) {
    if (s.charAt(i) != '\n' &&
        s.charAt(i) != '\r' &&
        s.charAt(i) != '\t') {
      r += s.charAt(i);
      }
    }
  return r;
  }

//Load Control File
function ReadDbLoadToArrays(){

var xml=false;

// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects. it works in IE and Mozilla
 try {
  xml = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xml = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xml = false;
  }
 }
if (!xml && typeof XMLHttpRequest!='undefined') {
  xml = new XMLHttpRequest(); //alert("MOZILLA");
}else {   }//ie alert("not MOZILLA");
// xml.open("GET",""+document.title+"/"+document.title+".txt", false); xml.send(null);         //Original
xml.open("GET",""+"MainMenu_Items/menuControl.txt", false); xml.send(null);

var readtext=xml.responseText;

dbarray=readtext.split("~");
NoOfLines=(dbarray.length - 2)/4; //Divide by number of fields
NoOfFields=dbarray.length - 1;
}

//Load Menu Items
function ReadDbLoadToArrays1(){

var xml=false;

// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects. it works in IE and Mozilla
 try {
  xml = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xml = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xml = false;
  }
 }
if (!xml && typeof XMLHttpRequest!='undefined') {
  xml = new XMLHttpRequest(); //alert("MOZILLA");
}else {   }//ie alert("not MOZILLA");
// xml.open("GET",""+document.title+"/"+document.title+".txt", false); xml.send(null);         //Original
xml.open("GET",""+"MainMenu_Items/menuItems.txt", false); xml.send(null);
var readtext1=xml.responseText;

dbarray1=readtext1.split("~");
NoOfLines1=(dbarray1.length - 2)/4; //Divide by number of fields
NoOfFields1=dbarray1.length - 1;
}

//Load Column Labels
function ReadDbLoadToArrays2(){

var xml=false;

// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects. it works in IE and Mozilla
 try {
  xml = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xml = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xml = false;
  }
 }
if (!xml && typeof XMLHttpRequest!='undefined') {
  xml = new XMLHttpRequest(); //alert("MOZILLA");
}else {   }//ie alert("not MOZILLA");
// xml.open("GET",""+document.title+"/"+document.title+".txt", false); xml.send(null);         //Original
xml.open("GET",""+"MainMenu_Items/priceColumnLabels.txt", false); xml.send(null);
var readtext2=xml.responseText;

dbarray2=readtext2.split("~");
NoOfLines2=(dbarray2.length - 2)/4; //Divide by number of fields
NoOfFields2=dbarray2.length - 1;
}

//Draw the table
function DrawProductsTablesFromDBArray(){
minus=4; //Skip first row of Control File  = Number of Columns
minus1=5; //Skip first row of Menu Items = Number of Columns
minus2=4; //Skip first row of Column Labels = Number of Columns
var i = 0; //Counter for items, we don't want it to reset

//
var basketbar='';
var newtable='';
var labelExists='false';
//



// Loop through ControlFile db skipping first row.
for (var ii = 0; ii <= NoOfLines-1; ii++)//ii is line number
{

//Control File
labelExists='false';
no1=eval(ii + 0 + minus);
no2=eval(ii + 1 + minus);
no3=eval(ii + 2 + minus);
no4=eval(ii + 3 + minus);

//Column Labels
no1_2=eval(ii + 0 + minus2);
no2_2=eval(ii + 1 + minus2);
no3_2=eval(ii + 2 + minus2);
no4_2=eval(ii + 3 + minus2);

newtable='<table width=497 border=0 cellpadding=4 cellspacing=0 height=22>'+
' <tr><td align=right width=492>'+
'  <h1 style=text-align:left>'+removeNL(dbarray[no1])+'</h1></td>' +
'<td width=5 height=1 valign=top><a href=javascript:void(0); onclick=switchVisibility("'+removeSpaces(removeNL(dbarray[no1]))+'")>[hide/show]</a></td></tr>'+
'<tr><td colspan=2 valign=top> <p class=MsoNormal align=center style=text-align:left>'+ '  <span style=font-size:11.0pt>'+removeNL(dbarray[no2])+'</span></p></td>'+
'</table>'+
'<div id="'+removeSpaces(removeNL(dbarray[no1]))+'" style="display:none">'+
'<table width=497 border=0 cellpadding=2 cellspacing=0>';
basketbar=basketbar+newtable;
minus=minus+3; //The plus is = to columns - 1
minus2=minus2+3; //The plus is = to columns - 1

// Loop through Menu Item db skipping first row.
// We need to get the number of specified items and drop out 
var counter1=1;
for (i; i <= NoOfLines1-1; i++)//i is line number
{
//Menu Items
no1_1=eval(i + 0 + minus1);
no2_1=eval(i + 1 + minus1);
no3_1=eval(i + 2 + minus1);
no4_1=eval(i + 3 + minus1);
no5_1=eval(i + 4 + minus1);


//Column Labels
if (labelExists=='false'){
switch(dbarray[no3]){ //3rd value from control file
case "1":
if (dbarray2[no1_2].length > 1){  //Prevent blank column label
newtable=' <tr><td align=left width=411>'+
' <font size=2>&nbsp;</font></td>'+
' <td align=right width=54><font size=1>'+dbarray2[no1_2]+'&nbsp; &nbsp;</font></td></tr>';
basketbar=basketbar+newtable;
labelExists='True';
}
break;

case "2":
if (dbarray2[no1_2].length > 1){
newtable=' <tr><td align=left width=411>'+
' <font size=2>&nbsp;</font></td>'+
' <td align=right width=54><font size=1>'+dbarray2[no1_2]+'&nbsp; &nbsp;</font></td>'+
' <td align=right width=54><font size=1>'+dbarray2[no2_2]+'&nbsp; &nbsp;</font></td></tr>';
basketbar=basketbar+newtable;
labelExists='True';
}
break;

case "3":
if (dbarray2[no1_2].length > 1){
newtable=' <tr><td align=left width=411>'+
' <font size=2>&nbsp;</font></td>'+
' <td align=right width=54><font size=1>'+dbarray2[no1_2]+'&nbsp; &nbsp;</font></td>'+
' <td align=right width=54><font size=1>'+dbarray2[no2_2]+'&nbsp; &nbsp;</font></td>'+
' <td align=right width=54><font size=1>'+dbarray2[no3_2]+'&nbsp; &nbsp;</font></td></tr>';
basketbar=basketbar+newtable;
labelExists='True';
}
break;

case "4":
if (dbarray2[no1_2].length > 1){
newtable=' <tr><td align=left width=411>'+
' <font size=2>&nbsp;</font></td>'+
' <td align=right width=54><font size=1>'+dbarray2[no1_2]+'&nbsp; &nbsp;</font></td>'+
' <td align=right width=54><font size=1>'+dbarray2[no2_2]+'&nbsp; &nbsp;</font></td>'+
' <td align=right width=54><font size=1>'+dbarray2[no3_2]+'&nbsp; &nbsp;</font></td>'+
' <td align=right width=54><font size=1>'+dbarray2[no4_2]+'&nbsp; &nbsp;</font></td></tr>';
basketbar=basketbar+newtable;
labelExists='True';
}
break;
}
}


//Column Data
switch(dbarray[no3]){
case "1":
newtable=' <tr><td align=left width=411>'+
' <font size=2>'+dbarray1[no1_1]+'</font></td>'+
' <td align=right width=54><font size=2>$'+dbarray1[no2_1]+'</font></td></tr>';
break;

case "2":
newtable=' <tr><td align=left width=411>'+
'  <font size=2>'+dbarray1[no1_1]+'</font></td>'+
                              '<td width=82><font size=2>$'+dbarray1[no2_1]+'</td>'+
                              '<td width=75><font size=2>$'+dbarray1[no3_1]+'</td></tr>';
break;

case "3":
newtable=' <tr><td align=left width=346>'+
                              '<font size=2>'+dbarray1[no1_1]+'</font></td>'+
                              '<td width=82 align=right><font size=2>$'+dbarray1[no2_1]+'</font></td>'+
                              '<td width=75 align=right><font size=2>$'+dbarray1[no3_1]+'</font></td>'+
                              '<td width=70 align=right><font size=2>$'+dbarray1[no4_1]+'</font></td></tr>';
break;

case "4":
newtable=' <tr><td align=left width=411>'+
'  <font size=2>'+dbarray1[no1_1]+'</font></td>'+
                              '<td width=82><font size=2>$'+dbarray1[no2_1]+'</font></td>'+
                              '<td width=75><font size=2>$'+dbarray1[no3_1]+'</font></td>'+
                              '<td width=70><font size=2>$'+dbarray1[no4_1]+'</font></td>'+
                              '<td width=70><font size=2>$'+dbarray1[no5_1]+'</font></td></tr>';
break;
}



basketbar=basketbar+newtable;
minus1=minus1+4; //The plus is = to columns - 1
// If counter = specified number of items, drop out
if (counter1==dbarray[no4]) { //if counter = defined number of items, We got all the items, do next category
  minus1=minus1+1;
  break;}
counter1++;
}
newtable='</table>'+
'</div>'+
'<p>&nbsp;</p>';
basketbar=basketbar+newtable;
}

var html=basketbar;
//alert(html);

if (document.getElementById)
{ document.getElementById('layer1').innerHTML= html; }
else { with (document.layers['layer1'].document)
 { open();
 write(html); close();
}
}
}

//Execute Functions from this point
ReadDbLoadToArrays();
ReadDbLoadToArrays1();
ReadDbLoadToArrays2();
DrawProductsTablesFromDBArray()
