/*
 *	statistics.js
 *
 *	Filen innehåller JS funktioner som används av Mediestatistiken.
 *
 */

 
/*
 *	Anropas då man kryssar för/ur i vyn där vi listar alla artiklar i en profil,
 *	från Mediestatistik >> Kategorisera nyheter >> Profil.
 *
 *	Sätter extra parameter till urlen vid "individuell kategorisering".
 */
function setIndvCat(obj, xurl)
{	
	if (obj.value == 1) {
		window.location = "?page=list" + xurl + "&indvCat=1";
	}		
	else {
		window.location = "?page=list" + xurl
	}
} 
 

/*
 *	Anropas från moreinfo.js
 *	Sparar status för artikel om den ska var med i statistiken eller inte
 *
 *	Parameter: 	
 *		obj - objektet (kryssrutan)
 *		artID - artikelns ID 
 */
function changeInStatistics(obj, artID)
{	
	var request = getHTTPObject();
	var url = "ajax2/statistics_ajax.php" + "?func=changeInStatistics" + "&checked=" + (obj.checked ? 'y' : 'n') + "&artID=" + artID;	
	var wurl = window.location.href;
	if (wurl.search(/&indvCat=1/gi) != -1)
		url += "&individtag=1";
	url += "&" + Math.random();
	
	request.open("GET", url, true);
	request.onreadystatechange = function (){ if (request.readyState == 4){ } }
	request.send(null);				
}


/*
 *	Anropas från moreinfo.js
 *	Sparar tonalitet för artikeln
 *
 *	Parameter: 	
 *		tonality - tonalitet
 *		artID - artikelns ID 
 */
function changeTonality(tonality, artID)
{
	var request = getHTTPObject();
	var url = "ajax2/statistics_ajax.php" + "?func=changeTonality" + "&tonality=" + tonality + "&artID=" + artID;
	var wurl = window.location.href;
	if (wurl.search(/&indvCat=1/gi) != -1)
		url += "&individtag=1";
	url += "&" + Math.random();
	
	request.open("GET", url, true);
	request.onreadystatechange = function (){ if (request.readyState == 4){ } }
	request.send(null);				
}


/*
 *	Anropas från poden.
 *	Visar alla profiler ur vilka man väljer de som ska vara valbara
 * 	när man klickar på sökprofiler i grunddata.
 */
function showAllProfiles()
{
	var request = getHTTPObject();
	var url = "ajax2/statistics_ajax.php" + "?func=showAllProfiles" + "&" + Math.random();
	request.open("GET", url, true);
	request.onreadystatechange = function (){ 
		if (request.readyState == 4)
		{ 
			var ihc = "";
			var profiles = request.responseXML.getElementsByTagName('profiles').item(0);			
			var names = profiles.getElementsByTagName('name');	
			
			if (names.length > 0)
			{
				ihc += "<div id=\"profile_list_all\">";
				
				for (var i=0; i<names.length; i++) {
					var pname = names.item(i).firstChild.nodeValue;
					var id = names.item(i).getAttribute('id');		
					var isChecked = names.item(i).getAttribute('isChecked');
					var doctype = names.item(i).getAttribute('doctype');
																											
					ihc += "<div>";	
					ihc += "<input type=\"checkbox\" " + (isChecked == '1' ? "checked=\"checked\"" : '')  + " value=\"" + id + "\" /> ";	
					ihc += "<span title=\"";
					if (doctype == 'blogg')				
						ihc += "Blog";
					else if (doctype == 'summary')				
						ihc += "Fulltext";
					else if (doctype == 'webb')				
						ihc += "Webb";						
					ihc += "\">" + pname + "</span>";
					ihc += "</div>\n";					
				}
				ihc += "</div>"; // profile_list_all
			}
			else
				ihc = "<div>" + p('ID_STATISTICS_PROFILES_TOTAL') + ": 0</div>";
			
			ihc += "<div style=\"margin-top: 20px\">";
			ihc += "<input type=\"button\" onclick=\"saveSelectedProfiles(); closePopup();\" class=\"button\" value=\"" + p('ID_STATISTICS_EXECUTE') + "\" />";	
			ihc += "</div>\n";				
			popup_dialog(p('ID_STATISTICS_HEADLINE'), ihc, "300px", "500px");
		} 
	}
	request.send(null);					
}


/*
 *	Skicka id för utvalda profiler som ska vara valbara i 'sökprofiler' i grunddaata
 */
