var IE = document.all?true:false;
document.onmousedown=click;
window.onscroll = sstchur_SmartScroller_GetCoords;
if (!IE) 
{
    document.captureEvents(Event.MOUSEMOVE);
}

document.onmousemove = getMouseXY;
   
var rButDown = false;
var scrollX = 0, scrollY = 0, tempX = 0, tempY = 0;
var bGoToQ = false;

function RefreshGraph()
{
	var refresh_graph = document.getElementById("refresh_graph");
	if(refresh_graph)
	{
		refresh_graph.value = "true";
	}
}

function CheckForChange(href, _id)
{
	var retVal = false;
	var id = document.getElementById(_id);
	var changed = document.getElementById("changed");
	
	if((id || !_id.length) && changed)
	{
		if(changed.value == 'true')
		{
			if(confirm("The properties text on this page has been updated. Navigating away from this page or changing the question number without saving will result in the changes being lost. Do you wish to proceed?"))
			{
				if(_id.length)
				{
					id.href = href;
				}
				
				retVal = true;
			}
			else
			{
				if(_id.length)
				{
					id.href = "#";
				}
			}  
		}
		else
		{
			if(_id.length)
			{
				id.href = href;
			}
			
			retVal = true;
		}
	}
	
	return retVal;
}

function SetTenantAction(action_val)
{
	var action = document.getElementById("action");
	if(action)
	{
		action.value = action_val;
	}
}

function DisableButtons(enable)
{
	var tr_next_enabled = document.getElementById("tr_next_enabled");
	var tr_back_enabled = document.getElementById("tr_back_enabled");
	var tr_next_disabled = document.getElementById("tr_next_disabled");
	var td_processing_message = document.getElementById("td_processing_message");
	var costing_rad1 = document.getElementById("costing_rad1");
	var costing_rad2 = document.getElementById("costing_rad2");
	var costing_rad3 = document.getElementById("costing_rad3");
	var costing_rad4 = document.getElementById("costing_rad4");
	var most_recent_costing = document.getElementById("most_recent_costing");
	//alert(tr_next_enabled + " " +  tr_next_disabled + " " +  td_processing_message + " " +  costing_rad1 + " " +  costing_rad2);
	if(tr_next_enabled && tr_next_disabled && td_processing_message && costing_rad1 && costing_rad2 && costing_rad3)
	{
		var msg = "&#160;";
		
		if(document.getElementById('_submitting').value == 'true')
		{//alert(enable);
			if(!enable)
			{
				//alert(1);
				if(costing_rad1.checked == true)
				{
					msg = "<div style=\"margin-top:5px;margin-bottom:5px\">Creating new site costing analysis. Please wait....</div>";
					
				}
				else if(costing_rad2.checked == true || (most_recent_costing && costing_rad3.checked == false))
				{
					msg = "<div style=\"margin-top:5px;margin-bottom:5px\">Opening site costing analysis. Please wait....</div>";
				}
				
				//document.getElementById('_msg').value = msg;
				//alert(document.getElementById('_msg').value);
				td_processing_message.innerHTML = msg;
				
				if(costing_rad1.checked || costing_rad2.checked || costing_rad3.checked)
				{
					tr_next_enabled.style.display = '';
					tr_back_enabled.style.display = 'none';
					tr_next_disabled.style.display = 'none';
				}
				else
				{
					if(most_recent_costing)
					{
						tr_next_enabled.style.display = '';
						tr_back_enabled.style.display = 'none';
						tr_next_disabled.style.display = 'none';
					}
					else
					{
						tr_next_enabled.style.display = 'none';
						tr_back_enabled.style.display = '';
						tr_next_disabled.style.display = 'none';
					}
				}
			}
			else if(enable == 1)
			{//alert(2);
				setTimeout("DisableButtons(2);", 2000);
			}
			else
			{//alert(3);
				td_processing_message.innerHTML = msg;
				
				tr_next_enabled.style.display = '';
				tr_next_disabled.style.display = 'none';
				tr_back_enabled.style.display = 'none';
			}
		}
		else if(bGoToQ == false)
		{
			td_processing_message.innerHTML = msg;
			if(costing_rad1.checked || costing_rad2.checked || costing_rad3.checked || costing_rad4.checked)
			{
				tr_next_enabled.style.display = '';
				tr_back_enabled.style.display = 'none';
				tr_next_disabled.style.display = 'none';
			}
			else
			{
			
				if(most_recent_costing)
				{
					tr_next_enabled.style.display = '';
					tr_back_enabled.style.display = 'none';
					tr_next_disabled.style.display = 'none';
				}
				else
				{
					tr_next_enabled.style.display = 'none';
					tr_back_enabled.style.display = '';
					tr_next_disabled.style.display = 'none';
				}
			}		
		}
	}
}

function PromptToSave(txt, href)
{
	var retVal = true;
	var answer = confirm("Navigating away from this page without saving will result in any unsaved changes made to the " + txt + " information being lost. Do you wish to continue?");
	if(!answer)
	{
		retVal = false;   
	}

	if(retVal == true)
	{
		document.forms[0].action = href;
		//alert(document.forms[0].action);
		document.forms[0].submit();
	}
}

function CheckRegForm()
{
	var retVal = true;
	var email = document.getElementById("email");
	if(email && !email.value.length)
	{
		alert("Please enter a valid email address");
		retVal = false;
	}
	
	return retVal;
}

function ResetLoginForm()
{
	var username = document.getElementById('username');
	var password = document.getElementById('password');
	
	if(username && password)
	{
		username.value = "";
		password.value = "";
	}
	//document.getElementById('username').value='';javascript:document.getElementById('password').value=''
}

function CheckURL()
{
	var retVal = true;

	var qst = document.getElementById("opt_qst");
	var init = document.getElementById("opt_init");
	var edit_client = document.getElementById("opt_edit_client");
	var add_client = document.getElementById("opt_edit_user");
	var bCheckClient = false;
	if(qst && qst.checked == true)
	{
		document.forms[0].action = "bwa.php";
		bCheckClient = true;
	}
	else if(init && init.checked == true)
	{
		document.forms[0].action = "bwa_bld.php";
		bCheckClient = true;
	}
	else if(edit_client && edit_client.checked == true)
	{
		document.forms[0].action = "bwa_list_clients.php";
	}
	else if(add_client && add_client.checked == true)
	{
		var client = document.getElementById("client_idx");
		if(client)
		{
			if(client.value == "0")
			{
				alert("Please select a client");
				retVal = false;
			}
			else
			{
				document.forms[0].action = "bwa_list_users.php";
			}
		}
	}
	
	if(bCheckClient == true)
	{
		var client = document.getElementById("client");
		if(client)
		{
			if(client.value == "0")
			{
				retVal = false;
				alert("Please select a client");
			}
		}
	}
	
	return retVal;
}

function ConfirmDiscard()
{
	if(confirm("Are you sure that you wish to discard all changes made since this site costing analysis was re-opened?"))
	{
		document.getElementById("_discard").value = "true";
		document.forms[0].submit();
	}
}

function CheckForFirstQ()
{
	var popup = document.getElementById("popup");
	//alert(popup);
	if(popup && popup.value.length)
	{
		alert(popup.value);
		//alert("Please note that each answer submitted is saved as you progress through this site costing analysis. However, should wish to revert to the version of the analysis as it was when initially re-opened, click the 'Discard Changes' button and confirm that all revisions made to answers should be discarded. Further backups of analyses may be saved by using the 'Save As' functionality.");
	}
}

function GoToQuestions()
{
	var n_costing_idx = document.getElementById("n_costing_idx");
	var e_not_exists = document.getElementById("e_not_exists");
	//alert(n_costing_idx + " " + e_not_exists);
	if(n_costing_idx || e_not_exists)
	{
		bGoToQ = true;
		
		document.forms[0].action = "bwa_question.php";
		document.forms[0].submit();
	}
}

function CheckLoginForm()
{
	var retVal = true;
	var username = document.getElementById("username");
	var password = document.getElementById("password");
	var email = document.getElementById("email");
	
	if(username && password && email)
	{
		//if(((!username.value.length || !password.value.length) && email.value.length) || (!username.value.length && !password.value.length && !email.value.length))
		if((!username.value.length && !password.value.length && !email.value.length) || ((!username.value.length && password.value.length) || (username.value.length && !password.value.length)))
		{
			retVal = false;
			alert("Please enter a username and password or email address");
		}
	}
	else
	{
		retval = false;
	}
	
	return retVal;
}

function set_prompt_to_save()
{

    document.getElementById("prompt_to_save").value = "true";
    //alert(document.getElementById("prompt_to_save").value);
}

function SetChk(bld)
{
	var chk = document.getElementById(bld + "_check");
	var txt = document.getElementById(bld + "_val");
	
	if(chk && txt)
	{
		if(txt.value.length)
		{
			chk.checked = true;
		}
		else
		{
			chk.checked = false;
		}
	}
}

function set_checks(id)
{
    var check = document.getElementById(id);
    
    if(check.checked == true)
    {
        check = document.getElementById("bld_grp_0");
        for(var i = 1; check; i++)
        {
            if(id != check.id)
            {
                check.checked = false;
            }
            
            check = document.getElementById("bld_grp_" + i);
        }
    }
}

function SetSaveAs()
{
    ResetAnswers();
    var ssa = document.getElementById("set_save_as");
    if(ssa)
    {
        ssa.value = "true";
    }
}

function sstchur_SmartScroller_GetCoords()
{
  if (document.all)
  {
     if (!document.documentElement.scrollLeft)
        scrollX = document.body.scrollLeft;
     else
        scrollX = document.documentElement.scrollLeft;
           
     if (!document.documentElement.scrollTop)
        scrollY = document.body.scrollTop;
     else
        scrollY = document.documentElement.scrollTop;
  }   
  else
  {
     scrollX = window.pageXOffset;
     scrollY = window.pageYOffset;
  }

  //document.forms[formID].xCoordHolder.value = scrollX;
  //document.forms[formID].yCoordHolder.value = scrollY;
}

function DisplayBuildings()
{
    var disp = document.getElementById("disp_bld_type");   
    if(disp)
    {
        var i = 1;
        var div;
        do
        {
           var id = "bld_" + i;
           var tr = document.getElementById(id + "_tr");
           div = document.getElementById(id + "_div"); 
           if(div)
           {
                if(disp.value == "All")
                {
                    tr.style.display = "";   
                }
                else
                {
                    if(disp.value == div.innerHTML)
                    {
                        tr.style.display = "";  
                    }
                    else
                    {
                        tr.style.display = "none";    
                    }   
                }
           }
           i++;        
        }while(div);
        
    }
}

var prevHlp = "";
function DisplayHelp(id, bDisp)
{
    var elm = document.getElementById(id);
    if(elm)
    {
        if(bDisp == true)
        {
			
			if(prevHlp.length && prevHlp != id)
            {  
				var prev_elm = document.getElementById(prevHlp);
                prev_elm.style.display = "none";
            }
			
			if(elm.style.display == "none")
			{
            	elm.style.display = "";
            	elm.style.left = tempX + "px";
            	elm.style.top = tempY + "px";
			}
			else
			{
				elm.style.display = "none";
            	prevHlp = "";
			}
            
            prevHlp = id;
        }
        else
        {
            elm.style.display = "none";
            prevHlp = "";
        }
    
    }
}

function getMouseXY(e) 
{
    if (IE)
    { // grab the x-y pos.s if browser is IE
        tempX = event.clientX + document.body.scrollLeft + scrollX;
        tempY = event.clientY + document.body.scrollTop + scrollY;
    }
    else 
    {  // grab the x-y pos.s if browser is NS
        tempX = e.pageX;// + scrollX;
        tempY = e.pageY;// + scrollY;
        
        //alert(tempX +  " " + tempY);
    }  
    
    return true;
}

function click(e) 
{
  if (navigator.appName == "Netscape")
  {
        if(e.which == 3) 
        {
            rButDown = true;
        }
        else
        {
            rButDown = false;
        }
   }
   else if (navigator.appName == "Microsoft Internet Explorer")
   {
        if(event.button == 2) 
        {
            rButDown = true;
        }
        else
        {
            rButDown = false;
        }
        
    }
    
    return true;
}

