var menu = 0;
var poolTemp = 61;
var spaTemp = 61;
var outsideTemp = 74;
var poolMode = 1;
var filter = 2;
var fahrenheit = 1;
var myTimer = null;
var makeChange = 0;
var upperBounds = 0;
var lowerBounds = 0;
var heaterOn = 0;

function initDemo(){
	setPoolTemp();
	updateLights();
}

function turn_on(displayDiv){
	var displayDiv = document.getElementById('display');
	
	clearTimeout(myTimer);
	makeChange = 0;
	
	if (menu < 5){
		menu ++;
	}else{
		menu = 1;
	}
	
	switch(menu)
	{
		case 0: // pool temp
			displayDiv.innerHTML = outsideTemp.toString();
			break;
		case 1: // heater temp set for pool
			displayDiv.innerHTML = 'POL';
			break;
		case 2: // heater temp set for spa
			displayDiv.innerHTML = 'SPA';
			break;
		case 3:	// set pool or spa
			displayDiv.innerHTML = 'P_S';
			break;
		case 4:	// set filter pump timer
			displayDiv.innerHTML = 'FIL';
			break;
		case 5: // set degree type
			displayDiv.innerHTML = 'C_F';
			break;
		default:
			menu = 0;
			displayDiv.innerHTML = outsideTemp.toString();
			break;
	}
	
	myTimer = setTimeout('setPoolTemp()', 7000);
}

function buttonUp(){
	var displayDiv = document.getElementById('display');
	
	clearTimeout(myTimer);
	
	switch(menu)
	{
		case 1: // move heater temp for pool up
			if (makeChange == 0){
				makeChange = 1;
				getBounds(1);
			} else {
				if (poolTemp < upperBounds)
					poolTemp++;
				else
					poolTemp = upperBounds
			}
			if (poolTemp <= lowerBounds){
				displayDiv.innerHTML = "OFF";
			}else{
				displayDiv.innerHTML = poolTemp.toString();
				
				if (poolMode == 1 && poolTemp > outsideTemp && heaterOn == 0){
					heaterOn = 1;
					changeHeaterLight();
				}
			}
			break;
		case 2: // move heater temp for spa up
			if (makeChange == 0){
				makeChange = 1;
				getBounds(0);
			}else{
				if (spaTemp < upperBounds)
					spaTemp++;
				else
					spaTemp = upperBounds
			}
			if (spaTemp <= lowerBounds){
				displayDiv.innerHTML = "OFF";
			}else{
				displayDiv.innerHTML = spaTemp.toString();
				
				if (poolMode == 0 && spaTemp > outsideTemp && heaterOn == 0){
					heaterOn = 1;
					changeHeaterLight();
				}
			}
			break;
		case 3: // change to spa mode
			if (makeChange == 0 || poolMode == 0){
				makeChange = 1;
			}else{
				poolMode = 0;
				if (spaTemp > outsideTemp)
					heaterOn = 1;
				else
					heaterOn = 0;
				updateLights();
			}
			if (poolMode == 1)
				displayDiv.innerHTML = "POL";
			else
				displayDiv.innerHTML = "SPA";
			break;
		case 4: // change filter pump timer in hours up to 24
			if (makeChange == 0){
				makeChange = 1;
			}else{
				if (filter < 24)
					filter++;
			}
			if (filter == 1)
				displayDiv.innerHTML = "OFF";
			else if (filter == 24)
				displayDiv.innerHTML = "On";
			else
				displayDiv.innerHTML = filter.toString();
			break;
		case 5: // change degrees to C
			if (makeChange == 0 || fahrenheit == 0){
				makeChange = 1;
			}else{
				fahrenheit = 0;
				poolTemp = convertToCelsius(poolTemp);
				spaTemp = convertToCelsius(spaTemp);
				outsideTemp = 23;
			}
			if (fahrenheit == 1)
				displayDiv.innerHTML = '<span style="font-size:14pt; font-weight:bold; vertical-align:text-top">o</span>F';
			else
				displayDiv.innerHTML = '<span style="font-size:14pt; font-weight:bold; vertical-align:text-top;">o</span>C';
			break;
	}
	
	myTimer = setTimeout('setPoolTemp()', 7000);
}