function saveSelectedProfiles()
{
	var pids = "";
	var checkboxes = document.getElementById('profile_list_all').getElementsByTagName("input");		
	for (var i=0; i<checkboxes.length; i++)	
		if (checkboxes[i].checked)
			pids += "pid[]=" + checkboxes[i].value + "&";		
		
	var url = "ajax2/statistics_ajax.php" + "?func=ssp&" + pids + Math.random();
	
	var request = getHTTPObject();		
	request.open("GET", url, true);
	request.onreadystatechange = function (){ 
		if (request.readyState == 4)
		{ 
			//window.location = "?page=statWorkWith";
			//var errStatus = request.responseXML.getElementsByTagName('status');
			//if (errStatus != null) {
			//	alert(p('ID_STATISTICS_ERROR'));
			//}
		}		
	}
	request.send(null);					
}


/*
 *	Anropas från pod stat_analysis
 *	Visar i popup alla profiler
 */
function getProfiles()
{
	var request = getHTTPObject();
	var url = "ajax2/statistics_ajax.php" + "?func=getProfiles" + "&" + Math.random();
	request.open("GET", url, true);
	request.onreadystatechange = function (){ 
		if (request.readyState == 4)
		{ 
			var ihc = "";
			var profiles = request.responseXML.getElementsByTagName('profiles').item(0);			
			var names = profiles.getElementsByTagName('name');	
			
			if (names.length > 0)
			{
				ihc += "<div id=\"profile_list\">";
				
				for (var i=0; i<names.length; i++) {
					var pname = names.item(i).firstChild.nodeValue;
					var id = names.item(i).getAttribute('id');			
					var doctype = names.item(i).getAttribute('doctype');													
					var hiddenHolder = document.getElementById('selected_profiles_hidden');	
					var savedIds = hiddenHolder != null && hiddenHolder.value.length > 0 ? hiddenHolder.value.split(',') : '';				
					var found = false;					
					if (savedIds.length > 0){																					
						for (var j=0; j < savedIds.length; j++){
							if (savedIds[j] == id){
								found = true;
								break;
							}
						}	
					}										
					ihc += "<div>";	
					ihc += "<input type=\"checkbox\" " + (found ? "checked=\"checked\"" : '')  + " value=\"" + id + "\" />";
					ihc += "<span title=\"";
					if (doctype == 'blogg')				
						ihc += "Blog";
					else if (doctype == 'summary')				
						ihc += "Fulltext";
					else if (doctype == 'webb')				
						ihc += "Webb";
					ihc += "\">" + pname + "</span>";							
					ihc += "</div>\n";								
				}
				ihc += "</div>"; // profile_list
			}
			else
				ihc = "<div>" + p('ID_STATISTICS_PROFILES_TOTAL') + ": 0</div>";
			
			ihc += "<div style=\"margin-top: 20px\">";
			ihc += "<input type=\"button\" onclick=\"" + (names.length > 0 ? "setProfiles();" : "") + " closePopup();\" class=\"button\" value=\"" + (names.length > 0 ? p('ID_STATISTICS_EXECUTE') : p('ID_CLOSE')) + "\" />";	
			ihc += "</div>\n";				
			popup_dialog(p('ID_STATISTICS_HEADLINE'), ihc, "300px", "500px");
		} 
	}
	request.send(null);					
}


/*
 *	Anropas av funktionen getProfiles när man STÄNGER popup.
 *	Listar valda profiler från popupen, i formuläret
 */
function setProfiles()
{			
	// Fält i formuläret där vi listar profiler
	var holder = document.getElementById('selected_profiles');
	
	// Dolt fält i formuläret för att spara valda profilers id värde komma-separerade
	var hiddenHolder = document.getElementById('selected_profiles_hidden');	
	var savedIds = hiddenHolder != null && hiddenHolder.value.length > 0 ? hiddenHolder.value.split(',') : '';	
	
	// Container i popupen som visar profiler
	var checkboxes = document.getElementById('profile_list').getElementsByTagName("input");
		
	for (var i=0; i<checkboxes.length; i++)
	{
		// Finns i array men inte förkryssat, ta bort id-värdet ur strängen
		if(in_array(checkboxes[i].value, savedIds) && !checkboxes[i].checked)
		{			
			var divs = holder.getElementsByTagName("div");
			for (var j=0; j<divs.length; j++){				
				//alert("divs[j] = " + divs[j].getAttribute("id") + ", chkboxvalue = id" + checkboxes[i].value)				
				if (divs[j].getAttribute("id") == ("id" + checkboxes[i].value)) 
					holder.removeChild(divs[j]);				
			}
			
			//hiddenHolder.value = hiddenHolder.value.replace(eval("/" + checkboxes[i].value + "/g"), '');			
			
			var str = "";			
			var arr = hiddenHolder.value.split(',');												
			for (var m=0; m<arr.length; m++)
				if (arr[m] != checkboxes[i].value) 
					str += arr[m] + ","; 
				
			str = str.substr(0, str.length-1);						
			if (str.substring(str.length-1) == ',')
				str = str.substr(0, str.length-1);			
			hiddenHolder.value = str;			
			
		}
		// Finns inte i arrayen men är förkryssat, lägg till id-värdet i strängen
		else if(!in_array(checkboxes[i].value, savedIds) && checkboxes[i].checked)
		{									
			holder.innerHTML += "<div style=\"margin:0; padding:0;\" id=\"id"+ checkboxes[i].value +"\">" + checkboxes[i].nextSibling.innerHTML + "</div>";	
			hiddenHolder.value += "," + checkboxes[i].value + ",";
		}		
	}
			
	
	var cp = document.getElementById('compareProfiles');
	var selectedProfilesCounter = holder.getElementsByTagName("div").length;
	
	// Kontrollera om endast en profil är vald isf inaktivera 'jämför' i grunddata			
	if (selectedProfilesCounter < 2) {
		if (cp.checked) {
			document.getElementById('nocompare').checked = true;
			cp.disabled = true;
			//clearAllProfiles(1);
		}
		else {
			cp.disabled = true;
			//clearAllProfiles(1);
		}
	}
	// Om det finns fler än en vald profil -> aktivera jämför 
	else if	(selectedProfilesCounter > 1) {
		cp.disabled = false;
		cp.checked = true;
	}
	else
		cp.disabled = false;
	
}


