﻿    var showDebug = 0;  //0:close debug, //2: to open debug
    var G_TO_ML = 4.326400E+000;
    var LITRES_TO_GALONS = 3.785000E+000;
    var MAX_PPM_AMOUNT = 2500;
    var PPM_GRAPH_SPACING = 2;
    var carboText = "To use Carboload Liquid multiply the g. quantity by 3.333 to get ml.";
    var bigbudText = "To use Big Bud Liquid multiply the g. quantity by 10 to get ml.";
    var carboTextUS = "To use Carboload Liquid multiply the oz. quantity by 3.333 to get fl oz.";
    var bigbudTextUS = "To use Big Bud Liquid multiply the oz. quantity by 10 to get fl oz.";
    var TABLE_ROW_HEIGHT = 22;
    var TABLE_COL_WIDTH = 55;
    var TABLE_COL_WIDTH_1 = 175;
    var BUTTON_WIDTH = 30;
    var planDoc;
   // var base;
   // var formula;
   // var reservoirSize = 100;;
  //  var unit = "Metric";
  
   var base;
 var formula;
 var reservoirSize;
 var unit;
  var numberOfWeeks;
var plans;
var baseContent;
var formulaContent;
var unitContent;
var content ;
var formulaContent;
var ppmContent;


    var weeklyPPMAmounts = new Array();
    var ecArray = new Array();
    var weeklyPPMTotal = 0;
    var products = new Array();
  
    var minWeeks;
    var maxWeeks;
    var editable;
    var products = new Array();
    var productArray;
    var baseArray = new Array();
    var unitArray = new Array("Metric","US");
	var unitNameArray = new Array("Metric","Imperial (US)");
    var formulaArray = new Array();   
    var curDoc;
    var tableContent;
    var printContent;
    
  //  var ppm_div_all = 586;
    var ppm_div_all = 586;
    var space_ppm_div = 1;
    var ppm_div_width;
    var ppm_block_hiehgt = 100;
    var ppm_block_down_height = 50;
    
    var printWeek = new Array();
    var printWeekTable = new Array();
  
  var peakPPMValue =0;
  var cname = "";
  
  var levelArray = new Array();
  levelArray["Base"] = new Array("Grow","Micro","Bloom");
  levelArray["Hobbyist Level"] = new Array("VooDoo Juice","Big Bud","B-52","Overdrive");
  levelArray["Expert Grower Level"] = new Array("Piranha","Bud Candy","Final Phase");
  levelArray["Professional Grower Level"] = new Array("Tarantula","Nirvana","Sensizym");
  levelArray["Grand Master Grower Level"] = new Array("Bud Ignitor","Rhino Skin","Bud Factor X");
  
  
  var gArray = new Array();
  // gArray["Piranha"] = 1;
  // gArray["Tarantula"] = 1;
  // gArray["Bud Candy"] = 1;
  // gArray["Bud Ignitor"] = 1;
  // gArray["Bud Blood"] = 1;
  // gArray["Big Bud"] = 1;
  // gArray["Big Bud (powder)"] = 1;
  
  
  function inGArray(val)
  {
	debug("gArray["+val+"]=>"+gArray[val]);
	return (gArray[val] == undefined)?false:true;

  }
  function getArrayKey(val)
  {
	for(var x in levelArray)
	{
		//debug("x=>"+x+" val:"+val);
		for(var y in levelArray[x])
		{
      
			if(levelArray[x][y] == val)
      {
      
        if( formula == "Vegetative Growth" && x == "Hobbyist Level")
        {
          return "Vegetative Growth";
        }
        else
        {
            return x;
        }
      }
      
				
		}

	}
	return "";
  }

  function Product(name, value, base, conversion, units, descriptionfile, anID)
    {
        this.name = name;
        this.value = value;
        this.base = base;
        this.conversion = conversion;
        this.units = units;
        this.descriptionfile = descriptionfile;
        this.anID = anID;
    } // End of the function
	
	function setDefaultBaseFormula()
	{
		if(planDoc.length>0)
		{
				var baseName = planDoc[i].getAttribute("base");
              var formularName = planDoc[i].getAttribute("formula");

                  base = planDoc[0].getAttribute("base");
                
                  formula = planDoc[0].getAttribute("formula");
		}
		debug("in set default:"+base);
	
	}
    
    function parseArray()
    {
        
      for (var i = 0; i < planDoc.length; i++) 
      {
        
             var baseName = planDoc[i].getAttribute("base");
              var formularName = planDoc[i].getAttribute("formula");

/*
              if(base =="")
                  base = baseName;
                
                  
              if(formula =="")
                  formula = formularName;
             
       */ 
              if(baseName ==base && formularName == formula)
              {
    
                  curDoc = planDoc[i];
              }
           //   debug(curDoc);
              
              if(baseArray[baseName] == undefined)
                baseArray[baseName] = baseName;
                
                if(formulaArray[baseName] == undefined)
                    formulaArray[baseName] = new Array();
                
                   formulaArray[baseName][formularName] = formularName;
                   
                    
                
        }
         
    }
    
     function getUnitArray()
     {
         var content = "";
			
           for(var x in unitArray)
           {
              content += "<option value=\""+unitArray[x]+"\""+((unitArray[x] == unit)?"selected=\"selected\"":"")+">"+unitNameArray[x]+"</option>\n";
           }
        return content;
     
     }
    function getFormulaArray()
    {
           var content = "";
		   
		   if(base == "" || base == undefined)
		   {
				content = "<option value=\"\">--Select a Grower Level--</option>\n";
				//alert("content:"+content);
			}
			else
			{
			   for(var x in formulaArray[base])
			   {
				  content += "<option value=\""+x+"\" "+((x == formula)?"selected=\"selected\"":"")+">"+x+"</option>\n";
			   }
			}
			
			//alert("content:"+content);
        return content;
    }
    
    
    function getBaseArray()
    {
           var content = "";
		   if(base == "" || base == undefined)
				content += "<option value=\"\">--Select a Base--</option>\n";
           for(var x in baseArray)
           {
                 content += "<option value=\""+x+"\" "+((x == base)?"selected=\"selected\"":"")+">"+x+"</option>\n";
           }
        return content;
    }
    

    function Plan(xmlDocument, _productArray, _base, _formula, _unit,  _reservoirSize)
    {

        productArray = _productArray;

		//debug(productArray["Voodoo Juice"]);
        planDoc = xmlDocument.getElementsByTagName("plan");

        base = _base;
        formula = _formula;
        unit = _unit;
        reservoirSize = _reservoirSize;
       
        parseArray();
       
		if(base != "" && base !=undefined)
		{
		//alert("inside");
		  fillFromXML();
		  ppm_div_width = Math.round(parseFloat(ppm_div_all-1)/numberOfWeeks) -1;
		  setECarray();
		  displayTable();
		  setWeekPrintTable();
		}
      

    } // End of the function
    
    
    function setWeekPrintTable()
    {
      //printWeekTable
         printWeekTable = new Array();
         var cnt = 0;
      for(var x in printWeek)
      {
     
          printWeekTable[x] = "<table width=\"300\" cellspacing=\"2\"  cellpadding=\"2\" style=\"font: 12px arail;\" border=\"0\">";
        
        for(var y in printWeek[x])
        {
            if(cnt==0 )
                 printWeekTable[x] += "<tr><td style=\"border:1px solid #0000ff;\"><b>"+y+"</b></td><td style=\"border:1px solid #0000ff;\"><b>"+printWeek[x][y]+"</b></td></tr>";
            else
                 printWeekTable[x] += "<tr><td style=\"border:1px solid #0000ff;\">"+y+"</td><td style=\"border:1px solid #0000ff;\">"+printWeek[x][y]+"</td></tr>";
         
          
              cnt ++;
        }
        
        printWeekTable[x] += "</table>";
        
         //console.log("week:"+ printWeekTable[x]);
      }

    
    }
    function addWeekAction()
    {
         addWeek();
         
       ppm_div_width = Math.round(parseFloat(ppm_div_all-1)/numberOfWeeks) -1;
      setECarray();

       displayTable();

    }
    
     function removeWeekAction()
    {
         removeWeek();
         
       ppm_div_width = Math.round(parseFloat(ppm_div_all-1)/numberOfWeeks) -1;
      setECarray();

       displayTable();

    }
    
    
    
    function baseChange()
    {
    
    }
    
    
     function setBase(base)
    {
        base = base;
        fillFromXML();
    } // End of the function
    function setFormula(formula)
    {
        formula = formula;
        fillFromXML();
    } // End of the function
    function setReservoirSize(reservoirSize)
    {
        reservoirSize = reservoirSize;
    } // End of the function
    function getReservoirSize()
    {
        return (reservoirSize);
    } // End of the function
    function setUnit(unit)
    {
        unit = unit;
    } // End of the function
    function getUnit()
    {
        return (unit);
    } // End of the function
    
    
    function getPeakPPM()
    {
        var loc3 = 0;
        for (var loc2 = 0; loc2 < weeklyPPMAmounts.length; ++loc2)
        {
            if (loc3 < weeklyPPMAmounts[loc2])
            {
                loc3 = weeklyPPMAmounts[loc2];
            } // end if
        } // end of for
        return (loc3);
    } // End of the function

   function debug(obj)
  {
	  if(showDebug>1)
	  {
		if(typeof obj == "string")
		{
			console.log(obj);
		}
		else
		{
		
		
		 for(var x in obj)
			{
			  console.log(x+"=>"+obj[x]);
			}
		  }
		}
  }
  

    function fillFromXML()
    {
        var loc7 = null;
        
      
       var loc4 = planDoc;

       
        loc7 = curDoc;
       
        if (loc7 != null)
        {
            var loc11 = loc7.getAttribute("ppms");
            var loc10 = loc11.split(",");
           numberOfWeeks = loc10.length;

           //numberOfWeeks =(numberOfWeeks>0)?numberOfWeeks: loc10.length;
           
           
            weeklyPPMAmounts = new Array(numberOfWeeks);
            
            
            //console.log("numberOfWeeks:"+numberOfWeeks);
            for (var loc2 = 0; loc2 < numberOfWeeks; ++loc2)
            {
                weeklyPPMAmounts[loc2] = parseInt(loc10[loc2]);
            } // end of for
            
           // debug(weeklyPPMAmounts);
        } // end if
        minWeeks = parseInt(loc7.getAttribute("min"));
        maxWeeks = parseInt(loc7.getAttribute("max"));
        editable = loc7.getAttribute("editable");
        
      //  console.log("minWeeks:"+minWeeks);
        
        
        products = new Array();
        if (loc7 != null)
        {
            var loc3 = loc7.getElementsByTagName("product");
            var loc6;
            var loc5;
            var loc9;
            var loc8;
       //  debug(productArray["Connoisseur A "]);
         
            for (var loc2 = 0; loc2 < loc3.length; ++loc2)
            {
           // debug("Type ["+loc2+"]=>"+loc3[loc2].nodeType );
                if (loc3[loc2].nodeType == 1)
                {
      
                    loc6 = loc3[loc2].getAttribute("name");
					debug("get loc6 name:"+ loc6);
					debug("get loc5 name:"+ loc5);

                    loc5 = productArray[loc6];

               //   debug(loc5);
   
                    loc9 = loc3[loc2].getAttribute("value").split(",");
                    if(loc3[loc2].getAttribute("conversion") != undefined)
                      loc8 = parseFloat(loc3[loc2].getAttribute("conversion"));
                    else
                      loc8 = 0;

                    products.push(new Product(loc6, loc9, loc5["base"], loc8, loc5["units"], loc5["descriptionfile"], loc5["anID"]));
                } // end if
            } // end of for
        } // end if
    } // End of the function
    
    
   function toTwoDecimals(input)
    {
        var loc5 = true;
        var loc2;
        if (input != null && input != "" && !isNaN(input))
        {
            var loc3 = String(Math.round(Number(input) * 100 * (Number(input != null) * Number(input != "") * Number(!isNaN(input)))));
            var loc4 = loc3.length;
            loc2 = loc3.substr(0, loc4 - 2) + "." + loc3.substr(loc4 - 2, 2);
        }
        else if (isNaN(input))
        {
            loc2 = loc5 ? ("-- ERROR --") : ("");
        }
        else
        {
            loc2 == "";
        } // end else if
        return (parseFloat(loc2));
    } // End of the function
    
    
     function makeRow(product)
    {
    
    
        var loc6 = new Array();
        loc6[0] = product.name;
		loc6[1] = product.descriptionfile;
        var loc3;
        var loc4 = 0;
      //  alert('unit:'+unit + " product.units:"+product.units );
        
        var curUnit = $("#reserviorsize_unit").text();
        
        var loc7 = 1;
        
       
       
        var loc7 = (unit == "US") ? (product.units == "mL" ? (3.381402E-002) : (3.78541178+000)) : (1);
        var loc8 = (unit == "US") ? (product.units == "mL" ? (" fl oz") : ("ml")) : (product.units);
         reservoirSize  = (unit=="US")? Math.round(parseFloat($("#id_reserviorsize").val())*3.78541178+000): $("#id_reserviorsize").val() ;
           
     
        var flag = 0;
		
		
        
        for (var loc2 = 0; loc2 < numberOfWeeks; ++loc2)
        {
		   // console.log("loc4:"+product.value[loc2]);
		
			if(product.value[loc2]== 0)
			{
			loc6[loc2 + 2] = "-";
			//loc4 = 0;
			}
			else
			{
			//reservoirSize =$("#id_reserviorsize").val();
				loc3 = Math.round(product.value[loc2] * reservoirSize * 100 * loc7);
				loc3 = loc3 / 100;
				loc6[loc2 + 2] =loc3 +" "+ loc8;
				loc4 = loc4 * 1 + product.value[loc2] * 1 * reservoirSize;
			}
         //   printWeek[loc2+1][loc6[0]] = loc6[loc2 + 2];
          //   debug( printWeek[loc2+1]);

        } // end of for
		
			loc4 = Math.round(loc4 * 100 * loc7);
			loc4 = loc4 / 100;
			
			loc6[numberOfWeeks + 2] = (loc4>0)?(loc4 + " "+loc8):"-";
		
       
        return (loc6);
    } // End of the function
    
    function buildTable()
    {
        var loc4 = new Array();
        var loc3 = new Array();
        loc3[0] = "Weeks";
        
        printWeek = new Array(numberOfWeeks);
        
        
        for (var loc2 = 1; loc2 <= numberOfWeeks; ++loc2)
        {
            printWeek[loc2] = new Array();
            //loc3[loc2] = "<a href=\"#\" id=\"e_week"+ loc2+"\"  ref=\""+ loc2+"\" class=\"week-email-class\" title=\"Click to Email this week data\"  onclick=\"emailWeekFunc(this.id);return false;\" >Week " + loc2+"</a>";
             if(loc2 == numberOfWeeks && base != "Sensi Grow" && base != "Grow Micro Bloom (Vegetative)")
			 {
				loc3[loc2] = "Flush"; 
				printWeek[loc2]['Product'] = "Flush"; 
			 }
			 else
			 {
				loc3[loc2] = "Week " + loc2; 
				printWeek[loc2]['Product'] = "Week " + loc2;
			 }
			
			//printWeek[loc2]['Product'] = "Week " + loc2;
            
        } // end of for
        loc3[numberOfWeeks + 1] = "<a href=\"#\" id=\"e_week0\"  ref=\"0\" class=\"week-email-class\" title=\"Click to Email this week data\" onclick=\"emailWeekFunc(this.id);return false;\" >Total</a>";;
        loc4[0] = loc3;
        for (var loc2 = 0; loc2 < products.length; ++loc2)
        {
         // debug(products[loc2]);
          
            loc4.push(makeRow(products[loc2]));
        } // end of for
		
		var preKey = "";
		var newTabs = new Array();
		for(var x in loc4)
		{
			var idx = 0;
			if(x > 0 )
			{
				var curKey = getArrayKey(loc4[x][0]);
				
				debug("curKey:"+curKey+" from:"+(loc4[x][0]));
				if(newTabs[curKey] == undefined)
				{
					newTabs[curKey] = new Array();

				}

				
				newTabs[curKey] .push(loc4[x]);

					preKey = 	curKey;	
			
			}
			else
			{
				newTabs['title'] = loc4[x];
			}
			
		}
        return (newTabs);
    } // End of the function
   
   
   
    function removeProduct(productName)
    {
        var loc7 = false;
        var loc4 = new Array();
        var loc6 = 0;
        for (var loc3 = 0; loc3 < products.length; ++loc3)
        {
            if (products[loc3].name == productName && !products[loc3].base)
            {
                loc4 = products[loc3].value;
                loc6 = products[loc3].conversion;
                var loc5 = new Array();
                for (var loc2 = 0; loc2 < loc3; ++loc2)
                {
                    loc5.push(products[loc2]);
                } // end of for
                for (var loc2 = loc3 + 1; loc2 < products.length; ++loc2)
                {
                    loc5.push(products[loc2]);
                } // end of for
                products = loc5;
                loc7 = true;
            } // end if
        } // end of for
        if (loc7 && loc6 > 0)
        {
            for (var loc3 = 0; loc3 < products.length; ++loc3)
            {
                if (products[loc3].base)
                {
                    for (var loc2 = 0; loc2 < loc4.length; ++loc2)
                    {
                        products[loc3].value[loc2] = parseFloat(products[loc3].value[loc2]);
                        loc4[loc2] = parseFloat(loc4[loc2]);
                        products[loc3].value[loc2] = products[loc3].value[loc2] + loc6 * loc4[loc2];
                    } // end of for
                } // end if
            } // end of for
        } // end if
    } // End of the function
    
    function addWeek()
    {

    
        if (numberOfWeeks >= maxWeeks)
        {
            return (false);
        } // end if
        var loc5 = new Array(numberOfWeeks + 1);
        loc5[0] = weeklyPPMAmounts[0];
        loc5[1] = weeklyPPMAmounts[1];
        loc5[2] = weeklyPPMAmounts[2];
        loc5[3] = weeklyPPMAmounts[3];
        loc5[4] = weeklyPPMAmounts[3];
       
        for (var loc3 = 5; loc3 <= numberOfWeeks; ++loc3)
        {
            loc5[loc3] = weeklyPPMAmounts[loc3 - 1];
        } // end of for
        
        // debug(loc5);
       weeklyPPMAmounts = loc5;
    //  debug(weeklyPPMAmounts);
        var loc4;
        for (var loc3 = 0; loc3 < products.length; ++loc3)
        {
            for (var loc2 = numberOfWeeks; loc2 >= 4; --loc2)
            {
              
                loc4 = products[loc3].value[loc2 - 1];
                products[loc3].value[loc2] = loc4;
            } // end of for
            
            
        } // end of for
        numberOfWeeks = numberOfWeeks + 1;
        return (true);
    } // End of the function
    
    
    function removeWeek()
    {
        if (numberOfWeeks <= minWeeks)
        {
            return (false);
        } // end if
        
        
        var loc5 = new Array(numberOfWeeks - 1);
        loc5[0] = weeklyPPMAmounts[0];
        loc5[1] = weeklyPPMAmounts[1];
        loc5[2] = weeklyPPMAmounts[2];
        for (var loc3 = 3; loc3 <= numberOfWeeks - 2; ++loc3)
        {
            loc5[loc3] = weeklyPPMAmounts[loc3 + 1];
        } // end of for
        weeklyPPMAmounts = loc5;
        var loc4;
        for (var loc3 = 0; loc3 < products.length; ++loc3)
        {
            for (var loc2 = 4; loc2 < numberOfWeeks; ++loc2)
            {
                loc4 = products[loc3].value[loc2 + 1];
                products[loc3].value[loc2] = loc4;
            } // end of for
            products[loc3].value.pop();
        } // end of for
        numberOfWeeks = numberOfWeeks - 1;
        return (true);
    } // End of the function
    
    function displayTable()
    {
    
       
        var u1 = (unit == "US")?"oz.":"g.";
        var u2 = (unit == "US")?"fl oz.":"ml.";
        var notes = new Array();
        var notesIndex = 0;
        var level = buildTable();
		var loc7;
		//debug(loc7);
		debug(level);
        var loc5 = "";
     //   var loc8 = new TextFormat();
        var row = 0;
		var colsNum = 0;
        if (Object.size(level) > 1)
        {
          tableContent = "<table class=\"table-class\"><tbody>\n";
          printContent = tableContent;
		  
		  var preLevel = "";
            for(var x in level)
            {
				if(x == "title")
				{
					 tableContent += "<tr>";
					 printContent += "<tr>";
					  
					tableContent += "<td valign=\"top\" style=\"padding-left:10px;\" align=\"left\" class=\"title\">Base Nutrients</td>";
					printContent += "<td valign=\"top\" style=\"padding-left:10px;\" align=\"left\" class=\"title\">Base Nutrients</td>";
							
						for (var y = 1; y < level[x].length; y++)
						{
							tableContent += "<td align=\"center\" class=\"title\">"+level[x][y]+"</td>";
							printContent += "<td align=\"center\" class=\"title\">"+level[x][y]+"</td>";
						}
					
					tableContent += "</tr>";
					 printContent += "</tr>";
					 
					colsNum =  level[x].length;
				}
				else
				{
					
					for(var z in  level[x])
					{
						var rowData = level[x][z];
						tableContent += "<tr>";
						printContent += "<tr>";
						
						if(z ==0)
						{
							if(x != "Base")
							{
								tableContent += "<td valign=\"top\" style=\"padding-left:10px;\" align=\"left\" colspan=\""+colsNum+"\" class=\"title\">"+x+"</td></tr><tr>";
								printContent += "<td valign=\"top\" style=\"padding-left:10px;\" align=\"left\" colspan=\""+colsNum+"\" class=\"title\">"+x+"</td></tr><tr>";
							}
						}
						
						
						var pname = rowData[0];
						var pimg = rowData[1];
						
						//   var prodpath = productArray[pname]["descriptionfile"];
					
						tableContent += "<td style=\"padding-left:10px;\" class=\"r"+(row%2)+"\"><a href=\""+pimg+"\" target=\"_new\">"+pname+"</a></td>";
						printContent += "<td style=\"padding-left:10px;\" class=\"r"+(row%2)+"\"><a href=\""+pimg+"\" target=\"_new\">"+pname+"</a></td>";
							
					//	tableContent += "<td class=\"r"+(row%2)+"\" style=\"padding-left:10px;\" ><img src=\""+pimg+"\"   border=\"0\"  width=\"30\" height=\"30\"/></td>";
					//	printContent += "<td style=\"padding-left:10px;\" ><img src=\""+pimg+"\"   border=\"0\" width=\"30\" height=\"30\"/></td>";
							
							
						 if(inGArray(pname) )
						  {
						  debug("pname:"+pname);
							//var n_name = (pname == "Big Bud (powder)")?"CarboLoad":"Big Bud";
							var n_cnt = (pname == "CarboLoad (powder)")?"3.333":"10";
							debug("n_cnt:"+pname);
							  notes[notesIndex++] = "To use "+ pname+" multiply the "+u1+" quantity by "+n_cnt+" to get "+u2;
						   }
					   
						// tableContent += "<tr><td><a href=\""+prodpath+"\" target=\"_new\" title=\""+pname+"\" ><img src=\" product_icon.jpg\" border=\"0\"  class=\"prod-img\"/></a></td>";
							for(var i=2;i<rowData.length;i++)
							{
							 
							  
								tableContent += "<td class=\"r"+(row%2)+"\" align=\"center\">"+rowData[i]+"</td>";
								printContent += "<td  align=\"center\">"+rowData[i]+"</td>";
								
							   
							   
							}
						tableContent += "</tr>";
						 printContent += "</tr>";
						 
						
					row++;
					}

				}
				
				preLevel = x;

            }
debug("notes:\n");
                      debug(notes);
             if(notes.length > 0)
                {
                     tableContent += "<tr><td colspan=\""+colsNum+"\" align=\"left\">\n";
					 tableContent += "<table width=\"100%\" border=\"0\" style=\"color:#ffffff;font-size:12px;\" id=\"note_table_id\"><tr><td align=\"left\" style=\"padding-left:10px;width:32px;\">Note:</td>\n";
					 tableContent += "<td aign=\"left\">"+notes[0]+"</td></tr>";
					 
					 printContent += "<tr><td colspan=\""+colsNum+"\" align=\"left\">\n";
					 printContent += "<table width=\"100%\" border=\"0\" style=\"color:#000000;\"><tr><td align=\"left\" style=\"padding-left:10px;width:32px;\">Note:</td>\n";
					 printContent += "<td aign=\"left\">"+notes[0]+"</td></tr>";


                     for(var i = 1; i < notes.length ;i++)
                     {
                       tableContent += "<tr><td>&nbsp;</td><td aign=\"left\">"+notes[i]+"</td></tr>";
                       printContent += "<tr><td>&nbsp;</td><td aign=\"left\">"+notes[i]+"</td></tr>";
                       }
					   
					 tableContent += "</table></td></tr>\n";
					 printContent += "</table></td></tr>\n";
                }

               tableContent += "</tbody></table>";

               printContent += "</tbody></table>";
               
           }
    } // End of the function
   
    function getNumberOfWeeks()
    {
        return (numberOfWeeks);
    } // End of the function
    function setWeeklyPPMAmounts(newWeeklyPPMAmounts)
    {
        numberOfWeeks = newWeeklyPPMAmounts.length;
        weeklyPPMAmounts = newWeeklyPPMAmounts;
    } // End of the function
    function getWeeklyPPMAmounts()
    {
        return (weeklyPPMAmounts);
    } // End of the function
    function setPPMForWeek(newPPMAmount, weekIndex)
    {
        weeklyPPMAmounts[weekIndex] = newPPMAmount;
    } // End of the function
    function getPPMForWeek(weekIndex)
    {
        return (weeklyPPMAmounts[weekIndex]);
    } // End of the function
    
    
    function setECarray()
    {

      var cnt = weeklyPPMAmounts.length;
     ecArray = new Array(cnt);
        for(var i=0; i < cnt; i++)
        {
          var cc= parseFloat( Math.floor(parseFloat(weeklyPPMAmounts[i])/cnt))/100;
 
           ecArray[i] = cc;
 
        }

    }
    
    function setWeeklyPPMTotal()
    {
          for(var i=0; $i < weeklyPPMAmounts.length; i++)
        {
        
          weeklyPPMTotal += weeklyPPMAmounts[i];
        }
        
        
    }
    
    function getMaxEC()
    {
      var total = 0;
      for(var i=0;i< ecArray.length; i++)
      {
          total = (ecArray[i] > total)?ecArray[i]:total;
      }
      
      return total;
    }
  
    function getECHeight(ec)
    {
    
      return Math.floor(ppm_block_down_height*(ec/getMaxEC()));
    }

    
    function displayPPM()
    {
        var content = "";
       /*
        for(var i=0;  i < ecArray.length; i++)
        {
             var down_height = Math. ceil(getECHeight(ecArray[i]));
			// alert("donw hiehgt:"+down_height+" up height:"+(ppm_block_hiehgt - down_height));
			 
			 
			var bcolor = "b"+(i%2);
            content += "<li style=\"height:100%;width:"+ppm_div_width+"px;margin-right:"+space_ppm_div+"px;\">\n";
			
            content += "<div class=\"ppm-block  "+((i==0)?"first":"")+"\" style=\"color:#ffffff;\"  >\n";
			
            content += "<div class=\"ppm-up\" style=\"text-align:center;height:"+(ppm_block_hiehgt - down_height) +"px;background:#000000;vertical-align:top;\">PPM: "+weeklyPPMAmounts[i]+"<br/>EC: "+ecArray[i]+"</div>\n";
            content += "<div class=\"ppm-down "+bcolor+"\" style=\"text-align:center;height:"+down_height+"px;vertical-align:text-bottom;\">&nbsp;</div>\n";
            content += "<div class=\"ppm-down-texxt\" style=\"text-align:center;margin-top:-15px;\">"+(i+1)+"</div>\n";
            content += "</div>\n";

            content += "</li>\n";
          
        }
		*/
		//alert('ppm_div_all'+ppm_div_all);
		 var td_width = Math.floor((ppm_div_all-(numberOfWeeks+1)*3)  /numberOfWeeks) ;
		// table_width = (parseInt(ppm_div_all)+(numberOfWeeks)*2)+3;
		table_width = parseInt(ppm_div_all);
		
		table_width = table_width+numberOfWeeks*2;
		
		table_width = table_width + 3;
		
	//	table_width = (parseInt(ppm_div_all)+numberOfWeeks*2)+3;
		
		
	//	  table_width = 590;
		 $("#ppm-table").css("width",table_width+"px");

       
        for(var i=0;  i < ecArray.length; i++)
        {
             var down_height = Math. ceil(getECHeight(ecArray[i]));
			// alert("donw hiehgt:"+down_height+" up height:"+(ppm_block_hiehgt - down_height));
			 
			 
			var bcolor = "b"+(i%2);
      /*
            content += "<li style=\"height:100%;width:"+ppm_div_width+"px;margin-right:"+space_ppm_div+"px;\">\n";
			
            content += "<div class=\"ppm-block  "+((i==0)?"first":"")+"\" style=\"color:#ffffff;\"  >\n";
			
            content += "<div class=\"ppm-up\" style=\"text-align:center;height:"+(ppm_block_hiehgt - down_height) +"px;background:#000000;vertical-align:top;\">PPM: "+weeklyPPMAmounts[i]+"<br/>EC: "+ecArray[i]+"</div>\n";
            content += "<div class=\"ppm-down "+bcolor+"\" style=\"text-align:center;height:"+down_height+"px;vertical-align:text-bottom;\">&nbsp;</div>\n";
            content += "<div class=\"ppm-down-texxt\" style=\"text-align:center;margin-top:-15px;\">"+(i+1)+"</div>\n";
            content += "</div>\n";

            content += "</li>\n";
         */
       
         
            content += "<td style=\"height:100%;width:"+td_width+"px;\">\n";
            content += "<div class=\"ppm-block  "+((i==0)?"first":"")+"\" style=\"width:"+td_width+"px;\"  >\n";			
            content += "<div class=\"ppm-up\" style=\"width:100%;text-align:center;height:"+(ppm_block_hiehgt - down_height) +"px;vertical-align:top;\">PPM: "+weeklyPPMAmounts[i]+"<br/>EC: "+ecArray[i]+"</div>\n";
            content += "<div class=\"ppm-down "+bcolor+"\" style=\"width:100%;text-align:center;height:"+down_height+"px;vertical-align:text-bottom;\">&nbsp;</div>\n";
            content += "<div class=\"ppm-down-texxt\" style=\"width:100%;text-align:center;margin-top:-15px;\">"+(i+1)+"</div>\n";
            content += "</div>\n";
            content += "</td>\n";
            
            
        }
		
		
        return content;
    } // End of the function
    
    function printTable()
    {
      
    
    }
   
   
   Object.size = function(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
};


