//-------------------------------------- Ajax -------------------------------------------------//
site_path = "/";
website_url = "http://www.weblavu.com";

function menuRequest(url, vars)
{
	var params = " " + vars;
	var http_request = false;
	if (window.XMLHttpRequest) 
	{ // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		
		if (http_request.overrideMimeType) 
		{
			http_request.overrideMimeType('text/xml');
			// See note below about this line
		}
	} 
	else if (window.ActiveXObject) 
	{ // IE
		try 
		{
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) 
		{
			try 
			{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) {}
		}
	}
			
	if (!http_request) 
	{
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
			
	http_request.onreadystatechange = function() { alertContents(http_request); };
	http_request.open('POST', url, true);
	
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", params.length);
	http_request.setRequestHeader("Connection", "close");
	
	http_request.send(params);	
}

function alertContents(http_request) 
{
	if (http_request.readyState == 4) 
	{
		if (http_request.status == 200) 
		{
			//alert("Your settings have been saved");
			alert(http_request.responseText);
		}
		else 
		{
			alert('There was a problem with the request.');
		}
	}
}

//-------------------------------------- Key Reading ------------------------------------------//
function readKey(e) {
	// use: onkeypress="return readKey(event)" 
	if(!e)
		e = window.event;
	kc = e.keyCode;
	
	if(kc==13) {
		insert_content("<br>");
		return false;
	}
	else {
		return true;
	}
}

//-------------------------------------- Inserting Content --------------------------------------------//
function wrap_content(txtleft, txtright) {
	var content;
	if(document.selection) {
		var sl = document.selection.createRange();
		content = sl.htmlText;
	}
	else if (window.getSelection) { 
		var selection = window.getSelection(); 
		var range = window.getSelection().getRangeAt(0);
		content = range; 
	}
	insert_content(txtleft + content + txtright);
}

function erase_content_formatting() {
	/*var content;
	if(document.selection) {
		var sl = document.selection.createRange();
		content = sl.htmlText;
	}
	else if (window.getSelection) { 
		var selection = window.getSelection(); 
		var range = window.getSelection().getRangeAt(0);
		content = range; 
	}
	content = remove_tags(content, new Array("br","p"));
	insert_content(content);*/
	content = document.getElementById(current_item_focus).innerHTML;
	content = remove_tags(content, new Array("br","p"));
	document.getElementById(current_item_focus).innerHTML = content;	
}

sub_areas = new Array();
sub_area_focus = "";
function add_area() {
		ifocus = current_item_focus;
		if(typeof sub_areas[ifocus]=="undefined") sub_areas[ifocus] = 0;
		sub_areas[ifocus] ++;
		sfocus = ifocus + "_sub" + sub_areas[ifocus];
		newarea = "<!--" + sfocus + " start--><div id='" + sfocus + "' style='border:dotted 1px black' width='100%' onkeypress='return readKey(event)'><div align=left class=txt contentEditable=true onfocus='sub_area_focus = \"" + sfocus + "\"' width='100%'>&nbsp;</div></div><!--" + sfocus + " end-->";
		document.getElementById(ifocus).innerHTML = document.getElementById(ifocus).innerHTML + newarea;
}

function remove_area() {
		ifocus = current_item_focus;
		sfocus = sub_area_focus;
		
		var re = new RegExp(ifocus + "_sub", "i");
		subnum = sfocus.replace(re, "");
		
		content = document.getElementById(ifocus).innerHTML;
		start_index = (content.indexOf("<!--" + sfocus + " start-->"));
		end_index = (content.indexOf("<!--" + sfocus + " end-->"));

		if(start_index > 0 || end_index > 0) {
			content = content.substring(0, start_index) + content.substring(end_index);
			document.getElementById(ifocus).innerHTML = content;		
		}
}

function set_area_property(property, value) {
	sfocus = sub_area_focus;
	content = document.getElementById(sfocus).innerHTML;
	//alert(content);
	//content = content.replace(/align=([a-zA-Z0-9_\-\.\"\'])+/,"align=right");
	var re = new RegExp(property + "=[a-zA-Z0-9\\\"]+", "i");
	content = content.replace(re,property + "=" + value);
	
	document.getElementById(sfocus).innerHTML = content;
	//alert(content);
	//var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
}

function insert_content(txt) {
	if(document.selection) {
		sl = document.selection.createRange();		
		sl.pasteHTML(txt);
		sl.collapse(false);
		sl.select();
	}
	else if (window.getSelection) {
		var newP = document.createElement('new_element'); 
		newP.innerHTML = txt;
		insertNodeAtSelection(this, newP);
	}
}

function insertNodeAtSelection(win, insertNode)
{
	var sel=null;
	// get current selection
	sel = win.getSelection();
	// get the first range of the selection
	// (there's almost always only one range)
	var range = sel.getRangeAt(0);
	
	// deselect everything
	sel.removeAllRanges();
 
	// remove content of current selection from document
	range.deleteContents();
	
	// get location of current selection
	var container = range.startContainer;
	var pos = range.startOffset;
	
	// make a new range for the new selection
	range=document.createRange();
	
	if (container.nodeType==3 && insertNode.nodeType==3) {
	
		// if we insert text in a textnode, do optimized insertion
		container.insertData(pos, insertNode.nodeValue);
	
		// put cursor after inserted text
		range.setEnd(container, pos+insertNode.length);
		range.setStart(container, pos+insertNode.length);
	
	} else {
	
		
		var afterNode;
		if (container.nodeType==3) {
		
			// when inserting into a textnode
			// we create 2 new textnodes
			// and put the insertNode in between
		
			var textNode = container;
			container = textNode.parentNode;
			var text = textNode.nodeValue;
		
			// text before the split
			var textBefore = text.substr(0,pos);
			// text after the split
			var textAfter = text.substr(pos);
		
			var beforeNode = document.createTextNode(textBefore);
			afterNode = document.createTextNode(textAfter);
		
			// insert the 3 new nodes before the old one
			container.insertBefore(afterNode, textNode);
			container.insertBefore(insertNode, afterNode);
			container.insertBefore(beforeNode, insertNode);
		
			// remove the old node
			container.removeChild(textNode);
		
		} else {
		
			// else simply insert the node
			afterNode = container.childNodes[pos];
			container.insertBefore(insertNode, afterNode);
		}
		
		range.setEnd(afterNode, 0);
		range.setStart(afterNode, 0);
	}
	
	sel.addRange(range);
};

//----------------------------------------------- Pasting --------------------------------------------//
function encode_element(str, elem)
{
	var re= new RegExp("<" + elem + ">", "ig");
	str = str.replace(re, "(-" + elem + "-)");		
	var re= new RegExp("<" + elem + " \/>", "ig");
	str = str.replace(re, "(-" + elem + " \/-)");		
	var re= new RegExp("<\/" + elem + ">", "ig");
	str = str.replace(re, "(-\/" + elem + "-)");
	var re = new RegExp("<" + elem + " ([a-z, A-Z, 0-9,\=,\',\",\+,:,\*,\&,\#,\$,\-]*)>", "ig");
	str = str.replace(re, "(-" + elem + " $1-)");		
	return str;
};

function decode_element(str, elem)
{
	var re= new RegExp("\(-" + elem + "-\)", "ig");
	str = str.replace(re, "<" + elem + ">");		
	var re= new RegExp("\(-" + elem + " \/-\)", "ig");
	str = str.replace(re, "<" + elem + " \/>");		
	var re= new RegExp("\(-" + elem + "\/-\)", "ig");
	str = str.replace(re, "<" + elem + " \/>");		
	var re= new RegExp("\(-\/" + elem + "-\)", "ig");
	str = str.replace(re, "</" + elem + ">");
	var re = new RegExp("\(-" + elem + " ([a-z, A-Z, 0-9,\=,\',\",\+,:,\*,\&,\#,\$,\-]*)-\)", "ig");
	str = str.replace(re, "<" + elem + " $2>");
	str = str.replace(/\(</ig,"<");
	str = str.replace(/>\)/ig,">");
	return str;
};

function remove_tags(B, allowed)
{
	for(x=0; x<allowed.length; x++)
		B = encode_element(B, allowed[x]);

	B = B.replace(/(<([^>]+)>)/ig,"");

	for(x=0; x<allowed.length; x++)		
		B = decode_element(B, allowed[x]);
	return B;
};

function execute_paste(area_id) {
	if(typeof clipboardData!="undefined") {
		txt = clipboardData.getData("text");
		if(txt==null) return false;
		txt = paste_process(txt);
		insert_content(txt);
		return false;
	}
	else {
		ea = document.getElementById(area_id);
		insert_content("pppastehereee");
		editor_content = ea.innerHTML;
		ea.innerHTML = "";
		setTimeout("clean_paste('" + area_id + "')",20);
		return true;
	}
}

function clean_paste(area_id) {
	var ea = document.getElementById(area_id);
	new_content = paste_process(ea.innerHTML);
	editor_content = editor_content.replace(/pppastehereee/ig,new_content);
	ea.innerHTML = editor_content;
}

function paste_process(txt) {
	return remove_tags(txt, new Array("br","img","p","b","u","table","td","tr","a","strong","li","ul"));
}

//----------------------------------------- Saving ----------------------------------------------------//

function save_content() {
	var coltitle;
	var coltype;
	var colid;
	var vars = "";
	var col_list = "";
	var global_col_list = "";
	
	var data_list = "";
	var data_values = "";
	var data_details = "";
	
	for(i=0; i<save_cols.length; i++) {	
		coltitle = save_cols[i][0];
		coltype = save_cols[i][1];
		colid = save_cols[i][2];
		colscope = save_cols[i][3];
		colchanged = save_cols[i][4];
				
		save_cols[i][6] = document.getElementById(colid).innerHTML;
		
		if(coltype=="html" || (coltype=="picture" && colchanged))
		{
			/*if(coltype=="html")
			{
				//for(k=1; k<=sub_areas[colid]; k++)
				//{
				//	sfocus = colid + "_sub" + k;
				//	alert(document.getElementById(sfocus).innerHTML);
				//}
				newval = document.getElementById(colid).innerHTML;
			}*/
			if(coltype=="picture") {
				//newval = track_image_code(colid);
				newval = document.getElementById(colid).innerHTML;
				newdata = track_image_settings(colid);
			}
			else {
				newval = document.getElementById(colid).innerHTML;
				newdata = "";
			}
			//save_cols[i][6] = newval;
			
			newval = escape(newval);
			newval = newval.replace(/%A9/ig,escape("&copy;"));
			newdata = escape(newdata);
			newdata = newdata.replace(/%A9/ig,escape("&copy;"));

			if(vars!="") vars += "&";
			vars += coltitle + "=" + newval;
			vars += "&" + coltitle + "_data=" + newdata;
			if(colscope=="site") {
				if(global_col_list!="") global_col_list += ",";
				global_col_list += coltitle;
				global_col_list += "," + coltitle + "_data";
			}
			else {
				if(col_list!="") col_list += ",";
				col_list += coltitle;
				col_list += "," + coltitle + "_data";
			}
		}
		else if(coltype!="picture" && coltype!="html")
		{
			data_result = save_addon_content(data_list, vars);
			data_list = data_result[0];
			vars = data_result[1];
		}
	}

	if(vars!="") {
		vars = "pageid=" + current_pageid + "&cols=" + col_list + "&global_cols=" + global_col_list + "&data_list=" + data_list + "&" + vars;
		menuRequest(site_path + "lavu/save.php", vars);
	}
}

function isDefined(variable)
{
return (!(!(document.getElementById(variable))))
}
//--------------------------------------- Picture Managemenet ------------------------------------------//

function set_image_file(itemfocus, uploadfile, resizex, resizey, setx, sety, sets, fullfile) {
	//document.getElementById(itemfocus).src = uploadfile;
	mark_as_changed(itemfocus);
	item_focus = itemfocus; // not sure why there are two variable names.  Will set them the same just in case and see what happens
	
	if(uploadfile=='') {
		document.getElementById(itemfocus).innerHTML = "&nbsp;";
		if(isDefined("edit_" + item_focus))
			document.getElementById("edit_" + item_focus).style.visibility = "hidden";
	}
	else {
		if(!setx) setx = "*";
		if(!sety) sety = "*";
		if(!sets) sets = "*";
		if(save_cols_ref[itemfocus])
			save_cols[save_cols_ref[itemfocus]][5] = resizex + "," + resizey + "," + uploadfile + "," + setx + "," + sety + "," + sets + "," + fullfile;
		//alert(save_cols[save_cols_ref[itemfocus]][5]);
		//document.getElementById(itemfocus).innerHTML = "<embed src='/lavu/pic.swf?filename=" + uploadfile + "&setwidth=" + resizex + "&setheight=" + resizey + "&clickfunction=click_" + itemfocus + "&setfunction=setdata_" + itemfocus + "&setid=" + itemfocus + "&edit=1' width='" + resizex + "' height='" + resizey + "' wmode='transparent' id='pic_" + itemfocus + "' name='pic_" + itemfocus + "' onmouseout='getFlashMovieObject(\"pic_" + itemfocus + "\").setVariable(\"track_mouseup\",\"1\"); '></embed>";
		document.getElementById(itemfocus).innerHTML = "<img src='" + uploadfile + "' border='0'>";
		if(isDefined("edit_" + item_focus))
			document.getElementById("edit_" + item_focus).style.visibility = "visible";
	}
		//document.getElementById(itemfocus).innerHTML = "<img src='" + uploadfile + "' border='0'>";
	//alert(itemfocus + " " + uploadfile + " " + resizex + " " + resizey);
	disable_save_confirm = false;
}

/*flash_movie_track = "";
function mouseup_from_flash() {
	document.onmouseup = null;
	flmov = getFlashMovieObject(flash_movie_track);
	flmov.setVariable("track_mouseup","1");
}

function flash_mouseup_tracking_on(flashid) {
	flash_movie_track = flashid;
	document.onmouseup = mouseup_from_flash;
}*/

function track_image_settings(itemfocus) {
	var image_data = save_cols[save_cols_ref[itemfocus]][5];
	image_data = image_data.split(",");
	var setwidth = image_data[0];
	var setheight = image_data[1];
	var filename = image_data[2];
	var setx = image_data[3];
	var sety = image_data[4];
	var sets = image_data[5];
	var fullsize = image_data[6];
	
	return setwidth + "," + setheight + "," + filename + "," + setx + "," + sety + "," + sets + "," + fullsize;
}

function track_image_code(itemfocus) {
	/*var flob = getFlashMovieObject("pic_" + itemfocus);
	var setwidth = flob.getVariable("setwidth");
	var setheight = flob.getVariable("setheight");
	var filename = flob.getVariable("filename");
	var setx = flob.getVariable("trackx");
	var sety = flob.getVariable("tracky");*/
	var image_data = save_cols[save_cols_ref[itemfocus]][5];
	image_data = image_data.split(",");
	var setwidth = image_data[0];
	var setheight = image_data[1];
	var filename = image_data[2];
	var setx = image_data[3];
	var sety = image_data[4];
	var sets = image_data[5];
	
	return "<embed src='/lavu/pic.swf?filename=" + filename + "&setwidth=" + setwidth + "&setheight=" + setheight + "&setx=" + setx + "&sety=" + sety + "&sets=" + sets + "&clickfunction=click_" + itemfocus + "&setfunction=setdata_" + itemfocus + "&setid=" + itemfocus + "&edit=1' width='" + setwidth + "' height='" + setheight + "' wmode='transparent' id='pic_" + itemfocus + "' name='pic_" + itemfocus + "'></embed>";
}

function getFlashMovieObject(movieName)
{
	if (window.document[movieName]) 
		return window.document[movieName];
	/*if (navigator.appName.indexOf("Microsoft Internet")==-1)
	{
		if (document.embeds && document.embeds[movieName])
		return document.embeds[movieName]; 
	}*/
	else
		return document.getElementById(movieName);
}

function mark_as_changed(itemid) {
	for(i=0; i<save_cols.length; i++) {
		if(save_cols[i][2]==itemid) {
			save_cols[i][4] = true;
		}
	}
}
//--------------------------------------- Bounding Boxes -----------------------------------//

item_focus = "";
function toggle_bounding_boxes() {
	show_bounding_boxes = !show_bounding_boxes;
	display_bounding_boxes();
	
	if(show_bounding_boxes) {
		document.getElementById("toggle_bounding_boxes_link").innerHTML = "Hide";
		if(item_focus!="") {
			document.getElementById(item_focus).style.border = "dotted 6px #008800";
			document.getElementById("edit_" + item_focus).style.visibility = "visible";
		}
	}
	else document.getElementById("toggle_bounding_boxes_link").innerHTML = "Show";
	
	if(show_bounding_boxes)
		send_command("show_bounding_boxes","1");
	else
		send_command("show_bounding_boxes","0");
}

function display_bounding_boxes() {
	var setborder;
	
	if(show_bounding_boxes) setborder = "dotted 2px #008800";
	else setborder = "";
	
	for(i=0; i<save_cols.length; i++) {
		colid = save_cols[i][2];
		if(save_cols[i][1]=="html")
		{
			for(k=1; k<=sub_areas[colid]; k++)
			{
				sfocus = colid + "_sub" + k;
				document.getElementById(sfocus).style.border = setborder;
			}
		}
		if(save_cols[i][1]=="picture")
		{
				document.getElementById("edit_" + colid).style.visibility = "hidden";
		}
		document.getElementById(colid).style.border = setborder;
	}	
	for(i=0; i<bounded_area_list.length; i++) {
		colid = bounded_area_list[i];
		document.getElementById(colid).style.border = setborder;
	}
}

//--------------------------------------- Controls -----------------------------------------------------//

function open_controls() {
	controls_open = "open";
	set_controls_visibility(controls_open);
	send_command("controls_open","open");
}

function close_controls() {
	controls_open = "closed";
	set_controls_visibility(controls_open);
	send_command("controls_open","closed");
}

lastvis_mode = "map";
function set_controls_visibility(setcontrolvis) {
	if(setcontrolvis=="open") {
		document.getElementById("controls_closed").style.visibility = "hidden";
		document.getElementById("controls_open").style.visibility = "visible";
		document.getElementById("controls_universal").style.visibility = "visible";
		document.getElementById("controls_" + lastvis_mode).style.visibility = "visible";
	}
	else if(setcontrolvis=="hidden") {
		document.getElementById("controls_closed").style.visibility = "hidden";
		document.getElementById("controls_open").style.visibility = "hidden";
		document.getElementById("controls_universal").style.visibility = "hidden";
		document.getElementById("controls_" + lastvis_mode).style.visibility = "hidden";
	}
	else {
		document.getElementById("controls_open").style.visibility = "hidden";
		document.getElementById("controls_closed").style.visibility = "visible";
		document.getElementById("controls_universal").style.visibility = "hidden";
		document.getElementById("controls_" + lastvis_mode).style.visibility = "hidden";
	}
	fix_controls_position();
}

function send_command(setting, value) {
	document.getElementById("command").innerHTML = "<iframe src='" + site_path + "lavu/command.php?setting=" + setting + "&value=" + value + "'></iframe>";
}

function control_mode(setmode, vars) {
	item_focus = "";
	map_vis = "hidden";
	edit_vis = "hidden";
	picture_vis = "hidden";
	addon_vis = "hidden";
	display_bounding_boxes();
	
	if(setmode=="map")
		map_vis = "visible";
	else if(setmode=="addon") {
		addon_vis = "visible";
	}
	else if(setmode=="addon_picture") {
		picture_vis = "visible";
	}
	else if(setmode=="picture" && vars) {
		item_focus = vars[0];
		item_dir = root_address + "images/" + vars[1];
		//default_dir = "/sites/default_" + site_design + "/images/" + vars[1];
		
		//fullsize_dir = root_address + "images/fullsize";
		//default_dir = "/sites/default_" + site_design + "/images/fullsize";
		fullsize_dir = item_dir + "/fullsize";
		default_dir = "/sites/default_" + site_design + "/images/" + vars[1] + "/fullsize";
		
		setwidth = vars[2];
		setheight = vars[3];
		setscope = vars[4];
		//startimg = vars[5];
		
		/*pictureframe.document.upload.resize.value = 1;
		pictureframe.document.upload.resizex.value = setwidth;
		pictureframe.document.upload.resizey.value = setheight;
		pictureframe.document.upload.directory.value = item_dir;
		pictureframe.document.upload.itemfocus.value = item_focus;*/
		current_picture_selected = "";
		current_picture_selected_info = save_cols[save_cols_ref[item_focus]];
		if(current_picture_selected_info.length > 5)
		{
			current_picture_selected = current_picture_selected_info[5];
		}
		
		if(show_bounding_boxes) {
			document.getElementById(item_focus).style.border = "dotted 6px #008800";
			if(current_picture_selected!="") crop_button_vis = "visible";
			else crop_button_vis = "hidden";
			document.getElementById("edit_" + item_focus).style.visibility = crop_button_vis;
		}
		
		pictureframe.location = site_path + "lavu/manage_pictures.php?resize=1&resizex=" + setwidth + "&resizey=" + setheight + "&directory=" + item_dir + "&itemfocus=" + item_focus + "&defaultdir=" + default_dir + "&fullsize_dir=" + fullsize_dir + "&scope=" + setscope + "&info=" + escape(current_picture_selected);
		
		picture_vis = "visible";
	}
	else
		edit_vis = "visible";
	lastvis_mode = setmode;
	
	if(controls_open=="open") {
		document.getElementById("controls_map").style.visibility = map_vis;
		document.getElementById("controls_editor").style.visibility = edit_vis;
		document.getElementById("controls_picture").style.visibility = picture_vis;
		document.getElementById("controls_addon").style.visibility = addon_vis;
		
		if(map_vis=="visible") {
			document.getElementById("controls_mapframe").style.width = 390;
			document.getElementById("controls_mapframe").style.height = 161;
		}
		else {
			document.getElementById("controls_mapframe").style.width = 0;
			document.getElementById("controls_mapframe").style.height = 0;
		}
	}
}

//------------------------------------------- Controls Movement -------------------------------------//

function move_controls_to(dest) {
	controls_location = dest;
	fix_controls_position();
	send_command("controls_location", dest);
}

function fix_controls_position() {
	var winsize = windowSize();

	if(controls_location=="left") {
		posx = 0;
		document.getElementById("controls_closed_arrow_left").style.visibility = "hidden";
		document.getElementById("controls_open_arrow_left").style.visibility = "hidden";
		if(controls_open=="open") {
			document.getElementById("controls_open_arrow_right").style.visibility = "visible";
			document.getElementById("controls_closed_arrow_right").style.visibility = "hidden";
		}
		else {
			document.getElementById("controls_open_arrow_right").style.visibility = "hidden";
			document.getElementById("controls_closed_arrow_right").style.visibility = "visible";
		}
	}
	else {
		posx = winsize[0] - 422;
		document.getElementById("controls_closed_arrow_right").style.visibility = "hidden";
		document.getElementById("controls_open_arrow_right").style.visibility = "hidden";
		if(controls_open=="open") {
			document.getElementById("controls_open_arrow_left").style.visibility = "visible";
			document.getElementById("controls_closed_arrow_left").style.visibility = "hidden";
		}
		else {
			document.getElementById("controls_open_arrow_left").style.visibility = "hidden";
			document.getElementById("controls_closed_arrow_left").style.visibility = "visible";
		}
	}
	posx += document.body.scrollLeft;
	posy = document.body.scrollTop;
	
	document.getElementById("controls_closed").style.left = posx;
	document.getElementById("controls_open").style.left = posx;
	document.getElementById("controls_closed").style.top = posy;
	document.getElementById("controls_open").style.top = posy;
}

disable_save_confirm = false;
function initialize_lavu() {
	window.onresize = lavu_win_resize;
	window.onscroll = lavu_win_scroll;
	fix_controls_position();
	set_controls_visibility(controls_open);
	
	window.onbeforeunload = askConfirm;
	function askConfirm(){
		changes_made = false;
		for(i=0; i<save_cols.length; i++) {
			if(save_cols[i].length > 6) {
				colid = save_cols[i][2];
				oldval = save_cols[i][6];
				warn_for_save = save_cols[i][7];
				newval = document.getElementById(colid).innerHTML;
				if(oldval!=newval && warn_for_save) {
					changes_made = true;
				}
			}
		}
		if(changes_made && disable_save_confirm==false)
			return "You have unsaved changes.";
	}
	/*for(i=0; i<save_cols.length; i++) {
		if(save_cols[i][1]=="html") {
			area_count = save_cols[i][5];
			current_item_focus = save_cols[i][2];
			if(area_count < 1)
				add_area();
			else
				sub_areas[current_item_focus] = area_count;
		}
	}*/
}
/*if(controls_open=="open")
	document.getElementById("controls_open").style.visibility = "visible";
else
	document.getElementById("controls_closed").style.visibility = "visible";*/

//---------------------------------------------- Advanced Editor --------------------------------------//

function lavu_win_resize()
{
	fix_controls_position();
	window_resized();
}

function lavu_win_scroll()
{
	fix_controls_position();
	window_scrolled();
}

function SetOpacity(elem, opacityAsInt)
{
   var opacityAsDecimal = opacityAsInt;
   
   if (opacityAsInt > 100)
       opacityAsInt = opacityAsDecimal = 100; 
   else if (opacityAsInt < 0)
       opacityAsInt = opacityAsDecimal = 0; 
   
   opacityAsDecimal /= 100;
   if (opacityAsInt < 1)
       opacityAsInt = 1;
   
   elem.style.opacity = (opacityAsDecimal);
   elem.style.filter  = "alpha(opacity=" + opacityAsInt + ")";
}

function fade_object_in(elem, opac, step, pause, elapsed)
{
	if(!elapsed) elapsed = 0;
	if(elapsed > 200) return;
	if(opac > 100) opac = 100;
	SetOpacity(document.getElementById("grey_overlay"), opac);
	if(opac < 100)
		setTimeout("fade_object_in('" + elem + "', " + (opac + step) + ", " + step + ", " + pause + ", " + (elapsed + 1) + ")",pause);
}

function grey_overlay_fadein()
{
	fade_object_in("grey_overlay", 0, 15, 5, 0);
	document.getElementById("grey_overlay").style.visibility = "visible";
}

function close_full_map()
{
	set_controls_visibility("open");
	document.getElementById("full_map").innerHTML = "&nbsp;";
	position_centered_item("full_map");
	document.getElementById("full_map").style.visibility = "hidden";
	document.getElementById("grey_overlay").style.visibility = "hidden";
}

function open_full_map(map_src)
{
	resize_overlay();
	document.getElementById("grey_overlay").style.visibility = "visible";
	//grey_overlay_fadein();
	document.getElementById("full_map").innerHTML = "<iframe src='" + map_src + "' width='860' height='660' frameborder='0' allowtransparency='true'></iframe>";
	position_centered_item("full_map");
	document.getElementById("full_map").style.visibility = "visible";
	set_controls_visibility("hidden");
}

ae_loaded = false;
function advanced_editor_loaded()
{
	ae_loaded = true;
	setTimeout("setup_advanced_editor()",1000);
}

function open_advanced_editor()
{
	position_centered_item("advanced_editor");
	resize_overlay();
	document.getElementById("grey_overlay").style.visibility = "visible";
	//position_centered_item("advanced_editor");
	document.getElementById("advanced_editor").style.visibility = "visible";
	if(ae_loaded)
	{
		setup_advanced_editor();
	}
	else 
	{
		start_editor_preloader();		
		document.getElementById("editor_space").innerHTML = "<iframe name='editframe' id='editframe' src='/lavu/edit.php?dp=" + design_path + "' width='700' height='435' frameborder='0' allowtransparency='true'></iframe>";
	}
}

editor_is_open = false;
function setup_advanced_editor()
{
	stop_editor_preloader();
	startcode = document.getElementById(current_item_focus).innerHTML;
	editframe.FCKeditorAPI.GetInstance('htmeditor').SetHTML(startcode);
	document.getElementById("editor_space").style.visibility = "visible";
	editor_is_open = true;
}

function close_advanced_editor()
{
	document.getElementById("grey_overlay").style.visibility = "hidden";
	document.getElementById("editor_space").style.visibility = "hidden";
	document.getElementById("advanced_editor").style.visibility = "hidden";
	if(editor_is_open)
		editframe.FCKeditorAPI.GetInstance('htmeditor').SetHTML("");
	editor_is_open = false;
}

function apply_advanced_editor()
{
	set_html = editframe.FCKeditorAPI.GetInstance('htmeditor').GetHTML();
	document.getElementById(current_item_focus).innerHTML = set_html;
	close_advanced_editor();
}

function start_editor_preloader()
{
	showcode = "";
	showcode += "<table cellpadding=20><td bgcolor='#eeeeee' style='border:solid 2px #777777' width='700' height='435' align='center' valign='middle'>";
	showcode += "<table cellpadding=10>";
	showcode += "<tr><td valign='middle'>Loading Advanced Editor...</td><td width='20'>&nbsp;</td><td valign='middle'><img src='/images/loading.gif' border='0'></td></tr>";		
	showcode += "</table>";
	showcode += "</td></table>";
	document.getElementById("editor_preloader").innerHTML = showcode;
	document.getElementById("editor_preloader").style.visibility = "visible";
}

function stop_editor_preloader()
{
	document.getElementById("editor_preloader").innerHTML = "";
	document.getElementById("editor_preloader").style.visibility = "hidden";
}

function window_scrolled()
{
	sett = document.body.scrollTop;
	setl = document.body.scrollLeft;
	gr = document.getElementById("grey_overlay");
	gr.style.top = sett;
	gr.style.left = setl;
	//position_centered_item("advanced_editor");
}

function window_resized()
{
	resize_overlay();
	position_centered_item("advanced_editor");
	position_centered_item("full_map");
	//position_centered_item("page_creator");
}

function position_centered_item(position_item)
{
	winsize = windowSize();
	ps = document.getElementById(position_item);
	setleft = document.body.scrollLeft + (winsize[0] - ps.offsetWidth) / 2;
	settop = document.body.scrollTop + (winsize[1] - ps.offsetHeight) / 2;
	settop -= 30;
	if(settop < 0) settop = 0;
	
	ps.style.left = setleft;
	ps.style.top = settop;
}

function resize_overlay()
{
	winsize = windowSize();
	setw = winsize[0];
	seth = winsize[1];
	
	gr = document.getElementById("grey_overlay");
	gr.style.width = setw;
	gr.style.height = seth;
}

function windowSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
	//Non-IE
	myWidth = window.innerWidth;
	myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
	//IE 6+ in 'standards compliant mode'
	myWidth = document.documentElement.clientWidth;
	myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
	//IE 4 compatible
	myWidth = document.body.clientWidth;
	myHeight = document.body.clientHeight;
  }
  return new Array(myWidth, myHeight);
}