function AdjustPercentages(colCount)
{
	var disp_bld_type = document.getElementById("disp_bld_type");
    for(var i = 0; i < gTxtArr.length; i++)
    {
		if((disp_bld_type.value == "All" || disp_bld_type.value == gTxtArr[i].getBldClass()) && ((document.getElementById("sel_none").value == "true" && gColumn == (i % colCount)) || document.getElementById("sel_all").value == "true"))
		{
			if(document.getElementById("sel_none").value == "true")
			{
        		gTxtArr[i].setMin(0);
			}
			else 
			{
				if(gColumn == (i % colCount))
				{	
					for(var j = (i - gColumn); j < (i + (colCount - gColumn)); j++)
					{
						//if(j == gColumn)
						{
						//alert(j);
							gTxtArr[j].setMin(0);
							gTxtArr[j].setCurVal(0);
						}
					}
					
					gTxtArr[i].setMin(100);
				}
				else
				{
					gTxtArr[i].setMin(0);
					gTxtArr[i].setCurVal(0);
				}
			}
		}
		/*else if(document.getElementById("sel_all").value == "true")
		{
			gTxtArr[i].setMin(0);
			gTxtArr[i].setCurVal(0);
		}*/
    }
    
    /*
        var setZero = true;
        var dv = document.getElementById("bld_1_div");
        for(var j = 2; dv && setZero == true; j++)
        {
            if(gTxtArr[i].getBldClass() == dv.innerHTML)
            {
                var d = document.getElementById("bld_div_" + (j - 1));
                var radio = document.getElementById(d.innerHTML + "_" + j);
                if(radio && radio.checked == true)
                {
                    setZero = false;
                }  
            }   
            
            dv = document.getElementById("bld_" + j + "_div");
        }
        
        /*
        var d = document.getElementById("bld_div_" + (Math.floor(i / colCount)));
        var dv = document.getElementById("bld_"  + ((Math.floor(i / colCount)) + 1) +  "_div");
        if(d && dv)
        {
            var radio = document.getElementById(d.innerHTML + "_" + ((i % colCount) + 1));
            if(radio && radio.checked == false)
            {
                gTxtArr[i].setMin(0);
            }
            else
            {
                alert(i);
            }
        }  */
    //}*/
    
	if(document.getElementById("sel_none").value == "true")
	{
		bSelNone = true;
	}
	
	var div = document.getElementById("bld_div_0");
    var clsDiv = document.getElementById("bld_1_div");
	
    var nArrCount = 0;
    for(var i = 1; div; i++)
    {
		SetPercentages(ReplaceAmp(div.value), clsDiv.innerHTML, colCount, true, bSelNone);
		SetPrevRad(ReplaceAmp(div.value), clsDiv.innerHTML, colCount);
		div = document.getElementById("bld_div_" + i);
      	clsDiv = document.getElementById("bld_" + (i + 1) + "_div");
	}
		
	
	
    /*var div = document.getElementById("bld_div_0");
    var clsDiv = document.getElementById("bld_1_div");
	
    var nArrCount = 0;
    for(var i = 1; div; i++)
    {
        /*for(var j = 0; j < colCount; j++)
        {
            var radio = document.getElementById(div.innerHTML + "_" + (j + 1));
            if(radio && radio.checked == false)
            {
                for(k = 0; k < gTxtArr.length - j; k++)
                {
                    if(gTxtArr[k].getBldClass() == clsDiv.innerHTML)
                    {
                        
                    }
                }
                //gTxtArr[((i - 1) * colCount) + j].setMin(gTxtArr[((i - 1) * colCount) + j].getMin - parseFloat(radio.value));
            }  
        }*/
        
        /*if(gTxtArr[k + j].getMin() > 0)
        {
            //alert(i + " " + j + " " + k + " " + gTxtArr[k + j].getMin() + " " + parseFloat(radio.value));
            gTxtArr[k + j].setMin(gTxtArr[k + j].getMin() - parseFloat(radio.value));
        }*/
        //alert(div.innerHTML + " " +  clsDiv.innerHTML);
        //AdjustPercent(div.innerHTML, clsDiv.innerHTML, 1, colCount);
        /*var radio = document.getElementById(div.innerHTML + "_1");
        
        for(var j = 2; radio; j++)
        {
            if(radio.checked == false)
            {
                gTxtArr[nArrCount].setMin(0);
            }
            
            radio = document.getElementById(div.innerHTML + "_" + j);
            if(radio)
            {
                nArrCount++; 
            }  
        }*/
		/*if(document.getElementById("sel_none").value == "true")
		{
			bSelNone = true;
		}
		SetPercentages(ReplaceAmp(div.value), clsDiv.innerHTML, colCount, true, bSelNone);
		//alert(document.getElementById("sel_all").value);
		/*if((disp_bld_type.value == "All" || disp_bld_type.value == clsDiv.innerHTML) && ((document.getElementById("sel_none").value == "true" && gColumn == ((i - 1) % colCount)) || document.getElementById("sel_all").value == "true"))
		{
			//alert(disp_bld_type.value + " " + document.getElementById("sel_all").value + " " + document.getElementById("sel_none").value + " " + ((i - 1) % colCount) + " " + gColumn);
			var bSelNone = false;
			if(document.getElementById("sel_none").value == "true")
			{
				bSelNone = true;
			}
			if(document.getElementById("sel_none").value == "true")
			{
        		SetPercentages(ReplaceAmp(div.value), clsDiv.innerHTML, colCount, true, bSelNone);
			}
			else
			{
				AdjustPercent(ReplaceAmp(div.value), clsDiv.innerHTML, 0, colCount, true, bSelNone);
			}
			//AdjustPercent(ReplaceAmp(div.value), clsDiv.innerHTML, 0, colCount, true);    
        }
		/*else
		{
			// initialise the variables
			var pc = new Array();
    		var pcMin = new Array();
	
			for(var i = 0; i < gTxtArr.length; i++)
			{
				pc[i] = document.getElementById(gTxtArr[i].getName());  
				pcMin[i] = document.getElementById(gTxtArr[i].getName() + "_min");    
			}
			
			UpdateVals(gTxtArr, pc, pcMin, colCount);
    		SetPercent(clsDiv.innerHTML, colCount);
		}*/
		
       // div = document.getElementById("bld_div_" + i);
      //  cl/sDiv = document.getElementById("bld_" + (i + 1) + "_div");
   // }
   
    //origChk = 0;
    //origRad = 0;
    
    /*for(var i = 0; i < gTxtArr.length; i++)
    {
        alert(gTxtArr[i].getMin());    
    }*/
}

function SetPrevRad(bldName, bldClass, nColCount)
{
	var div = document.getElementById("bld_div_0");
    //var clsDiv = document.getElementById("bld_1_div");
	var bFound = false;
    for(var i = 1; div; i++)
    {
		if(ReplaceAmp(div.value) == bldName)
		{
			for(var j = 1; j <= nColCount; j++)
			{
				var rad_id = document.getElementById(bldName + "_" + j);
				if(rad_id && rad_id.checked == true)
				{	
					bFound = true;
					prevBldRad[i - 1] = rad_id.id;
					//alert(prevBldRad[i - 1]);
					break;
				}
			}
			
			if(bFound == false)
			{
				prevBldRad[i - 1] = "";
			}
		}
		
		div = document.getElementById("bld_div_" + i);
	}
	/*var bld_count = document.getElementById("bld_count");
	if(bld_count && parseInt(bld_count.value))
	{
		bld_count = parseInt(bld_count.value);
	}
	
	
	for(var i = 1; i <= nColCount; i++)
	{
		var rad_id = document.getElementById(bldName + "_" + i);
		if(rad_id && rad_id.checked == true)
		{
			prevBldRad[i - 1] = rad_id.id;
		}
	}*/
	/*for(var i = 0; i < gTxtArr.length; i++)
	{
		if(gTxtArr[i].getBldClass() == bldClass)
		{
			var col = ((i % nColCount) + 1)
			//for(var j = 1; j <= nColCount; j++)
			{
				var rad_id = document.getElementById(bldName + "_" + col);
				if(rad_id && rad_id.checked == true)
				{	
					for(var j = 0; j < gGia.length; j++)
					{
						if(gGia[j].getType() == bldClass)
						{
							gGia[j].setPrevRad(rad_id);
						}
					}
				}
			}
		}
	}*/
	
		
}

function GetPrevRad(bldName, bldClass, nColCount)
{
	var div = document.getElementById("bld_div_0");
    //var clsDiv = document.getElementById("bld_1_div");
	
    var nArrCount = 0;
	var prevRad = ""
    for(var i = 1; div; i++)
    {
		if(ReplaceAmp(div.value) == bldName)
		{
			for(var j = 1; j <= nColCount; j++)
			{
				var rad_id = document.getElementById(bldName + "_" + j);
				if(rad_id && rad_id.checked == true)
				{
					prevRad = prevBldRad[i - 1];
					break;
				}
			}
		}
		
		div = document.getElementById("bld_div_" + i);
	}
	
	return prevRad;
}

function SetPercentages(bldName, bldClass, colCount, bSetAll, bSelNone)
{
	var pc = new Array();
    var pcMin = new Array();
   
    // initialise the variables
    for(var i = 0; i < gTxtArr.length; i++)
    {
        pc[i] = document.getElementById(gTxtArr[i].getName());  
        pcMin[i] = document.getElementById(gTxtArr[i].getName() + "_min");    
    }
	
	var nTotVals = GetCurrentVals(pc, gTxtArr);
	
	for(var i = 0; i < pc.length; i++)
    {   
        /*if(!prevClass.length)
        {
            prevClass = src[i].getBldClass();
        }*/
        
        //if(parseFloat(gTxtArr[i].getMin()) >= 100)
        {  
            //alert(nTotMin);
            //var idx = i - (i % cols);
            //for(var j = idx; j < idx + colCount; j++)
            {
                /*if(parseFloat(src[j].getMin()) <= 0)
                {
                    dest[j].value = "";
                    destMin[j].innerHTML = "&#160;";
                }
                else
                {*/
                    //dest[j].value = "";//parseFloat(src[j].getMin()).toFixed(0);
					pc[i].value = (gTxtArr[i].getCurVal()  && isNaN(gTxtArr[i].getCurVal()) == false? parseFloat(gTxtArr[i].getCurVal()).toFixed(0): "");
                    pcMin[i].innerHTML = parseFloat(gTxtArr[i].getMin()).toFixed(0) == "0" || parseFloat(gTxtArr[i].getMin()).toFixed(0) == "-0"? "&#160;": (parseFloat(gTxtArr[i].getMin()).toFixed(0) == "100.0"? "100": parseFloat(gTxtArr[i].getMin()).toFixed(0));
					/*if(type)
					{
						alert("1) " + destMin[j].innerHTML);
					}*/
                //}
            }
        
			
        }
		
		var minHid = document.getElementById(pcMin[i].id + "_h");
        if(minHid)
        {
            if(parseInt(pcMin[i].innerHTML) > 0)
            {
                minHid.value = pcMin[i].innerHTML;
            }
            else
            {
                minHid.value = "0";
            }
			
			//alert(minHid.value);
        }
	}
	
	SetPercent(bldClass, colCount);	
}

function DispOptions()
{
	var client_idx = document.getElementById("client_idx");
	var opt_edit_user = document.getElementById("opt_edit_user");
	var opt_edit_client = document.getElementById("opt_edit_client");
	var td_users = document.getElementById("td_users");
	var client = document.getElementById("client");
	var tr_clnt = document.getElementById("tr_clnt");
	var opt_init = document.getElementById("opt_init");
	var opt_qst = document.getElementById("opt_qst");
	
	if(client_idx && opt_edit_user && td_users && client && tr_clnt && opt_init && opt_qst)
	{
		tr_clnt.style.display = 'none'; 
		if(opt_edit_user.checked == true || opt_edit_client.checked == true)
		{
			client.value = "0";
			
			if(opt_edit_user.checked == true)
			{
				td_users.style.display = "";
			}
			else
			{
				td_users.style.display = "none";
			}
		}
		else
		{
			td_users.style.display = "none";
			client_idx.value = "0";
			if(opt_init.checked == true || opt_qst.checked == true)
			{
				tr_clnt.style.display = '';
			}
		}
	}
}

var prevTd = "";
function DispOpt(bClose, id, colCount, bSelectAll)
{    
	if(bSelectAll == true && document.getElementById("sel_all").value == "true")
	{
		SetRad(2, colCount);
		DispOpt(true, true, colCount);
		SetRad(1, colCount);
	}

    var td = document.getElementById(id); 
    
    if(id == -1)
    {
        if(prevId.length)
        {
            document.getElementById(prevTd).style.backgroundColor = "white";    
        }
    }
    else
    {
        var div = document.getElementById("div_opt");
        if(div)
        {
            if(bClose == false)
            {
                document.getElementById("bld_opt_1").checked = false;
                document.getElementById("bld_opt_2").checked = false;
                //document.getElementById("bld_opt_3").checked = false;
                
                div.style.left = tempX + "px";
                div.style.top = tempY + "px";
                div.style.display = "";
                
                if(td)
                {     
                    td.style.backgroundColor = "#D0D0D0";
                    if(prevTd.length && prevTd != id)
                    {
                        document.getElementById(prevTd).style.backgroundColor = "white";   
                    }
                    prevTd = id;
                }
            }
            else
            {
                if(id == true)
                {
                    document.getElementById("prompt_to_save").value = "true";
                    AdjustPercentages(colCount); 
                }
                else
                {
                    ResetRads(colCount);
                }
                
                /*if (document.all)
                {
                     if (!document.documentElement.scrollLeft)
                        document.body.scrollLeft = scrollX;
                     else
                        document.documentElement.scrollLeft = scrollX;
                           
                     if (!document.documentElement.scrollTop)
                        document.body.scrollTop = scrollY;
                     else
                        document.documentElement.scrollTop = scrollY;
                }  
                else 
                {
                     window.pageXOffset = scrollX;
                     window.pageYOffset = scrollY;
                }*/
                
                div.style.display = "none";
                if(prevTd.length)
                {
                    document.getElementById(prevTd).style.backgroundColor = "white";
                }
            }     
        } 
    }
	
	document.getElementById("sel_all").value = "false";
	document.getElementById("sel_none").value = "false";
	gColumn = -1;
}

function ValidatePercent()
{
    var retVal = true;
    var ssa = document.getElementById("set_save_as");
    var sa = document.getElementById("save_as")
    if(sa && ssa && ssa.value == "true" && sa.value.length == 0)
    {
        alert("Please enter a site costing survey name");
        retVal = false;         
    }
    
    var input = document.getElementById("input");
    if(input)
    {
        if(input.value.length == 0)
        {
			var answer = confirm("You have not entered or selected a value. Do you wish to proceed?");
			if(!answer)
			{
            	retVal = false;   
			}
        }
    }
    
    var elmArr = document.getElementsByTagName("td");
    if(elmArr)
    {
        for(var i = 0; i < elmArr.length; i++)
        {
            if(elmArr[i].id.substr(elmArr[i].id.length - 4, 4) == "_tot" && elmArr[i].innerHTML != "OK")
            {
				var answer = confirm("The option percentages for each building type do not total 100%. Do you wish to proceed?");
                //alert("The option percentages for each building type must total 100%");
				if(!answer)
				{
                	retVal = false;
				}
				 
                break;
            }
        }
    }
    
    if(retVal == false && ssa)
    {
        ssa.value = "false";
    }
	else if(retVal == true)
	{
		var bAllOs = true;
		var col = document.getElementById("col_0");
		if(col)
		{
			if(col.innerHTML == "Outside Scope (%)")
			{
				var div = document.getElementById("bld_cls_div_0"); 
				for(var i = 1; div && bAllOs == true; i++)
				{
					var txt = document.getElementById(div.innerHTML + "_1");
					if(txt)
					{
						//alert(txt.id + " " + txt.value);
						if(txt.value != "100")
						{
							bAllOs = false;
						}
					}
				   
					div = document.getElementById("bld_cls_div_" + i);
				}
		
				if(bAllOs == true)
				{
					var answer = confirm("All of the Building Categories have been estimated at 100% Outside Scope for this question. Do you wish to proceed to the next question?");
					if(!answer)
					{
						retVal = false;	
					}
				}
			}
		}
	}
    
    return retVal;
}

var gGia;
var gTxtArr;

function GIA(tot, type, numBld)
{
    this.totGia = tot;
    this.bldClass = type;
    this.bldCount = numBld;
	//this.prevRad = "";
    
    this.output = output;
    this.getType = function(){ return this.bldClass;};
    this.getGia = function(){ return this.totGia;};
	//this.getPrevRad = function(){ return this.prevRad;};
	//this.setPrevRad = function(prevRad){ this.prevRad = prevRad;};
}

