



// global flag
var isIE = false;

var req;


//Call server with url





function loadXMLDoc(url,Result)
 {

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET",url,false);
xmlhttp.send("");

document.getElementById(Result+"Result").innerHTML="Result: " + xmlhttp.responseText + " Cubic Metres";
 
        document.getElementById("NOTESResult").innerHTML+= xmlhttp.responseText + " m&#179";
a=0;
a += document.getElementById("ResultSUM").innerHTML - 0;


document.getElementById("ResultSUM").innerHTML = xmlhttp.responseText;
a+= document.getElementById("ResultSUM").innerHTML - 0;
document.getElementById("ResultSUM").innerHTML = a.toFixed(2);

}

function loadXMLDocBasic(url,Result)
 {
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET",url,false);
xmlhttp.send("");

document.getElementById(Result+"Result").innerHTML="Result: " + xmlhttp.responseText;
 
        document.getElementById("NOTESResult").innerHTML+= xmlhttp.responseText + " m&#178 ";
}

function IsNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
   }





//Process response
function processReqChange() {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            handleResult();
        } else {
            alert("There was a problem retrieving the XML data:\n" +
                req.statusText);
        }
    }
}


// Set result text
function handleResult() {
	
	//Get item node from xml result.
    var items = req.responseXML.getElementsByTagName("item");

    // Get target span element
	oResult = document.getElementById("result");
	if(items.length > 0)
	{
		//Set result text
		oResult.innerHTML =xmlhttp.responseText;
		
		faderesult();
		
		//Check if alert chould be displayed
		if(document.getElementById("dispalert"))
		{
			if(document.getElementById("dispalert").checked)
			{
				alert("The result is " + items[0].firstChild.data);
			}
		}
	}
}


//Click event handler for add button
function ShowElementInfo( iElementId )
{
  if( typeof(iElementId) == "string" && iElementId.length > 0 )
  {
    var element = document.getElementById(iElementId);
    if( element )
      alert("name=" + element.name + " - id=" + element.id );
    else
      alert("ERROR: could not find the requested element");
  }
}
function addclick_PS()
{
	//get values
        x = new MathProcessor;
        val1 = (x.parse(document.getElementById("PS1").value));  
	val2 = (x.parse(document.getElementById("PS2").value));
	val3 = (x.parse(document.getElementById("PS3").value));
        val4 = (x.parse(document.getElementById("PS4").value));  

	//call server
	loadXMLDocBasic("math.asp?calc=PS&1=" + val1 + "&2=" + val2 + "&3=" + val3 + "&4=" + val4,"PS");
}

function addclick_TERBCSCF()
{
         
	//get values
        x = new MathProcessor;
	val1 = (x.parse(document.getElementById("TERBCSCF1").value));  
	val2 = (x.parse(document.getElementById("TERBCSCF2").value));
	val3 = (x.parse(document.getElementById("TERBCSCF3").value));
        val4 = (x.parse(document.getElementById("TERBCSCF4").value));  
     

	 
        document.getElementById("NOTESResult").innerHTML+= "<BR> Round Pad " + val1  + "' by " + val2 + String.fromCharCode(34) + " with Thick Edge of " + val3 + String.fromCharCode(34) + " by " + val4 + String.fromCharCode(34) +" =" ;
	//call server

	loadXMLDoc("math.asp?calc=TERBCSCF&1=" + val1 + "&2=" + val2 + "&3=" + val3 + "&4=" + val4,"TERBCSCF");
}

