// Methods used to display html
//---------------------------------------------------------

var db = (document.body) ? 1 : 0;
var scroll = (window.scrollTo) ? 1 : 0;

function setEqualHeight(divOne, divTwo, consPadding, consBorder)
{
	var elementOne = document.getElementById(divOne);
	var elementTwo = document.getElementById(divTwo);
	
	var divOneValue = elementOne.offsetHeight;
	var divTwoValue = elementTwo.offsetHeight;
				
	if(divOneValue > divTwoValue)
	{
		var value = divOneValue;
	
		if(consPadding)
		{
			 value -= getStyle(elementTwo, "padding-bottom");
		}
		
		if(consBorder)
		{
			 value -= 2;
		}
	
		elementTwo.style.height = value+'px';
	}
	else
	{
		var value = divTwoValue;
	
		if(consPadding)
		{
			 value -= getStyle(elementOne, "padding-bottom");
		}
		
		if(consBorder)
		{
			 value -= 2;
		}
	
		elementOne.style.height = value+'px';
	}
}

function getStyle(oElm, strCssRule)
{
  var strValue = "";
 
  if(document.defaultView && document.defaultView.getComputedStyle)
  {
	strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
  }
  else if(oElm.currentStyle)
  {
    strCssRule = strCssRule.replace(/\-(\w)/g, 
    function (strMatch, p1)
    {
      return p1.toUpperCase();
    });
    strValue = oElm.currentStyle[strCssRule];
  } 
  
  return strValue.replace("px","");
}

function saveScroll() 
{
  if (!scroll) return;
  var x = (db) ? document.body.scrollLeft : pageXOffset;
  var y = (db) ? document.body.scrollTop : pageYOffset;
  
  setCookie("scroll", x + "_" + y, 5);
}

function loadScroll() 
{
  if (!scroll) return;
  var xy = getCookie("scroll");
  if (!xy) return;
  var ar = xy.split("_");
  
  setCookie("scroll", 0, 0);
  
  if (ar.length == 2) scrollTo(parseInt(ar[0]), parseInt(ar[1]));
}

// Methods spesificly used in green accounts
// ---------------------------------------------------------
var sendReq = getXmlHttpRequestObject();
var receiveReq = getXmlHttpRequestObject();

var currPrefix = 0;
var currLine = 0;

var prefix = new Array();

// Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		document.getElementById('p_status').innerHTML = 'Status: Cound not create XmlHttpRequest Object.  Consider upgrading your browser.';
	}
}

function startSend() 
{
	getInfo();
}

function getScenarioData(id, value, prefix, numb) 
{
	currPrefix = prefix-1;
	currLine = numb-1;	
	id = id.substr(1,1);
	
	var source;
	var usage;
		
	if(id.match("s"))
	{
		var otherDropdown = document.getElementById(prefix + "u" + numb);
		
		source = value;
		usage = otherDropdown.value;
	}
	else
	{
		var otherDropdown = document.getElementById(prefix + "s" + numb);
		
		usage = value;
		source = otherDropdown.value;
	}
					
	if(value!='null' && otherDropdown.value!='null')
	{		
		receiveReq.open("GET", 'index.php?viewpage=greenAccountData&source=true&sourceValue=' + source + '&usageValue=' + usage, true);	
		receiveReq.onreadystatechange = handleScenarioSourceData;
		receiveReq.send(null);
	}
}

function handleScenarioSourceData() 
{
	if (receiveReq.readyState == 4) 
	{				
		// Get the AJAX response and run the JavaScript evaluation function
		// on it to turn it into a useable object. Notice since we are passing
		// in the JSON value as a string we need to wrap it in parentheses
		var response = eval("(" + receiveReq.responseText + ")");
														
		for(i=0;i < response.scenarios.product.length; i++) 
		{
			prefix[currPrefix][currLine][0].value=parseFloat(response.scenarios.product[i].Efficiency);
			prefix[currPrefix][currLine][1].value=parseFloat(response.scenarios.product[i].Nox);
			prefix[currPrefix][currLine][2].value=parseFloat(response.scenarios.product[i].PM10);		
		}
	}
}

// var fraElm
// var leverElm
var totalPercent = new Array();
var sum = 0;
var delsum = 0;

function init(p, l) 
{
	for(i=1;i<=p;i++)
	{
		var lines = new Array();
	
		for(j=1;j<=l;j++) 
		{	
			var line = new Array();
		
			line.push(document.getElementById(i + "EFF" + j));
			line.push(document.getElementById(i + "NE" + j));
			line.push(document.getElementById(i + "PE" + j));
			line.push(document.getElementById(i + "source" + j + "Percent"));	
			
			lines.push(line);
		}		
		
		prefix.push(lines);
		
		totalPercent.push(document.getElementById(i+"totalPercent"));
	}
}
 