function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
   // var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)", "i") : null;
   
    var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^)" + strAttributeValue + "($)", "i") : null;
    
    var oCurrent;
    var oAttribute;
    for(var i=0; i<arrElements.length; i++){
        oCurrent = arrElements[i];
        oAttribute = oCurrent.getAttribute && oCurrent.getAttribute(strAttributeName);
        if(typeof oAttribute == "string" && oAttribute.length > 0){
            if(typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
                arrReturnElements.push(oCurrent);
            }
        }
    }
    return arrReturnElements;
}


var xmlDoc;
var prod_array;

if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else // Internet Explorer 5/6
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET","nutcalc.xml",false);
xhttp.send("");
xmlDoc=xhttp.responseXML;

dd=xmlDoc.getElementsByTagName("product");
var prod_array = new Array();
var productList = new Array();
var total_prod =0;
var idx=0;

for (var i = 0; i < dd.length; i++) 
{

  aProd_array = new Array();
  if(dd[i].getAttribute("value") == null)
  {
    
       var bb = dd[i].attributes;
	   
	   
      for(var j=0;j< bb.length;j++)
      { 
          
           aProd_array[bb[j].nodeName] = bb[j].nodeValue; 
      }
    prod_array[dd[i].getAttribute("name") ] = aProd_array;

         total_prod++;

  }
  else
  {
    //write into Prod
    /*
    var value = dd[i].getAttribute("value") ;
    var conversion = dd[i].getAttribute("conversion") ;
    var name = dd[i].getAttribute("name") ;

    productList[idx++] = new Product(name, value, prod_array[name]['base'], conversion, prod_array[name]['units'],prod_array[name]['descriptionfile'],prod_array[name]['anID']);
*/
  }

}

