// 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 onload_functions = Array(0);

window.onload = function() {
	for(i=0; i < onload_functions.length; i++) onload_functions[i]();
}

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) {
	
	clear_verify_data_objects(collector_objects);
	
	data_set = set;
	addform = document.getElementById("inline_addform");
	table_obj = document.getElementById("table");
	
	var tBody = table_obj.getElementsByTagName('tbody')[0];
	
	if (editid) {
		var newTR = document.createElement('tr');
		var newTD = document.createElement('td');
		newTD.className = "collector";
		newTD.colSpan = 100;
		newTD.style.background = '#FCE98B';
		newTD.align = "center";
		newTD.innerHTML = lang[10147];//"Ladataan riviä";
		newTR.appendChild (newTD);

		tBody.insertBefore(newTR, addform_node);
		loading_row_node = newTR;
	}
	
	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 = "Uneditable";
						elements[0].disabled = true;
					}
					else {
						if (elements[0].type == "checkbox")
							elements[0].checked = values[i] == "on" ? true : false;
						else {
							
							change_occured = elements[0].value != values[i] ? true : false;
							elements[0].value = values[i];
							
							if (change_occured && elements[0].onchange) elements[0].onchange();
						}
						elements[0].disabled = false;
					}
				}

			}
			
			//table_obj = document.getElementById("table");
	
			//var tBody = table_obj.getElementsByTagName('tbody')[0];
	
			addform.style.display = '';
			tBody.removeChild(loading_row_node);
		});
	}
	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;
	
	if (elem = document.getElementById("no_rows_found")) elem.style.display='none';
	
	if (!verify_data_objects(collector_objects)) {
		collector_busy = false;
		return;
	}
	
	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;
			value = value.replace(/\&/g,'%26');
			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 = 100;
	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];
		
		if (back == "") {
			tBody.removeChild(replace_this);
			collector_busy = false;
			return;
		}
		
		var newTR = document.createElement('tr');	
		newTR.className = "row";
		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);
		$("#sortable").sortable({
			items: '.row'
			/*handle: ".handle"*/
		});
		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 = 100;
	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;
	}*/
	rows = obj.parentNode.parentNode.parentNode.childNodes; // tBody of the table
	
	for(i=0; i < rows.length; i++) {
		if (rows[i].className == "row") {
			
			tds = rows[i].childNodes;
			
			for(j=0; j < tds.length; j++) {
				if (sel = tds[j].childNodes[0]) {
					if (sel.type == "checkbox"){
						sel.checked = obj.checked;
						break;
					}
				}				
			}
		}
	}
}

var reloadobj = Array();

function reload_object(objectid, params, parent_obj) {

	parent = get_parent_with_type(parent_obj, "TBODY");
	if (!parent) alert("parent wasn't found for object: " + parent_obj);
	reloadobj[objectid] = get_child_with_id(parent, "object_" + objectid + "_wrapper");
	//reloadobj[objectid] = document.getElementById("object_" + objectid + "_wrapper");
	//if (!reloadobj[objectid]) alert("child with id: "+"object_" + objectid + "_wrapper"+" was not found");
	if (!reloadobj[objectid]) return;
	reloadobj[objectid].innerHTML = "<img src=\"images/ajax-loader.gif\" />";
	
	editid = save_editid ? "&editid="+save_editid : "";
	
	aw_get_content_from('data_ajax.php?objectid='+objectid+params+editid, function(back) {
		reloadobj[objectid].innerHTML = back;
	});
}

function get_child_with_id(obj, id) {
	
	var childNodes = obj.childNodes;
	if (childNodes.length == 0) return null;
	
	for (var i = 0; i < childNodes.length; i++) {
		if (childNodes[i].id == id) { return childNodes[i]; }
		branch_search = get_child_with_id(childNodes[i], id);
		if (branch_search != null) { return branch_search; }
	}
	
	return null;
}


function get_parent_with_type(obj, type) {
	
	parent = obj.parentNode;
	
	while (parent && parent.nodeName != type) {
		//alert(parent.nodeName);
		parent = parent.parentNode;
	}
	
	return parent;
}

// 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 schemaids = Array(0);

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

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

	hours = get_celled_hours(schemaid);
	//alert(hours);
	info_1.innerHTML = numtohours(hours);
	info_2.innerHTML = numtohours(celling_hours_count - hours);
	
	if (Math.floor((celling_hours_count - hours) * 60) == 0) {
		document.getElementById("celling_save_button").disabled = false;
		document.getElementById("celling_cannot_save").style.display = 'none';
	}
	else {
		document.getElementById("celling_save_button").disabled = true; 
		document.getElementById("celling_cannot_save").style.display = 'inline';
	}
}

function get_celled_hours(schemaid) {
	
	hours = 0;
	
	// all inputs
	elems = document.getElementsByName("data_" + schemaid + "[]");
	for(j=0; j < elems.length; j++) {
		add = elems[j].value ? parseFloat(elems[j].value) : 0;
		hours += add;
	}	
	
	return hours;
}