//----------------------------------------- Image Editor ----------------------------------------------//

/*function open_image_editor(filename) {
	alert("Image editor will be available by clicking on the image that you have already selected.  Please check back soon");
}*/

function receive_image_editor_info(setinfo) {
	setinfo = setinfo.split(",");
	var i_focus = setinfo[0];
	var i_width = setinfo[1];
	var i_height = setinfo[2];
	var i_filename = setinfo[3];
	var i_thumbfile = setinfo[4];
	var i_setfile = setinfo[5];
	var i_x = setinfo[6];
	var i_y = setinfo[7];
	var i_setwidth = setinfo[8];
	var i_setheight = setinfo[9];
	var i_scale = setinfo[10];
	
	//i_x -= (i_setwidth / 2);
	//i_y -= (i_setheight / 2);
	
	var var_list = "";
	var_list += "&itemfocus=" + i_focus;
	var_list += "&width=" + i_width;
	var_list += "&height=" + i_height;
	var_list += "&filename=" + i_filename;
	var_list += "&thumbfile=" + i_thumbfile;
	var_list += "&setfile=" + i_setfile;
	var_list += "&x=" + i_x;
	var_list += "&y=" + i_y;
	var_list += "&setwidth=" + i_setwidth;
	var_list += "&setheight=" + i_setheight;
	var_list += "&setscale=" + i_scale;
	
	var_list += "&current_site=" + current_site;
	var_list += "&site_design=" + site_design;
	
	if(fwd_info_var[i_focus])
	{
		var_list += "&info_var=" + fwd_info_var[i_focus][0];
		var_list += "&info_id=" + fwd_info_var[i_focus][1];
	}
	
	showcode = "<br><br>";
	showcode += "<table cellpadding=20><td bgcolor='#ffffff' style='border:solid 2px #777777' width='300' height='200' align='center' valign='middle'>";
	
	showcode += "<table>";
	showcode += "<tr><td height='30'>&nbsp;</td></tr>";
	showcode += "<tr><td valign='middle'>Processing Image...</td><td width='20'>&nbsp;</td><td valign='middle'><img src='/images/loading.gif' border='0'></td></tr>";
	showcode += "<tr><td height='30'><iframe src='/lavu/manage_pictures.php?mode=process" + var_list + "' width='60' height='20' frameborder='0'></iframe></td></tr>";
	showcode += "</table>";
	
	showcode += "</td></table>";
	
	document.getElementById("image_editor_buttons").style.visibility = "hidden";
	document.getElementById("image_editor_area").innerHTML = showcode;	
}