function classTxt(sName, bldClass)
{
    this.name = sName;
    this.bld_class = bldClass;
    this.min = 0;
    this.cur_val = 0;  
    
    this.getName = function() { return this.name; };
    this.getBldClass = function() { return this.bld_class; };
    this.setCurVal = function(val) { this.cur_val = val; };
    this.getCurVal = function() { return this.cur_val; };
    this.setMin = function(min) { this.min = min; };
    this.getMin = function() { return this.min; };
}

function output()
{
    alert(this.totGia + " " + this.bldClass + " " + this.bldCount);
}

var origRad = 0;
var origChk = 0;

function ResetRads(colCount)
{
    var div = document.getElementById("bld_div_0"); 
    for(var i = 1; div; i++)
    {
        var chk = document.getElementById(ReplaceAmp(div.value) + "_check");
        var found
        if(origChk)
        {
            found = false;
            for(var j = 0; j < origChk.length && found == false; j++)
            {
                if(ReplaceAmp(div.value) + "_check" == origChk[j])
                {
                    found = true;  
                }
            }
            
            if(found == true)
            {
                chk.checked = true;
            }
            else
            {
                chk.checked = false;
            }
        }
        
        if(origRad)
        {
            for(var k = 1; k <= colCount; k++)
            {
               found = false;
               rad = document.getElementById(ReplaceAmp(div.value) + "_" + k); 
               for(var j = 0; j < origRad.length && found == false; j++)
                {
                    if(ReplaceAmp(div.value) + "_" + k == origRad[j])
                    {
                        found = true;  
                    }
                }
                
                if(found == true)
                {
                    rad.checked = true;
                }
                else
                {
                    rad.checked = false;
                }
            }
        }
       
        div = document.getElementById("bld_div_" + i);
    }
    
    origChk = 0;
    origRad = 0;
}

function ReplaceAmp(val)
{
	var bld_name = "";
	for(var i = 0; i < val.length; i++)
	{
		if(val.substr(i,5) == "&amp;")
		{
			bld_name += "_AMP_";
			i += 4;
		}
		else if(val.charAt(i) == "&")
		{
			bld_name += "_AMP_";
		}
		else if(val.charAt(i) == ".")
		{
			bld_name += "_";
		}
		else
		{
			bld_name += val.charAt(i);
		}
	}
	
	return bld_name;
}

var gColumn = -1;
function SetRad(opt, colCount)
{
	if(opt == 1)
	{
		document.getElementById("sel_all").value = "true";
	}
	else
	{
		document.getElementById("sel_none").value = "true";	
	}
    
    origRad = new Array();
    origChk = new Array();
    var origRadCount = 0;
    var origChkCount = 0;
    
    if(prevTd.length)
    {
        var idx = prevTd.indexOf("_");
        if(idx >= 0)
        {
            var col = parseInt(prevTd.substr(idx + 1));
			gColumn = col;
			
            var div = document.getElementById("bld_div_0");
            var clsDiv = document.getElementById("bld_1_div");
            var tr = document.getElementById("bld_1_tr");
            
            for(var i = 1; div; i++)
            {
                //alert(div.innerHTML + " > " + tr.style.display);
                if(tr.style.display != "none")
                {
                    var chk = document.getElementById(ReplaceAmp(div.value) + "_check");
					//alert(chk);alert(chk.id);
                    for(var j = 1; j <= colCount; j++)
                    {
                       rad = document.getElementById(ReplaceAmp(div.value) + "_" + j); 
                       if(rad)
                       {
                            if(rad.checked == true)
                            {
                                origRad[origRadCount++] = ReplaceAmp(div.value) + "_" + j;
                            }
                       }
                    }
                    
                    if(chk.checked == true)
                    {
                        //alert(ReplaceAmp(div.value) + "_check");
                        origChk[origChkCount++] = ReplaceAmp(div.value) + "_check";
                    }
                    
                    var radCount = 0;
                    var rad = document.getElementById(ReplaceAmp(div.value) + "_" + (col + 1));
                 //alert(rad + " " + chk);   
                    if(rad && chk)
                    {   
                        if(opt == 1)
                        {
                            rad.checked = true;
                        }
                        else if(opt == 2)
                        {
                            rad.checked = false;
                        }
                        else
                        {
                            if(rad.checked == true)
                            {
                                rad.checked = false;
                            }
                            else
                            {
                                rad.checked = true;
                            }
                        }
                    }

                    for(var j = 1; j <= colCount; j++)
                    {
                       rad = document.getElementById(ReplaceAmp(div.value) + "_" + j); 
                       if(rad)
                       {
                            if(rad.checked == true)
                            {
                                //alert(div.innerHTML + "_" + j);
                                radCount++;
                            }
                       }
                    }
                    
                    if(radCount)
                    {
                        chk.checked = true;
                    }
                    else
                    {
                        chk.checked = false;
                    }              
                }
                
                div = document.getElementById("bld_div_" + i);
                clsDiv = document.getElementById("bld_" + (i + 1) + "_div"); 
                tr = document.getElementById("bld_" + (i + 1) + "_tr");
            }
        }
    }
}

var prevBldRad = new Array();

function InitGia()
{
    //var sa = document.getElementById("save_answer");
    //if(sa.value == "true")
    {
        //sa.value = "false";
        //window.location.reload(false);
        //return;
    }
	var pcnt = document.getElementById("pcnt");
	var questions = document.getElementById("questions");
	
	if(pcnt && questions)
	{
		questions.style.height = pcnt.clientHeight + "px";
	}
	else if(questions)
	{
		questions.style.height = "150px";
	}
    
    gGia = new Array();
    gTxtArr = new Array();
    
    var nArrCount = 0;
	var colCount = 0;
    var gia_tot_count = document.getElementById("gia_tot_count");
    if(gia_tot_count)
    {
        colCount = document.getElementById("prev_col_count");
        if(colCount)
        {
            colCount = colCount.value;
        }
            
        /*var bld = document.getElementById("bld_div_0");
        for(var k = 1; bld; k++)
        {
            //alert(bld.innerHTML);
            for(var j = 0; j < 3; j++)
            {
                var hd = document.getElementById("b_hd_" + j);
                var col =  document.getElementById(bld.innerHTML + "_bcol_" + j);   
                if(hd && col)
                {
                    if(hd.offsetWidth > col.offsetWidth)
                    {
                        col.width = hd.offsetWidth;
                    }
                    else
                    {
                        hd.width = col.offsetWidth;
                    }
                    //col.width = hd.offsetWidth;
                    //alert(col.width);
                }   
            }
            
            for(var j = 0; j < colCount; j++)
            {
                var hd = document.getElementById("head_" + j);
                var col =  document.getElementById(bld.innerHTML + "_bcol_" + (j + 3));
                 
                if(hd && col)
                {   //alert(hd.offsetWidth + " " + col.offsetWidth);
                    if(hd.offsetWidth > col.offsetWidth)
                    {
                        col.width = hd.offsetWidth;
                    }
                    else
                    {
                        hd.width = col.offsetWidth;
                    }
                    //alert(col.width);
                }
            }
            
            bld = document.getElementById("bld_div_" + k);
            //break;
        }*/
        
        var count = gia_tot_count.value;
		var totBld = 0;
        
        for(var i = 0; i < count; i++)
        {
            var tot = document.getElementById("gia_" + (i + 1));
            var type = document.getElementById("gia_code_" + (i + 1));
            var numBld = document.getElementById("gia_count_" + (i + 1));
            
            if(tot && type && numBld && colCount)
            {
               /*for(var j = 0; j < colCount + 2; j++)
                {
                    var hd = document.getElementById("q_hd_" + j);
                    var col;
                    
                    if(j != 1)
                    {
                        col = document.getElementById(type.value + "_col_" + j);    
                    }
                    else
                    {
                        col = document.getElementById(type.value + "_tot");   
                    }
                    
                    if(hd && col)
                    {
                        if(hd.offsetWidth > col.offsetWidth)
                        {
                            col.width = hd.offsetWidth;
                        }
                        else
                        {
                            hd.width = col.offsetWidth;
                        }
                    //alert(col.width);
                    }
                } */
                
                gGia[i] = new GIA(tot.value, type.value, numBld.value);
				totBld += parseInt(numBld.value);
                
                // now initialise the input fields
                
                for(var j = 0; j < colCount; j++)
                {
                       var elm = document.getElementById("txt_" + nArrCount);
                       if(elm)
                       {
                            //alert(elm.value + " " +  type.value);
                            gTxtArr[nArrCount] = new classTxt(elm.value, type.value);
                       }
                       else
                       {
                            break;
                       }
                       
                       
                       // now initialise any current and min values
                       var curElm = document.getElementById(type.value + "_" + (j + 1));
                       var minElm = document.getElementById(type.value + "_" + (j + 1) + "_min_h");
                       if(curElm && minElm)
                       {
                            if(isNaN(parseInt(curElm.value)) == false)
                            {
                                gTxtArr[nArrCount].setCurVal(parseInt(curElm.value));
                            }
                            
                            if(isNaN(parseInt(minElm.value)) == false)
                            {
                                gTxtArr[nArrCount].setMin(parseInt(minElm.value));
								//alert(minElm.value);
                            }
							else
							{
								gTxtArr[nArrCount].setMin(0);
							}
                       }
                       
                       nArrCount++;
                       
                }
            }
        }
    }
	
	for(var i = 0; i < totBld; i++)
	{
		prevBldRad[i] = "";
	}
	
	var div = document.getElementById("bld_div_0");
    for(var i = 1; div; i++)
    {
		SetPrevRad(ReplaceAmp(div.value), "", colCount);
		div = document.getElementById("bld_div_" + i);
	}
}

