var debugMode = false;

function debugResponse(o) {
	if(debugMode) {
		var div = document.getElementById('debug');
		div.innerHTML = "<li>Transaction id: " + o.tId + "</li>";
		div.innerHTML += "<li>HTTP status: " + o.status + "</li>";
		div.innerHTML += "<li>Status code message: " + o.statusText + "</li>";
		div.innerHTML += "<li>HTTP headers: <ul>" + o.getAllResponseHeaders + "</ul></li>";
		div.innerHTML += "<li>Server response:" + o.responseText + "</li>";
	}
}

function debugObject(myObject) {
	if(debugMode) {
		var div = document.getElementById('debug');
		div.innerHTML += "<br>";
		div.innerHTML += "<li>ResultSet.ResultSetMapUrl: " + myObject.ResultSet.ResultSetMapUrl + "</li>";
		div.innerHTML += "<li>ResultSet.succesful: " + myObject.ResultSet.succesful + "</li>";
		div.innerHTML += "<li>ResultSet.totalResultsReturned: " + myObject.ResultSet.totalResultsReturned + "</li>";
	}
}

var kotVal;
var kvIndex;
var kitVal;
var kitIndex;

var kerdesSzam;
var id;

function lapGen(lapok, lapSzam) {
	var html = "";
	
	var name = 0;
	var fejlec = lapok[lapSzam].fejlec;	
	var fejleckep= '<img src="images/user_images/' + lapok[lapSzam].kepneve + ' " width="40" height="40">';	
	html += '<span>' + fejleckep + '</span>&nbsp;&nbsp;' + '<span class="fejleccim">' + fejlec + '</span>';
	var infolapszoveg = lapok[lapSzam].szoveg;
	
	if (infolapszoveg !=''){
		html += '<div class="infoszoveg">' + '<hr>' + infolapszoveg.replace(/\n/g, '<br>') + '</div>';
	}
				
	var kerdesek = lapok[lapSzam].kerdesek; 
	kerdesSzam += kerdesek.length;
	
	for(var j in kerdesek) {
		var valasz = "";
		var score = "";
		var kotelezo = kerdesek[j].kotelezo_valasz;
		var kerdesid = kerdesek[j].kerdes_id;	
		var valaszok = kerdesek[j].valaszok;
		var valasz_tipus = kerdesek[j].valasz_tipus;
		
		if (kotelezo == 'I')	{
			kotVal[kvIndex++] = kerdesid;
			valasz += '<div>' + '<span class="redstar"> * </span>' +  '<span class="kerdesszoveg">' + kerdesek[j].kerdes_szoveg + '</span></div><br>';	
		   
		  
		}else {
		
		   valasz += '<div class="kerdesszoveg">' + kerdesek[j].kerdes_szoveg + '</div><br>';	
		}			
		
		if(valasz_tipus == 'TX') {
			valasz += '<div><textarea id="' + id + '" name="' + "t_" + kerdesid + '"   cols=130 rows=8 class="valaszszoveg" onchange="oblAnswer(' + kerdesid + ');"></textarea><br></div>';
		}
		else {
			for(var i in valaszok) {
				var valaszid = valaszok[i].valasz_id;
				name++;				
				id++;
				if(valaszok[i].vors == 'V') {
					if(valasz_tipus == 'RB') {
						valasz += '<div><input id="' + id + '" type="radio" name="' + kerdesid + '"  value="' + valaszid + '" onclick="oblAnswer(' + kerdesid + ');"><label for="' + id + '" class="valaszszoveg">' + valaszok[i].szoveg + '</label></div>';
					}
					else if(valasz_tipus == 'CB') {
						valasz += '<div><input id="' + id + '" type="checkbox" name="' + "cb" + name + "_" + kerdesid + '" value="' + valaszid + '" onclick="oblAnswer(' + kerdesid + ');"><label for="' + id + '" class="valaszszoveg">' + valaszok[i].szoveg + '</label></div>';
					}
				}
			}
		}
		
		name++;
		score += '<div class="kerdesszoveg">' + kerdesek[j].score_szoveg + '</div><br>' ;
		for(var i in valaszok) {
			var valaszid = valaszok[i].valasz_id;
			id++;
			if(valaszok[i].vors == 'S') {
				score += '<div><input id="' + id  + '" type="radio"  name="' + "s_" + kerdesid + '" value="' + valaszid + '" onclick="oblAnswer(' + kerdesid + ');"><label for="' + id + '" class="valaszszoveg" vertical-align:"top">' + valaszok[i].szoveg + '</label></div>';
			}
		}
		
		html += '<table style="vertical-align: top;" cellspacing ="1">';
		
		if(j == 0) {
			html +=	'<tr><td colspan="2"><hr></td></tr>';
		}
		
		if (kerdesek[j].score_szoveg == ''){
			html +=	'<tr>';		
			html += '<td style="width: 700px; vertical-align: top;" >' + valasz + '</td>';			
			html +=	'</tr>';
			html += '<tr><td><hr></td></tr>';				
			html += '</table>';
		}
		else {
			html +=	'<tr>';		
			html += '<td style="width: 350px; vertical-align: top;" >' + valasz + '</td>';
			html += '<td style="width: 350px; vertical-align: top;">' + score + '</td>'; 
			html +=	'</tr>';
			html += '<tr><td colspan="2"><hr></td></tr>';				
			html += '</table>';
		}
	}
	return html;
}