function request_image_editor_info()
{
	disable_save_confirm = true;
	
	if(window.flash_image_editor) window.document.flash_image_editor.SetVariable("request_info","1");
	else if(document.flash_image_editor) document.flash_image_editor.SetVariable("request_info","1");
	else document.getElementById("flash_image_editor").setVariable("request_info","1");
}

function image_editor_mouseout()
{
	//getFlashMovieObject("flash_image_editor").setVariable("track_mouseup","1");
}

var fwd_info_var = new Array();
function open_image_editor_for_area(ifocus, iwidth, iheight, set_image_data, infovar, infoid)
{
	var image_data;
	
	if(infovar && infoid)
		fwd_info_var[ifocus] = new Array(infovar, infoid);
	else
		fwd_info_var[ifocus] = false;
		
	if(set_image_data)
	{
		image_data = set_image_data;
	}
	else
	{
		image_data = save_cols[save_cols_ref[ifocus]][5];
		image_data = image_data.split(",");
	}
	
	cannot_edit = false;
	if(image_data.length > 6)
	{
		var setwidth = image_data[0];
		var setheight = image_data[1];
		var filename = image_data[2];
		var setx = image_data[3];
		var sety = image_data[4];
		var sets = image_data[5];
		var fullfile = image_data[6];
	
		if(fullfile=="")
			cannot_edit = true;
		else
			open_image_editor(ifocus, filename, "", fullfile, iwidth, iheight, setx, sety, sets);
	}
	else cannot_edit = true;
	
	if(cannot_edit)
	{
		alert("The picture you have selected cannot be edited.  One possible reason for this may be that it was uploaded before the resing / cropping features were added to Weblavu.  If this is the case, re-uploading the picture would fix the problem");
	}
}

