/**
 * 2010-04-09
 *
 * EnergyForm class v1.1
 * @author Roel van Dijk
 * @author Sven
 * @author Forest & Fields IT 
 *
 * Valid properties upon init:
 * - buttonText		: alternative to the buttonImgUrl, a text for the button
 * - width			: the width of the form (e.g. "166px", "100%"
 * - labels			: list of label in the form, should be an array of 9 strings
 */

function EnergyForm () {

	var imgGroup = new Array(); imgGroup[0]="images/Consument.png";imgGroup[1]="images/EenManZaak.png";imgGroup[2]="images/MkbProdKL.png";imgGroup[3]="images/GrootKantoor.png";imgGroup[4]="images/MkbProdGR.png";
	var imgElec = new Array();  imgElec[0]="3500";imgElec[1]="10000";imgElec[2]="50000";imgElec[3]="100000";imgElec[4]="200000";
	var imgGas = new Array();  imgGas[0]="1800";imgGas[1]="5000";imgGas[2]="20000";imgGas[3]="50000";imgGas[4]="100000";
	var stroomAansl = new Array(); stroomAansl[0]="A1X025";stroomAansl[1]="A3X035";stroomAansl[2]="A3X050";stroomAansl[3]="A3X080";stroomAansl[4]="A3X035";
	var gasAansl= new Array(); gasAansl[0]="";gasAansl[1]="G10";gasAansl[2]="G10";gasAansl[3]="G16";gasAansl[4]="G40";
	var descText = new Array(); descText[0]="Consument"; descText[1]="Eenmanszaak"; descText[2]="MKB"; descText[3]="Kantoorpand"; descText[4]="Industrieel MKB";
	var vgid = new Array(); vgid[0]="CM"; vgid[1]="ZK"; vgid[2]="ZK"; vgid[3]="ZK"; vgid[4]="ZK"; 
	var curImg = 0;

	this.renderLayer = function() {
		var e_layer = document.getElementById("ep_form_"+this.formId);

		this.addNavigation(e_layer);
		this.addDescText(e_layer);
		this.addPostCode(e_layer);
		this.addSingleMeter(e_layer);
		this.addGasUsage(e_layer);
		this.addSubmit(e_layer);
	}
	
	this.updateLayer = function() {
		document.getElementById("vgid_").value=vgid[curImg];
		document.getElementById("groupImg").src=imgGroup[curImg];
		document.getElementById("verbruik_stroom_" + this.formId).value=imgElec[curImg];
		document.getElementById("stroomhid").value=imgElec[curImg];
		document.getElementById("m3v_" + this.formId).value=imgGas[curImg];
		document.getElementById("m3vhid").value=imgGas[curImg];
		document.getElementById("hv_" + this.formId).value=imgElec[curImg];
		document.getElementById("an").value=stroomAansl[curImg];
		document.getElementById("ga").value=gasAansl[curImg];
		document.getElementById("descText").innerHTML=descText[curImg];
	}
	
	this.nextImage = function() {
		curImg++;
		if (curImg==imgGroup.length) { 
			curImg = 0;
		}
		this.updateLayer();
	}
	
	this.prevImage = function() {
		if(curImg==0) {
			curImg=imgGroup.length;
		}
		curImg--;
		
		window.e_form.updateLayer();
	}
	
	this.manualNav = function(navigation) {
		window.clearInterval(imgIntv);
		if(navigation=="left") {
			this.prevImage();
		}
		if(navigation=="right") {
			this.nextImage(imgIntv);
		}
	}

	this.init = function(properties) {

		this.handleProperties(properties);

		var action = this.vgid == 'ZK' ? "http://www.energieprijzenzakelijk.nl/rekentool/stroomgas.php" : "http://www.energieprijzen.nl/rekentool/";

		var formDiv = '<div id="ep_layer_'+this.formId+'">' +
		'	<form name="ep_input" id="ep_form_'+this.formId+'" method="get" action="'+action+'" target="_new" onsubmit="return EnergyForm.handleSubmit(\''+this.formId+'\')">'+
		'	</form>' +
		'</div>'

		var style = '<style type="text/css">' +
		'	div#ep_layer_'+this.formId+' { width:'+this.width+'; } '+
		'	div#ep_layer_'+this.formId+' div.clear { clear:both; } '+
		'	div#ep_layer_'+this.formId+' div.hidden { display:none; } '+
		'	div#ep_layer_'+this.formId+' input.small { width:78px; } '+
		'	div#ep_layer_'+this.formId+' label { float: left; width: 120px; margin: 4px 0px 0px 0px } '+
		'</style>';

		document.write(formDiv);
		document.write(style);

		this.renderLayer();
		
		imgIntv = window.setInterval("window.e_form.nextImage();", 2000);
	}

	this.handleProperties = function (properties) {
		// unique identifier for site
		if (properties["id"]) {
			this.formId = properties["id"];
			this.aid = properties["id"];
		} else {
			this.aid = "EGPZ";
		}
		
		// text for submit button
		if (properties["buttonText"]) {
			this.buttonText = properties["buttonText"];
		}

		// width
		if (properties["width"]) {
			this.width = properties["width"];
		} else {
			this.width = "300px";
		}

		// custom labels
		if (properties["labels"]) {
			var labels = properties["labels"];
			this.labelPC 				= labels[0];
			this.labelElectraYear 		= labels[1];
			this.labelGasUsage 			= labels[2];
		} 
		else {
			this.labelPC 				= "Postcode";
			this.labelElectraYear 		= "Stroom";
			this.labelGasUsage 			= "Gas";
		}
		
	}
	
	this.addDescText = function (layer) {
		
		var html = '<div class="element elementDesc">' +
		'	<span id="descText">'+ descText[curImg] +'</span>' +
		'</div>';
		
		this.appendHTML(layer, html);	
	}
	
	this.addPostCode = function (layer) {

		var html = '<div class="element elementPC">' +
		'	<label for="pc_'+this.formId+'">'+this.labelPC+'</label>' +
		'	<input type="text" name="pc" id="pc_'+this.formId+'" class="small" size="6" maxlength="6" value="3500AA" />'; // onchange="saveCookie(this);"

		html += '</div>';
	
		this.appendHTML(layer, html);
	}
	
	this.addGasUsage = function (layer) {
		var html = '<div class="element elementGU">';

		html += '	<label for="m3v_'+this.formId+'">'+this.labelGasUsage+'</label>' +
		'	<input type="text" name="m3vtext" id="m3v_'+this.formId+'" class="small" value="' +
		imgGas[curImg] +
		'	" disabled="disabled"/>' + // onchange="saveCookie(this);"
		'	<input id ="m3vhid" name="m3v" type="hidden" value="'+ imgGas[curImg] +'">' +
		'	<span class="unit" style="margin-top:3px">m&sup3;</span>' +
		'	</div>';

		this.appendHTML(layer, html);
	}
	
	this.addNavigation = function (layer) {
		var html= '<div class="element elementNav">' +
		'	<img id="leftNav" src="images/leftNav.png" onClick="window.e_form.manualNav(\'left\');"/>' +
		'	<a href="javascript: document.ep_input.submit()" onclick="return EnergyForm.handleSubmit(\''+this.formId+'\')">' +
		'	<img id="groupImg" src="' + imgGroup[curImg] + '"></img></a>' +
		'	<img id="rightNav" src="images/rightNav.png" onClick="window.e_form.manualNav(\'right\');"/>' +
		'	</div>';
		
		this.appendHTML(layer,html);
	}
	
	this.addSingleMeter = function (layer) {

		var html = '<div class="element elementSingle" id="enkele_meter_'+this.formId+'">';

		html += '	<label for="verbruik_stroom_'+this.formId+'">'+this.labelElectraYear+'</label>' +
		'	<input type="text" name="verbruik_stroomText" id="verbruik_stroom_'+this.formId+'" class="small" value="' +
			imgElec[curImg] +
		'	" disabled="disabled"/>' + 
		'	<input id="stroomhid" name="verbruik_stroom" type="hidden" value="'+ imgElec[curImg] +'">' +// onchange="saveCookie(this);"
		'	<span class="unit">kWh</span>' +
		'	</div>';

		this.appendHTML(layer, html);
	}

	this.addSubmit = function (layer) {
		var html = '<div class="element element_submit">' +
		'	<input name="tarief" type="hidden" value="ET">' +
		'	<input name="aid" type="hidden" value="'+this.aid+'">' +
		'	<input name="sort" type="hidden" value="prijs_levering">' +
		'	<input name="vgid" id="vgid_" type="hidden" value="'+ vgid[curImg] +'">' +
		'	<input name="tast" type="hidden" value="toon">' +
		'	<input name="kw" type="hidden" value="0">' +
		'	<input name="aansluiting" id="an" type="hidden" value="'+ stroomAansl[curImg] +'">' +
		'	<input name="gasaansluiting" id="ga" type="hidden" value="'+ gasAansl[curImg] +'">' +
		'	<input name="hv" id="hv_'+this.formId+'" type="hidden" value="'+ imgElec[curImg] +'">';
		
		if (this.buttonText) {
			html += '	<input type="submit" name="submitButton" id="submit_start_calculate" value="'+this.buttonText+'" />';
		} else if (this.buttonImgUrl) {
			html += '	<input type="image" name="submitButton" id="submit_start_calculate" src="'+this.buttonImgUrl+'" />';
		} else {
			html += '	<input type="submit" name="submitButton" id="submit_start_calculate" />';
		}

		html += '	<input id="baseUrl_'+this.formId+'" type="hidden" value="'+this.baseUrl+'">';

		html += '</div>';

		this.appendHTML(layer, html);
	}

	this.appendHTML = function(layer, html) {
		layer.innerHTML = layer.innerHTML + html;
	}

	EnergyForm.handleSubmit = function (formId) {
		
		var errorMsg = "";
		
		// valid postcode check:
		var postCode = document.getElementById("pc_"+formId).value;
		if (!postCode.match(/[0-9]{4}[A-Za-z]{2}/)) {
			errorMsg += "U moet een volledige postcode invullen, bijvoorbeeld 1234AB.\n\n";
		}
		
		if (errorMsg) {
			alert(errorMsg);
			return false;
		}

		// determine form action (copied directly from original javascript)
		var form = document.getElementById("ep_form_"+formId);
		
		if (vgid[curImg] == 'CM'){
			var baseUrl = "http://www.energieprijzen.nl";
			form.ga.disabled="disabled"
		}
		if(vgid[curImg] !='CM') {
			var baseUrl = "http://www.energieprijzenzakelijk.nl";
			form.ga.disabled="false"
		}

		if ((form.gasaansluiting.value == "G40") || ( form.hv.value > 300000) || ( form.m3v.value > 170000)){
			form.action = baseUrl+"/offerte/grootverbruikers.php";
		}
		else {
			//set action target:
			if (form.m3v.value >= 1) {
				form.action = baseUrl+"/rekentool/stroomgas.php";
			} else {
				form.action = baseUrl+"/rekentool/prijzen.php";
			}
		}

		if (typeof pageTracker != "undefined") {
			pageTracker._trackPageview ('/outgoing/energieprijzen.nl');
		}

		return true;
	}

}