function buttonDown(){
	var displayDiv = document.getElementById('display');
	
	clearTimeout(myTimer);
	
	switch(menu)
	{
		case 1: // move heater temp for pool down to 60
			if (makeChange == 0){
				makeChange = 1;
				getBounds(1);
			} else {
				if (poolTemp > lowerBounds)
					poolTemp--;
				else
					poolTemp = lowerBounds;
			}
			if (poolTemp <= lowerBounds){
				displayDiv.innerHTML = "OFF";
			}else{
				displayDiv.innerHTML = poolTemp.toString();
				
				if (poolMode == 1 && poolTemp <= outsideTemp && heaterOn == 1){
					heaterOn = 0;
					changeHeaterLight();
				}
			}
			break;
		case 2: // move heater temp for spa down to 60
			if (makeChange == 0){
				makeChange = 1;
				getBounds(0);
			}else{
				if (spaTemp > lowerBounds)
					spaTemp--;
				else
					spaTemp = lowerBounds;
			}
			if (spaTemp <= lowerBounds){
				displayDiv.innerHTML = "OFF";
			}else{
				displayDiv.innerHTML = spaTemp.toString();
				
				if (poolMode == 0 && spaTemp <= outsideTemp && heaterOn == 1){
					heaterOn = 0;
					changeHeaterLight();
				}
			}
			break;
		case 3: // change to pool mode
			if (makeChange == 0 || poolMode == 1){
				makeChange = 1;
			}else{
				poolMode = 1;
				if (poolTemp > outsideTemp)
					heaterOn = 1;
				else
					heaterOn = 0;
				updateLights();
			}
			if (poolMode == 1)
				displayDiv.innerHTML = "POL";
			else
				displayDiv.innerHTML = "SPA";
			break;
			break;
		case 4: // change filter pump timer in hours down to 2
			if (makeChange == 0){
				makeChange = 1;
			}else{
				if (filter > 1)
					filter--;
			}
			if (filter == 1)
				displayDiv.innerHTML = "OFF";
			else if (filter == 24)
				displayDiv.innerHTNL = "On";
			else
				displayDiv.innerHTML = filter.toString();
			break;
		case 5: // change degrees to F
			if (makeChange == 0 || fahrenheit == 1){
				makeChange = 1;
			}else{
				fahrenheit = 1;
				poolTemp = convertToFahrenheit(poolTemp);
				spaTemp = convertToFahrenheit(spaTemp);
				outsideTemp = 74;
			}
			if (fahrenheit == 1)
				displayDiv.innerHTML = '<span style="font-size:14pt; font-weight:bold; vertical-align:text-top">o</span>F';
			else
				displayDiv.innerHTML = '<span style="font-size:14pt; font-weight:bold; vertical-align:text-top">o</span>C';
			break;
	}
	
	myTimer = setTimeout('setPoolTemp()', 7000);	
}

function changeHeaterLight(){
	var displayDiv = document.getElementById('btnHeat');
	if (heaterOn == 1){
		displayDiv.src = "images/demo/button_orange.jpg";
	}else{
		displayDiv.src = "images/demo/button.jpg";
	}
}

function updateLights(){
	var poolDiv = document.getElementById('btnPool');
	var spaDiv = document.getElementById('btnSpa');
	if (poolMode == 1){
		poolDiv.src = "images/demo/button_green.jpg";
		spaDiv.src = "images/demo/button.jpg";
	}else{
		poolDiv.src = "images/demo/button.jpg";
		spaDiv.src = "images/demo/button_green.jpg";
	}
	
	changeHeaterLight();
}

function convertToCelsius(num){
	var newNumber = (num - 32) * (5/9);
	return Math.round(newNumber);
}

function convertToFahrenheit(num){
	var newNumber = ((9/5) * num) + 32;
	return Math.round(newNumber);
}

function getBounds(pool){
	if (pool == 1){
		if (fahrenheit == 1){
			upperBounds = 95;
			lowerBounds = 60;
		}else{
			upperBounds = 35;
			lowerBounds = 15;
		}
	}else{
		if (fahrenheit == 1){
			upperBounds = 104;
			lowerBounds = 60;
		}else{
			upperBounds = 40;
			lowerBounds = 15;
		}
	}
}

function setPoolTemp(){
	var displayDiv = document.getElementById('display');
	clearTimeout(myTimer);
	makeChange = 0;
	menu = 0;
	
	displayDiv.innerHTML = outsideTemp.toString();
}