function check(p, lines)
{			
	var sum = 0;
	
	for(i=0;i < lines; i++) 
	{			
		var tmp = parseInt(prefix[p][i][3].value);
				
		if (isNaN(tmp))
		{
			tmp=0;
		}
		
		sum += tmp;
	}
	
	if (sum==100)
	{	
		totalPercent[p].value = sum;
		totalPercent[p].style.color = "green";
	}
	if (sum<100)
	{
		totalPercent[p].value = sum;
		totalPercent[p].style.color = "red";
	}
	else
	{
		totalPercent[p].value = sum;
	}
}

// Methods for general use
// ---------------------------------------------------------

function showConfimAppendChoice(text, formId)
{
	var choice=confirm(text);
	
	var form = document.getElementById(formId);
	
	if(choice)
	{
		var newAction = form.action + choice;
		
		form.action = newAction;
	}
	
	form.submit(); 
}

function submitForm(formId)
{	
	var form = document.getElementById(formId);

	form.submit();
}

function changeFormAction(formId, action)
{	
	var form = document.getElementById(formId);
			
	var newAction = action;
	
	form.action = newAction;
	form.submit();
}

function changeFormActionWithValue(x, formId, action)
{	
	var value = document.getElementById(x).value;
	var form = document.getElementById(formId);
				
	var newAction = action + value;
	form.action = newAction;
	
	form.submit();
}

function toggleDisplay(id)
{
	me = document.getElementById(id)
	
	if (me.style.display=="none")
	{
		me.style.display="inline";
	}
	else 
	{
		me.style.display="none";
	}
}

function changeAppendFormAction(elementId, formId)	
{
	var value = document.getElementById(elementId).value;
	var form = document.getElementById(formId);
	
	var newAction = form.action + value;
	
	form.action = newAction;
	form.submit(); 
}