/*
 *	Anropas från stat_analysis.php
 *
 *	Om funktionen anropas med en parameter sparar vi grafen annars uppdaterar vi grafen.
 *
 *	Alla grafinställningar från sidan hämtas och skickas som parameterar till grafen.
 *	
 */
function updateGraph(signal)
{	
	
	//Visa "Loading" info
	$('#graphLoading ').show();
	
	var MAX_PROFILES = 30;
	var MAX_COMPARABLE_FILTER = 3;
	var url = "";
	
	// Börja på URLen
	if (signal != 1 && signal != 2)
	{		
		var iframe = document.getElementById('graphIFrame');
		var xurl = iframe.getAttribute('src').split('?');
		url = xurl[0] + "?";		
	}
	
	// Sökprofiler
	var countProfiles = 0;
	var profileIDs = document.getElementById('selected_profiles_hidden').value;	
	
	if (profileIDs.length > 0){
		var pids = profileIDs.split(',');			
		for (var x=0; x<pids.length; x++)
			if (pids[x].length > 0) {
				url += "pid[]=" + pids[x] + "&";		
				countProfiles++;
			}				
		url = url.substr(0,url.length-1);
	}	
	
	if (countProfiles == 0){
		alert(p('ID_STATISTICS_PROFILE_NOTSELECTED'));
		return false;
	}
	else if (countProfiles > MAX_PROFILES) {
		alert(p('ID_STATISTICS_MAX_PROFILES'));
		return false;	
	}	

	
	// Validera grafnamnet
	if (signal == 1 || signal == 2) {
		if (!isValidText(document.getElementById("graphName").value)) {
			alert(p('ID_STATISTICS_GRAPH_NAME_EMPTY'));
			document.getElementById("graphName").focus();
			return false;
		}
		else
			url += "&gname=" + escape(document.getElementById("graphName").value);
	}	
	
	// Mått
	//url += "&mea=" + document.getElementById('measure').value;
	
	// Tidsperiod
	var timespan = document.getElementsByName('timespan');
	if (timespan[0].checked)
		url += "&days=" + document.getElementById('numofdays').value;
	else {
		var from = document.getElementById('from');
		var to = document.getElementById('to');		
		if (!isValidDate(from.value)){
			alert(p('ID_STATISTICS_ERR_DATE'));
			from.focus();
			return false;
		}		
		else if (!isValidDate(to.value)){
			alert(p('ID_STATISTICS_ERR_DATE'));
			to.focus();
			return false;
		}				
		url += "&fr=" + from.value;
		url += "&to=" + to.value;
		
		// Tillåt inte skillnaden mellan 'från' och 'tom' är mindre än 7		
		var date1 = new Date(from.value.substr(0,4), from.value.substr(5,2), from.value.substr(8,2));
		var date2 = new Date(to.value.substr(0,4), to.value.substr(5,2), to.value.substr(8,2));		
		var one_day = 1000*60*60*24
		var diff = Math.ceil((date2.getTime() - date1.getTime()) / (one_day) + 1);
		if (diff < 7) {
			alert(p('ID_STATISTICS_FEW_DAYS'));
			return false;
		}		
	}
	
	// Graftyp
	url += "&tg=" + document.getElementById('typeofgraph').value;
	
	// Mätetal
	if(document.getElementById('typeofmeasure') != null) {
		url += "&measure_type=" + document.getElementById('typeofmeasure').value;
	}
	
	
	// Sortering
	var sortbyArr = document.getElementsByName('sortby');
	for (var x=0; x<sortbyArr.length; x++)
		if (sortbyArr[x].checked){
			var sortby = sortbyArr[x].value;
			break;
		}
	url += "&sb=" + sortby;
	
	// Filter
	var filterHidden = document.getElementById('filter_hidden');	
	var inputs = filterHidden.getElementsByTagName('input');	
	
	for (var i = 0; i < inputs.length; i++) 
	{
		var attr = inputs[i].getAttribute('id');		
		var s = attr.split('_');
		var t = s[0];	
		
		// Land
		if (t == 'country') {			
			var val = inputs[i].getAttribute('value');				
			if (val != null && val.length > 0)
			{
				if (val.substr(val.length-1, val.length) == ',')
					val = val.substr(0, val.length-1);
									
				var s = val.split(',');
				for (var x=0; x<s.length; x++) 
					url += "&ctry[]=" + s[x];					
			}
		}
		// Län
		else if (t == 'county') {			
			var val = inputs[i].getAttribute('value');				
			if (val != null && val.length > 0)
			{
				if (val.substr(val.length-1, val.length) == ',')
					val = val.substr(0, val.length-1);				
									
				var s = val.split(',');											
				for (var x=0; x<s.length; x++) 
					url += "&cty[]=" + s[x];				
			}
		}
		// Kategori
		else if (t == 'category') {			
			var val = inputs[i].getAttribute('value');				
			if (val != null && val.length > 0)
			{
				if (val.substr(val.length-1, val.length) == ',')
					val = val.substr(0, val.length-1);				
				
				var s = val.split(',');
				for (var x=0; x<s.length; x++)
					if (s[x].length > 0) {
						url += "&ca[]=" + s[x];								
					}
			}
		}
		// Tonalitet
		else if (t == 'tonality') {			
			var val = inputs[i].getAttribute('value');				
			if (val != null && val.length > 0)
			{
				if (val.substr(val.length-1, val.length) == ',')
					val = val.substr(0, val.length-1);
									
				var s = val.split(',');
				for (var x=0; x<s.length; x++) {
					// Skicka inte med 'Ej vald'
					if (s[x].length > 0 && s[x] > 1) {
						url += "&tn[]=" + s[x];
					}
				}
			}
		}		
	}	
		
	// Jämför
	var compare = document.getElementsByName('compare');
	var isCompare = false;
	var cmpval = "";
	for (var c = 0; c < compare.length; c++) {
		if (compare[c].checked && compare[c].value != '') {
			url += "&cmp=" + compare[c].value;
			cmpval = compare[c].value;
			isCompare = true;
			break;
		}			
	}			
	
			
	// Spara som
	if (signal == 1 || signal == 2)	
	{		
		url += document.getElementById('startGraph').checked ? "&startGraph=1" : "&startGraph=0";		
		url += document.getElementById('hsid') != null ? "&hsid=" + document.getElementById('hsid').value : '';						
		
		var gs = "";
		if (document.getElementById('GS0').checked)
			gs = "&gs=" + document.getElementById('GS0').value;
		else if (document.getElementById('GS1').checked)
			gs = "&gs=" + document.getElementById('GS1').value;
		else if (document.getElementById('GS2').checked)
			gs = "&gs=" + document.getElementById('GS2').value;			
		url += gs;
	
					
		if (signal == 2)
			url += "&newcopy";
		
		var url = "ajax2/statistics_ajax.php" + "?func=saveGraph&" + url + "&" + Math.random();						
		//alert('saveas: ' + url);
		
		var request = getHTTPObject();				
		request.open("GET", url, true);
		request.onreadystatechange = function () { 
			if (request.readyState == 4) 				
			{
				if (request.responseXML != null && request.responseXML.getElementsByTagName('hasPrivateProfiles').length > 0)
				{
					var foo = request.responseXML.getElementsByTagName('hasPrivateProfiles').item(0).firstChild.nodeValue;
					alert(p('ID_STATISTICS_RESTRICT_PRIVATE') + " " + foo);
				}
				else if (request.responseXML != null && request.responseXML.getElementsByTagName('foo').length > 0)
				{
					var foo = request.responseXML.getElementsByTagName('foo').item(0).firstChild.nodeValue;
					alert(p('ID_STATISTICS_RESTRICT_PRIVATE_UNIT') + " " + foo);		
				}
				else
				{
					getSettings();
					alert(p('ID_STATISTICS_SAVED'));
					
					//Dölj "Loading" info
					$('#graphLoading ').hide();
									
				}
			}
		}
		request.send(null);						
		
	}	
	// Uppdatera graf
	else {
		url = url + "&" + Math.random();			
		//alert("update: " + url);
		iframe.src = url;
	}	
}