function addclick_TERBCSF()
{
	//get values
        x = new MathProcessor;
	val1 = (x.parse(document.getElementById("TERBCSF1").value));  
	val2 = (x.parse(document.getElementById("TERBCSF2").value));
	val3 = (x.parse(document.getElementById("TERBCSF3").value));
        val4 = (x.parse(document.getElementById("TERBCSF4").value));  


	//call server
         
        document.getElementById("NOTESResult").innerHTML+= "<BR> Round Pad " + val1  + "' by " + val2 + String.fromCharCode(34) + " with Thick Edge of " + val3 + String.fromCharCode(34) + " by " + val4 + String.fromCharCode(34) +" (slope) =" ;

	loadXMLDoc("math.asp?calc=TERBCSF&1=" + val1 + "&2=" + val2 + "&3=" + val3 + "&4=" + val4,"TERBCSF");
}
function addclick_TESPCSCF()
{
         
	//get values
        x = new MathProcessor;	
        val1 = (x.parse(document.getElementById("TESPCSCF1").value));  
	val2 = (x.parse(document.getElementById("TESPCSCF2").value));
	val3 = (x.parse(document.getElementById("TESPCSCF3").value));
        val4 = (x.parse(document.getElementById("TESPCSCF4").value));  
	val5 = (x.parse(document.getElementById("TESPCSCF5").value));


	//call server
         
        document.getElementById("NOTESResult").innerHTML+= "<BR> Pad " + val1  + "' X " + val2 + "' by " + val3 + "' with Thick Edge of " + val4 + String.fromCharCode(34) + " by " + val5 + String.fromCharCode(34) +" =" ;
	
	loadXMLDoc("math.asp?calc=TESPCSCF&1=" + val1 + "&2=" + val2 + "&3=" + val3 + "&4=" + val4+ "&5=" + val5,"TESPCSCF");
}
function addclick_TESPCSF()
{
	//get values
        x = new MathProcessor;
	val1 = (x.parse(document.getElementById("TESPCSF1").value));  
	val2 = (x.parse(document.getElementById("TESPCSF2").value));
	val3 = (x.parse(document.getElementById("TESPCSF3").value));
        val4 = (x.parse(document.getElementById("TESPCSF4").value));  
	val5 = (x.parse(document.getElementById("TESPCSF5").value));



	//call server
         
        document.getElementById("NOTESResult").innerHTML+= "<BR> Pad " + val1  + "' X " + val2 + "' by " + val3 + "' with Thick Edge of " + val4 + String.fromCharCode(34) + " by " + val5 + String.fromCharCode(34) +" (slope) =" ;
	
	loadXMLDoc("math.asp?calc=TESPCSF&1=" + val1 + "&2=" + val2 + "&3=" + val3 + "&4=" + val4 + "&5=" + val5,"TESPCSF");
}
function addclick_PILES()
{
	//get values
        x = new MathProcessor;
	val1 = (x.parse(document.getElementById("PILES1").value));  
	val2 = (x.parse(document.getElementById("PILES2").value));
	val3 = (x.parse(document.getElementById("PILES3").value));
        val4 = (x.parse(document.getElementById("PILES4").value));

	//call server
        if(val4 > val1)
	     document.getElementById("NOTESResult").innerHTML+= "<BR> " + val3 + " Piles " + val1 + String.fromCharCode(34) + " X " + val2 + "' Belled " + val4 + String.fromCharCode(34) +" =" ;
        else
             document.getElementById("NOTESResult").innerHTML+= "<BR> " + val3 + " Piles " + val1 + String.fromCharCode(34) + " X " + val2 + "' =" ;
			
        
	loadXMLDoc("math.asp?calc=PILES&1=" + val1 + "&2=" + val2 + "&3=" + val3 + "&4=" + val4,"PILES");
}
function addclick_WALLS()
{
	//get values
        x = new MathProcessor;
        val1 = (x.parse(document.getElementById("WALLS1").value));  
	val2 = (x.parse(document.getElementById("WALLS2").value));
	val3 = (x.parse(document.getElementById("WALLS3").value));


	//call server
         
        document.getElementById("NOTESResult").innerHTML+= "<BR> Walls " + val1 + "' X " + val3 + "' by " + val2 + String.fromCharCode(34) + " =" ;
	loadXMLDoc("math.asp?calc=WALLS&1=" + val1 + "&2=" + val2 + "&3=" + val3 ,"WALLS");
}
function addclick_PAD()
{
	//get values
        x = new MathProcessor;
	val1 = (x.parse(document.getElementById("PAD1").value));  
	val2 = (x.parse(document.getElementById("PAD2").value));
	val3 = (x.parse(document.getElementById("PAD3").value));


	//call server
         
        document.getElementById("NOTESResult").innerHTML+= "<BR> Pad " + val1 + "' X " + val2 + "' by " + val3 + String.fromCharCode(34) + " =" ;
	loadXMLDoc("math.asp?calc=PAD&1=" + val1 + "&2=" + val2 + "&3=" + val3 ,"PAD");
}
function addclick_BFT()
{
	//get values
        x = new MathProcessor;
	val1 = (x.parse(document.getElementById("BFT1").value));  
	val2 = (x.parse(document.getElementById("BFT2").value));
	val3 = (x.parse(document.getElementById("BFT3").value));
     

	//call server
         
        document.getElementById("NOTESResult").innerHTML+= "<BR> Footing " + val1 + "' X " + val2 + "' by " + val3 + String.fromCharCode(34) + " =" ;
	loadXMLDoc("math.asp?calc=BFT&1=" + val1 + "&2=" + val2 + "&3=" + val3 ,"BFT");
}
function addclick_PSP()
{
	//get values	
        x = new MathProcessor;
	val1 = (x.parse(document.getElementById("PSP1").value));  
	val2 = (x.parse(document.getElementById("PSP2").value));
	val3 = (x.parse(document.getElementById("PSP3").value));
     

	//call server
         
        document.getElementById("NOTESResult").innerHTML+= "<BR> Pie Sliced Pad " + val1 + "' X " + val2 + String.fromCharCode(34) + " with ARC " + val3 +  "' =" ;
	loadXMLDoc("math.asp?calc=PSP&1=" + val1 + "&2=" + val2 + "&3=" + val3 ,"PSP");
}