/*
function UpdateVals(src, dest, destMin, cols)
{
    var nTotMin = 0;
    var prevClass = "";
    for(var i = 0; i < src.length; i++)
    {   
        if(src[i].getMin() < 0)
        {
            src[i].setMin(0);
        }
        
        if(!prevClass.length)
        {
            prevClass = src[i].getBldClass();
        }
        
        if(parseFloat(src[i].getMin()) >= 100)
        {  
            //alert(nTotMin);
            var idx = i - (i % cols);
            for(var j = idx; j < idx + cols; j++)
            {
                if(parseFloat(src[j].getMin()) <= 0)
                {
                    dest[j].value = "";
                    destMin[j].innerHTML = "&#160;";
                }
                else
                {
                    dest[j].value = "";//parseFloat(src[j].getMin()).toFixed(0);
                    destMin[j].innerHTML = parseFloat(src[j].getMin()).toFixed(0) == "0" || parseFloat(src[j].getMin()).toFixed(0) == "-0" || parseFloat(src[j].getMin()) < 0? "&#160;": parseFloat(src[j].getMin()).toFixed(0);
                }
            }
        
            destMin[i].innerHTML = "100";
            
            //break;
        }
        else
        {
            var val = parseFloat(src[i].getCurVal()).toFixed(0);
            dest[i].value = val > 0? val: ""; 
            destMin[i].innerHTML = parseFloat(src[i].getMin()).toFixed(0) == "0" || parseFloat(src[i].getMin()).toFixed(0) == "-0" || parseFloat(src[i].getMin()) < 0? "&#160;": parseFloat(src[i].getMin()).toFixed(0);
            //destMin[i].innerHTML = src[i].getMin() > 0? parseFloat(src[i].getMin()).toFixed(0): "&#160;";
        }
        
        var minHid = document.getElementById(destMin[i].id + "_h");
        if(minHid)
        {
            if(destMin[i].innerHTML != "&#160;")
            {
                minHid.value = destMin[i].innerHTML;
            }
            else
            {
                minHid.value = "0";
            }
        }
        
        
           
        
    }
}

function GetCurrentVals(src, dest)
{
    var nTot = 0;
    for(var i = 0; i < src.length; i++)
    {
        //alert(dest[i].getName());
        var val = src[i].value.length > 0? parseFloat(src[i].value): 0;
        dest[i].setCurVal(val);
        nTot += val;
        
        //val = srcMin[i].innerHTML.length > 0? parseFloat(srcMin[i].innerHTML): 0;
        //dest[i].setMin(val);
    }
    
    return nTot;
}

function AdjustPercent(bldName, bldClass, bCheck, nColCount)
{
    var pc = new Array();
    var pcMin = new Array();
    var bldGia = 1;
    
    var check = document.getElementById(bldName + "_check");
    if(check)
    {
        bldGia = check.value;
    }
    
    // initialise the variables
    for(var i = 0; i < gTxtArr.length; i++)
    {
        pc[i] = document.getElementById(gTxtArr[i].getName());  
        pcMin[i] = document.getElementById(gTxtArr[i].getName() + "_min");    
    }
    
    var nTotVals = GetCurrentVals(pc, gTxtArr);
    
    // now get the total gia for this building type...
    var classGia;
    for(var i = 0; i < gGia.length; i++)
    {
        if(gGia[i].getType() == bldClass)
        {
            classGia = gGia[i].getGia();
            break;  
        }   
    } 
    
    var ratio = classGia / bldGia;
    var prev_radio = document.getElementById("prev_radio_" + bldName);
    
    var bRedistribute = false;
    
    if(check && check.checked == false)
    {    
        prev_radio.value = 0;
        radio = document.getElementById(bldName + "_1");
        var found = false;
        var nCheckedRadIdx = 0;
        for(var i = 2; radio && found == false; i++)
        {
        //alert(1);
            if(radio.checked == true)
            {//alert(2);
                if(bCheck)
                {
                    for(var j = 0; j < gTxtArr.length && found == false; j++)
                    {
                        
                        if(gTxtArr[j].getBldClass() == bldClass)
                        {
                            for(var k = 1; k <= nColCount; k++)
                            {     
                                if((i - 1) == k)
                                {
                                    if(gTxtArr[j + k - 1].getMin() >= parseFloat(radio.value))
                                    {
                                        gTxtArr[j + k - 1].setMin(gTxtArr[j + k - 1].getMin() - parseFloat(radio.value));
                                        //gTxtArr[j + k - 1].setCurVal(gTxtArr[j + k - 1].getCurVal() - gTxtArr[j + k - 1].getMin() - parseFloat(radio.value));
                                        //alert(gTxtArr[j + k - 1].getCurVal());
                                    }
                                    else
                                    {
                                        gTxtArr[j + k - 1].setMin(0);
                                    }
                                    
                                    found = true; 
                                }
                                
                                if(nTotVals < 100)
                                {
                                    var nSurplus = gTxtArr[j + k - 1].getCurVal() - gTxtArr[j + k - 1].getMin();
                                    if(nSurplus > 0.5)
                                    {
                                        var mult = 100 / (100 - parseFloat(radio.value));
                                        
                                        gTxtArr[j + k - 1].setCurVal((gTxtArr[j + k - 1].getCurVal() * mult));
                                    }
                                }
                            }   
                        }   
                    }
                    
                    nCheckedRadIdx = i - 1;
                }
               
                radio.checked = false;
            }
                    
            radio = document.getElementById(bldName + "_" + i);    
        }    
    } 
    else
    {   //alert(3);
        radio = document.getElementById(bldName + "_1");
        var found = false;
        for(var i = 2; radio && found == false; i++)
        {
            if(radio.checked == true)
            {
                for(var j = 0; j < gTxtArr.length && found == false; j++)
                {
                    //alert(bldClass);
                    if(gTxtArr[j].getBldClass() == bldClass)
                    {
                        var prevIdx = parseInt(prev_radio.value);
                        if(isNaN(prevIdx) == false && prevIdx) //&& 
                           //parseFloat(gTxtArr[j + prevIdx - 1].getCurVal()).toFixed(0) >= parseFloat(gTxtArr[j + prevIdx - 1].getMin()).toFixed(0))
                        { 
                            //gTxtArr[j + prevIdx - 1].setCurVal(gTxtArr[j + prevIdx - 1].getCurVal() - parseFloat(radio.value)); 
                            if(gTxtArr[j + prevIdx - 1].getMin() >= parseFloat(radio.value))
                                gTxtArr[j + prevIdx - 1].setMin(gTxtArr[j + prevIdx - 1].getMin() - parseFloat(radio.value));
                            //alert((j + prev
                            for(var k = 0; k <= nColCount && found == false; k++)
                            {  
                                if((i - 1) == k)
                                {
                                    prev_radio.value = k;
                                }
                            }
                            
                            found = true;
                            
                        }
                        else
                        {   //alert("H2" + " " + prevIdx);
                            for(var k = 0; k <= nColCount && found == false; k++)
                            {  
                                if((i - 1) == k)
                                { 
                                    var nSurplus = gTxtArr[i + j - 2].getCurVal();
                                    //alert(nSurplus +" " +  gTxtArr[i + j - 2].getCurVal() +" " + gTxtArr[i + j - 2].getMin());
                                    if(nSurplus > 0.5)
                                    {
                                        var nPcLeft = (100 - parseFloat(radio.value)) / 100;
                                        var newVal = nSurplus * nPcLeft;
                                        //alert(newVal + " " + nSurplus + " " + nPcLeft);
                                        gTxtArr[i + j - 2].setCurVal(newVal);
                                        
                                    }
                                   
                                    //gTxtArr[i + j - 2].setMin(parseFloat(radio.value));
                                    //var prevIdx = parseInt(prev_radio.value);
                                    //if(prevIdx == 1)
                                    //{
                                        //gTxtArr[i + j - 2].setMin(gTxtArr[i + j - 2].getMin() - parseFloat(radio.value));
                                    //}
                                    
                                    prev_radio.value = k; 
                                    //alert(prev_radio.value); 
                                    
                                    //gTxtArr[j + k - 1].setCurVal(gTxtArr[j + k - 1].getCurVal() + radio.value); 
                                    bRedistribute = true;     
                                    found = true;      
                                }
                            }
                        }
                    }   
                }
            }   
            
            radio = document.getElementById(bldName + "_" + i);   
        }     
  
    }
    
    // which radio button has been ticked?
    if(check.checked == true && bCheck == false)
    {
        var nRadIdx = 0;
        radio = document.getElementById(bldName + "_1");
        for(var i = 2; radio; i++)
        {
            if(radio.checked == true)
            {
                nRadIdx = i - 1;
                break;
            }            
           
            radio = document.getElementById(bldName + "_" + i);
        }
        
        radio = document.getElementById(bldName + "_" + nRadIdx);
        if(radio && nRadIdx)
        {
            var found = false;
            for(var i = 0; i < gTxtArr.length && found == false; i++)
            {
                if(gTxtArr[i].getBldClass() == bldClass)
                {
                    for(var j = 0; j < nColCount; j++)
                    {
                        if(bRedistribute == true && (j + 1) != nRadIdx)
                        {   
                            //alert("H3");
                            var nSurplus = gTxtArr[i + j].getCurVal();// - gTxtArr[i + j].getMin();
                            //alert(nSurplus +" " +  gTxtArr[i + j].getCurVal() +" " + gTxtArr[i + j].getMin());
                            if(Math.abs(nSurplus) > 0.5)
                            {
                                var nPcLeft = (100 - parseFloat(radio.value)) / 100;
                                var newVal = nSurplus * nPcLeft;
                                
                                gTxtArr[i + j].setCurVal(newVal);
                            }
                        }
                        else
                        {
                            if((j + 1) == nRadIdx)
                            {   //alert("H4: " + nRadIdx);
                                //alert(radio.value + " " + gTxtArr[i + j].getCurVal() + " " + gTxtArr[i + j].getMin());
                                
                                gTxtArr[i + j].setMin(gTxtArr[i + j].getMin() + parseFloat(radio.value));
                                //gTxtArr[i + j].setCurVal(gTxtArr[i + j].getCurVal() + parseFloat(radio.value));
                                //pc[i + j].value = parseFloat(gTxtArr[i + j].getCurVal()).toFixed(0);
                             //alert((i + j) + " " + gTxtArr[i + j].getCurVal());
                                found = true; 
                            }   
                        }                 
                    }
                }   
            }
        }
    }
    
    UpdateVals(gTxtArr, pc, pcMin, nColCount);
    SetPercent(bldClass, nColCount);
}

function SetPercent(rowName, totCols)
{
    var total = 0;
    var val;
	for(var i = 1; i <= totCols; i++)
	{
		var fld = document.getElementById(rowName + "_" + i);
		var fldMin = document.getElementById(rowName + "_" + i + "_min");
		if(fld && fldMin)
		{
		    if(isNaN(parseFloat(fld.value)) == false)
		    {
		        fld.value = parseFloat(fld.value).toFixed(0);
                total += parseFloat(fld.value);
            }
            
            if(isNaN(parseFloat(fldMin.innerHTML)) == false && parseFloat(fldMin.innerHTML) > 0)
		    {
		        fldMin.innerHTML = parseFloat(fldMin.innerHTML).toFixed(0);
                total += parseFloat(fldMin.innerHTML);
            }
		}
	} 
	
	var totFld = document.getElementById(rowName + "_tot");
	if(totFld)
	{
	    if(Math.abs(total - 100.0) < 0.1) // allow for innacurate division etc.
	    {
    	    totFld.style.backgroundColor = "green";
    	    totFld.innerHTML = "OK";
	    }
	    else
	    {
	        totFld.style.backgroundColor = "red";
	        if(total > 100.0)
	        {
	            total -= 100; 
	            totFld.innerHTML = "+" + total.toFixed(0) + "%";
	        }
	        else
	        {
	            total -= 100; 
	            totFld.innerHTML = total.toFixed(0) + "%";
	        }
	    }
	}
}*/
function SpreadVals(cls, nTotMin, nTotVal, src)
{
	/*var nAvailable = 100 - nTotMin;
	for(var i = 0; i < src.length; i++)
	{
		if(src[i].getBldClass() == cls)
		{
			//for(var j = i; j < src.length && src[j].getBldClass() == cls; j++)
			{
				var val = (src[i].getCurVal() / nTotVal) * nAvailable;
				//alert(val);
				src[i].setCurVal(parseFloat(val).toFixed(0));
			}
			
			//break;			
		}
	}*/
	
	return src;
}

function UpdateVals(src, dest, destMin, cols)
{
	for(var i = 0; i < src.length; i++)
	{
		if(src[i].getMin() > 100)
		{
			src[i].setMin(100);
		}
		
		if(src[i].getMin() < 0)
		{
			src[i].setMin(0);
		}
		
		if(src[i].getCurVal() < 0)
		{
			src[i].setCurVal(0);
		}
		
		dest[i].value = (parseInt(src[i].getCurVal()) == 0 || isNaN(parseInt(src[i].getCurVal()))? "": parseInt(src[i].getCurVal()).toFixed(0));
		destMin[i].innerHTML = src[i].getMin() == 0? "&#160;": (Math.abs(src[i].getMin()) < 1? (src[i].getMin() > 0? 1: "&#160;"): parseInt(src[i].getMin()).toFixed(0));
		
		var minHid = document.getElementById(destMin[i].id + "_h");
        if(minHid)
        {
            //if(destMin[i].innerHTML != "&#160;")
			if(parseInt(destMin[i].innerHTML) > 0)
            {
                minHid.value = destMin[i].innerHTML;
            }
            else
            {
                minHid.value = "0";
            }
        }
	}
}

function UpdateVals2(src, dest, destMin, cols)
{
	var prevClass = "";
	var nTotMin = 0;
	var nTotVal = 0;
	for(var i = 0; i < src.length; i++)
    { 
		//alert(src[i].getBldClass());
		if(!prevClass.length)
        {
            prevClass = src[i].getBldClass();
        }
		
		if(prevClass != src[i].getBldClass())
		{
			//alert(nTotMin);
			if(nTotMin >= 100.5)
			{
				for(var j = 0; j < src.length; j++)
    			{ 
					if(prevClass == src[j].getBldClass())
					{
						if(src[j].getMin() > nTotMin - 100)
						{
							src[j].setMin(src[j].getMin() - ((nTotMin - 100) / cols));
						}
					}
				}
			}
			/*else if(Math.abs(nTotMin - 100) <= 1.5)
			{
				for(var j = 0; j < src.length; j++)
    			{ 
					if(prevClass == src[j].getBldClass())
					{
						src[j].setMin(src[j].getMin() + 1 / cols);
						if(src[j].getMin() > 0 && src[j].getMin() < 1)
						{
							src[j].setMin(src[j].getMin() + 0.75);
						}
					}
				}
			}*/
			
			
			
			//if(nTotMin >= 99.9)
			{
				src = SpreadVals(prevClass, nTotMin, nTotVal, src);
			}
			//alert(prevClass + " " + nTotMin + " " + nTotVal);
			nTotMin = 0;
			nTotVal = 0;
			prevClass = src[i].getBldClass();
		}
		
		nTotMin += src[i].getMin();
		nTotVal += src[i].getCurVal();
	}

	//alert(nTotMin);
	//if(nTotMin >= 99.9)
	{
		if(nTotMin >= 100.5)
		{
			for(var j = 0; j < src.length; j++)
			{ 
				if(prevClass == src[j].getBldClass())
				{
					if(src[j].getMin() > nTotMin - 100)
					{
						src[j].setMin(src[j].getMin() - ((nTotMin - 100) / cols));
					}
				}
			}
		}
		/*else if(Math.abs(nTotMin - 100) <= 1.5)
		{
			for(var j = 0; j < src.length; j++)
			{ 
				if(prevClass == src[j].getBldClass())
				{
					src[j].setMin(src[j].getMin() + 1 / cols);
					if(src[j].getMin() > 0 && src[j].getMin() < 1)
					{
						src[j].setMin(src[j].getMin() + 0.75);
					}
				}
			}
		}*/
		/*else if(Math.abs(nTotMin - 100) <= 1.5)
		{
			for(var j = 0; j < src.length; j++)
			{ 
				if(prevClass == src[j].getBldClass())
				{
					src[j].setMinVal(src[j].getMinVal() + 1);
					break;
				}
			}
		}*/
		
		
		src = SpreadVals(prevClass, nTotMin, nTotVal, src);
		for(var i = 0; i < src.length; i++)
		{
			//alert(src[i].getMin() + " " + src[i].getCurVal() + " " + src[i].getBldClass());
		}
	}
	
    for(var i = 0; i < src.length; i++)
    {   
        if(!prevClass.length)
        {
            prevClass = src[i].getBldClass();
        }
        
        if(parseFloat(src[i].getMin()) >= 100)
        {  
            //alert(nTotMin);
            var idx = i - (i % cols);
            for(var j = idx; j < idx + cols; j++)
            {
                if(parseFloat(src[j].getMin()) <= 0)
                {
                    dest[j].value = "";
                    destMin[j].innerHTML = "&#160;";
                }
                else
                {
                    dest[j].value = "";//parseFloat(src[j].getMin()).toFixed(0);
                    destMin[j].innerHTML = parseFloat(src[j].getMin()).toFixed(0) == "0" || parseFloat(src[j].getMin()).toFixed(0) == "-0"? "&#160;": (parseFloat(src[j].getMin()).toFixed(0) == "100.0"? "100": parseFloat(src[j].getMin()).toFixed(0));
					/*if(type)
					{
						alert("1) " + destMin[j].innerHTML);
					}*/
                }
            }
        
			//alert(destMin[i].value);
            destMin[i].value = "100";
            
            //break;
        }
        else
        {
            var val = parseFloat(src[i].getCurVal()).toFixed(0);
            dest[i].value = val > 0? val: ""; 
            destMin[i].innerHTML = parseFloat(src[i].getMin()).toFixed(0) == "0" || parseFloat(src[i].getMin()).toFixed(0) == "-0"? "&#160;": (parseFloat(src[i].getMin()).toFixed(0) == "100.0"? "100": parseFloat(src[i].getMin()).toFixed(0));
            //if(type)
			{
				//alert("2) " + destMin[i].innerHTML);
			}
			
			//alert(destMin[i].innerHTML);
			//destMin[i].innerHTML = src[i].getMin() > 0? parseFloat(src[i].getMin()).toFixed(0): "&#160;";
        }
           
        if(prevClass != src[i].getBldClass())
        {
		//alert(nTotMin);
            if(nTotMin >= 99.9)
            {//alert(2);
                //alert(i + " " +  cols);
                for(var j = i - cols; j < i && i >= cols; j++)
                {
                    if(parseFloat(src[j].getMin()) <= 0)
                    {//alert(3);
                        dest[j].value = "";
                        destMin[j].innerHTML = "&#160;";
                    }
                    else
                    {//alert(4);
                        dest[j].value = ""; //parseFloat(src[j].getMin()).toFixed(0);
                        destMin[j].innerHTML = parseFloat(src[j].getMin()).toFixed(0) == "0" || parseFloat(src[j].getMin()).toFixed(0) == "-0"? "&#160;": (parseFloat(src[j].getMin()).toFixed(0) == "100.0"? "100": parseFloat(src[j].getMin()).toFixed(0));
                    }
                }
            }
            
            nTotMin = 0;
            
            prevClass = src[i].getBldClass();
        }
 
        var minHid = document.getElementById(destMin[i].id + "_h");
        if(minHid)
        {
            if(destMin[i].innerHTML != "&#160;")
            {
                minHid.value = destMin[i].innerHTML;
            }
            else
            {
                minHid.value = "0";
            }
        }
        //alert(i + src[i].getMin());
        nTotMin += src[i].getMin();
    }
}

