// Genral JavaScript Document for Movenium Collector
// Created by Tommi Partanen, 18.2.2010.

// show_tip to show and hide pop up div box.
// div_id is the div id to show/hide.
// action is the wanted action (show/hide given div)
function show_hide_tip(div_id, action) {
  //alert (div_id+" "+action);
  var div=document.getElementById(div_id);

  if (div.style.visibility=="hidden" && action=="show") {
   div.style.visibility="visible";
  }
  
  if (div.style.visibility=="visible" && action=="hide") {
   div.style.visibility="hidden";
  }

}

var save_insert_node, show_this, data_set = "", replace_this, remove_node;
var collector_busy = false;
var adding_type, save_editid;

function close_inline_addform() {
	addform = document.getElementById("inline_addform");
	if (show_this) show_this.style.display = '';
	show_this = null;
	addform.style.display = 'none';
}

function show_inline_add_row_form(addform_node, form_type, set, editid) {
	
	data_set = set;
	addform = document.getElementById("inline_addform");
	table_obj = document.getElementById("table");
	
	var tBody = table_obj.getElementsByTagName('tbody')[0];
	
	addform_node.style.display = 'none';
	if (show_this) show_this.style.display = '';
	show_this = addform_node;
	
	tBody.insertBefore(addform, addform_node);
		
	adding_type = form_type;
	
	if (editid) {
		document.getElementById("inline_addform_header").innerHTML = lang[37];
		document.getElementById("inline_addform_save_button").value = lang[7];
	}
	else {
		document.getElementById("inline_addform_header").innerHTML = lang[78];
		document.getElementById("inline_addform_save_button").value = lang[78];
	}
	
	if (editid) {
		
		save_editid = editid;
		//alert('data_ajax.php?row_values=true&editid='+editid);
		aw_get_content_from('data_ajax.php?row_values=true&'+data_set+'&editid='+editid, function(back) {
			//alert(back);
			values = JSON.parse(back);
			
			for(i=0; i < collector_objects.length; i++) {
				
				elements = document.getElementsByName(collector_objects[i]);
				if (elements.length > 0) {
					if (values[i] == "disable_object") {
						elements[0].value = "Ei muokattavissa";
						elements[0].disabled = true;
					}
					else {
						if (elements[0].type == "checkbox")
							elements[0].checked = values[i] == "on" ? true : false;
						else
							elements[0].value = values[i];
						elements[0].disabled = false;
					}
				}

			}
			
			addform.style.display = '';
		});
	}
	else	{
		save_editid = 0;
		for(i=0; i < collector_objects.length; i++) {
				
				elements = document.getElementsByName(collector_objects[i]);
				if (elements.length > 0) {
					//elements[0].value = "";
					elements[0].disabled = false;
				}

			}
		addform.style.display = '';
	}
	
	p_c = 0;
	while (document.getElementById("datepicker_inline_"+(p_c))) {
		$("#datepicker_inline_"+(p_c)).datepicker();
		p_c++;
	}
	
	$("#inline_addform_div").show('blind');
}

function add_row_to_table() {
	
	
	if (collector_busy) return;
	collector_busy = true;
	
	inline_addform_obj = document.getElementById("inline_addform");
	url="main.php?submit_data=true&ajax=save";
	if (data_set) url += "&"+data_set;  
	
	elements = document.getElementsByName("formid");
	if (elements.length > 0) url += "&formid=" + elements[0].value;
	
	for(i=0; i < collector_objects.length; i++) {
		
		elements = document.getElementsByName(collector_objects[i]);
		if (elements.length > 0) {
			if (elements[0].type == "checkbox")
				value = elements[0].checked == true ? "on" : "";
			else
				value = elements[0].value;
			
			url += "&" + collector_objects[i] + "=" + value;
		}
	}
	
	if (save_editid > 0) url += "&editid="+save_editid;   
	
	//alert(url);
	
	table_obj = document.getElementById("table");
	
	var tBody = table_obj.getElementsByTagName('tbody')[0];
	
	var newTR = document.createElement('tr');

	var newTD = document.createElement('td');
	newTD.className = "collector";
	newTD.colSpan = 12;
	newTD.style.background = '#B4E876';
	newTD.align = "center";
	newTD.innerHTML = lang[2602];//"Tallennetaan riviä";
	newTR.appendChild (newTD);
	
	
	if (adding_type == "normal") {
		header_tr_node = document.getElementById("header_tr");
		tBody.insertBefore(newTR, header_tr_node.nextSibling);
	}
	else if (adding_type == "edit") {
		inline_addform_obj.style.display = 'none';
		tBody.replaceChild(newTR, show_this);
	}
	else {
		tBody.insertBefore(newTR, inline_addform_obj);
	}
	
	replace_this = newTR;
	
	
	aw_get_content_from(url, function(back) {
		
		//alert(back);
		
		table_obj = document.getElementById("table");
	
		var tBody = table_obj.getElementsByTagName('tbody')[0];
		
		var newTR = document.createElement('tr');	
		var array_back = JSON.parse(back);

		first_td = true;

		for (i=0; i < array_back.length; i++)   {
			
			var newTD = document.createElement('td');
			
			set_value = array_back[i]['value'];
			
			if (set_value) 
				newTD.innerHTML = set_value;
			else
				newTD.innerHTML = "&nbsp;";
				
			if (array_back[i]['name'] != 'row_links') {
				newTD.className = (first_td ? 'collector_first' : 'collector');
				first_td = false;
			}
				
			newTR.appendChild (newTD);
		}
	
		tBody.replaceChild(newTR, replace_this);
		
		collector_busy = false;
	});
}

var save_remove_node, save_remove_id;

