function addslashes(str)
{
	str = str.replace(/\\/g,'\\\\');
	str = str.replace(/\'/g,'\\\'');
	str = str.replace(/\"/g,'\\"');
	str = str.replace(/\0/g,'\\0');
	
	return str;
}

function stripslashes(str)
{
	str = str.replace(/\\'/g,'\'');
	str = str.replace(/\\"/g,'"');
	str = str.replace(/\\0/g,'\0');
	str = str.replace(/\\\\/g,'\\');
	
	return str;
}

function get_parent(elm, tag_name)
{
	if(elm.tagName)
	{
		tag_name = tag_name.toLowerCase();
		for(; elm.tagName.toLowerCase()!=tag_name; elm=elm.parentNode);
		
		return elm;
	}
}

function remove_all_childNodes(elm)
{
	if(elm.hasChildNodes())
	{
	    while(elm.childNodes.length >= 1) elm.removeChild(elm.firstChild);
	}
}

function get_uri(frm)
{
	var arr = (frm ? top.frames[frm]:top).location.href.split('#');
	
	return arr[0];
}

function get_url(frm)
{
	var arr = (frm ? top.frames[frm]:top).location.href.split('?');
	
	return arr[0];
}

function get_xy_arr(elm, event)
{
	var arr = [];
	arr[0] = event.offsetX ? event.offsetX:event.pageX-elm.offsetLeft;
	arr[1] = event.offsetY ? event.offsetY:event.pageY-elm.offsetTop;
	
	return arr;
}

function write_parent(src, dst)
{
	parent.document.getElementById(dst).innerHTML = document.getElementById(src).innerHTML;
}

function add_tr(tbl, txt, tr_id, att_obj, type)
{
	var newRow = tbl.insertRow(type ? 0:-1);
	newRow.id = tr_id;
	
	var newCell = newRow.insertCell(0);
	newCell.innerHTML = txt;
	
	for(var key in att_obj) newCell[key] = att_obj[key];
}

function delete_elm(elm)
{
	elm.parentNode.removeChild(elm);
}

function timespan(int)
{
	if(int < 60) int = 60;
	
	var obj = {
		'dag|e':60 * 60 * 24,
		'time|r':60 * 60,
		'minut|ter':60
		};
	
	var arr = [];
	for(var key in obj)
	{
		var scale = int / obj[key];
		if(scale >= 1)
		{
			var key_expl = key.split('|');
			var new_var = Math.floor(scale);
			arr[arr.length] = new_var+' '+(new_var == 1 ? key_expl[0]:key_expl[0]+key_expl[1]);
			int = int % obj[key];
		}
	}
	
	return arr.join(', ');
}

//----------------------------------------------------------------------------------------------------------------------
//	broadcast/top
//----------------------------------------------------------------------------------------------------------------------
var broadcast_curr_id = 0;
function response_broadcast(limit_tr)
{
	json_post('broadcast', 'json.broadcast.php', 'curr_id='+broadcast_curr_id, 'data2broadcast', limit_tr);
	
	setTimeout(response_broadcast, 2000, limit_tr);
}

function data2broadcast(obj, limit_tr)
{
	var tbl = document.getElementById('table_broadcast');
	
	for(var key in obj)
	{
		key = parseInt(key);
		if(broadcast_curr_id < key)
		{
			broadcast_curr_id = key;
			
			var newRow = tbl.insertRow(0);
			
			var newCell = newRow.insertCell(0);
			newCell.innerHTML = obj[key][0];
			newCell.className = 'broadcast';
			
			var newCell = newRow.insertCell(1);
			newCell.innerHTML = obj[key][1];
			newCell.className = 'broadcast';
			newCell.id = 'broadcast'+key;
		}
	}
	
	var num_tr = tbl.getElementsByTagName('tr').length;
	while(num_tr > limit_tr)
	{
		tbl.deleteRow(num_tr-1);
		num_tr--;
	}
}

var set_broadcast = false;
function broadcast_expand(set)
{
	var height = screen.height - 600;
	
	var bc = document.getElementById('div_broadcast');
	var bg = document.getElementById('div_broadcast_bg');
	var txt = document.getElementById('div_broadcast_txt');
	
	bc_height = parseInt(bc.style.height.split('px')[0]);
	bg_height = parseInt(bg.style.height.split('px')[0]);
	txt_height = parseInt(txt.style.height.split('px')[0]);
	
	if(set_broadcast && !set)
	{
		set_broadcast = false;
		
		txt.scrollTop = 0;
		bc.style.height = (bc_height - height)+'px';
		bg.style.height = (bg_height - height)+'px';
		txt.style.height = (txt_height - height)+'px';
		txt.style.overflow = 'hidden';
	}
	else if(!set_broadcast && set)
	{
		set_broadcast = true;
		
		bc.style.height = (bc_height + height)+'px';
		bg.style.height = (bg_height + height)+'px';
		txt.style.height = (txt_height + height)+'px';
		txt.style.overflow = 'auto';
	}
}

function broadcast_contract(e)
{
	if(set_broadcast)
	{
		var o = e ? e.target:event.srcElement,
		bFound = false,
		oDoc = document.documentElement;
		while(o!=oDoc)
		{
			if(o.getAttribute('id') == 'div_broadcast')
			{
				bFound = true;
				break;
			}
			o = o.parentNode;
		}
		if(!bFound) broadcast_expand();
	}
}

function broadcast_mod_delete(elm, id)
{
	var div = elm.appendChild(document.createElement('div'));
	div.className = 'cell cell_green';
	div.style.marginTop = '4px';
	div.style.marginBottom = '6px';
	
	var txt = '<span class="marked">Årsag:</span> <input type="text" id="broadcast_com'+id+'" style="width:400px"> <input type="button" value="Slet" onclick="broadcast_mod_delete_callback(\''+id+'\')">';
	div.innerHTML = txt;
}

function broadcast_mod_delete_callback(id)
{
	var com = document.getElementById('broadcast_com'+id).value;
	
	json_post('delete_broadcast', 'json.action.php?action=delete_broadcast', 'id='+id+'&com='+(com ? com:''));
	
	delete_elm(get_parent(document.getElementById('broadcast'+id), 'tr'));
}

function top_contract(set)
{
	var div = document.getElementById('div_top');
	var frm = document.getElementById('frame_top');
	var img = document.getElementById('img_top');
	var td = document.getElementById('td_toppad');
	
	td_height = parseInt(td.style.height.split('px')[0]);
	frm_height = parseInt(frm.style.height.split('px')[0]);
	
	if(set)
	{
		if(set_top) set_top = 0;
		else set_top = 1;
	}
	
	if(set_top)
	{
		set_top = 0;
		
		div.style.visibility = 'visible';
		div.style.position = 'static';
		img.src = 'gfx/button.contract.png';
		td.style.height = (td_height + div.offsetHeight)+'px';
		frm.style.height = (frm_height + div.offsetHeight)+'px';
	}
	else
	{
		set_top = 1;
		
		div.style.visibility = 'hidden';
		div.style.position = 'absolute';
		img.src = 'gfx/button.expand.png';
		
		if(!set)
		{
			td.style.height = (td_height - div.offsetHeight)+'px';
			frm.style.height = (frm_height - div.offsetHeight)+'px';
		}
	}
	
	json_post('set_top', 'json.action.php?action=set_top', 'set_top='+set_top);
}

//----------------------------------------------------------------------------------------------------------------------
//	activity
//----------------------------------------------------------------------------------------------------------------------
var activity_curr_time = 0;
var activity_obj = {};

function response_activity(limit_tr)
{
	json_post('activity', 'json.activity.php', 'curr_time='+activity_curr_time, 'data2activity', limit_tr);
	
	setTimeout(response_activity, 30000, limit_tr);
}

function data2activity(arr, limit_tr)
{
	var obj = arr[1];
	var time_now = arr[0];
	
	var tbl = document.getElementById('table_activity');
	
	for(var key in obj)
	{
		var act_time = obj[key][0][0];
		var act_att = obj[key][0][1];
		
		activity_curr_time = act_time;
		
		if(!activity_obj[key])
		{
			var newRow = tbl.insertRow(0);
			
			var content = newRow.insertCell(0);
			content.className = 'list txt'+(act_att ? ' clr_bg_new':'');
			
			if(obj[key][1])
			{
				var elm_headline = content.appendChild(document.createElement('div'));
				with(elm_headline)
				{
					className = 'headline_list';
					innerHTML = obj[key][1];
				}
			}
			
			var elm_tbl = content.appendChild(document.createElement('table'));
			var elm_tr = elm_tbl.insertRow(0);
			var elm_td1 = elm_tr.insertCell(-1);
			var elm_td2 = elm_tr.insertCell(-1);
			
			elm_tbl.style.width = '100%';
			elm_td1.style.width = '1px';
			
			var elm_div = elm_td1.appendChild(document.createElement('div'));
			if(obj[key][2])
			{
				elm_div.className = 'activity_thumb';
				var profile = elm_div.appendChild(document.createElement('img'))
				profile.className = 'image';
				profile.src = obj[key][2];
			}
			else if(obj[key][3])
			{
				elm_div.className = 'activity_thumb_big';
				var profile = elm_div.appendChild(document.createElement('img'))
				profile.className = 'image';
				profile.src = obj[key][3];
			}
			
			var elm_time = elm_td2.appendChild(document.createElement('div'))
			elm_time.className = 'activity_time light';
			elm_time.id = key;
			
			var elm_username = elm_td2.appendChild(document.createElement('div'))
			elm_username.innerHTML = obj[key][4];
			
			if(obj[key][5])
			{
				var elm_action = elm_td2.appendChild(document.createElement('div'))
				elm_action.className = 'activity_section txt';
				elm_action.innerHTML = obj[key][5];
			}
			
			if(obj[key][6])
			{
				var elm_txt = elm_td2.appendChild(document.createElement('div'))
				elm_txt.className = 'activity_section txt';
				elm_txt.innerHTML = obj[key][6];
			}
			
			if(obj[key][7])
			{
				var elm_headline2 = content.appendChild(document.createElement('div'))
				elm_headline2.className = 'activity_section2 txt';
				elm_headline2.innerHTML = obj[key][7];
			}
			
			var elm_tbl = content.appendChild(document.createElement('table'));
			var elm_tr = elm_tbl.insertRow(0);
			var elm_td1 = elm_tr.insertCell(-1);
			var elm_td2 = elm_tr.insertCell(-1);
			
			elm_tbl.style.width = '100%';
			elm_td1.style.width = '1px';
			
			if(obj[key][8])
			{
				var elm_div = elm_td1.appendChild(document.createElement('div'));
				elm_div.className = 'activity_thumb_big';
				elm_div.innerHTML = obj[key][8];
			}
			
			if(obj[key][9])
			{
				var elm_div = elm_td2.appendChild(document.createElement('div'));
				elm_div.className = 'activity_section2';
				elm_div.innerHTML = obj[key][9];
			}
			
			activity_obj[key] = act_time;
		}
	}
	
	var tr_obj = tbl.getElementsByTagName('tr');
	var num_tr = 0;
	for(var key in tr_obj)
	{
		var elm = get_parent(tr_obj[key], 'table');
		if(elm && elm.id == 'table_activity') num_tr++;
	}
	
	while(num_tr > limit_tr)
	{
		tbl.deleteRow(num_tr-1);
		num_tr--;
	}
	
	for(var key in activity_obj)
	{
		if(document.getElementById(key))
		{
			var time_diff = time_now - activity_obj[key];
			
			document.getElementById(key).innerHTML = timespan(time_diff);
		}
	}
}

//----------------------------------------------------------------------------------------------------------------------
//	tag elements
//----------------------------------------------------------------------------------------------------------------------
var tagelm_x;
var tagelm_y;
var tagelm_label_y;
var tagelm_img_width;
var tagelm_img_height;
var tagelm_file_id;
var tagelm_href_next;
var tagelm_filefolder;
function add_tagelms(elm, xy_arr, img_width, img_height, id, name, file_id)
{
	if(!id)
	{
		remove_all_childNodes(elm);
		elm.appendChild(document.createElement('div'));
	}
	
	tagelm_x = xy_arr[0];
	tagelm_y = xy_arr[1];
	
	tagelm_img_width = img_width;
	tagelm_img_height = img_height;
	
	tagelm_file_id = file_id;
	
	var frame = tagelm_frame(elm, id);
	pos_tagelm(frame);
	
	tagelm_label_y = (frame.offsetHeight / 2) + 10;
	
	if(id)
	{
		var label = tagelm_label(elm, id, name, 1);
		pos_tagelm(label, tagelm_label_y);
		
		var mover = tagelm_mover(elm, id, label);
		pos_tagelm(mover);
	}
	else
	{
		var adduser = tagelm_adduser(elm);
		
		var adduser_pad = 6;
		var frame_left = parseInt(frame.style.left.split('px')[0]);
		if(tagelm_x > tagelm_img_width/2) var adduser_left = frame_left - adduser.offsetWidth - adduser_pad;
		else var adduser_left = frame_left + frame.offsetWidth + adduser_pad;
		
		adduser.style.top = frame.style.top;
		adduser.style.left = adduser_left+'px';
	}
}

function tagelm_frame(elm, id)
{
	var tbl = elm.appendChild(document.createElement('table'));
	
	var tbdy = document.createElement('tbody');
	tbl.appendChild(tbdy);
	
	var newRow = document.createElement('tr');
	tbdy.appendChild(newRow);
	
	var newCell = document.createElement('td');
	newRow.appendChild(newCell);
	
	tbl.className = 'tagelm_frame';
	
	if(id)
	{
		tbl.id = 'tagelm_frame'+id;
		tbl.style.visibility = 'hidden';
	}
	
	return tbl;
}

function tagelm_label(elm, id, name, hide)
{
	var spn = elm.appendChild(document.createElement('span'));
	
	spn.className = 'tagelm_label marked';
	spn.innerHTML = name;
	
	if(id) spn.id = 'tagelm_label'+id;
	if(hide) spn.style.visibility = 'hidden';
	
	return spn;
}

function tagelm_mover(elm, id, label_elm)
{
	var div = elm.appendChild(document.createElement('div'));

	div.className = 'tagelm_mover';
	
	div.id = 'tagelm_mover'+id;
	div.onmouseover = function()
	{
		label_elm.style.visibility = 'visible';
		if(tagelm_href_next) div.style.cursor = 'pointer';
	}
	div.onmouseout = function()
	{
		label_elm.style.visibility = 'hidden';
	}
	div.onclick = function()
	{
		if(tagelm_href_next) location.href = tagelm_href_next;
	}
	
	return div;
}

function pos_tagelm(elm, y)
{
	var pos_x = tagelm_x;
	pos_x -= elm.offsetWidth / 2;
	if(pos_x < 0) pos_x = 1;
	if(pos_x+elm.offsetWidth > tagelm_img_width) pos_x = tagelm_img_width-elm.offsetWidth+1;
	
	var pos_y = y ? y + tagelm_y:tagelm_y;
	pos_y -= elm.offsetHeight / 2;
	if(pos_y < 0) pos_y = 1;
	if(pos_y+elm.offsetHeight > tagelm_img_height) pos_y = tagelm_img_height-elm.offsetHeight+1;
	
	elm.style.left = pos_x+'px';
	elm.style.top = pos_y+'px';
}

function tagelm_adduser(elm)
{
	var div = elm.appendChild(document.createElement('div'));
	
	div.className = 'tagelm_adduser';
	div.innerHTML = '<div style="border-bottom:1px solid #333333; padding-bottom:4px"><div style="float:right">[<a href="#" onclick="remove_all_childNodes(document.getElementById(\'div_tagelms_tmp\')); return false">Annuller</a>]</div><span class="marked">Søg:</span><input id="tagelm_search" type="text" onkeydown="if(event.keyCode == 13) { tagelm_get_userlist(this.value); remove_all_childNodes(document.getElementById(\'div_tagelm_error\')); }" style="width:100%"></div><div style="height:250px; overflow:auto"><div id="div_tagelm_error" class="error"></div><div id="div_tagelm_userlist" class="txt"></div></div>';
	document.getElementById('tagelm_search').focus();
	
	tagelm_get_userlist();
	
	return div;
}

function tagelm_get_userlist(str)
{
	json_post('tagelm_userlist', 'json.action.php?action=tag_rtn_userlist', 'search='+(str ? str:''), 'tagelm_rtn_userlist');
}

function tagelm_rtn_userlist(obj)
{
	var str = '';
	if(obj[0]) str = obj[0];
	else
	{
		for(var key in obj) str += '<a href="#" onclick="json_post(\'tagelm_usertag\', \'json.action.php?action=tag_usertag\', \'file_id='+tagelm_file_id+'&x='+tagelm_x+'&y='+tagelm_y+'&user_id='+key+'&filefolder='+tagelm_filefolder+'\', \'tagelm_usertag\'); return false">'+obj[key]+'</a><br>';
	}
	
	document.getElementById('div_tagelm_userlist').innerHTML = str;
}

function tagelm_usertag(arr)
{
	if(arr.length == 1) document.getElementById('div_tagelm_error').innerHTML = arr[0];
	else
	{
		remove_all_childNodes(document.getElementById('div_tagelms_tmp'));
		document.getElementById('div_tagelms_tmp').appendChild(document.createElement('div'));
		
		var label = tagelm_label(document.getElementById('div_tagelms'), arr[0], arr[1]);
		pos_tagelm(label, tagelm_label_y);
	}
}

//----------------------------------------------------------------------------------------------------------------------
//	AJAX
//----------------------------------------------------------------------------------------------------------------------
var xmlhttp = {};
function json_post(request_var, response, get_str, callback_function, callback_var)
{
	if(window.XMLHttpRequest) xmlhttp[request_var] = new XMLHttpRequest();
	else if(window.ActiveXObject) xmlhttp[request_var] = new ActiveXObject('Microsoft.XMLHTTP');
	
	xmlhttp[request_var].open('POST', response, true);
	xmlhttp[request_var].setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlhttp[request_var].onreadystatechange = function()
	{
		if(xmlhttp[request_var].readyState == 4 && callback_function) eval(callback_function+'('+xmlhttp[request_var].responseText+(callback_var ? ', callback_var':'')+')');
	}
	xmlhttp[request_var].send(get_str);
}

//----------------------------------------------------------------------------------------------------------------------
//	form
//----------------------------------------------------------------------------------------------------------------------
function check_all(cb, frm)
{
	var elm_arr = frm.elements;
	
	for(var i=0; elm_arr.length>i; i++)
	{
		if(elm_arr[i] != cb && elm_arr[i].type == 'checkbox')
		{
			elm_arr[i].checked = cb.checked;
			change_background(elm_arr[i]);
		}
	}
}

function change_background(cb)
{
	var row = get_parent(cb, 'tr');
	row.style.backgroundColor = (cb.checked) ? '#F5DFDF':'';
}

var fokus = false;
var cursorpos;

function get_txt(txtbox)
{
	var str = '';
	
	if(txtbox.selectionEnd)
	{
		// FF
		
		str = txtbox.value.substring(txtbox.selectionStart, txtbox.selectionEnd);
		txtbox.selectionEnd = 0;
	}
	else
	{
		// IE
		
		if(fokus) str = document.selection.createRange().text;
	}
	
	return str;
}

function insert_txt(txtbox, str)
{
	if(txtbox.selectionEnd >= 0)
	{
		// FF
		
		cursorpos = txtbox.selectionEnd + str.length;
		txtbox.value = txtbox.value.substring(0, txtbox.selectionEnd) + str + txtbox.value.substr(txtbox.selectionEnd);
	}
	else
	{
		// IE
		
		if(fokus)
		{
			cursorpos = false;
			document.selection.createRange().text = str;
		}
		else
		{
			cursorpos = true;
			txtbox.value += str;
		}
	}
}

function set_cursor(txtbox)
{
	if(cursorpos)
	{
		if(txtbox.selectionEnd)
		{
			// FF
			
			txtbox.setSelectionRange(cursorpos, cursorpos);
		}
		else
		{
			// IE
			
			var r = txtbox.createTextRange();
			r.moveStart('character', txtbox.value.length);
			r.collapse();
			r.select();
		}
	}
	
	txtbox.focus();
}

function remove_quote(id)
{
	delete_elm(top.document.getElementById('table_quote'+id));
	
	json_post('delete_quota', 'json.action.php?action=delete_quote', 'id='+id);
	
	if(!top.document.getElementById('table_quote').getElementsByTagName('tr').length) top.document.getElementById('div_quote_tmp').style.display = 'block';
}

//----------------------------------------------------------------------------------------------------------------------
//	popups
//----------------------------------------------------------------------------------------------------------------------
function popup_image(file)
{
	txt = '<html><head><title>' + file + '<\57title>';
	txt += '<script language="javascript" type="text/javascript">';
	
	txt += 'function resPic() {';
	txt += 'h = document.images[0].scrollHeight;';
	txt += 'w = document.images[0].scrollWidth;';
	txt += 'diff_h = window.innerHeight ? window.outerHeight-window.innerHeight:48;';
	txt += 'diff_w = window.innerWidth ? window.outerWidth-window.innerWidth:11;';
	txt += 'window.resizeTo(w+diff_w, h+diff_h);';
	txt += '}';
	
	txt += '<\57script>';
	txt += '<link rel="stylesheet" href="req/styles.css" type="text/css">';
	txt += '<\57head>';
	txt += '<body onload="resPic()" style="overflow:hidden; border:0; margin:0; text-align:center">';
	txt += '<a href="javascript:window.close()"><img src="' + file + '" class="image"></a>';
	txt += '<\57body><\57html>';
	
	popup = window.open('', 'popup_pic', 'width=300, height=200, status=yes');
	popup.document.write(txt);
	popup.document.close();
	popup.focus();
}

function popup_msg_new()
{
	w = 320;
	h = 150;
	l = ((screen.width/2)-(w/2));
	t = ((screen.height/2)-h);
	
	popup = window.open('popup.msg_new.htm', 'msg_new', 'innerWidth='+w+', innerHeight='+h+', left='+l+', top='+t);
	popup.focus();
}