function GetCurrentVals(src, dest)
{
    var nTot = 0;
    for(var i = 0; i < src.length; i++)
    {
        //alert(dest[i].getName());
        var val = src[i].value.length > 0? parseFloat(src[i].value): 0;
        dest[i].setCurVal(val);
		
		//if(val > 0)
			//alert(val);
		//alert(dest[i].getCurVal());
        nTot += val;
        
        //val = srcMin[i].innerHTML.length > 0? parseFloat(srcMin[i].innerHTML): 0;
        //dest[i].setMin(val);
    }
    
    return nTot;
}

function GetClassTot(nFirst, nLast, bEst)
{
	var nRet = 0;
	for(var i = nFirst; i < nFirst + nLast; i++)
	{
		if(bEst != -1)
		{
			//alert(gTxtArr[i].getCurVal());
			nRet += gTxtArr[i].getCurVal();
		}
		
		if(bEst == false || bEst == -1)
		{
			//alert(i + " " + gTxtArr[i].getMin());
			nRet += gTxtArr[i].getMin();
		}
		
		if(bEst === false)
		{
			//alert(gTxtArr[i].getCurVal() + " " + gTxtArr[i].getMin());
		}
			
	}
	
	return nRet;
}

function ResetBldTots(gTxtArr, idx, col, nColCount, nBldTot)
{
	/*if(nBldTot > 100)
	{
		nBldTot -= 100;
	}
	
	var nGreater = 0;
	for(var i = idx; i < nColCount; i++)
	{
		if(gTxtArr[i].getMin() > 0)
		{
			nGreater = 0;
		}
	}*/
}

function AdjustPercent(bldName, bldClass, bCheck, nColCount, bSetAll, bSelNone)
{
	//alert("AdjustPercent");
	var pc = new Array();
    var pcMin = new Array();
	var check = document.getElementById(bldName + "_check");
	var rad_id = "";
	
	// initialise the variables
    for(var i = 0; i < gTxtArr.length; i++)
    {
        pc[i] = document.getElementById(gTxtArr[i].getName());  
        pcMin[i] = document.getElementById(gTxtArr[i].getName() + "_min");    
    }

	var nTotVals = GetCurrentVals(pc, gTxtArr);
	//alert(nTotVals);
	
	if(bCheck)
	{	
		if(check && check.checked == false)
		{
			for(var i = 0; i < gTxtArr.length; i++)
			{
				var rad_val = 0;
				//alert(0);
				if(gTxtArr[i].getBldClass() == bldClass)
				{
					//alert(1);
					var col = ((i % nColCount) + 1)
					//for(var j = 1; j <= nColCount; j++)
					{
						rad_id = document.getElementById(bldName + "_" + col);
						if(rad_id && rad_id.checked == true)
						{	
							rad_val = parseFloat(rad_id.value);
							//alert(rad_val);
							rad_id.checked = false;
						}
					}
					//alert(gTxtArr[i].getMin() - rad_val);
					gTxtArr[i].setMin(gTxtArr[i].getMin() - rad_val);
					if(gTxtArr[i].getMin() < 0)
					{
						gTxtArr[i].setMin(0);
					}
				}
			}
		}
	}
	else
	{
		var bFound = false;
		var nClassTot = 0;
		var nBldTot = 0;
		var nEstTot = 0;
		var nSurplus = 0;
		
		var prevRad = GetPrevRad(bldName, bldClass, nColCount);
		var prevVal = 0;
		//alert("prevRad: " + prevRad);
		var prevCol = 0;
		if(prevRad.length)
		{
			var idx = prevRad.lastIndexOf("_");
			if(idx)
			{
				prevCol = parseInt(prevRad.substr(idx + 1));
				prevVal = parseFloat(document.getElementById(prevRad).value);
				//alert("prevCol: " + prevCol);
				
			}
			
		}
		
		for(var i = 0; i < gTxtArr.length; i++)
		{
			if(gTxtArr[i].getBldClass() == bldClass)
			{
				var col = ((i % nColCount) + 1)
				var radVal = 0;
				//alert((col - 1) + " " + prevCol);
				if(col == prevCol)
				{
					radVal = parseFloat(document.getElementById(prevRad).value);
					//alert(radVal + " " + prevVal);
					gTxtArr[i].setMin(gTxtArr[i].getMin() - prevVal);
					//alert(gTxtArr[i].getMin());
					if(gTxtArr[i].getMin() < 0)
					{
						gTxtArr[i].setMin(0);
					}
				}
				
				if(bFound == false)
				{
					nClassTot = GetClassTot(i, nColCount, false);
					nEstTot = GetClassTot(i, nColCount, true);
					nBldTot = GetClassTot(i, nColCount, -1);
					//ResetBldTots(gTxtArr, i, col, nColCount, nBldTot);
				
					if(nClassTot > 100)
					{
						nSurplus = nClassTot - 100;
						//alert(nSurplus + " " +  nEstTot + " " + nBldTot + " " + nClassTot);
						
						if(nSurplus > 0)
						{
							for(var j = i; j < (i + nColCount); j++)
							{
								//alert(j + " " + gTxtArr[j].getCurVal() + " " + (nSurplus * nEstTot));
								
								//if(gTxtArr[j].getCurVal() > 0)
								{
									var newVal = parseInt(gTxtArr[j].getCurVal() - (parseInt((nSurplus / nEstTot) * gTxtArr[j].getCurVal()))).toFixed(0);
								//alert(gTxtArr[j].getCurVal() + " " + nSurplus + " " + nEstTot + " " + newVal);
									gTxtArr[j].setCurVal(newVal);
								}
							}
						}
					}
				}
				
				rad_id = document.getElementById(bldName + "_" + col);
				//alert(rad_id);
		
				if(rad_id && rad_id.checked == true)
				{	
					radVal = parseFloat(rad_id.value);
					
					//radVal = parseFloat(document.getElementById(rad_id.id).value);
					
					gTxtArr[i].setMin(gTxtArr[i].getMin() + radVal);
					SetPrevRad(bldName, bldClass, nColCount);
				}
				
				bFound = true;
				
				//if(gTxtArr[i].getCurVal() > 0)
			//		alert(gTxtArr[i].getCurVal());
			}
		}
		
		if(check && check.checked == false)
		{
			check.checked = true;
		}
		
		
		prevRad = rad_id;
	}
	
	UpdateVals(gTxtArr, pc, pcMin, nColCount);
    SetPercent(bldClass, nColCount);
}

/*
function AdjustPercent(bldName, bldClass, bCheck, nColCount, bSetAll, bSelNone)
{
    var pc = new Array();
    var pcMin = new Array();
    var bldGia = 1;
    //alert(bldClass);
    var check = document.getElementById(bldName + "_check");
    if(check)
    {
        bldGia = check.value;
		
		if(bCheck == false && check.checked == false && bSetAll == null)
		{
			check.checked = true;
		}
    }
	
    // initialise the variables
    for(var i = 0; i < gTxtArr.length; i++)
    {
        pc[i] = document.getElementById(gTxtArr[i].getName());  
        pcMin[i] = document.getElementById(gTxtArr[i].getName() + "_min");    
    }
    
    var nTotVals = GetCurrentVals(pc, gTxtArr);
	/*for(var i = 0; i < gTxtArr.length; i++)
	{
		if(gTxtArr[i].getMin() > 0)
		{
			alert(gTxtArr[i].getMin());
		}
	}*/
  /* 
	var disp_bld_type = document.getElementById("disp_bld_type");
    // now get the total gia for this building type...
	//alert(disp_bld_type.value + " "  +  bldClass);
	//if(disp_bld_type.value == "All" || disp_bld_type.value == bldClass)
	if(bSelNone == null || bSelNone == false)
	{
		var classGia;
		for(var i = 0; i < gGia.length; i++)
		{
			if(gGia[i].getType() == bldClass)
			{
				classGia = gGia[i].getGia();
				break;  
			}   
		} 
		
		var ratio = classGia / bldGia;
		var prev_radio = document.getElementById("prev_radio_" + bldName);
		
		var bRedistribute = false;
		if(check && check.checked == false)
		{    
			prev_radio.value = 0;
			radio = document.getElementById(bldName + "_1");
			var found = false;
			var nCheckedRadIdx = 0;
			for(var i = 2; radio && found == false; i++)
			{
			//alert(1);
				if(radio.checked == true)
				{//alert(2);
					if(bCheck)
					{
						for(var j = 0; j < gTxtArr.length && found == false; j++)
						{
							
							if(gTxtArr[j].getBldClass() == bldClass)
							{
								for(var k = 1; k <= nColCount; k++)
								{     
									if((i - 1) == k)
									{
										//if(gTxtArr[j + k - 1].getMin() > 0)
										//alert(gTxtArr[j + k - 1].getMin() + "=>" + parseFloat(radio.value));
										if(gTxtArr[j + k - 1].getMin() - parseFloat(radio.value) >= 0)
										{//alert(3);
											//alert(gTxtArr[j + k - 1].getMin() + " " + parseFloat(radio.value));
											gTxtArr[j + k - 1].setMin(gTxtArr[j + k - 1].getMin() - parseFloat(radio.value));
											//alert(gTxtArr[j + k - 1].getMin());
											
											//gTxtArr[j + k - 1].setCurVal(gTxtArr[j + k - 1].getCurVal() - gTxtArr[j + k - 1].getMin() - parseFloat(radio.value));
											//alert(gTxtArr[j + k - 1].getCurVal());
										}
										else
										{
											gTxtArr[j + k - 1].setMin(0);
										}
										
										found = true; 
									}
									
									if(nTotVals <= 100)
									{//alert(4);
										var nSurplus = gTxtArr[j + k - 1].getCurVal() - gTxtArr[j + k - 1].getMin();
										//alert(gTxtArr[j + k - 1].getCurVal() + " " + gTxtArr[j + k - 1].getMin());
										if(Math.abs(nSurplus) > 0.5)
										{
											var mult = 100 / (100 - parseFloat(radio.value));
											//alert(5);
											gTxtArr[j + k - 1].setCurVal(/*gTxtArr[j + k - 1].getMin() +*/ /*(gTxtArr[j + k - 1].getCurVal() * mult));
											//alert(gTxtArr[j + k - 1].getCurVal());
										}
									}
								}   
							}   
						}
						
						nCheckedRadIdx = i - 1;
					}
				   
					radio.checked = false;
				}
						
				radio = document.getElementById(bldName + "_" + i);    
			}    
		} 
		else
		{   //alert(3);
			radio = document.getElementById(bldName + "_1");
			var found = false;
			for(var i = 2; radio && found == false; i++)
			{
				if(radio.checked == true)
				{
					for(var j = 0; j < gTxtArr.length && found == false; j++)
					{
						//alert(bldClass);
						if(gTxtArr[j].getBldClass() == bldClass)
						{
							var prevIdx = parseInt(prev_radio.value);
							if(isNaN(prevIdx) == false && prevIdx) //&& 
							   //parseFloat(gTxtArr[j + prevIdx - 1].getCurVal()).toFixed(0) >= parseFloat(gTxtArr[j + prevIdx - 1].getMin()).toFixed(0))
							{ //alert(6);
								//gTxtArr[j + prevIdx - 1].setCurVal(gTxtArr[j + prevIdx - 1].getCurVal() - parseFloat(radio.value)); 
								//alert(gTxtArr[j + prevIdx - 1].getMin() - parseFloat(radio.value));
								//alert(gTxtArr[j + prevIdx - 1].getMin() + " " + parseFloat(radio.value));
								var m = gTxtArr[j + prevIdx - 1].getMin() - parseFloat(radio.value);
								if(m < 0)
								{
									m = 0;
								}
								
								//alert(m);
								gTxtArr[j + prevIdx - 1].setMin(m);
								//alert(gTxtArr[j + prevIdx - 1].getMin());
								
								for(var k = 0; k <= nColCount && found == false; k++)
								{  
									if((i - 1) == k)
									{
										prev_radio.value = k;
									}
								}
								
								found = true;
								
							}
							else
							{   //alert("H2" + " " + prevIdx);
								for(var k = 0; k <= nColCount && found == false; k++)
								{  
									if((i - 1) == k)
									{ 
										var nSurplus = gTxtArr[i + j - 2].getCurVal();/* - gTxtArr[i + j - 2].getMin();*/
										//alert("nSurplus: " + nSurplus);
										//alert(nSurplus +" " +  gTxtArr[i + j - 2].getCurVal() +" " + gTxtArr[i + j - 2].getMin());
									/*	if(Math.abs(nSurplus) > 0.5)
										{//alert(7);
											var nPcLeft = (100 - parseFloat(radio.value)) / 100;
											//alert("nSPcLeft: " + nPcLeft);
											var newVal = nSurplus * nPcLeft;
											//alert(newVal + " " + nSurplus + " " + nPcLeft);
											gTxtArr[i + j - 2].setCurVal(/*gTxtArr[i + j - 2].getMin() +*/ //newVal);
											
										//}
									   
										//gTxtArr[i + j - 2].setMin(parseFloat(radio.value));
										//var prevIdx = parseInt(prev_radio.value);
										//if(prevIdx == 1)
										//{
											//gTxtArr[i + j - 2].setMin(gTxtArr[i + j - 2].getMin() - parseFloat(radio.value));
										//}
										
										/*prev_radio.value = k; 
										//alert(prev_radio.value); 
										
										//gTxtArr[j + k - 1].setCurVal(gTxtArr[j + k - 1].getCurVal() + radio.value); 
										bRedistribute = true;     
										found = true;      
									}
								}
							}
						}   
					}
				}   
				
				radio = document.getElementById(bldName + "_" + i);   
			}     
	  
		}
		
		// which radio button has been ticked?
		if(check.checked == true && bCheck == false)
		{
			var nRadIdx = 0;
			radio = document.getElementById(bldName + "_1");
			for(var i = 2; radio; i++)
			{
				if(radio.checked == true)
				{
					nRadIdx = i - 1;
					break;
				}            
			   
				radio = document.getElementById(bldName + "_" + i);
			}
			
			radio = document.getElementById(bldName + "_" + nRadIdx);
			if(radio && nRadIdx)
			{
				/*if(bSetAll == true)
				{
					//alert("H1");
					for(var i = 0; i < gTxtArr.length && found == false; i++)
					{
						gTxtArr[i].setMin(0);
						gTxtArr[i].setCurVal(0);
					}
					
					for(var i = 0; i < gTxtArr.length; i++)
					{
						if(gTxtArr[i].getBldClass() == bldClass)
						{
							for(var j = 0; j < nColCount; j++)
							{
								if((j + 1) == nRadIdx)
								{ 
									gTxtArr[i + j].setMin(100);
									break;
								}
							}
						}
					}
				}
				else*/
		/*		{
					var found = false;
					for(var i = 0; i < gTxtArr.length && found == false; i++)
					{
						if(gTxtArr[i].getBldClass() == bldClass)
						{
							for(var j = 0; j < nColCount; j++)
							{
								if(bRedistribute == true && (j + 1) != nRadIdx)
								{   //alert(8);
									//alert("H3");
									var nSurplus = gTxtArr[i + j].getCurVal();// - gTxtArr[i + j].getMin();
									//alert(nSurplus +" " +  gTxtArr[i + j].getCurVal() +" " + gTxtArr[i + j].getMin());
									if(Math.abs(nSurplus) > 0.5)
									{//alert(9);
										var nPcLeft = (100 - parseFloat(radio.value)) / 100;
										//alert(parseFloat(radio.value) +" " +  nSurplus +" " + nPcLeft);
										var newVal = nSurplus * nPcLeft;
										//alert(nSurplus + " " +  nPcLeft);
										gTxtArr[i + j].setCurVal(/*gTxtArr[i + j].getMin() +*/ //newVal);
				/*					}
								}
								else
								{			
									if((j + 1) == nRadIdx)
									{   
										//alert(radio.value + " " + gTxtArr[i + j].getCurVal() + " " + gTxtArr[i + j].getMin());
										//alert("H4");
										//alert(nRadIdx + " " + (i + j));
										gTxtArr[i + j].setMin(gTxtArr[i + j].getMin() + parseFloat(radio.value));
										//alert(gTxtArr[i + j].getMin());
										//alert(parseFloat(radio.value));
										//pc[i + j].value = parseFloat(gTxtArr[i + j].getCurVal()).toFixed(0);
									 //alert((i + j) + " " + gTxtArr[i + j].getCurVal());
										found = true; 
									}   
								}                 
							}
						}   
					}
				}
			}
		}
	}
		
	//alert(pc.length + " " + pcMin.length);
    UpdateVals(gTxtArr, pc, pcMin, nColCount);
    SetPercent(bldClass, nColCount);
}*/