function emailWeekFunc(wid)
  {
          var id = wid.replace("e_week","");

              var host = "http://"+location.host;

              var wkName = (id==0)?"Total":"Week "+id;
              var content =  (id==0)?printContent:printWeekTable[id];
              var reservoirSizeTitle = reservoirSize +" "+ ((unit=="US")?"Gal":"L");
            
              var week_content = "<table width=\"420\" border=\"0\" style=\"font:12px arial;color:#000000;\">\n";
              week_content += "<tr><td width=\"104\" rowspan=\"4\" valign=\"top\"><img src=\""+host+"/logo2.jpg\" border=\"0\"  width=\"104\" height=\"90\"/></td>\n";
              week_content += "<td align=\"left\">"+$("#id_formula").val()+"</td></tr>\n";
              week_content += "<tr><td align=\"left\">"+peakPPMValue+" Peak PPM</td></tr>\n";
              week_content += "<tr><td align=\"left\">"+reservoirSizeTitle+"</td></tr>\n";
              week_content += "<tr><td align=\"left\">Soli pH Balance = 6.3 / Hydroponic pH Balance = 5.6</td></tr>\n";
              week_content += "<tr><td colspan=\"2\" align=\"center\">"+content+"</td></tr>\n";
              week_content += "<tr><td colspan=\"2\">&nbsp;</td></tr>\n";
              week_content += "<tr><td colspan=\"2\">Website: <a hre=\"www.advancednutrients.com\">www.advancednutrients.com</a></td></tr>\n";
              week_content += "</table>\n";
    
            $("#week_num_id").attr("value", base  );
            $("#week_formula_id").attr("value", formula  );
            
            
            $("#week_num_id").attr("value", wkName  );
            $("#week_content_id").attr("value", week_content );
            $("#week_subject_id").attr("value"," Nutrients data of "+ wkName);
            
             $("#text_subject_id").html(wkName);

			 $( 'html, body' ).animate( { scrollTop: 0 }, 0 );
			  $("#imouter0").hide();
              $('#popup').fadeIn('fast');
              $('#window_email').fadeIn('fast');
              
              return false;
  
  }

  
   
   
   function closeTab()
      {
          $('#popup').fadeOut('fast');
            $('#window_list').fadeOut('fast');
             $("#imouter0").show();
      }
      
      function doListDel(id)
      {
          email = ($("#save_email_id").val() == defaultEmailInput)?"":$("#save_email_id").val();
          
          key = cookieKey ;
          
          key = (email=="")?key:email;
          
          $.post("showListDel.php",{'key':key,"id":id});
          
           $.get("showList.php?key="+escape(key), function(data) {
                $('#window_list').html(data);
            });
          
          
      }
      
      function showPlan(id)
      {

           window.location =  "index.php?pid="+id;
          return false;
      }
      