var index;
var firstpage;
var lastpage;

var handleSuccess = function(o){
	if(o.responseText !== undefined){
		debugResponse(o);
		
		try {
			var iStartText = o.responseText.indexOf("json_start{");
			var iEndText   = o.responseText.lastIndexOf("}json_end");
			var sJson = o.responseText.substr(iStartText+10, iEndText-iStartText-9); 
	
			eval("var myObject = "+sJson);
			debugObject(myObject);
			
			kotVal = new Array();
			kvIndex = 0;
			kitVal = new Array();
			kitIndex = 0;

			kerdesSzam = 0;
			id = 0;
			
			html = "";
			if(myObject.ResultSet.Result == "0") {
				html += '<br>';
				html += "Önnek nincs kitöltésre váró felmérése";
				html += '<br>';
				html += '<a href="javascript:logout();">Kilépés</a>';
				document.getElementById('felmeres').innerHTML = html;
			}
			else {
				html += '<table border="0" cellspacing="0" cellpadding="10" width="690">';
				html += '<tr>';
				html += '<td><div id="cimsor" class="kerdoivcim"></div></td>';				  
				html += '</tr>';
				html += '<tr>';
				html += '<td align=center>';
				html += '<input  type="button" id="prevTopButton" value="Előző lap" class="lepegetobutton" onClick="prev();">&nbsp;&nbsp;&nbsp;&nbsp;';	
				html += '<input  type="button" id="nextTopButton" value="Következő lap" class="lepegetobutton" onClick="next();">';
				html += '</td>';
				html += '</tr>';							
				html += '<tr>';
				html += '<td style="padding-top:0px;padding-bottom:0px;"><span id="progressOssz"></span> / <span id="progressKitoltve">0</span></td>';
				html += '</tr>';
				html += '<tr>';
				html += '<td style="padding-top:1px;"><div style="padding: 1px; border: solid 1px; width:690px;"><img id="progressbar" src="images/progressbar.png" name="bar" class="progressbar"/></div></td>';
				html += '</tr>';   
				html += '<tr>';
				html += '<td>';
				html += '<form id="solution">';
				html += '<input type="hidden" name="userid" value="' + USER_ID + '">';
				html += '<div id="lap"></div>';			     
				html += '</form>';
				html += '</td>';
				html += '</tr>';  
				html += '<tr>';
				html += '<td align=center>';
				html += '<input  type="button"  id="prevButton" value="Előző lap" class="lepegetobutton" onClick="prev();">&nbsp;&nbsp;&nbsp;&nbsp;';	
				html += '<input  type="button"  id="nextButton" value="Következő lap" class="lepegetobutton" onClick="next();">';
				html += '</td>';
				html += '</tr>';
				html += '<tr>';
				html += '<td align=right>';
				html += '<input  type="button"  id="saveButton" value="Mentés" class="button" onClick="saveSol();">';
				html += '</td>';
				html += '</tr>';	
				html += '</table>';
				
				document.getElementById('felmeres').innerHTML = html;


				var div = document.getElementById('cimsor');	
											
			    var cimsor = myObject.ResultSet.Result.kerdoiv_nev;	
				var cimkep= '<img src="images/user_images/' + myObject.ResultSet.Result.kepneve + ' " width="50" height="50">';		

				div.innerHTML += '<span class="kerdoivcim">' + cimsor + '</span>' + '&nbsp;&nbsp;' + cimkep;

	            var lapok = myObject.ResultSet.Result.lapok;
				var lapsum ='<div id="lapsum" style="position:relative; left:0; top:0">';
			
			    for(var i in lapok) {
				    var vis = 'hidden';
				    if(i == 0) {
					   vis = 'visible';
				      }	
			          lapsum += '<div id="lap' + i + '" style="display:block; position:absolute; left:0; top:0; visibility: ' + vis + ';">' + lapGen(lapok, i); + '</div>';       
				}
				index=0;
				firstpage=0;
				lastpage=lapok.length - 1;	
				document.getElementById('lap').innerHTML += lapsum  + "</div>";
				document.getElementById('lapsum').style.height = document.getElementById('lap' + index).offsetHeight;
				document.getElementById('progressOssz').innerHTML = kerdesSzam;
				
				document.getElementById('prevTopButton').style.visibility = 'hidden';
				document.getElementById('prevButton').style.visibility = 'hidden';
				document.getElementById('saveButton').style.visibility = 'hidden';	
				
				if(lastpage > 1) {
					document.getElementById('nextTopButton').style.visibility = 'visible';
					document.getElementById('nextButton').style.visibility = 'visible';
					document.getElementById('saveButton').style.visibility = 'hidden';
				}				
				if( kerdesSzam == 1 || lastpage === firstpage) {
					document.getElementById('nextTopButton').style.visibility = 'hidden';
					document.getElementById('nextButton').style.visibility = 'hidden';
					document.getElementById('saveButton').style.visibility = 'visible';
				}
				
				
				saved = false;
			}
			   	
		} catch (e) {
			if(debugMode) { 
				document.getElementById('debug').innerHTML += "  ---  exception: " + e.toString();
			}
			else {
				logout();
			}
		}
		
	}
}
 
      
var handleFailure = function(o){
	if(o.responseText !== undefined){
		var div = document.getElementById('debug');
		div.innerHTML = "<li>Transaction id: " + o.tId + "</li>";
		div.innerHTML += "<li>HTTP status: " + o.status + "</li>";
		div.innerHTML += "<li>Status code message: " + o.statusText + "</li>";
	}
}