function open_image_editor(itemfocus, setfile, thumbfile, filename, setwidth, setheight, setx, sety, sets)
{
	resize_overlay();
	
	//showcode = setx + "," + sety + "," + sets + "<br>";
	showcode = "";
	showcode += "<embed src='/lavu/pic.swf?setid=" + itemfocus + "&filename=" + filename + "&thumbfile=" + thumbfile + "&setfile=" + setfile + "&setwidth=" + setwidth + "&setheight=" + setheight + "&setx=" + setx + "&sety=" + sety + "&sets=" + sets + "' width='" + ((setwidth * 1) + 120) + "' height='" + ((setheight * 1) + 120) + "' id='flash_image_editor' name='flash_image_editor' onmouseout='image_editor_mouseout()'></embed>";
	
	document.getElementById("image_editor_buttons").style.visibility = "visible";
	document.getElementById("image_editor_area").innerHTML = showcode;
	position_centered_item("image_editor");
	document.getElementById("grey_overlay").style.visibility = "visible";
	document.getElementById("image_editor").style.visibility = "visible";
}

function close_image_editor()
{
	document.getElementById("grey_overlay").style.visibility = "hidden";
	document.getElementById("image_editor_buttons").style.visibility = "hidden";
	document.getElementById("image_editor").style.visibility = "hidden";
}