/* 
 *	Kontroll! En användare får inte ha inställningar med samma namn.
 */
function checkGraphName(signal)
{
	if (!isValidText(document.getElementById("graphName").value)) {
		alert(p('ID_STATISTICS_GRAPH_NAME_EMPTY'));
		document.getElementById("graphName").focus();
		return false;
	}	
	else
	{
		//Skapa url
		var url = "ajax2/statistics_ajax.php" + "?func=chkGraphName&a=" + document.getElementById("graphName").value + "&signal=" + signal;
		
		//Lägg på id om det är editering av graf
		if(document.getElementById("hsid")) {
			url += "&hsid=" + document.getElementById("hsid").value;
		}
		
		//Lägg till slumptal
		url += "&" + Math.random();
		
		//Debug
		//alert('checkGraphName: ' + url);	
		
		var request = getHTTPObject();				
		request.open("GET", url, true);
		request.onreadystatechange = function () {
			if (request.readyState == 4) 				
			{
				
				if (request.responseXML.getElementsByTagName('nameMissing').length > 0) {
					alert('NAME MISSING! Please contact the support.');
				}
				else if (request.responseXML.getElementsByTagName('error').length > 0) {
					alert('SQL FAILURE! Please contact the support.');
				}
				else if (request.responseXML.getElementsByTagName('notUnique').length > 0) {
					alert(p('ID_STATISTICS_GRAPH_NAME_UNIQUE'));
				}
				else if ((request.responseXML.getElementsByTagName('unique').length > 0)) {
					if (signal == 1)
					{
						updateGraph('1');
						if(document.getElementById('notloaded_saveas') != null) {
							document.getElementById('notloaded_saveas').style.display = "";
						}
					}
					else if (signal == 2)
					{
						updateGraph('2');
					}
				}
			}					
		}
		request.send(null);		
	}	
}