$(document).ready(function() {

          if($("#save_email_id").val() == defaultEmailInput)
          {
              $("#save_email_id").css("color","#c1c1c1");
          }
          else
          {
              $("#save_email_id").css("color","#000000");
          }

	
        
     function initPlan($)
     {
     //debug(xmlDoc);
			 plans = new Plan(xmlDoc,prod_array,base,formula, unit, reservoirSize );
		 

     }
     
     function getContent($)
     {
        baseContent =getBaseArray();
		formulaContent = getFormulaArray();
        
        unitContent = getUnitArray();
		if(base != "" && base != undefined)
		{
			
			ppmContent = displayPPM();
			peakPPMValue = getPeakPPM();
		}
		
     
     }
     
     
    function setValues($)
    {
   
      //if($("#v_id_base").val() == "" || $("#v_id_formula").val() == "")
      //   planDefault($)
    
       base = $("#v_id_base").val();
       formula = $("#v_id_formula").val();

       reservoirSize = $("#v_id_reserviorsize").val();
       unit = $("#v_id_unit").val();
       numberOfWeeks = $("#v_id_numberOfWeeks").val();
        

       
       
    }
    
    //this function to set content   
    function setContent($)
    {
        $("#id_base").html(baseContent);
        $("#id_formula").html(formulaContent);
        $("#id_unit").html(unitContent);
        $("#ppm-table-ul").html(ppmContent);
        $("#prod-table-body").html(tableContent);
        
		if(base != "" && base!=undefined)
			$("#prod-table-title").html("<span style=\"margin-left:10px;\">"+base+" - "+formula+"</span>");
        else
			$("#prod-table-title").html("");
			
          if($("#is_save_id").is(':checked'))
          {
               var cval = escape(cname+"|"+base+"|"+formula+"|"+reservoirSize+"|"+unit+"|"+numberOfWeeks);
              //  $.post("save.php", { 'req':cval });
               $.post("lastAction.php", { 'req':cval });
          }
         
          
    }
	
	
    //this function to set reset all content to plan default
    function planDefault($)
    {
	
		debug("STEP planDefault");    
			if(baseArray.length == 0 )
			{
				//baase ="";
				//formula = "";
			planDoc = xmlDoc.getElementsByTagName("plan");
		//	setDefaultBaseFormula();
			//debug("in base:"+base+" baseArray length:"+baseArray.length);
			//debug("in formula:"+formula);	
			plans = new Plan(xmlDoc,prod_array,base,formula, "Metric", 100 );
			}
			
			
			//debug("base:"+base+" baseArray length:"+baseArray.length);
			//debug("formula:"+formula);	
		
            var base_name ;
            var formula_name;
             for(var x in baseArray)
             {
                    base_name = x;
                   
                    break;
              }
              for(var x in formulaArray[base_name])
               {
                  formula_name = x;
                 
                  break;
               }
              // debug("base_name:"+base_name);
               //debug("formula_name:"+formula_name);
               $("#v_id_base").attr("value", base_name);
               $("#v_id_formula").attr("value", formula_name);
               $("#v_id_reserviorsize").attr("value", 100);
               $("#v_id_unit").attr("value", "Metric");
               $("#v_id_numberOfWeeks").attr("value", 0);
                 $("#reserviorsize_unit").text("L");
                 
                 
           //    init($);
    }       
  
  function setPopup($)
  {
    var reservoirSizeGalonLiters;
    if (unit=="US")
    	reservoirSizeGalonLiters = Math.round(reservoirSize * 0.2641); //Convert Liters into Galons
    else
    	reservoirSizeGalonLiters = reservoirSize;
    var reservoirSizeTitle = reservoirSizeGalonLiters +" "+ ((unit=="US")?"Gal":"L");
        $("#print_plan_name").html($("#id_formula").val());
       $("#printpeak_ppm").html(peakPPMValue+" Peak PPM");
         $("#print_reservoir_size").html(reservoirSizeTitle);

       $("#print-table").html(printContent);
     }
    //group functions when page first load or reset plan defaul
    function init($)
    {
		debug("STEP setValues");
         setValues($);
		debug("STEP initPlan");    
          initPlan($);
		  debug("STEP getContent");
          getContent($);
	//	  debug("STEP setContent");
	
	 $("#id_base").html(baseContent);
     $("#id_formula").html(formulaContent);
     $("#id_unit").html(unitContent);
	 if(base != "" && base != undefined)
	 {
		setContent($);
		 
		 
		 setPopup($);
	 }
	 
	 
	 
    //    $("#ppm-table-ul").html(ppmContent);
		
      //   setContent($);  
	//	 debug("STEP setPopup");
        
        
    }
   
   //group functions when any property change
   function refresh($)
   {
       setValues($);
       initPlan($);
       getContent($);
       setContent($);  
       setPopup($);
	   $("#id_base option[value='']").remove();
	   $("#id_formula option[value='']").remove();
   }
       
       
       $("#save_email_id").click(function(){
          if($(this).val() == defaultEmailInput)
          {
              $(this).attr("value","");
              $(this).css("color","#000000");
          }
       
        });
       
       $("#save_email_id").blur(function(){
          if($(this).val() == "")
          {
              $(this).attr("value",defaultEmailInput);
              $(this).css("color","#c1c1c1");
          }
       
        });
       
       
    
    $("#id_base").change(function(){
	
		if(base == "" || base == undefined)
		{
		 $("input[type='button'], button").each(function(){
				
			$(this).attr("disabled", false);
				
		   });
		   
		   //$("#id_base option[value='']").remove();
		   $("#id_formula").attr("disabled", false);
		   $("#id_reserviorsize").attr("disabled", false);
		   $("#id_unit").attr("disabled", false);
		   
		 }  
		 $("#id_base option[value='']").remove();
		 
      var base_name = $(this).val() ;
      var formula_name;
      $("#v_id_numberOfWeeks").attr("value", 0);
         $("#v_id_base").attr("value", base_name);
         
         for(var x in formulaArray[base_name])
         {
            formula_name = x;
           
            break;
         }
          $("#v_id_formula").attr("value", formula_name);
		  
		  
		
		 
          refresh($);
         
    });
    
    
    
    
     $("#id_formula").change(function(){
          $("#v_id_formula").attr("value",$(this).val());
          refresh($);
         
    });

    $("#id_unit").change(function(){
              $("#v_id_unit").attr("value",$(this).val());
             unit = $(this).val();
              var unit_text = (unit=="US")?"Gal":"L";  
              var unit_ratio = (unit=="US")?0.264172052: 3.78541178+000; 
              var ml_ratio = (unit=="US")?3.78541178+000: 1; 
              
              var new_val = parseFloat($("#id_reserviorsize").val())*unit_ratio;
            //   alert('id_reserviorsize:'+$("#id_reserviorsize").val());
             
             // alert("curUnit:"+curUnit);
              var rsize =   (unit=="US")?toTwoDecimals(new_val ) :Math.round(new_val );
              $("#reserviorsize_unit").text(unit_text);
              
             // alert("value:"+$("#reserviorsize_unit").attr("value"));
             // alert("unit_ratio:"+unit_ratio);
              $("#id_reserviorsize").attr("value",  rsize);
              
             //alert('reservoirSize:'+reservoirSize);
              
              refresh($);
        });

   $("#id_reserviorsize").change(function(){
          $("#v_id_reserviorsize").attr("value",$(this).val());
          
          
           
          refresh($);
         
    });
    $("#id_reserviorsize").keyup(function (){
        $("#v_id_reserviorsize").attr("value",$(this).val());
          refresh($);
    });

    
    $("#id_addweek").click(function(){
          addWeekAction();
      $("#v_id_numberOfWeeks").attr("value",numberOfWeeks);
       getContent($);
       setContent($);  
   });
  
  $("#id_removeweekk").click(function(){
          removeWeekAction();
      $("#v_id_numberOfWeeks").attr("value",numberOfWeeks);
       getContent($);
       setContent($);  
   });
  
  
    
    $("#id_resetplan").click(function(){
        planDefault($);
        init($);
		/*
        $("#print_plan_name").text("Plan Name");
        $("#printpeak_ppm").text("Peak PPM");
        $("#print_reservoir_size").text("Reservoir Size");
        $("#print-table").text("");
*/
           
      });
     
      $("#rec_display_id").click(function(){
         
        if($(this).val() == "Saved Plans")
        {
            
            $.get("showList.php?key="+escape($("#save_email_id").val()), function(data) {
             // debug(data);
                $('#window_list').html(data);
             
            });
            $('#popup').fadeIn('fast');
            $('#window_list').fadeIn('fast');
             $("#imouter0").hide();
        }
        else
        {
             $('#popup').fadeOut('fast');
            $('#window_list').fadeOut('fast');
        }
        return false;
      });
       
	   



     $("#id_print").click(function(){

        $('#popup').fadeIn('fast');
       $('#window').fadeIn('fast');
       
       
       $('#print-table').html(printContent);
      
			if ( $('#window').is(':visible')){
				 $("#print-area").print();

			}
			 $("#imouter0").hide();
            return false;
      });
	  
	 
  
  
      
          $("#id_purchase").click(function(){
              var url = "https://www.advancednutrients.com/catalog/index.php?purchase&1400=697&1300=697&1200=697&3450=600&2800=620&2750=620&2100=1240&2400=186&6550=3101&5250=62&5400=62&5450=520&2300=40&5000=102&3750=360&2600=250";
              window.open(url,'_blank');
             return false;
          });

     
       $(".close-pop").click(function(){

          $('.popup-class').fadeOut('fast');
          $('.window-class').fadeOut('fast');
          
          $("#imouter0").show();
          return false;
        });
      
      
     $("input[type='button']").click(function(){
		if($(this).attr("id") != "id_removeweekk" && $(this).attr("id") != "id_addweek")
				$( 'html, body' ).animate( { scrollTop: 0 }, 0 );
	 });

      $("#form1_id").submit(function(){

          if($("#email_to_id").val() != "")
          {            
               $.post("mailWeek.php", { week_base:$("#v_id_base").val(), week_formula: $("#v_id_formula").val(),  week_num: $("#week_num_id").val(), week_content: $("#week_content_id").val(), week_subject: $("#week_subject_id").val(), emailTo: $("#email_to_id").val()   } );
               alert('Will send to the email address shortly');
          }
          else
          {
              alert('Please enter email to send to ');
          }
          
           $('.popup-class').fadeOut('fast');
          $('.window-class').fadeOut('fast');
           $("#imouter0").show();
           
          return false;
       });
       
       $("#is_save_id").click(function(){
              var val = $(this).is(':checked')?1:0;   

                $.post("isSaveAction.php", { is_save: val} );
               
       });
       
        $("#save_it_id").click(function(){

               cname = prompt("You can enter a name for this plan to be saved",base+":"+formula);
			   
              if(cname != null)
              {
                     var cval = escape(cname+"|"+base+"|"+formula+"|"+reservoirSize+"|"+unit+"|"+numberOfWeeks);

                    $.post("saveEmail.php", { 'req':cval,save_email: $("#save_email_id").val() });
               
                  alert('This plan is save, and you will see all you save plans when you enter this email');
          }
                return false;
       });
       

       ppm_div_all = $("#ppm-table").css("width").replace("px","");
       
          init($);
     
		if(base == "" || base == undefined)
		{
		    $("input[type='button'], button").each(function(){
				
					if($(this).hasClass("log-btn") == false && $(this).attr("id") != "rec_display_id")
					{
						//alert("click:"+$(this).attr("id"));
						$(this).attr("disabled", true);
					}
						
				
		    });
		    $("#id_formula").attr("disabled", true);
		    $("#id_reserviorsize").attr("disabled", true);
		    $("#id_unit").attr("disabled", true);
		 }  
          
      $("#content .hd div.first div").css("display","block");
           $("#save_email_id").css("width","180px");
});

    
    