function set_image_library_selection(fname, fullfname)
{
	var set_uploadfile = fname;
	var set_fullfile = fullfname;
	set_image_file(item_focus, set_uploadfile, "*", "*", "*", "*", "*", set_fullfile);
	close_image_library();
	pictureframe.location = pictureframe.location;
}

function open_image_library(imlib_focus, imlib_width, imlib_height)
{
	/*var image_data = save_cols[save_cols_ref[item_focus]][5];
	image_data = image_data.split(",");

	if(image_data.length > 6)
	{
		var setwidth = image_data[0];
		var setheight = image_data[1];
		var filename = image_data[2];
		var setx = image_data[3];
		var sety = image_data[4];
		var sets = image_data[5];
		var fullfile = image_data[6];
	}*/

	resize_overlay();
	
	showcode = "<br><div style='border:solid 2px #555555; background-color:#ffffff'><iframe src='/main/file_manager.php?mode=choose_picture&dir=" + php_document_root + "/library/images&callback_function=set_image_library_selection&setwidth=" + imlib_width + "&setheight=" + imlib_height + "&itemfocus=" + imlib_focus + "' width='680' height='400' allowtransparency='true' frameborder='0'></iframe></div>";
	
	document.getElementById("image_library_buttons").style.visibility = "visible";
	document.getElementById("image_library_area").innerHTML = showcode;
	position_centered_item("image_library");
	document.getElementById("grey_overlay").style.visibility = "visible";
	document.getElementById("image_library").style.visibility = "visible";
}