/*
 *	Anropas från stat_analysis.php
 *	Aktiverar eller inaktiverar element tillhörande resp tidsperiod	
 */
function onoffTimespanFields(num)
{
	if (num == 1){
		document.getElementById('from').disabled = true;
		document.getElementById('to').disabled = true;
		document.getElementById('numofdays').disabled = false;
	}
	else{
		document.getElementById('numofdays').disabled = true;
		document.getElementById('from').disabled = false;
		document.getElementById('to').disabled = false;		
	}
}


/*
 *	Anropas från pod stat_analysis
 *	Visar i popup vald filter
 * 	
 *	Parameter:
 *		ftype - filtertyp 
 *		headline - rubrik för popupen
 *		pid - idvärde för t ex kategori odyl  
 */
function getFilter(filtertype, headline, pid)
{	
	pid = pid !=null ? pid : '';
	var request = getHTTPObject();
	var url = "ajax2/statistics_ajax.php" + "?func=getFilter" + "&ftype=" + escape(filtertype) + "&pid=" + pid + "&" + Math.random();
	request.open("GET", url, true);
	request.onreadystatechange = function (){ 
		if (request.readyState == 4)
		{ 
			var ihc = "";
			var profiles = request.responseXML.getElementsByTagName('filters').item(0);			
			var names = profiles.getElementsByTagName('name');	
			
			if (names.length > 0){
				ihc += "<div id=\"filter_list\">";
				for (var i=0; i<names.length; i++) 
				{
					var pname = names.item(i).firstChild.nodeValue;					
					var id = names.item(i).getAttribute('id');																
					var hiddenHolder = document.getElementById(filtertype + "_" + pid + "_hidden");	
					var savedIds = hiddenHolder != null && hiddenHolder.value.length > 0 ? hiddenHolder.value.split(',') : '';				
					var found = false;					
															
					if (savedIds.length > 0){							
						for (var j=0; j < savedIds.length; j++){
							if (savedIds[j] == id){
								found = true;
								break;
							}
						}	
					}
																											
					ihc += "<div>";	
					ihc += "<input type=\"checkbox\" " + (found ? "checked=\"checked\"" : '')  + " value=\"" + id + "\" /> " + pname;										
					ihc += "</div>\n";					
				}
				ihc += "</div>";
			}
			else
				ihc = "<div>" + p('ID_STATISTICS_PROFILES_TOTAL') + ": 0</div>";
			
			ihc += "<div style=\"margin-top: 20px\">";
			ihc += "<input type=\"button\" onclick=\"" + (names.length > 0 ? "setFilter('" + filtertype + "_" + pid + "');" : "") + " closePopup();\" class=\"button\" value=\"" + p('ID_CLOSE') + "\" />";	
			ihc += "</div>\n";				
			popup_dialog(headline, ihc, "300px", "500px");
		} 
	}
	request.send(null);						
}