var callback =
{
  success:handleSuccess,
  failure:handleFailure
};

var USER_ID;
function makeRequest(){
	
	var role = getCookie('role');
	if(role == null) {
		window.location.href = "index.html";
	}
	else if(role == 'A' || role == 'E') {
		window.location.href = "index.html";
	}
	else if(role == 'K') {
		USER_ID = getCookie('fid');
		var url = "php/getKerdoiv.php";
		var postData = "felhasznalo_id=" + USER_ID;
		var request = YAHOO.util.Connect.asyncRequest('POST', url, callback, postData);
	}
	
}

function prev() {
	// előző lap
	var prevIndex = index - 1;
		
	if(index != firstpage) {
	    document.getElementById('lap' + prevIndex).style.visibility = 'visible';
		document.getElementById('lap' + index ).style.visibility = 'hidden';
		document.getElementById('lapsum').style.height = document.getElementById('lap' + prevIndex).offsetHeight;
		index--;
		window.location.href="#top";
		
		document.getElementById('nextTopButton').style.visibility = 'visible';
		document.getElementById('nextButton').style.visibility = 'visible';
		if(index == firstpage) {
			document.getElementById('prevTopButton').style.visibility = 'hidden';
	    	document.getElementById('prevButton').style.visibility = 'hidden';
		}
		if(index != lastpage) {
			document.getElementById('saveButton').style.visibility = 'hidden';	
		}
	}
}