function SetPercent(rowName, totCols)
{
    var total = 0;
	var totalMin = 0;
    var val;
	
	for(var i = 0; i < gTxtArr.length; i++)
	{
		if(gTxtArr[i].getBldClass() == rowName)
		{
			for(var j = i, col = 1; j < (i + totCols); j++, col++)
			{
				var fld = document.getElementById(rowName + "_" + col);
				
				if(isNaN(parseFloat(fld.value)) == false)
				{
					fld.value = parseFloat(fld.value).toFixed(0);
					total += parseFloat(fld.value);
				}
				totalMin += isNaN(gTxtArr[j].getMin())?0: gTxtArr[j].getMin();
			}
			break;
		}
	}
	/*
	for(var i = 1; i <= totCols; i++)
	{
		var fld = document.getElementById(rowName + "_" + i);
		var fldMin = document.getElementById(rowName + "_" + i + "_min");
		if(fld && fldMin)
		{
		    if(isNaN(parseFloat(fld.value)) == false)
		    {
		        fld.value = parseFloat(fld.value).toFixed(0);
                total += parseFloat(fld.value);
            }
            
            if(isNaN(parseFloat(fldMin.innerHTML)) == false)
		    {
		        fldMin.innerHTML = (parseFloat(fldMin.innerHTML).toFixed(0) == "100.0"?"100": parseFloat(fldMin.innerHTML).toFixed(0));
                totalMin += parseFloat(fldMin.innerHTML);
            }
		}
	} */
	
	//alert(total + " " + totalMin);
	
	totalMin = (totalMin > 100? 100: totalMin);
	total += totalMin;
	var totFld = document.getElementById(rowName + "_tot");
	if(totFld)
	{
	    if(parseInt(total) == 100) // allow for innacurate division etc.
	    {
    	    totFld.style.backgroundColor = "green";
    	    totFld.innerHTML = "OK";
	    }
	    else
	    {
	        totFld.style.backgroundColor = "red";
	        if(parseInt(total) > 100.0)
	        {
	            total -= 100; 
	            totFld.innerHTML = "+" + total.toFixed(0) + "%";
	        }
	        else
	        {
	            total -= 100; 
	            totFld.innerHTML = total.toFixed(0) + "%";
	        }
	    }
	}
}

function SetCostingAction()
{
	var _costing = document.getElementById("_costing");
	var _delete = document.getElementById("_delete");
	
	if(_costing)
	{
		_costing.value = "";
	}
	
	if(_delete)
	{
		_delete.value = "";
	} 
	
	document.forms[0].action = "bwa.php";
	
	CheckCosting("bwa.php");
}

function CheckCosting(action)
{
	//document.forms[0].action = action;
	//alert(document.forms[0].action);
	bGoToQ = false;
	if(document.forms[0].action.indexOf("bwa_options.php") >= 0)
	{
		return true;
	}
	
	var retVal = true;
	var cr1 = document.getElementById("costing_rad1");
	var cr2 = document.getElementById("costing_rad2");
	var cr3 = document.getElementById("costing_rad3");
	var cr4 = document.getElementById("costing_rad4");
	
	if(cr4 && cr4.checked == true)
	{
		document.forms[0].action = "bwa_surveys.php";
		document.forms[0].submit();
	}
	
	var most_recent_costing = document.getElementById("most_recent_costing");
	var bld_grp = document.getElementById("n_bld_group");
	var cc = document.getElementById("cost_centre");
	if(cr1 && cr2 && cr3)
	{	
		var existing = document.getElementById("existing_costing");
		var del_existing = document.getElementById("del_costing");
		var nw = document.getElementById("new_costing");
		var _costing = document.getElementById("_costing");
		var _delete = document.getElementById("_delete");
		//var e_save_as = document.getElementById("e_save_as");
		if(cr1.checked == true)
		{
			if(nw.value.length == 0)
			{
				retVal = false;
				alert("Please enter the site costing analysis name");
			}
			
			if(bld_grp.value == "0")
			{
				retVal = false;
				alert("Please select a building group");
			}
			
			if(cc.value == "0")
			{
				retVal = false;
				alert("Please select a cost centre");
			}	
			else if(cc.value == "D")
			{
				var cost_centre = "";
		
				for(var i = 0; i < cc.options.length; i++)
				{
					if(cc.options[i].selected == true)
					{
						cost_centre = cc.options[i].innerHTML;
					}
				}
				
				retVal = false;
				alert("The '" + cost_centre + "' cost centre is currently in development but will be available soon.");
			}
			
			if(retVal == true)
			{
				most_recent_costing.value = "";
			}	
		}
		else if(cr3.checked == true)
		{
			if((_delete && _delete.value == "true") && (document.forms[0].action.substr(document.forms[0].action.length - 16) == "bwa_question.php"))
			{
				if((!del_existing.value.length || !del_existing.value))
				{
					retVal = false;
					alert("Please select the site costing analysis that you wish to delete");
				}
				else
				{
					var costing_name = "";
					for(var i = 0; i < del_existing.options.length; i++)
					{
						if(del_existing.options[i].selected == true)
						{
							costing_name = del_existing.options[i].innerHTML;
						}
					}
					
					var reply = confirm("You have selected the site costing analysis '" + costing_name +"' to be deleted. Do you wish to continue?");
					if(!reply)
					{
						retVal = false;
					}
					else
					{
						retVal = true;
					}
					
					document.forms[0].action = "bwa.php";
				}
			}	
		}
		else if(cr2.checked == true || most_recent_costing)
		{//alert(document.forms[0].action.substr(document.forms[0].action.length - 16))
		
			if((_costing && _costing.value == "true") && document.forms[0].action.substr(document.forms[0].action.length - 7) == "bwa.php")
			{
				if(cr2.checked == true && (!existing.value.length || !existing.value) && (!most_recent_costing || !most_recent_costing.value.length))
				{
					retVal = false;
					alert("Please select an existing site costing analysis, building group or cost centre");
				}
				
				/*if(e_save_as && !e_save_as.value.length)
				{
					retVal = false;
					alert("Please enter the new site costing analysis name");
				}*/
				
				if(retVal == true)
				{
					document.forms[0].action = "bwa_question.php";
					//document.getElementById("set_save_as").value = "true";
				}
			}
			
			//if(retVal == true && most_recent_costing)
			{
				//most_recent_costing.value = "";
			}	
		}
		
		if(document.forms[0].action.substr(document.forms[0].action.length - 7) == "bwa.php" && retVal == true)
		{
			if(cr1.checked == false)
			{
				//document.forms[0].action = "bwa_question.php";
			}//alert("SUBMIT!");
			document.forms[0].submit();
		}
		else
		{
			if(retVal == false)
			{
				DisableButtons(2);
				document.getElementById("_submitting").value = "";
			}
		}
	}
	
	
	return retVal;
}

function UserDeletionWarning()
{
	var opt_del_client = document.getElementById("opt_del_client");
	var retVal = true;
	if(opt_del_client && opt_del_client.checked == true)
	{
		var client_del = document.getElementById("client_del");
		if(client_del && client_del.value == "0")
		{
			retVal = false;
			alert("Please select the user account that you wish to delete");
		}
		else
		{
			var username = "";
			for(var i = 0; i < client_del.options.length; i++)
			{
				if(client_del.options[i].selected == true)
				{
					username = client_del.options[i].innerHTML;
				}
			}
					
			var reply = confirm("You have selected the user account '" + username +"' to be deleted. Do you wish to continue?");
			if(!reply)
			{
				retVal = false;
			}
		}
	}
	else
	{
		var opt_edit_client = document.getElementById("opt_edit_client");
		var opt_new_client = document.getElementById("opt_new_client");
		
		if(opt_edit_client && opt_edit_client.checked == true)
		{
			var new_client_name = document.getElementById("new_client_name");
			var client_edit = document.getElementById("client_edit");
			var new_client_password = document.getElementById("new_client_password");
			var conf_new_client_password = document.getElementById("conf_new_client_password");
			if(new_client_name && client_edit && new_client_password && conf_new_client_password)
			{
				if(client_edit.value == "0" || (!new_client_name.value.length && (!new_client_password.value.length || !conf_new_client_password.value.length)))
				{
					retVal = false;
					alert("Please select a user and enter a new name or password and password confirmation");
				}
				else if(new_client_password.value.length && new_client_password.value != conf_new_client_password.value)
				{
					retVal = false;
					alert("Please enter a matching password and password confirmation");
				}
			}
		}
		else if(opt_new_client && opt_new_client.checked == true)
		{
			var new_client = document.getElementById("new_client");
			var client_password = document.getElementById("client_password");
			var conf_client_password = document.getElementById("conf_client_password");
			if(new_client && client_password && conf_client_password)
			{
				if(!new_client.value.length || !client_password.value.length || !conf_client_password.value.length)
				{
					retVal = false;
					alert("Please enter the user name, password and password confirmation");
				}
				else if(client_password.value.length && client_password.value != conf_client_password.value)
				{
					retVal = false;
					alert("Please enter a matching password and password confirmation");
				}
			}
		}
	}
	
	return retVal;
}

function DeletionWarning()
{
	var opt_del_client = document.getElementById("opt_del_client");
	var retVal = true;
	if(opt_del_client && opt_del_client.checked == true)
	{
	
		var client_del = document.getElementById("client_del");
		if(client_del && client_del.value == "0")
		{
			retVal = false;
			alert("Please select the client that you wish to delete");
		}
		else
		{
			var client_name = "";
			for(var i = 0; i < client_del.options.length; i++)
			{
				if(client_del.options[i].selected == true)
				{
					client_name = client_del.options[i].innerHTML;
				}
			}
			var reply = confirm("You have selected the client '" + client_name +"' to be deleted. All user accounts associated with this client will also be removed from the database. Do you wish to continue?");
			if(!reply)
			{
				retVal = false;
			}
		}
	}
	else
	{
		var opt_edit_client = document.getElementById("opt_edit_client");
		var opt_new_client = document.getElementById("opt_new_client");
		if(opt_edit_client && opt_edit_client.checked == true)
		{
			var new_client_name = document.getElementById("new_client_name");
			var client_edit = document.getElementById("client_edit");
			if(new_client_name && client_edit)
			{
				if(!new_client_name.value.length || client_edit.value == "0")
				{
					retVal = false;
					alert("Please select a client and enter a new name");
				}
			}
		}
		else if(opt_new_client && opt_new_client.checked == true)
		{
			var new_client = document.getElementById("new_client");
			if(new_client)
			{
				if(!new_client.value.length)
				{
					retVal = false;
					alert("Please enter the client's name");
				}
			}
		}
	}
	
	return retVal;
}