function setCookie(c_name,value,expiredays) 
{
	var exdate=new Date();
  	exdate.setDate(exdate.getDate()+expiredays);
  	document.cookie=c_name+ "=" +escape(value)+
  	((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function getCookie(c_name)
{
	var dc = document.cookie;
	var prefix = c_name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else {
    begin += 2;
  }
  var end = document.cookie.indexOf(";", begin);
  if (end == -1) end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

function changeDeliveryDetails(x, page)
{
	var nodeId = document.getElementById(x).value;
	var form = document.getElementById("changeDeliveryDetailsForm");
			
	var newAction = form.action + "&changeDeliveryDetails=true&redirectAction=" + page;
			
	form.action = newAction;
	form.submit();
}

// Methods spesificly used in nomination planing
// ---------------------------------------------------------
function setCorrectFocus(elementId)
{
	var element = document.getElementById(elementId);
	
	element.focus();
	element.select(element.value);
}

function deleteConfirm(nomId, text, nomToId, nomFrom, nomTo, nomStart, nomEnd, nomAmount)
{
	var answer=confirm(text);
	
	if (answer==true)
 	{
  		setCookie('declineNom', 1, 5);
  		setCookie('declineNomId', nomId, 5);
  		setCookie('nomToId', nomToId, 5);
  		setCookie('nomFrom', nomFrom, 5);
  		setCookie('nomTo', nomTo, 5);
  		setCookie('nomStart', nomStart, 5);
  		setCookie('nomEnd', nomEnd, 5);
  		setCookie('nomAmount', nomAmount, 5);
  	}
}

function handleConfirm(nomId, text, nomToId, nomFrom, nomTo, nomStart, nomEnd, nomAmount)
{
	var answer=confirm(text);
	
	if (answer==true)
 	{
  		setCookie('handleNom', 1, 5);
  		setCookie('handleNomId', nomId, 5);
  		setCookie('nomToId', nomToId, 5);
  		setCookie('nomFrom', nomFrom, 5);
  		setCookie('nomTo', nomTo, 5);
  		setCookie('nomStart', nomStart, 5);
  		setCookie('nomEnd', nomEnd, 5);
  		setCookie('nomAmount', nomAmount, 5);
  	}
}

// ---------------------------------------------------------
//
// Methods spesificly used in Setup consumption plan and
// Setup Node Profile
// ---------------------------------------------------------
function showHideSetupChoice(elementId, lineNumb)
{
	var value = document.getElementById(elementId).checked;
	
	if(value)
	{
		document.getElementById(lineNumb+"from").disabled = false; 
		document.getElementById(lineNumb+"to").disabled = false; 
	}
	else
	{
		document.getElementById(lineNumb+"from").disabled = true; 
		document.getElementById(lineNumb+"to").disabled = true; 
	}
}

function showHideAllCoices(elementId)
{
	var value = document.getElementById(elementId).value;
	
	if(value == 1)
	{
		for(var i = 1; i < 8; i++)
		{
			document.getElementById("check"+i).disabled = true; 
			document.getElementById(i+"from").disabled = true; 
			document.getElementById(i+"to").disabled = true; 
		}
	}
	else
	{
		for(var i = 1; i < 8; i++)
		{
			document.getElementById("check"+i).disabled = false;
			
			if(document.getElementById("check"+i).checked == true)
			{
				document.getElementById(i+"from").disabled = false; 
				document.getElementById(i+"to").disabled = false; 
			} 
		}
	}
}

function changeUseFor(x)	
{
	var type = document.getElementById(x).value;
	var form = document.getElementById("useForForm");
	
	if(type == 1)
	{
		var newAction = form.action + "&useIndef=true";
	}
	else
	{
		var newAction = form.action;
	}
	
	form.action = newAction;
	form.submit(); 
}

function changeAlgo(x, nodeId, algoNumb, useIndef)	
{
	var type = document.getElementById(x).value;
	var form = document.getElementById("mainForm");
	
	var newAction = "index.php?viewpage=setup_cons_plan&nodeId=" + nodeId + "&doingChanges=true&";
		
	if(useIndef)
	{
		newAction = newAction + "useIndef=" + useIndef + "&";
	}
		
	if(algoNumb == 1)
	{
		newAction = newAction + "&primAlgo=" + type;
	}
	else
	{
		newAction = newAction + "&secAlgo=" + type;
	}
	
	form.action = newAction;
	form.submit(); 
}

// ---------------------------------------------------------
// Methods spesificly used in consumption planing
// ---------------------------------------------------------
function showLockChoiceDay(nodeId, time, xpos, ypos, action)
{	
	var boxdiv = document.getElementById("lockChoice");
	var form = document.getElementById("lockUnlockForm");

	if (boxdiv != null) 
	{
    	if (boxdiv.style.display=='none') 
   	 	{
   	 		boxdiv.style.left = xpos + "px"; 
  			boxdiv.style.top = ypos + "px";
  						
			form.action = action;
			
			setCookie('nId', nodeId, 5);
  			setCookie('time', time, 5);
  			setCookie('choiceDay', 1, 5);
   	 		   	 	
      		boxdiv.style.display='block';
    	} 
    	else
    	{
      		boxdiv.style.display='none';
      	}
  	}
}

function showLockChoiceWeek(nodeId, startTime, endTime, xpos, ypos, action, boxDivId, formId)
{	
	var boxdiv = document.getElementById(boxDivId);
	var form = document.getElementById(formId);

	if (boxdiv != null) 
	{
    	if (boxdiv.style.display=='none') 
   	 	{
   	 		boxdiv.style.left = xpos + "px"; 
  			boxdiv.style.top = ypos + "px";
  						
			form.action = action;
			
			setCookie('nId', nodeId, 5);
  			setCookie('startTime', startTime, 5);
  			setCookie('endTime', endTime, 5);
  			setCookie('choiceDay', 0, 5);
   	 		   	 	
      		boxdiv.style.display='block';
    	} 
    	else
    	{
      		boxdiv.style.display='none';
      	}
  	}
}

function unlockHour_confirm(nodeId, time)
{
  		setCookie('nId', nodeId, 5);
  		setCookie('time', time, 5);
  		setCookie('unlockHour', 1, 5);
}

function lockHour_confirm(nodeId, time)
{
  		setCookie('nId', nodeId, 5);
  		setCookie('time', time, 5);
  		setCookie('lockHour', 1, 5);
}

function lockDay_confirm(nodeId, time)
{
	var answer=confirm("Lock selected day?");
	if (answer==true)
  	{
  		setCookie('nId', nodeId, 5);
  		setCookie('time', time, 5);
  		setCookie('lockDay', 1, 5);
  	}
  	else
  	{
  		setCookie('lockDay', 0, 5);
  	}
}

function unlockDay_confirm(nodeId, time)
{
	var answer=confirm("Unlock selected day?");
	if (answer==true)
  	{
  		setCookie('nId', nodeId, 5);
  		setCookie('time', time, 5);
  		setCookie('unlockDay', 1, 5);
  	}
  	else
  	{
  		setCookie('unlockDay', 0, 5);
  	}
}

function lockWeek_confirm(nodeId, startTime, endTime)
{
	var answer=confirm("Lock selected week?");
	if (answer==true)
  	{
  		setCookie('nId', nodeId, 5);
  		setCookie('startTime', startTime, 5);
  		setCookie('endTime', endTime, 5);
  		setCookie('lockWeek', 1, 5);
  	}
  	else
  	{
  		setCookie('lockWeek', 0, 5);
  	}
}

function unlockWeek_confirm(nodeId, startTime, endTime)
{
	var answer=confirm("Unlock selected week?");
	if (answer==true)
  	{
  		setCookie('nId', nodeId, 5);
  		setCookie('startTime', startTime, 5);
  		setCookie('endTime', endTime, 5);
  		setCookie('unlockWeek', 1, 5);
  	}
  	else
  	{
  		setCookie('unlockWeek', 0, 5);
  	}
}