/*
 *	Anropas av funktionen getFilter när man STÄNGER popup.
 *	Listar valda filter från popupen, i formuläret
 */
function setFilter(holderName)
{	
	// Fält i formuläret där vi listar filtret
	var holder = document.getElementById(holderName).getElementsByTagName("span").item(0);

	// Dolt fält i formuläret för att spara filter items id-värde komma-separerade
	// Det dolda fältet saknas isf skapa ett annars använd den som finns.	
	if (document.getElementById(holderName + "_hidden") == null) 
	{		
		//var f = document.createElement('form');
		var hiddenHolder = document.createElement('input');
		hiddenHolder.setAttribute('type', 'hidden');
		hiddenHolder.setAttribute('id', holderName + "_hidden");
		//f.appendChild(hiddenHolder);
		//document.getElementById('filter_hidden').appendChild(f);
		document.getElementById('filter_hidden').appendChild(hiddenHolder);
	}	
	else 
		var hiddenHolder = document.getElementById(holderName + "_hidden");	
	
			
	var savedIds = hiddenHolder != null && hiddenHolder.value.length > 0 ? hiddenHolder.value.split(',') : '';		
	
	
	
	// Container i popupen som visar profiler
	var checkboxes = document.getElementById('filter_list').getElementsByTagName("input");
		
	for (var i=0; i<checkboxes.length; i++)
	{
		// Finns i array men inte förkryssat, ta bort id-värdet ur strängen
		if(in_array(checkboxes[i].value, savedIds) && !checkboxes[i].checked)
		{										
			var divs = holder.getElementsByTagName("div");
			for (var j=0; j<divs.length; j++)
				if (divs[j].getAttribute("id") == (holderName + "_id" + checkboxes[i].value))
					holder.removeChild(divs[j]);
			
			//hiddenHolder.value = hiddenHolder.value.replace(eval("/" + checkboxes[i].value + "/g"), '');
			
			var str = "";			
			var arr = hiddenHolder.value.split(',');												
			for (var m=0; m<arr.length; m++)
				if (arr[m] != checkboxes[i].value) 
					str += arr[m] + ","; 
				
			str = str.substr(0, str.length-1);						
			if (str.substring(str.length-1) == ',')
				str = str.substr(0, str.length-1);			
			hiddenHolder.value = str;				
			
			
		}
		// Finns inte i arrayen men är förkryssat, lägg till id-värdet i strängen
		else if(!in_array(checkboxes[i].value, savedIds) && checkboxes[i].checked)
		{		
			var node = document.createElement("div");
			node.className = 'filterValues';
			node.setAttribute('id', (holderName + '_id' + checkboxes[i].value));			
			
			// IE
			if (node.textContent) 
				node.textContent = checkboxes[i].nextSibling.nodeValue;			
			// FF
			else 
				node.innerHTML = checkboxes[i].nextSibling.nodeValue;
			
			holder.appendChild(node);								
			hiddenHolder.value += checkboxes[i].value + ",";
		}		
	}
	
	
	// Kontrollera om endast en profil är vald isf inaktivera 'jämför' i grunddata	
	var cp = holderName.substr(holderName.length-1, 1) == '_' ? document.getElementById(holderName + 'compare') : document.getElementById(holderName + '_compare')
	
	var selectedProfilesCounter = holder.getElementsByTagName("div").length;					
	if (selectedProfilesCounter < 2) {
		if (cp.checked) {
			document.getElementById('nocompare').checked = true;
			cp.disabled = true;
			//clearAllProfiles(1);
		}
		else {
			cp.disabled = true;
			//clearAllProfiles(1);
		}
	}		
	else
		cp.disabled = false;	
	
}


/*
 *	Anropar funktionerna som tömmer profiler och filter.
 */
function clearAll()
{
	if (confirm(p('ID_STATISTICS_EMPTY_ALL')))
	{
		clearAllProfiles(1);
		clearAllFilters(1);
	}
}


/*
 *	Tömmer grafen anropas av funktionerna som tömmer profiler och filter.
 */
function clearGraph()
{
	var iframe = document.getElementById('graphIFrame');	
	iframe.src = iframe.getAttribute('src').split('?')[0];
}


/*
 *	Anropas av från stat_analysis.php
 *	Tömmer valda filter från popupen, i formuläret
 */