//Colors to use when fading the result area
var Color= new Array();
Color[7] = "e1e1e1";
Color[6] = "e0e0e0";
Color[5] = "ffffdd";
Color[4] = "ffffcc";
Color[3] = "ffffbb";
Color[2] = "ffffaa";
Color[1] = "ffff99";

function faderesult()
{
	if (document.getElementById('fade')) {
		
    	for(iCounter=1;iCounter < 8; iCounter++)
		{
			setTimeout("setbg('#" + Color[iCounter] + "')", iCounter * 150);
		}
		
		setTimeout("setbg('transparent')", 8 * 150);
	}
}

function setbg(col)
{
	oResult = document.getElementById('fade');
	oResult.style.backgroundColor = col;
}





//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/classes/math-processor [rev. #1]

MathProcessor = function(){
    var o = this;
    o.o = {
        "+": function(a, b){ return +a + b; },
        "-": function(a, b){ return a - b; },
        "%": function(a, b){ return a % b; },
        "/": function(a, b){ return a / b; },
        "*": function(a, b){ return a * b; },
        "x": function(a, b){ return a * b; },
        "X": function(a, b){ return a * b; },
        "^": function(a, b){ return Math.pow(a, b); },
        "~": function(a, b){ return Math.sqrt(a, b); }
    };
    o.s = { "^": 3, "~": 3, "*": 2, "x": 2, "X": 2, "/": 2, "%": 1, "+": 0, "-": 0 };
    o.u = {"+": 1, "-": -1}, o.p = {"(": 1, ")": -1};
};
with({p: MathProcessor.prototype}){
    p.methods = {
        div: function(a, b){ return parseInt(a / b); },
        fra: function(a){ return a - parseInt(a); },
        sum: function(n1, n2, n3, n){ for(var r = 0, a, l = (a = arguments).length; l; r += a[--l]); return r; },
        medium: function(n1, n2, n3, n){ for(var r = 0, a, l = (a = arguments).length; l; r += a[--l]); return r / a.length; }
    };
    p.parse = function(e){
        for(var n, x, _ = this, o = [], s = [x = _.RPN(e.replace(/ /g, "").split(""))]; s.length;)
            for((n = s[s.length-1], --s.length); n[2]; o[o.length] = n, s[s.length] = n[3], n = n[2]);
        for(; (n = o.pop()) != undefined; n[0] = _.o[n[0]](isNaN(n[2][0]) ? _.f(n[2][0]) : n[2][0], isNaN(n[3][0]) ? _.f(n[3][0]) : n[3][0]));
        return +x[0];
    };
    p.RPN = function(e){
        var x, r, _ = this, c = r = [, , , 0];
        if(e[0] in _.u || !e.unshift("+"))
            for(; e[1] in _.u; e[0] = _.u[e.shift()] * _.u[e[0]] + 1 ? "+" : "-");
        (c[3] = [_.u[e.shift()], c, , 0])[1][0] = "*", (r = [, , c, 0])[2][1] = r;
        (c[2] = _.v(e))[1] = c;
        (!e.length && (r = c)) || (e[0] in _.s && ((c = r)[0] = e.shift(), !e.length && _.error()));
        while(e.length){
            if(e[0] in _.u){
                for(; e[1] in _.u; e[0] = _.u[e.shift()] * _.u[e[0]] + 1 ? "+" : "-");
                (c = c[3] = ["*", c, , 0])[2] = [-1, c, , 0];
            }
            (c[3] = _.v(e))[1] = c;
            e[0] in _.s && (c = _.s[e[0]] > _.s[c[0]] ?
                ((c[3] = (x = c[3], c[2]))[1][2] = [e.shift(), c, x, 0])[2][1] = c[2]
                : r == c ? (r = [e.shift(), , c, 0])[2][1] = r
                : ((r[2] = (x = r[2], [e.shift(), r, ,0]))[2] = x)[1] = r[2]);
        }
        return r;
    };
    p.v = function(e){
        var i, j, l, _ = this;
        if("0123456789.".indexOf(e[0]) + 1){
            for(i = -1, l = e.length; ++i < l && "0123456789.".indexOf(e[i]) + 1;);
            return [+e.splice(0,i).join(""), , , 0];
        }
        else if(e[0] == "("){
            for(i = 0, l = e.length, j = 1; ++i < l && (e[i] in _.p && (j += _.p[e[i]]), j););
            return _.RPN(l = e.splice(0,i), l.shift(), !j && e.shift());
        }
        else{
            if(((j = e[0].toLowerCase()) >= "a" && j <= "z") || j == "_"){
                for(i = 0; ((j = e[++i].toLowerCase()) >= "a" && j <= "z") || j == "_" || (j >= 0 && j <= 9););
                if(j == "("){
                    for(var l = e.length, j = 1; ++i < l && (e[i] in _.p && (j += _.p[e[i]]), j););
                    return [e.splice(0,i+1).join(""), , , 0];
                }
            }
        }
        _.error();
    };
    p.f = function(e){
        var n, i = 0, _ = this;
        if(((e = e.split(""))[i] >= "a" && e[i] <= "z") || e[i] == "_"){
            while((e[++i] >= "a" && e[i] <= "z") || e[i] == "_" || (e[i] >= 0 && e[i] <= 9));
            if(e[i] == "("){
                !_.methods[n = e.splice(0, i).join("")] && _.error("Função \"" + n + "\" não encontrada"), e.shift();
                for(var a = [], i = -1, j = 1; e[++i] && (e[i] in _.p && (j += _.p[e[i]]), j);)
                    j == 1 && e[i] == "," && (a.push(_.parse(e.splice(0, i).join(""))), e.shift(), i = -1);
                a.push(_.parse(e.splice(0,i).join(""))), !j && e.shift();
            }
            return _.methods[n].apply(_, a);
        }
    };
    p.error = function(s){
        throw new Error("MathProcessor: " + (s || "Erro na expressão"));
    };
}