function DispClientOpt(ce)
{
	var opt_new_client = document.getElementById("opt_new_client");
	var opt_edit_client = document.getElementById("opt_edit_client");
	var opt_del_client = document.getElementById("opt_del_client");
	var td_new_client = document.getElementById("td_new_client");
	var td_new_client2 = document.getElementById("td_new_client2");
	var td_edit_client = document.getElementById("td_edit_client");
	var td_edit_client2 = document.getElementById("td_edit_client2");
	var tr_edit_client = document.getElementById("tr_edit_client");
	var td_del_client = document.getElementById("td_del_client");
	var td_del_client2 = document.getElementById("td_del_client2");
	var client_edit = document.getElementById("client_edit");
	var client_del = document.getElementById("client_del");
	var new_client = document.getElementById("new_client");
	var new_client_name = document.getElementById("new_client_name");
	
	if(opt_new_client && opt_new_client && opt_del_client && td_new_client && td_edit_client && td_del_client && tr_edit_client &&
		td_new_client2 && td_edit_client2 && td_del_client2 && client_edit && client_del && new_client && new_client_name)
	{
		td_new_client.style.display = 'none';
		td_edit_client.style.display = 'none';
		tr_edit_client.style.display = 'none';
		td_del_client.style.display = 'none';
		td_del_client2.style.display = 'none';
		tr_edit_client.style.display = 'none';
		td_edit_client2.style.display = 'none';
		td_new_client2.style.display = 'none';
		
		var tr_edit_user_pw = document.getElementById("tr_edit_user_pw");
		var tr_edit_conf_user_pw = document.getElementById("tr_edit_conf_user_pw");
		var tr_new_user_pw = document.getElementById("tr_new_user_pw");
		var tr_conf_new_user_pw = document.getElementById("tr_conf_new_user_pw");
		var client_password = document.getElementById("client_password");
		var conf_client_password = document.getElementById("conf_client_password");
		var new_client_password = document.getElementById("new_client_password");
		var conf_new_client_password = document.getElementById("conf_new_client_password");
		var tr_admin = document.getElementById("tr_admin");
		var tr_new_admin = document.getElementById("tr_new_admin");
		var client_admin = document.getElementById("client_admin");
		var new_client_admin = document.getElementById("new_client_admin");
		
		if(tr_edit_user_pw && tr_edit_conf_user_pw && tr_new_user_pw && tr_conf_new_user_pw)
		{
			tr_edit_user_pw.style.display = 'none';
			tr_edit_conf_user_pw.style.display = 'none';
			tr_new_user_pw.style.display = 'none';
			tr_conf_new_user_pw.style.display = 'none';
			//tr_admin.style.display = 'none';
			tr_new_admin.style.display = 'none';
		}
		
		new_client.value = "";
		client_del.value = "0";
		new_client_name.value = "";
		
		if(opt_new_client.checked == true)
		{
			td_new_client.style.display = '';
			td_new_client2.style.display = '';
			client_edit.value = "0";
			if(tr_new_user_pw && tr_conf_new_user_pw)
			{
				tr_new_user_pw.style.display = '';
				tr_conf_new_user_pw.style.display = '';
				client_password.value = "";
				conf_client_password.value = "";
				tr_new_admin.style.display = '';
				new_client_admin.checked = false;
			}
		}
		else if (opt_edit_client.checked == true)
		{
			td_edit_client.style.display = '';
			td_edit_client2.style.display = '';
			tr_edit_client.style.display = '';
			//tr_admin.style.display = '';
			//new_client_admin.checked = false;
			/*if(ce == null || !ce)
			{	
				client_edit.value = "0";
			}*/
			
			if(tr_edit_user_pw && tr_edit_conf_user_pw)
			{
				tr_edit_user_pw.style.display = '';
				tr_edit_conf_user_pw.style.display = '';
				new_client_password.value = "";
				conf_new_client_password.value = "";
				//client_admin.checked = false;
			}
		}
		else if (opt_del_client.checked == true)
		{
			td_del_client.style.display = '';
			td_del_client2.style.display = '';
			client_edit.value = "0";
		}
	}
}

function SetAction(action)
{
	if(action == "bwa_options.php")
	{
		document.forms[0].action = "bwa_options.php";
	}
	else
	{
		var costing_rad1 = document.getElementById("costing_rad1");
		var costing_rad2 = document.getElementById("costing_rad2");
		var costing_rad3 = document.getElementById("costing_rad3");
		var most_recent_costing = document.getElementById("most_recent_costing");
		if((costing_rad2 && costing_rad2.checked == true) || (costing_rad3 && costing_rad3.checked == true) || (most_recent_costing && costing_rad1 && costing_rad1.checked == false))
		{
			
			if(costing_rad3 && costing_rad3.checked == true)
			{
				document.forms[0].action = 'bwa_question.php';
				var _delete = document.getElementById("_delete");
				if(_delete)
				{
					_delete.value = "true";
				}
			}
			else
			{
				var _costing = document.getElementById("_costing");
				if(_costing)
				{
					_costing.value = "true";
				}
			}
		}
		else
		{
			document.forms[0].action = 'bwa.php';
		}
	}
}

function EnableCostings(onload)
{
	var cr1 = document.getElementById("costing_rad1");
	var cr2 = document.getElementById("costing_rad2");
	var cr3 = document.getElementById("costing_rad3");
	var cr4 = document.getElementById("costing_rad4");
	
	if(cr1 && cr2 && cr3)
	{
		var _costing = document.getElementById("_costing");
		var _delete = document.getElementById("_delete");
		
		if(_costing)
		{
			_costing.value = "";
		}
		
		if(_delete)
		{
			_delete.value = "";
			
		} 
		document.forms[0].action = "bwa.php";
		
		var existing = document.getElementById("existing");
		var nw = document.getElementById("new");
		var nl = document.getElementById("new_lab");
		var el = document.getElementById("exist_lab");
		var ngl = document.getElementById("new_grp_lab");
		var nbg = document.getElementById("n_bld_group");
		var ebg = document.getElementById("e_bld_group");
		var ec = document.getElementById("existing_costing");
		var nc = document.getElementById("new_costing");
		var ngr = document.getElementById("new_grp_row");
		var nccr = document.getElementById("new_cc_row");
		var egr = document.getElementById("exist_grp_row");
		var cc = document.getElementById("cost_centre");
		
		var eg = document.getElementById("exist_grp");
		var deg = document.getElementById("del_exist_grp");
		var del_existing = document.getElementById("del_existing");
		var del = document.getElementById("del_exist_lab");
		var degr = document.getElementById("del_exist_grp_row");
		var debg = document.getElementById("del_e_bld_group");
		var dec = document.getElementById("del_costing");
		//var tr_lab_new_name = document.getElementById("tr_lab_new_name");
		//var e_save_as = document.getElementById("e_save_as");
		
		var e_cc_row = document.getElementById("e_cc_row");
		var e_cost_centre = document.getElementById("e_cost_centre");
		var d_cc_row = document.getElementById("d_cc_row");
		var d_cost_centre = document.getElementById("d_cost_centre");
		
		var analyses = document.getElementById("analyses");
		var analyses_grp = document.getElementById("analyses_grp");
		
		if(analyses && analyses_grp)
		{
			analyses.style.display = 'none';
			analyses_grp.style.display = 'none';
		}
		
		document.forms[0].action = "bwa.php";
		if(cr2.checked == true)
		{
			//existing.value = "";
			existing.style.display = "";
			egr.style.display = '';
			
			if(!onload)
			{
				ec.value = "";
			}
			el.style.display = "";
			eg.style.display = "";
			//tr_lab_new_name.style.display = "";
			e_cc_row.style.display = '';
			d_cc_row.style.display = 'none';
			 
			//ngl.style.visibility = "hidden";
			//bg.style.visibility = "hidden";
			//nw.style.visibility = "hidden";	
			//nl.style.visibility = "hidden";
			if(del && del_existing && deg)
			{
				del_existing.style.display = "none";
				del.style.display = "none";
				degr.style.display = "none";
				deg.style.display = "none";
			}
			
			if(nw && nl && ngl && ngr && nccr)
			{
				nw.style.display = "none";
				nl.style.display = "none";
				ngl.style.display = "none";
				ngr.style.display = "none";
				nccr.style.display = "none";
			}	
			
			
			//eg.style.display = "none";
			
			
			if(cc)
				cc.value = "0";
			//ebg.value = "0";
			
			if(nc)
				nc.value = "";
			if(nbg)
				nbg.value = '0';
			if(dec)
				dec.value = ""
			if(debg)	
				debg.value = "0"
				
			d_cost_centre.value = "0";
				
			//bg.value = "0";		
		}
		else if(cr1.checked == true)
		{
			existing.style.display = "none";
			el.style.display = "none";
			egr.style.display = "none";
			//tr_lab_new_name.style.display = "none";
			//e_save_as.value = "";
			e_cc_row.style.display = 'none';
			d_cc_row.style.display = 'none';
			e_cost_centre.value = "0";
			d_cost_centre.value = "0";
			
			if(del && del_existing)
			{
				del_existing.style.display = "none";
				del.style.display = "none";
				degr.style.display = "none";
			}
			//del_existing.style.display = "none";
			//del.style.display = "none";
			//degr.style.display = "none";
			//nw.style.visibility = "visible";
			//ngl.style.visibility = "visible";
			//bg.style.visibility = "visible";
			//nl.style.visibility = "visible";
			dec.value = ""
			debg.value = "0"
			ebg.value = "0";
			ec.value = "";
			
			if(nw)
			{
				nw.style.display = "";
			}	
			nl.style.display = "";
			ngl.style.display = "";
			ngr.style.display = "";
			nccr.style.display = "";
			eg.style.display = "none";
			deg.style.display = "none";
			//			
		}
		else if(cr3.checked == true)
		{
			dec.style.display = "";
			del.style.display = "";
			degr.style.display = "";
			del_existing.style.display = "";
			deg.style.display = "";
			//tr_lab_new_name.style.display = "none";
			//e_save_as.value = "";
			e_cc_row.style.display = 'none';
			d_cc_row.style.display = '';
			//nw.style.visibility = "visible";
			//ngl.style.visibility = "visible";
			//bg.style.visibility = "visible";
			//nl.style.visibility = "visible";
			nw.style.display = "none";	
			nl.style.display = "none";
			ngl.style.display = "none";
			ngr.style.display = "none";
			nccr.style.display = "none";
			existing.style.display = "none";
			el.style.display = "none";
			egr.style.display = "none";
			eg.style.display = "none";
			e_cost_centre.value = "0";
			

			ebg.value = "0";
			ec.value = "";
			nc.value = "";
			nbg.value = '0';
			cc.value = "0";
		}
		else
		{
			analyses.style.display = '';
			analyses_grp.style.display = '';
			
			d_cc_row.style.display = 'none';
			if(del && del_existing && deg)
			{
				del_existing.style.display = "none";
				del.style.display = "none";
				degr.style.display = "none";
				deg.style.display = "none";
			}
			
			if(nw && nl && ngl && ngr && nccr)
			{
				nw.style.display = "none";
				nl.style.display = "none";
				ngl.style.display = "none";
				ngr.style.display = "none";
				nccr.style.display = "none";
			}
			
			existing.style.display = "none";
			el.style.display = "none";
			egr.style.display = "none";
			//tr_lab_new_name.style.display = "none";
			//e_save_as.value = "";
			e_cc_row.style.display = 'none';
			d_cc_row.style.display = 'none';
			e_cost_centre.value = "0";
			d_cost_centre.value = "0";
			
			if(del && del_existing)
			{
				del_existing.style.display = "none";
				del.style.display = "none";
				degr.style.display = "none";
			}
			//del_existing.style.display = "none";
			//del.style.display = "none";
			//degr.style.display = "none";
			//nw.style.visibility = "visible";
			//ngl.style.visibility = "visible";
			//bg.style.visibility = "visible";
			//nl.style.visibility = "visible";
			dec.value = ""
			debg.value = "0"
			ebg.value = "0";
			ec.value = "";
			e_cc_row.style.display = 'none';
			
			//nw.style.visibility = "visible";
			//ngl.style.visibility = "visible";
			//bg.style.visibility = "visible";
			//nl.style.visibility = "visible";
			nw.style.display = "none";	
			nl.style.display = "none";
			ngl.style.display = "none";
			ngr.style.display = "none";
			nccr.style.display = "none";
			existing.style.display = "none";
			el.style.display = "none";
			egr.style.display = "none";
			eg.style.display = "none";
			e_cost_centre.value = "0";
			

			ebg.value = "0";
			ec.value = "";
			nc.value = "";
			nbg.value = '0';
			cc.value = "0";	
		/*
			existing.style.display = "none";
			nw.style.display = "none";
			nl.style.display = "none";
			el.style.display = "none";
			ngl.style.display = "none";
			nbg.style.display = "none";
			ebg.style.display = "none";
			ec.style.display = "none";
			nc.style.display = "none";
			ngr.style.display = "none";
			nccr.style.display = "none";
			egr.style.display = "none";
			cc.style.display = "none";
			eg.style.display = "none";
			deg.style.display = "none";
			del_existing.style.display = "none";
			del.style.display = "none";
			dec.style.display = "none";
			degr.style.display = "none";
			debg.style.display = "none";
			dec.style.display = "none";
			e_cc_row.style.display = "none";
			e_cost_centre.style.display = "none";
			d_cc_row.style.display = "none";
			d_cost_centre.style.display = "none";
			*/
		}
		
	}
	
	if(bGoToQ == false)
	{
		var dis = 1;
		if(!document.getElementById("_submitting").value.length)
		{
			dis = 2;
		}
		
		DisableButtons(dis);
	}
}

function CheckBuilding()
{
	if(document.forms[0].action.indexOf("bwa_options.php") >= 0)
	{
		return true;
	}
	
	var retVal = true;
	var cr0 = document.getElementById("building_rad0");
	var cr01 = document.getElementById("building_rad01");
	var cr02 = document.getElementById("building_rad02");
	var cr1 = document.getElementById("building_rad1");
	var cr2 = document.getElementById("building_rad2");
	var cr3 = document.getElementById("building_rad3");
	var cr4 = document.getElementById("building_rad4");
	if(cr1 && cr2 && cr3 && cr4)
	{	
	//alert(cr01.value);
		var existing = document.getElementById("existing_building");
		var nw = document.getElementById("bld_name");
		var existing_grp = document.getElementById("existing_building_grp");
		var nw_grp = document.getElementById("grp_name");
		var bld_upload = document.getElementById("bld_upload");
		var grp_upload = document.getElementById("grp_upload");
		var grp_bld_upload = document.getElementById("grp_bld_upload");
		if(cr0.checked == true || cr01.checked == true || cr02.checked == true)
		{
			if((cr01.checked == true && bld_upload.value.length == 0) || (cr0.checked == true && grp_upload.value.length == 0) || (cr02.checked == true && grp_bld_upload.value.length == 0))
			{
				retVal = false;
				alert("Please enter a filename");
			}		
		}
		else if(cr1.checked == true)
		{
			if(nw.value.length == 0)
			{
				retVal = false;
				alert("Please enter the building name");
			}		
		}
		else if(cr2.checked == true)
		{
			if(existing.value == 0)
			{
				retVal = false;
				alert("Please select an existing building");
			}	
		}
		else if(cr3.checked == true)
		{
			if(nw_grp.value.length == 0)
			{
				retVal = false;
				alert("Please enter the building group name");
			}	
		}
		else if(cr4.checked == true)
		{
			if(existing_grp.value == 0)
			{
				retVal = false;
				alert("Please select an existing building group");
			}	
		}
	}

	return retVal;
}

function SetNewBld()
{
    var nb = document.getElementById("bld_name");
    var eb = document.getElementById("existing_building"); 
    if(nb)
    {
        for(var i = 0; i < eb.length; i++)
        {
            if(eb.options[i].selected == true)
            {
                nb.value = eb.options[i].innerHTML;    
            }
        }
    }    
}

function SetNewBldGrp()
{
    var nb = document.getElementById("bld_grp_name");
    var eb = document.getElementById("existing_building_grp"); 
    if(nb)
    {
        for(var i = 0; i < eb.length; i++)
        {
            if(eb.options[i].selected == true)
            {
                nb.value = eb.options[i].innerHTML;    
            }
        }
    }    
}