function next() {
	// a következő lap
	var nextIndex = index + 1;
	
	if (nextIndex <= lastpage){
		document.getElementById('lap' + nextIndex).style.visibility = 'visible';
 	    document.getElementById('lap' + index).style.visibility = 'hidden';
		document.getElementById('lapsum').style.height = document.getElementById('lap' + nextIndex).offsetHeight;
        index++;
		window.location.href="#top";
		
		document.getElementById('prevTopButton').style.visibility = 'visible';
		document.getElementById('prevButton').style.visibility = 'visible';
		if(index == lastpage) {
			document.getElementById('nextTopButton').style.visibility = 'hidden';
	    	document.getElementById('nextButton').style.visibility = 'hidden';
			document.getElementById('saveButton').style.visibility = 'visible';			
		}
	}
}

function logout() {
	if(saved || kitVal == null || kitVal.length == 0 || confirm("Amennyiben elhagyja a kérdőív kitöltését, az eddigi válaszai elvesznek!\nBiztosan kilép?")) {
		var request = YAHOO.util.Connect.asyncRequest('POST', "php/login.php", null, "action=logout");
		delCookie('role');
		delCookie('fid');
		saved = true;
		makeRequest();
	}
}

var saved;
var handleSuccessSave = function(o){
	if(o.responseText !== undefined){
		debugResponse(o);
		
		try {
			var iStartText = o.responseText.indexOf("json_start{");
			var iEndText   = o.responseText.lastIndexOf("}json_end");
			var sJson = o.responseText.substr(iStartText+10, iEndText-iStartText-9); 
	
			eval("var obj = "+sJson);
			debugObject(obj);
			saved = true;
			
			var html = '';
			html += '<br>';
			html += 'Köszönjük, hogy kitöltöttette a felmérést.';
			html += '<br>';
			if (obj.ResultSet.Result == '1') {
				html += '<br>';
				html += 'Önnek van további kitöltésre váró kérdőíve.';
				html += '<br>';
				html += '<a href="javascript:makeRequest();">Következő kérdőív kitöltése</a><br>';
			}
			html += '<a href="javascript:logout();">Kilépés</a>';
			
			document.getElementById('felmeres').innerHTML = html;
		}
		catch (e) {
			if(debugMode) { 
				document.getElementById('debug').innerHTML += "  ---  exception: " + e.toString();
			}
			else {
				logout();
			}
		}
	}
}

var callbackSave =
{
  success:handleSuccessSave,
  failure:handleFailure
}

function benneVan(id) {
	var van = false;
	for(var i in kitVal) {
		if(kitVal[i] == id) {
			van = true;
			break;
		}
	}
	return van;
}

function oblAnswer(kerdesid){
	// kötelező válasz kitöltésének ellenőrzése
	if(!benneVan(kerdesid)) {
		kitVal [kitIndex++] = kerdesid;
	}
	progress();
}

function saveSol() {
	for(var i in kotVal) {
		if(!benneVan(kotVal[i])) {
			alert('A csillaggal megjelölt válaszok kitöltése kötelező!');
			return;
		}
	}
	
	// kitöltött kérdőív mentése
	if(confirm("Biztosan le akarja zárni a felmérést?")) {
		var url = "php/results.php";
		var form = document.getElementById('solution');
		YAHOO.util.Connect.setForm(form);
		
		var request = YAHOO.util.Connect.asyncRequest('POST', url, callbackSave);
		document.getElementById('felmeres').innerHTML = "Felmérés mentése folyamatban...";
	}	
}

function progress() {
	var bar = document.getElementById('progressbar');
  	var w = Math.round((kitVal.length / kerdesSzam) * 690);
	bar.width = w;
	document.getElementById('progressKitoltve').innerHTML = kitVal.length;
 }
 
function figyelmeztet() {
	if(!saved && kitVal.length != 0) {
		alert("Amennyiben elhagyja a kérdőív kitöltését, az eddigi válaszai elvesznek!");
		return false;
	}
	else {
		return true;
	}
}