function close_image_library()
{
	//document.getElementById("image_library_area").innerHTML = "";
	document.getElementById("grey_overlay").style.visibility = "hidden";
	document.getElementById("image_library_buttons").style.visibility = "hidden";
	document.getElementById("image_library").style.visibility = "hidden";
}
//---------------------------------------------- Custom Scrolling -------------------------------------//

function scroller_mousedown() {
	scrolling_area = true;
	start_mouse_position = mousey_position;
	starty_position = document.getElementById("scroll_bar").offsetTop;
	document.body.onselectstart = scroller_selectstart;
	document.body.onmousedown = scroller_selectstart;
	document.body.onmouseup = scroller_mouseup;
	return false;
}

function scroller_selectstart() {
	return false;
}

function scroller_mouseup() {
	scrolling_area = false;
	document.body.onselectstart = null;
	document.body.onmousedown = null;
	return false;
}

function scroller_mousemove() {
	sb = document.getElementById("scroll_bar");
	gotoy = starty_position + (mousey_position - start_mouse_position);
	if(gotoy > max_scroller_y) gotoy = max_scroller_y;
	else if(gotoy < min_scroller_y) gotoy = min_scroller_y;
	document.getElementById("scroll_bar").style.top = gotoy;
	
	pos_percent = gotoy / max_scroller_y;
	ac = document.getElementById("area_content");			
	document.getElementById("container").scrollTop = (pos_percent * max_scroll_y);
}
		