function ResetAnswers()
{
    document.getElementById("SaveTheseAnswers").value = "true"; 
    //alert(1);
    var tq = document.getElementById("this_qst");
    var tccg = document.getElementById("this_cost_centre_group");
    var nq = document.getElementById("next_qst");
    var ccg = document.getElementById("cost_centre_group");
  //alert(tq  + " " +  tccg + " " + nq + " " + ccg);
    if(tq && tccg && nq && ccg)
    {   //alert(nq.value + " " + ccg.value);
        nq.value = tq.value;
        ccg.value = tccg.value;
        
    }
}

function BackSaveAnswer()
{
    document.getElementById("SaveTheseAnswers").value = "true"; 
    //alert(1);
    var pdq = document.getElementById("prev_db_qst");
    var pdqg = document.getElementById("prev_db_qst_grp");
    var nq = document.getElementById("next_qst");
    var ccg = document.getElementById("cost_centre_group");
    //alert(pdq + " " +  pdqg + " " +  nq  + " " +  ccg);
    if(pdq && pdqg && nq && ccg)
    {   //alert(pdq.value + " " + pdqg.value + " " + nq.value + " " + ccg.value);
        nq.value = pdq.value;
        ccg.value = pdqg.value;
        
    }
}

function SubmitAnswers(href, aid, qIdx, grp)
{
	if(aid != null)
	{
		var idx = aid.indexOf("#active_qst");
		if(idx >= 0)
		{
			aid = aid.substr(0, idx);
		}
	}
	
	
	if(qIdx != null)
	{//alert(3);
		var next_qst = document.getElementById("next_qst");
		if(next_qst)
		{
			next_qst.value = qIdx;
			var ccg = document.getElementById("cost_centre_group");
			if(ccg)
			{
				ccg.value = grp;
			}
			//alert(next_qst.value);
		}
	}
	//alert(4);
    idx = href.lastIndexOf("cost_centre_group");
	var id = 0;
    
    if(idx >= 0)
    {
        id = href.substr(idx + 18);
		id = parseInt(id)
    }
    //alert(5);
    //alert("-" + document.getElementById("this_cost_centre_group").value + "-" + id);
    var tccg = document.getElementById("this_cost_centre_group");
    if(tccg)
    {//
	//alert(4);
		//alert(tccg.value + " " + id + " " + qIdx);
        if(tccg.value != id || id == "NaN" || qIdx != null)
        {
		//alert(6);
            var answer = true;
            
			var pts = document.getElementById("prompt_to_save");
			
            if(pts && pts.value == "true")
            {
                answer = confirm("Do you wish to save the answers on this page?");
            }
            
            if(answer)
            {//alert(7);
                if(ValidatePercent() == true)
                {//alert(8);
                    document.forms[0].action = href;
					//alert(document.forms[0].action);
                    //alert(document.forms[0].action);
                    document.forms[0].submit();  
                }
            }
            else if(aid != null)
            {
			//alert(9);
                document.getElementById(aid).href = "#active_qst";
            }
        }
    }
    else if(aid != null)
    {
        document.getElementById(aid).href = href;
		//alert(document.getElementById(aid).href)
    }
	
	//alert(11);
}

function SetTenant()
{
	var existing_tenant = document.getElementById("existing_tenant");
	var tenant_name = document.getElementById("tenant_name");
	var tenant_gia_percentage = document.getElementById("tenant_gia_percentage");
	var cc = document.getElementById("cost_centre");
	var qg = document.getElementById("question_group");
	var sc_pc = document.getElementById("tenant_sc_pc");
	if(existing_tenant)
	{
		var pc = document.getElementById(existing_tenant.value + "_tenant_pc");
		if(pc)
		{ 
			tenant_gia_percentage.value = pc.value;
			
			for(var i = 0; i < existing_tenant.options.length; i++)
			{
				if(existing_tenant.options[i].selected)
				{
					tenant_name.value = existing_tenant.options[i].innerHTML;
					break;
				}
			}	
		}
	}
	
	if(cc && qg && sc_pc)
	{
		for(var i = 0; i < qg.options.length; i++)
		{
			qg.options[i] = null;
		}
		qg.options.length = 0;
		cc.value = "0";
		sc_pc.value = "0";
	}
}

function SubmitForm(id, href)
{
    if(document.getElementById("in") && document.getElementById("in").value != id)
    {
        var answer = true;
        if(document.getElementById("prompt_to_save").value == "true")
        {
            answer = confirm("Do you wish to save the information on this page?");
        }
        
        if(answer)
        {
            if(document.getElementById("in").value == "ten" || CheckBuildingDetails() == true)
            {
                document.forms[0].action = href + "&save=true";
				
				if(id != "ten")
				{
					SetTenantAction("");
				}
				else
				{
					if(document.getElementById("in").value == "ten")
					{
						SetTenantAction("u");
					}
				}
                //alert(document.forms[0].action);
                document.forms[0].submit();  
            }
        }
        else
        {
			SetTenantAction("");
            document.getElementById(id).href = "#";//href + "&cancel=true";
        }
    }
	else
	{
		SetTenantAction("");
	}
}

function EnableBuildings()
{
	var br0 = document.getElementById("building_rad0");
	var br01 = document.getElementById("building_rad01");
	var br02 = document.getElementById("building_rad02");
	var br1 = document.getElementById("building_rad1");
	var br2 = document.getElementById("building_rad2");
	var br3 = document.getElementById("building_rad3");
	var br4 = document.getElementById("building_rad4");
	var br5 = document.getElementById("building_rad5");
	
	if(br0 && br1 && br2 && br3 && br4 && br5)
	{
	//alert(br01.value);
		var existing = document.getElementById("existing");
		var nw = document.getElementById("new");
		var existing_grp = document.getElementById("existing_grp");
		var nw_grp = document.getElementById("new_grp");
		var bld = document.getElementById("bld_name");
		var grp = document.getElementById("grp_name");
		var eb = document.getElementById("existing_building");
		var ebg = document.getElementById("existing_building_grp");
		//var bu = document.getElementById("bld_upload");
		var gu = document.getElementById("grp_upload");
		var bu = document.getElementById("bld_upload");
		var gbu = document.getElementById("grp_bld_upload");
	
	    if(bld)
	    {
	        bld.value = "";
	    }
	    
	    if(grp)
	    {
	        grp.value = "";
	    }
	    
	    eb.value = "0";
	    ebg.value = "0";
		//bu.value = "";
		//gu.value = "";
		//gbu.value = "";
	    
	    existing.style.visibility = "hidden";
	    nw.style.visibility = "hidden";	
		existing_grp.style.visibility = "hidden";
		nw_grp.style.visibility = "hidden";
		bu.style.visibility = "hidden";
		gu.style.visibility = "hidden";
		gbu.style.visibility = "hidden";
		//alert(document.forms[0].enctype);
		//document.forms[0].enctype = "application/x-www-form-urlencoded";
		if(br0.checked == true || br01.checked == true || br02.checked == true)
		{
			document.forms[0].enctype = "multipart/form-data";
			//alert(document.forms[0].enctype);
			if(br0.checked == true)
			{
				gu.style.visibility = "visible";
				document.forms[0].action = "bwa_edit_group.php";
			}
			else if(br01.checked == true)
			{
				bu.style.visibility = "visible";
				document.forms[0].action = "bwa_edit_building.php?in=gen";
			}
			else if(br02.checked == true)
			{
				gbu.style.visibility = "visible";
				document.forms[0].action = "bwa_edit_group.php";
			}	
		}	
		else if(br1.checked == true)
		{
			nw.style.visibility = "visible";
			document.forms[0].action = "bwa_edit_building.php?in=gen";		
		}
		else if(br2.checked == true)
		{
			existing.style.visibility = "visible";	
			document.forms[0].action = "bwa_edit_building.php?in=gen";		
		}
		else if(br3.checked == true)
		{
		    nw_grp.style.visibility = "visible";
		    document.forms[0].action = "bwa_edit_group.php";			
		}
		else if(br4.checked == true)
		{
		    existing_grp.style.visibility = "visible";
		    document.forms[0].action = "bwa_edit_group.php";
		}
		else if(br5.checked == true)
		{
			document.forms[0].action = "bwa_buildings.php";
		}
	}
	
	/*var reloaded = document.getElementById("reloaded");
	if(reloaded)
	{
	    if(reloaded.value == "false")
	    {
	        alert("H");
	        reloaded.value = "true";
	        window.location.reload(true);
	    }
	}*/
}

function SaveAnswer()
{
    var this_cost_centre_group = document.getElementById("this_cost_centre_group");
    var cost_centre_group = document.getElementById("cost_centre_group");
    var next_qst = document.getElementById("next_qst");
    var this_qst = document.getElementById("this_qst");
    //var sa = document.getElementById("save_answer");
    
    if(this_cost_centre_group && cost_centre_group && next_qst && this_qst)
    {
       next_qst.value = this_qst.value;
       cost_centre_group.value = this_cost_centre_group.value;
       //sa.value = "true";
    }
}

function CheckGroupDetails()
{
    var retVal = true;
    var grp_code = document.getElementById("grp_code");
    var grp_name = document.getElementById("grp_name");
    var grp_country = document.getElementById("grp_country");
    //var bld_grp_ass = document.getElementById("bld_grp_ass");
    var dg = document.getElementById("delete_group");
    
    if(dg && dg.value == "false" && grp_code && grp_name && grp_country)
    {
        var bSel = false;
        var chk = document.getElementById("bld_grp_0");
        for(var i = 1; chk && bSel == false; i++)
        {
            if(chk.checked == true)
            {
                bSel = true;
            }
            
            chk = document.getElementById("bld_grp_" + i);
        }
        
        if(!grp_code.value.length || !grp_code.value.length || grp_country.value == "0" || bSel == false)
        {
            alert("Please complete the Name and Code fields and select the Country and a minimum of one building to be assigned to the Group");
            retVal = false;
        }
    }

    return retVal;
}

function CheckBuildingDetails()
{
    var retVal = true;
    
    var db = document.getElementById("delete_bld");
    var sIn = document.getElementById("in");
    //var name = document.getElementById("bld_name");
  
    if(db.value == "false")
    { 
        if(sIn.value == "gen")
        {
            var name = document.getElementById("bld_name");
            var type = document.getElementById("bld_type");
            var code = document.getElementById("bld_code");
            if(type.value == 0 || !code.value.length || !name.value.length)
            {
                alert("Please complete the Code, Name and Type fields");
                retVal = false;
            }
        }
        else if(sIn.value == "area")
        {   
            var gia = document.getElementById("bld_gia");
            var gea = document.getElementById("bld_gea");
            var nia = document.getElementById("bld_nia");
            var floors = document.getElementById("bld_num_floors");
            var storey = document.getElementById("bld_storey_height");
            var depth = document.getElementById("bld_depth");
            var core = document.getElementById("bld_core_area");
            var let = document.getElementById("bld_tot_let_area");
            
            if(gia.value.length == 0 || floors.value == 0 || storey.value.length == 0 || depth.value.length == 0)
            {
                alert("Please enter a value for the Gross Internal Area, Number of Floors, Depth and Storey Height");
                retVal = false;
            }
            //alert(let.value.length + " " + is_float(let.value));
            if((gia.value.length && is_float(gia.value) == false) ||
               (gea.value.length && is_float(gea.value) == false) ||
               (nia.value.length && is_float(nia.value) == false) ||
               (storey.value.length && is_float(storey.value) == false) ||
               (depth.value.length && is_float(depth.value) == false) ||
               (core.value.length && is_float(core.value) == false) ||
               (let.value.length && is_float(let.value) == false))
            {
                alert("All fields must contain valid numeric value containing digits and no more than one decimal point");
                retVal = false;  
            }
        }
		else if(sIn.value == "ten")
		{
			var action = document.getElementById("action");
			if(action.value == 'a')
			{
				var new_tenant_name = document.getElementById("new_tenant_name");
				var new_tenant_gia_percentage = document.getElementById("new_tenant_gia_percentage");
				
				if(!new_tenant_name.value.length || new_tenant_gia_percentage.value == "0")
				{
					alert("Please enter the new tenant's name and percentage of the GIA that will be occupied");
					retVal = false; 
				}
			}
			else 
			{
				var existing_tenant =  document.getElementById("existing_tenant");
				if(existing_tenant)
				{
					if(existing_tenant.value == "0")
					{
						alert("Please select a tenant from the drop down list");
						retVal = false;  
					}
					else
					{
						if(action.value == 'u')
						{
							var tenant_name = document.getElementById("tenant_name");
							var tenant_gia_percentage = document.getElementById("tenant_gia_percentage");
							
							if(!tenant_name.value.length || tenant_gia_percentage.value == "0")
							{
								alert("Please complete the tenant's name and percentage of the GIA that will be occupied");
								retVal = false; 
							}
						}
						else if(action.value == 'd')
						{
							var tenant_name;
							for(var i = 0; i < existing_tenant.options.length; i++)
							{
								if(existing_tenant.options[i].selected)
								{
									tenant_name = existing_tenant.options[i].innerHTML;
									break;
								}
							}
							
							var answer = confirm("Are you sure that you wish to delete the tenant '" + tenant_name + "'?");
							if(!answer)
							{
								retVal = false;   
							}	
						}
					}
				}
			}
		}
    }
    
    return retVal;
}

function SetDeleteBld()
{
    var ans = confirm("Are you sure that you wish to delete this building?");
    if(ans)
    {
        document.getElementById("delete_bld").value = "true";
        document.forms[0].action = "bwa_bld.php";
    }
}

function SetDeleteGroup()
{
    var ans = confirm("Are you sure that you wish to delete this building group?");
    if(ans)
    {
        document.getElementById("delete_group").value = "true";
        document.forms[0].action = "bwa_bld.php";
    }
}

function is_float(nbr)
{   
    var retVal = true;
    var bGotSign = false;
    var bGotPoint = false;
    var i = 0;
    
    while(nbr.charAt(i) == " ")
    {
        i++;
    }
    
    for(var j = 0; i < nbr.length && retVal == true; i++, j++)
    {
        //alert(nbr.charCodeAt(i) + " " + nbr.charAt(i));
        /*if(j == 0)
        {
            if(nbr.charAt(i) == "+" || nbr.charAt(i) == "-")
            {
                if(bGotSign == true)
                {
                    retVal = false;
                }
                
                bGotSign = true;  
            }
        }
        else*/ if(nbr.charAt(i) == ".")
        {
            if(bGotPoint == true)
            {
                retVal = false;
            }
            
            bGotPoint = true;  
        }
        else if(!(nbr.charCodeAt(i) >= 48 && nbr.charCodeAt(i) <= 57))
        {
            retVal = false;
        }    
    }
    
    return retVal;
}  