function numtohours(val) {
	hh = Math.floor(val);
	mm = Math.round((Math.abs(val - hh)) * 60);
	return hh + ":" + (mm < 10 ? "0" : "") + mm;	
}

function celling_plus(schemaid, obj) {
	celling_update(schemaid, obj, 0.25);
}


function celling_minus(schemaid, obj) {
	celling_update(schemaid, obj, -0.25);
}

function celling_update(schemaid, obj, add, to_value) {
	notfound = true;
	for(i=0; i < schemaids.length; i++) {
		if (schemaids[i] == schemaid) notfound = false;
	}
	if (notfound)	schemaids[schemaids.length] = schemaid;
	
	// update input
	elements = document.getElementsByName("data_" + schemaid + "[]");
	for(i=0; i < elements.length; i++) {
		if (elements[i].parentNode == obj.parentNode) {
			old_value = elements[i].value ? parseFloat(elements[i].value) : 0;
			value = old_value + add;
			if (value < 0) value = 0;
			//alert(value + " " + get_celled_hours(schemaid) + " > " + celling_hours_count + " = " + (value + get_celled_hours(schemaid) > celling_hours_count));
			if (add + get_celled_hours(schemaid) > celling_hours_count) value = old_value + celling_hours_count - get_celled_hours(schemaid);
			
			elements[i].value = value;
		}
	}
	
	value_hours_mins = numtohours(value);
	
	//alert(value_hours_mins);
	
	// update span
	elements = document.getElementsByName("celling_hours_" + schemaid);
	for(i=0; i < elements.length; i++) {
		if (elements[i].parentNode == obj.parentNode) {
			elements[i].innerHTML = value_hours_mins;
		}
	}
	
	celling_calculate(schemaid);
}

var maxvalue_slider = 3;

function sliding(event, ui) {
	
	//alert("moi");
	if (ui.value > maxvalue_slider) {
		if ($(ui)) $(ui).slider( "value" , maxvalue_slider )
	}
		//	alert("celling_update("+$(ui).attr('id')+", "+ui+", \"\", "+ui.value+");");
			//document.getElementById("celling_hours").innerHTML = ui.value;
}

function init_sliders() {
	maxvalue_slider++;
	elements = document.getElementsByName("celling_slider");
	for(i=0; i < elements.length; i++) {
		$(elements[i]).slider({
		range: "min",		
		min: 0,
		max: 100,
		step: 1,
		slide: sliding
	});	
	}
}

function celling_addrow() {
	
	
	
	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);
	
	for(i=0; i < schemaids.length; i++) {
		celling_calculate(schemaids[i]);
	}
}

var auto_logout_id;
var auto_logout_on_save;

function auto_logout() {
	auto_logout_id = self.setInterval('auto_logout_do()', 1000 );
	auto_logout_on_save = true;
	 
	if (window.addEventListener != null){	
    window.addEventListener('mousemove',function(){stop_auto_logout();},false);		
    window.addEventListener('keydown',function(){stop_auto_logout();},false);		
  } else {
    document.attachEvent('onmousemove',function(){stop_auto_logout();});
    document.attachEvent('onkeydown',function(){stop_auto_logout();});
  } 
  
}

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

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

function show_movebar() {
	
	if (document.getElementById("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);
}

function toggle_trashcan(elem) {
	//alert(elem.id);
	if (elem.id != "show") {
		reload_report(null, "&trashcan=hide");
		elem.innerHTML = lang[10239];
		elem.id = "show";
		
	}
	else {
		reload_report(null, "&trashcan=show");
		elem.innerHTML = lang[10240];
		elem.id = "hide";
	}
}


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;
	});
}

function usbrfid_applet_error(error_id, error_string) {
	show_static_popup("Applet", "Applet sended error. ID: "+error_id+" message: "+error_string);
}

function usbrfid_applet_tag_detected(tagid) {
	show_static_popup("Applet", "Applet detected tag. Tagid: " + tagid);
}

function get_module(module_url, module_id) {
	obj = document.getElementById("module_0");
	//alert(module_id);
	obj.innerHTML = "Updating...";
	module_url = "collector_module.php?ajax_url=" + module_url;
	aw_get_content_from(module_url, function(back) {
		//alert(back);
		if (back) obj.innerHTML = back;
	});
}

function ajax_link(elemid, url) {
	elem = document.getElementById(elemid);
	elem.innerHTML = lang[10264];

	aw_get_content_from(url, function(back) {
		//alert(back);
		if (back) elem.innerHTML = back;
	});
}

function load_translation() {
	textid_input = document.getElementById("translate_textid");
	text_input = document.getElementById("translate_text");

	text_input.innerHTML = "loading..";
	url = "language_controller.php?translate_text_id=" + textid_input.value;   
	
	aw_get_content_from(url, function(back) {
		//alert(back);
		text_input.innerHTML = back;
	});
}

function show_export_settings(form) {
	save_button_text = lang[10330];
	show_popup_url("export_settings.php?format=pdf"+form, lang[10330]);
}