scroller_configured = false;
function configure_scroller() {
	ac = document.getElementById("area_content");
	content_height = ac.offsetHeight;
	container_height = document.getElementById("container").offsetHeight;
	//alert(content_height + " " + container_height);
	if(content_height > container_height) {
		max_scroll_y = content_height - container_height;
		scroll_bar_height = container_height * (container_height / content_height);
		max_scroller_y = container_height - scroll_bar_height;
	}
	else {
		max_scroll_y = 0;
		max_scroller_y = 0;
		scroll_bar_height = container_height;
	}
	min_scroll_y = 0;
	min_scroller_y = 0;
	
	content_top = document.getElementById("container").scrollTop;

	if(max_scroll_y > 0) {
		pos_percent = content_top / max_scroll_y;
		
		document.getElementById("scroll_bar").style.top = pos_percent * max_scroller_y;
		document.getElementById("scroll_bar").style.height = scroll_bar_height;
		document.getElementById("scroll_area").style.visibility = "visible";
		document.getElementById("scroll_bar").style.visibility = "visible";
	} else {
		document.getElementById("scroll_area").style.visibility = "hidden";
		document.getElementById("scroll_bar").style.visibility = "hidden";
	}
	
	scroller_configured = true;
}

function handle(delta) {
	if (delta < 0)
		document.getElementById("container").scrollTop += 20;
	else
		document.getElementById("container").scrollTop -= 20;
}