function remove_row (node, id) {   
    var msg = lang[101];       
    save_remove_node = node;
    save_remove_id = id;
    show_popup_confirm(msg, "", remove_row_now);

}

function remove_row_now(node, id) {
	
	if (!node) node = save_remove_node;
	if (!id) id = save_remove_id;
	
	url = 'main.php?submit_data=true&ajax=remove&rowid='+id; 
	
	if (collector_busy) return;
	collector_busy = true;
	
	table_obj = document.getElementById("table");
	
	var tBody = table_obj.getElementsByTagName('tbody')[0];
	
	var newTR = document.createElement('tr');

	var newTD = document.createElement('td');
	newTD.className = "collector";
	newTD.colSpan = 12;
	newTD.align = "center";
	newTD.style.background = '#F1958C';
	newTD.innerHTML = lang[2601]; //"Poistetaan rivi";
	newTR.appendChild (newTD);
	
	tBody.replaceChild(newTR, node);
	
	remove_node = newTR;
	
	aw_get_content_from(url, function(back) {
		//alert(back);
		table_obj = document.getElementById("table");
		var tBody = table_obj.getElementsByTagName('tbody')[0];
		tBody.removeChild(remove_node);
		collector_busy = false;
	});
}

function table_select_all(obj) {
	c = 0;
	while (sel = document.getElementById('sel_'+(c++))) {
		sel.checked = obj.checked;
	}
}

function reload_object(objectid, params) {
	obj = document.getElementById("object_" + objectid + "_wrapper");
	
	obj.innerHTML = "Päivitetään..";
	
	aw_get_content_from('data_ajax.php?objectid='+objectid+params, function(back) {
		obj.innerHTML = back;
	});
}

// confirm_delete() to display JS confirmation box to user before deleting a form object.
// Parameter delete_url = URL where actual deleting is done.

function confirm_delete (delete_url) {   
    var msg = "Haluatko varmasti poistaa lomakekentän?";       
        if (confirm(msg)) {        
        	window.location.href=delete_url;       
        }     

}

var save_first_cell, save_old, info_1_value, info_2_value;

function toNumber(str) {
	if (parseFloat(str))
		return Math.round(parseFloat(str) * 100) / 100;
	else
		return 0;
}

function celling_calculate(obj) {
	info_1 = document.getElementById("celling_info_1");
	info_2 = document.getElementById("celling_info_2");

	if (!info_1_value) info_1_value = 0;
	if (!info_2_value) info_2_value = parseFloat(info_2.innerHTML);

	new_value = toNumber(obj.value);
	
	info_1_value += new_value - save_old;
	info_2_value -= new_value - save_old;
	
	info_1.innerHTML = Math.round(info_1_value*100)/100;
	info_2.innerHTML = Math.round(info_2_value*100)/100;
	
}

function celling_save_old(obj) {
	save_old = toNumber(obj.value);
		
	//alert(save_old);
}

function celling_addrow() {
	
	if (!save_first_cell)
		save_first_cell = document.getElementById("first_cell").innerHTML;
	
	rowdata = save_first_cell;
	table_obj = document.getElementById("celling");
	
	var tBody = table_obj.getElementsByTagName('tbody')[0];
	
	var newTR = document.createElement('tr');

	var newTD = document.createElement('td');
	newTD.style.border = 'thin solid grey';
	newTD.innerHTML = rowdata;
	newTR.appendChild (newTD);
	
	tBody.appendChild(newTR);
}

function celling_remove(obj) {
	table_obj = document.getElementById("celling");
	var tBody = table_obj.getElementsByTagName('tbody')[0];
	tBody.removeChild(obj);
}

var auto_logout_id;
var auto_logout_on_save;

function auto_logout() {
	auto_logout_id = setInterval('auto_logout_do()', 1000 );
	auto_logout_on_save = true;

	if (window.addEventListener){ 
	   window.addEventListener("mousemove", stop_auto_logout, false); 
	   window.addEventListener("keydown", stop_auto_logout, false);
	 } else if (window.attachEvent){ 
	   window.attachEvent("onmousemove", stop_auto_logout); 
	   window.attachEvent("onkeydown", stop_auto_logout); 
	 }
}

function stop_auto_logout() {	
	obj = document.getElementById("auto_logout");
	obj.innerHTML = "";
	clearInterval(auto_logout_id);
}

function auto_logout_do() {
	
	obj = document.getElementById("auto_logout");
	time = obj.innerHTML;
	
	if (time == "")
		secs = 5;
	else
		secs = parseInt(time.substr(2,1)) - 1;
		
	obj.innerHTML = " ("+secs+"...)";
	
	if (secs == 0) window.location = "logout.php";
}

function show_movebar() {
	document.getElementById("movebar").style.display = 'block';
	document.getElementById("table_path").style.display = 'none';
}

function hide_movebar() {
	document.getElementById("movebar").style.display = 'none';
	document.getElementById("table_path").style.display = 'block';
}

function report_next(id) {
	reload_report(null, "&movebar=active&movebar_next="+id);
}

function report_previous(id) {
	reload_report(null, "&movebar=active&movebar_previous="+id);
}

var servertime_str;

function update_frontpage_box(id, servertime) {
	servertime_str = servertime;
	setInterval('update_box('+id+')', 3000 );
}

function update_box(boxid) {
	obj = document.getElementById("box_"+boxid);
	
	//obj.innerHTML = "Updating...";
	
	aw_get_content_from('frontpage.php?feed_refresh='+servertime_str+'&id='+boxid, function(back) {
		servertime_str = back.substr(0,19);
		content = back.substr(19);
		if (content) obj.innerHTML = content;
	});
}