function clearAllFilters(signal)
{
	if (signal == null) {
		if (confirm(p('ID_STATISTICS_EMPTY_FILTERS')))
		{		
			// Töm listan med valda filter
			var bin = document.getElementById('filter').getElementsByTagName('span');
			for (var x=0; x<bin.length; x++)
				bin[x].innerHTML = "";		
			
			// Töm dolda fält med id för resp filter
			var bin = document.getElementById('filter_hidden');		
			while (bin.hasChildNodes())
				bin.removeChild(bin.firstChild);
		}				
	}
	else {
		// Töm listan med valda filter
		var bin = document.getElementById('filter').getElementsByTagName('span');
		for (var x=0; x<bin.length; x++)
			bin[x].innerHTML = "";		
		
		// Töm dolda fält med id för resp filter
		var bin = document.getElementById('filter_hidden');		
		while (bin.hasChildNodes())
			bin.removeChild(bin.firstChild);		
	}
			
			
		
	// Inaktivera 'jämför' knapparna för filtren
	var compare = document.getElementsByName('compare');	
	for (var c = 0; c < compare.length; c++) 	
		if (compare[c].getAttribute('id') != 'compareProfiles' && compare[c].getAttribute('id') != 'nocompare') 
			compare[c].disabled = true;	
	
	// Flytta markeringen av 'jämför' knappen
	for (var c = 0; c < compare.length; c++) 
	{
		if (compare[c].getAttribute('id') == 'compareProfiles' && compare[c].checked) {
			continue;	
		}
		else if (compare[c].getAttribute('id') != 'nocompare' && compare[c].checked) {
			document.getElementById('nocompare').checked = true;
			break;
		}	
	}
				
	// Töm grafen
	clearGraph();
}


/*
 *	Anropas av från stat_analysis.php
 *	Tömmer valda profiler från popupen, i formuläret
 *
 *	signal - 1 när den anropas från setProfiles() 
 */
function clearAllProfiles(signal)
{
	if (signal == null) {
		if (confirm(p('ID_STATISTICS_EMPTY_PROFILES')))
		{
			// Töm listan med valda profiler
			var bin = document.getElementById('selected_profiles');
			while (bin.hasChildNodes())
				bin.removeChild(bin.firstChild);
						
			// Töm dolda fältet som innehåller id för resp vald profil
			var bin = document.getElementById('selected_profiles_hidden');
			bin.value = "";				
		}		
	}
	else {
			// Töm listan med valda profiler
			var bin = document.getElementById('selected_profiles');
			while (bin.hasChildNodes())
				bin.removeChild(bin.firstChild);
						
			// Töm dolda fältet som innehåller id för resp vald profil
			var bin = document.getElementById('selected_profiles_hidden');
			bin.value = "";				
	}
	
	// Inaktivera 'jämför' knappen för profiler
	document.getElementById('compareProfiles').disabled = true;	
	
	
	// Om ngn av filter-jämför knapparna är vald, gör inget
	// annars om profiler-jämför är vald, flytta markeringen till 'avmarkera jämför'
	
	var compare = document.getElementsByName('compare');	
	for (var c = 0; c < compare.length; c++) 
	{
		if (compare[c].getAttribute('id') == 'compareProfiles' && compare[c].checked) {
			document.getElementById('nocompare').checked = true;	
			break;
		}
		else if (compare[c].getAttribute('id') != 'nocompare' && compare[c].checked) {
			continue;
		}	
	}
	
	// Töm grafen
	clearGraph();
}


/*
 *	Hämta sparade inställningar för att visa dom i en lista.
 */
function getSettings()
{
	var request = getHTTPObject();
	var url = "ajax2/statistics_ajax.php" + "?func=getSettings" + "&" + Math.random();
	request.open("GET", url, true);
	request.onreadystatechange = function (){ 
		if (request.readyState == 4)
		{ 
			var html = "";
			var list_odd = true;
			var profiles = request.responseXML.getElementsByTagName('settings').item(0);			
			var parts = profiles.getElementsByTagName('parts');	
			
			if (parts.length > 0)
			{
				html = "<b>" + p('ID_STATISTICS_NAME') + "</b>\n"				
				html += "<table width=\"100%\" cellpadding=\"3\">\n";
				
				for (var i=0; i<parts.length; i++) 
				{
					var sname = parts.item(i).firstChild.nodeValue;
					var sid = parts.item(i).getAttribute('id');
					var def = parts.item(i).getAttribute('default');
											
					html += "<tr class=\"" + (list_odd ? "list_odd" : "list_even") + "\">\n";
					list_odd = !list_odd;
					
					html += "<td style=\"width: 86%;\">\n";
					html += "<a href=\"javascript:void(0)\" onclick=\"loadSettings('" + sid + "')\">" + sname + "</a>\n";
					html += (def == 1 ? " (*)" : '');
					html += "</td>\n";
					
					html += "<td style=\"width: auto; text-align: center; vertical-align: middle;\">\n";
					html += "<a href=\"javascript:void(0)\" onclick=\"deleteSettings('" + sid + "')\">";
					html += "<img border=\"0\" src=\"/images/icons/delete.png\" class=\"png\" title=\"" + p('ID_STATISTICS_DELETE') + "\" />";
					html += "</a>\n";
					html += "</td>\n";
					
					html += "</tr>\n";
				}
				
				html += "</table>\n";
			}
			else
				html = "<div>" + p('ID_STATISTICS_NOSAVED_SETTINGS') + "</div>";

			document.getElementById('graph_settings').innerHTML = html;					
		} 
	}
	request.send(null);			
}