/** Event handler for mouse wheel event.
 */
function wheel(event){
		if(!scroller_configured) return true;
		//if(!scrolling_area_focus) return true;
		
		var delta = 0;
		if (!event) /* For IE. */
				event = window.event;
		if (event.wheelDelta) { /* IE/Opera. */
				delta = event.wheelDelta/120;
				/** In Opera 9, delta differs in sign as compared to IE.
				 */
				if (window.opera)
						delta = -delta;
		} else if (event.detail) { /** Mozilla case. */
				/** In Mozilla, sign of delta is different than in IE.
				 * Also, delta is multiple of 3.
				 */
				delta = -event.detail/3;
		}
		/** If delta is nonzero, handle it.
		 * Basically, delta is now positive if wheel was scrolled up,
		 * and negative, if wheel was scrolled down.
		 */
		if (delta)
				handle(delta);
		/** Prevent default actions caused by mouse wheel.
		 * That might be ugly, but we handle scrolls somehow
		 * anyway, so don't bother here..
		 */
		if (event.preventDefault)
				event.preventDefault();
	event.returnValue = false;
}

/** Initialization code. 
 * If you use your own event management code, change it as required.
 */
if (window.addEventListener)
		/** DOMMouseScroll is for mozilla. */
		window.addEventListener('DOMMouseScroll', wheel, false);
/** IE/Opera. */
window.onmousewheel = document.onmousewheel = wheel;

//---------------------------------------------- General Functions ------------------------------------//

document.onmousemove=track_mouse;
mousex_position = 0;
mousey_position = 0;
scrolling_area = false;
scrolling_area_focus = false;
function track_mouse(e) {
	if(!e) e = window.event;
	mousex_position = e.clientX;
	mousey_position = e.clientY;	
	
	if(scrolling_area && scroller_configured)
		scroller_mousemove();				
}

function getPosition(obj){
    var topValue= 0,leftValue= 0;
    while(obj){
	leftValue+= obj.offsetLeft;
	topValue+= obj.offsetTop;
	obj= obj.offsetParent;
    }
	objpos = new Array();
	objpos['left'] = leftValue;
	objpos['top'] = topValue;
	return objpos;
}
/*root_address = "" + window.location + "";
root_address = root_address.split("index.php");
root_address = root_address[0];
root_address = root_address.split(website_url);
if(root_address.length > 1) root_address = root_address[1]; else root_address = root_address[0];
root_address = root_address.split("?");
root_address = root_address[0];*/

/*function open_url(address) {
	address = root_address + address;
	window.location = address;
}*/

function add_to_list(at_list, at_sep, at_item) {
	if(at_list!="")
		at_list += at_sep;
	at_list += at_item;
	return at_list;
}

function windowSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
	//Non-IE
	myWidth = window.innerWidth;
	myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
	//IE 6+ in 'standards compliant mode'
	myWidth = document.documentElement.clientWidth;
	myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
	//IE 4 compatible
	myWidth = document.body.clientWidth;
	myHeight = document.body.clientHeight;
  }
  return new Array(myWidth, myHeight);
}

function enableSelection(element) {
	if (typeof element.onselectstart!="undefined")
		element.onselectstart=null;
	else if (typeof element.style.MozUserSelect!="undefined")
		element.style.MozUserSelect=null;
	else
		element.onmousedown=null;
	element.style.cursor = "default";
}

function disableSelection(element){
	if (typeof element.onselectstart!="undefined")
		element.onselectstart=function(){return false}
	else if (typeof element.style.MozUserSelect!="undefined")
		element.style.MozUserSelect="none";
	else
		element.onmousedown=function(){return false}
	element.style.cursor = "default"
}