/*
 *	Ta bort sparad inställningar
 */
function deleteSettings(sid)
{
	if (confirm(p('ID_STATISTICS_DELETE_SETTINGS')))
	{
		// Ifall inställningen är vald, töm också fält som sparar inställningens id och namn
		if (document.getElementById('hsid') != null) {
			document.getElementById('hsid').parentNode.removeChild(document.getElementById('hsid'));		
			document.getElementById('graphName').value = '';
		}
		
		var request = getHTTPObject();
		var url = "ajax2/statistics_ajax.php" + "?func=deleteSettings" + "&s=" + sid + "&" + Math.random();
		request.open("GET", url, true);
		request.onreadystatechange = function (){ 
			if (request.readyState == 4){ 
				var error = request.responseXML.getElementsByTagName('error').item(0).firstChild.nodeValue;
				
				if (error == 1)
					alert(p('ID_STATISTICS_ERR_DEL_SETTINGS'));
				else if (error == 2)
					alert(p('ID_STATISTICS_ERR_DEL_OTHER_USERS_SETTINGS'));
				else									
					getSettings();
				
			} 
		}
		request.send(null);						
	}
}


/*
 *	Laddar en sparad grafinställning.
 */
function loadSettings(sid)
{
	var request = getHTTPObject();
	var url = "ajax2/statistics_ajax.php" + "?func=loadSettings" + "&sid=" + sid + "&" + Math.random();
	request.open("GET", url, true);
	request.onreadystatechange = function (){ 
		if (request.readyState == 4)
		{ 
			var info = request.responseXML.getElementsByTagName('info').item(0);			
			
			if (info.hasChildNodes())
			{							
				var url = "&fromSettings&sid=" + sid;				
				
				var arr = info.getElementsByTagName('pids');
				for (var i=0; i<arr.length; i++)
					url += "&id[]=" + arr.item(i).firstChild.nodeValue;
								
				var timespan = info.getElementsByTagName('timespan').item(0).firstChild.nodeValue;
				if (timespan.indexOf(':') > -1)
				{
					url += "&fr=" + timespan.substring(0,10);
					url += "&to=" + timespan.substring(13,23);
				}
				else
					url += "&days=" + timespan;				

				if (info.getElementsByTagName('type').length > 0 && info.getElementsByTagName('type').item(0).firstChild != null)
				{
						var graphtype = info.getElementsByTagName('type').item(0).firstChild.nodeValue;
						url += "&tg=" + graphtype;
				}
				
				if (info.getElementsByTagName('measure_type').length > 0 && info.getElementsByTagName('measure_type').item(0).firstChild != null)
				{
						var graph_measure_type = info.getElementsByTagName('measure_type').item(0).firstChild.nodeValue;
						url += "&measure_type=" + graph_measure_type;
				}
													
				if (info.getElementsByTagName('subcategory').length > 0)
				{			
					var arr = info.getElementsByTagName('subcategory');
					for (var i=0; i<arr.length; i++)
						url += "&ca[]=" + arr.item(i).firstChild.nodeValue;						
				}
				
				if (info.getElementsByTagName('tonality').length > 0)
				{
					var arr = info.getElementsByTagName('tonality');
					for (var i=0; i<arr.length; i++)
						url += "&tn[]=" + arr.item(i).firstChild.nodeValue;					
				}
				
				if (info.getElementsByTagName('country').length > 0)
				{
					var arr = info.getElementsByTagName('country');
					for (var i=0; i<arr.length; i++)
						url += "&ctry[]=" + arr.item(i).firstChild.nodeValue;					
				}
				
				if (info.getElementsByTagName('county').length > 0)
				{
					var arr = info.getElementsByTagName('county');
					for (var i=0; i<arr.length; i++)
						url += "&cty[]=" + arr.item(i).firstChild.nodeValue;					
				}
				
				if (info.getElementsByTagName('compare').length > 0)
					url += "&cmp=" + info.getElementsByTagName('compare').item(0).firstChild.nodeValue;
								
				window.location = "?page=statAnalysis" + url;			
			}
			else
				alert(p('ID_STATISTICS_ERR_LOAD_SETTINGS'));
		} 
	}
	request.send(null);			
}
