/*
	Cookie funktioner
*/

function get_cookie(name)
{
	var start = document.cookie.indexOf(name + '=');
	var len = start + name.length + 1;
	if ((!start) && (name != document.cookie.substring(0,name.length)))
	return '';
	if (start == -1)
	return '';
	var end = document.cookie.indexOf(';',len);
	if (end == -1) end = document.cookie.length;
	if(end == start){
		return '';
	}
	return unescape(document.cookie.substring(len,end));
}

function set_cookie(name, value, expires, path, domain, secure) 
{
	var today = new Date();
	today.setTime( today.getTime() );
	
	if ( expires )
	{
	expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	
	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
	( ( path ) ? ";path=" + path : "" ) + 
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
}

function delete_cookie(name, path, domain)
{
	if (Get_Cookie(name)) document.cookie =
	  name + '=' +
	  ( (path) ? ';path=' + path : '') +
	  ( (domain) ? ';domain=' + domain : '') +
	  ';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}



/*
	Positionering
*/

function get_offset_x(elm)
{
	os = elm.offsetLeft;
	if (elm.offsetParent) os += get_offset_x(elm.offsetParent);
	return os;
}

function get_offset_y(elm)
{
	os = elm.offsetTop;
	if (elm.offsetParent) os += get_offset_y(elm.offsetParent);
	return os;
}



/*
	Event handler
*/

function add_event_handler(obj, event, func){
	if (obj.addEventListener)
	{
		obj.addEventListener(event, func, true);
	}
	else if (obj.attachEvent)
	{
		obj.attachEvent("on" + event, func);
	}
}



/*
	Template class
*/

function tpl(template)
{
	this.template = js_designer_templates[template];
	if (!this.template) this.template = 'Mangler template: ' + template;
	this.variables = Array();
	this.variables['js_designer_module'] = js_designer_module;
}

tpl.prototype.template = '';
tpl.prototype.variables = Array();

tpl.prototype.set = function(id, value)
{
	this.variables[id] = value;
}

tpl.prototype.html = function()
{
	var tmp = this.template;
	for (key in this.variables)
	{
		val = this.variables[key];
		key = key.toUpperCase();
		var tmp1 = '';
		while (tmp1 != tmp)
		{
			tmp1 = tmp;
			tmp = tmp.replace('{' + key + '}', val);
		}
	}
	return tmp;
}

tpl.prototype.htmlTo = function(elm)
{
	document.getElementById(elm).innerHTML = this.html();
}





/*
	Diverse funktioner
*/

function js_designer_urlencode(txt)
{
	txt = escape(txt);
	tmp = '';
	while (tmp != txt)
	{
		tmp = txt;
		txt = txt.replace('+', '%2B');
	}
	return txt;
}

function js_designer_update_list()
{
	sel = document.getElementById('select_elements');
	while (sel.length > 0)
	{
		sel[0] = null;
	}
	for (i = js_designer_elements.length - 1; i >= 0; i--)
	{
		var elm = js_designer_elements[i];
		sel[sel.length] = new Option(elm['value'], i);
	}
	if (js_designer_selected > -1)
	{
		sel.selectedIndex = js_designer_elements.length - js_designer_selected - 1;
	}
}

function js_designer_tab(tab)
{
	js_designer_hide_palette();
	document.getElementById('td_tab_text').className = 'tabInactive';
	document.getElementById('td_tab_image').className = 'tabInactive';
	document.getElementById('td_tab_background').className = 'tabInactive';
	document.getElementById('td_tab_elements').className = 'tabInactive';
	document.getElementById('div_tab_content_text').style.display = 'none';
	document.getElementById('div_tab_content_image').style.display = 'none';
	document.getElementById('div_tab_content_background').style.display = 'none';
	document.getElementById('div_tab_content_elements').style.display = 'none';
	document.getElementById('td_tab_' + tab).className = 'tabActive';
	document.getElementById('div_tab_content_' + tab).style.display = '';
}

function js_designer_add_empty(t)
{
	if (t == 'text')
	{
		// Henter tekst fra tekst-felt
		var val = document.getElementById('text_value').value;
		
		// Er der valgt et tekst-element?
		if (js_designer_selected > -1)
		{
			// Er det en tekst der er valgt?
			if (js_designer_elements[js_designer_selected]['type'] == 'text')
			{
				val = '';
			}
		}
		
		// Er der ingen tekst?
		if (val == '') val = 'Ny tekst';
		
		var elm = Array();
		elm['type'] = 'text';
		elm['left'] = 25;
		elm['top'] = 25;
		var sel = document.getElementById('font_size');
		elm['size'] = sel.options[sel.selectedIndex].value;
		var sel = document.getElementById('font_name');
		elm['font'] = sel.options[sel.selectedIndex].value;
		elm['color'] = document.getElementById('font_color').value;
		var sel = document.getElementById('font_align');
		elm['align'] = sel.options[sel.selectedIndex].value;
		elm['value'] = val;
		js_designer_select(js_designer_add(elm));
	}
}

function js_designer_add(elm)
{
	js_designer_elements[js_designer_elements.length] = elm;
	js_designer_redraw();
	return (js_designer_elements.length - 1);
}

function js_designer_add_image(file)
{
	var elm = Array();
	elm['type'] = 'image';
	elm['value'] = file;
	elm['top'] = 25;
	elm['left'] = 25;
	elm['width'] = 100;
	elm['height'] = 0;
	js_designer_select(js_designer_add(elm));
}

function js_designer_delete(idx)
{
	if (!idx) idx = js_designer_selected;
	var tmp_elements = Array();
	for (i = 0; i < js_designer_elements.length; i++)
	{
		if (idx != i) tmp_elements[tmp_elements.length] = js_designer_elements[i];
	}
	js_designer_elements = tmp_elements;
	js_designer_redraw();
	document.getElementById('select_elements').selectedIndex = -1;
}

function js_designer_move_down(idx)
{
	idx = parseInt(idx);
	if (idx > 0 && idx < js_designer_elements.length)
	{
		var tmp_element = js_designer_elements[idx - 1];
		js_designer_elements[idx - 1] = js_designer_elements[idx];
		js_designer_elements[idx] = tmp_element;
		js_designer_redraw();
		js_designer_select(idx - 1);
		js_designer_update_list();
	}
}

function js_designer_move_up(idx)
{
	idx = parseInt(idx);
	if (idx >= 0 && idx < js_designer_elements.length - 1)
	{
		var tmp_element = js_designer_elements[idx + 1];
		js_designer_elements[idx + 1] = js_designer_elements[idx];
		js_designer_elements[idx] = tmp_element;
		js_designer_redraw();
		js_designer_select(idx + 1);
		js_designer_update_list();
	}
}

function js_designer_redraw()
{
	var html = '';
	var elm = Array();
	for (i = 0; i < js_designer_elements.length; i++)
	{
		elm = js_designer_elements[i];
		
		if (elm['type'] == 'text')
		{
			t = new tpl('element_text');
			t.set('i', i);
			t.set('left', elm['left']);
			t.set('top', elm['top']);
			t.set('size', elm['size']);
			t.set('z_index', i);
			t.set('text', js_designer_urlencode(elm['value']));
			t.set('font', elm['font']);
			t.set('align', elm['align']);
			t.set('color', escape(elm['color']));
			html += t.html();
		}
		
		else if (elm['type'] == 'image')
		{
			t = new tpl('element_image');
			t.set('i', i);
			t.set('left', elm['left']);
			t.set('top', elm['top']);
			t.set('width_style', elm['width'] > 0 ? ('width: ' + elm['width'] + 'px;') : '');
			t.set('height_style', elm['height'] > 0 ? ('height: ' + elm['height'] + 'px;') : '');
			t.set('width', elm['width']);
			t.set('height', elm['height']);
			t.set('z_index', i);
			t.set('file', escape(elm['value']));
			html += t.html();
		}
	}
	
	// Skærelinier ?
	if (js_designer_cutlines)
	{
		var cutline_offset = parseInt(js_designer_cutline_offset);
		if (cutline_offset > 0)
		{
			// Viser skærelinier
			t = new tpl('cutline');
			t.set('left', cutline_offset);
			t.set('top', 0);
			t.set('width', 0);
			t.set('height', js_designer_height);
			html += t.html();
			t = new tpl('cutline');
			t.set('left', parseInt(js_designer_width) - cutline_offset);
			t.set('top', 0);
			t.set('width', 0);
			t.set('height', js_designer_height);
			html += t.html();
			t = new tpl('cutline');
			t.set('left', 0);
			t.set('top', cutline_offset);
			t.set('width', js_designer_width);
			t.set('height', 0);
			html += t.html();
			t = new tpl('cutline');
			t.set('left', 0);
			t.set('top', parseInt(js_designer_height) - cutline_offset);
			t.set('width', js_designer_width);
			t.set('height', 0);
			html += t.html();
		}
	}
	
	t = new tpl('marker');
	html += t.html();
	
	document.getElementById('div_editor').innerHTML = html;
	
	js_designer_update_list();
}

function js_designer_unselect()
{
	document.getElementById('js_designer_marker').style.display = 'none';
	js_designer_selected = -1;
	document.getElementById('select_elements').selectedIndex = -1;
	
	document.getElementById('text_value').value = '';
	document.getElementById('font_color').value = '#000000';
	document.getElementById('font_color').style.background = '#000000';
}

function js_designer_select(idx)
{
	js_designer_unselect();
	
	idx = parseInt(idx);
	
	if (idx >= js_designer_elements.length) return;
	
	elm = js_designer_elements[idx];
	elm2 = document.getElementById('js_designer_element_' + idx);
	mkr = document.getElementById('js_designer_marker');
	mkr.style.display = '';
	mkr.style.left = elm['left'] + 'px';
	mkr.style.top = elm['top'] + 'px';
	mkr.style.width = elm2.offsetWidth;
	mkr.style.height = elm2.offsetHeight;
	js_designer_selected = idx;
	
	// Viser element i højre side
	if (elm['type'] == 'text')
	{
		document.getElementById('text_value').value = elm['value'];
		document.getElementById('font_color').value = elm['color'];
		document.getElementById('font_color').style.background = elm['color'];
		sel = document.getElementById('font_size');
		for (i = 0; i < sel.options.length; i++)
		{
			if (sel.options[i].value == elm['size'])
			{
				sel.selectedIndex = i;
				i = sel.options.length;
			}
		}
		sel = document.getElementById('font_name');
		for (i = 0; i < sel.options.length; i++)
		{
			if (sel.options[i].value == elm['font'])
			{
				sel.selectedIndex = i;
				i = sel.options.length;
			}
		}
		sel = document.getElementById('font_align');
		for (i = 0; i < sel.options.length; i++)
		{
			if (sel.options[i].value == elm['align'])
			{
				sel.selectedIndex = i;
				i = sel.options.length;
			}
		}
		document.getElementById('js_designer_img_resize').style.display = 'none';
	}
	else
	{
		document.getElementById('js_designer_img_resize').style.display = '';
	}
	
	document.getElementById('select_elements').selectedIndex = (js_designer_elements.length - idx - 1);
}

function js_designer_change()
{
	if (js_designer_selected > -1)
	{
		elm = js_designer_elements[js_designer_selected];
		if (elm['type'] == 'text')
		{
			elm['value'] = document.getElementById('text_value').value;
			elm['color'] = document.getElementById('font_color').value;
			sel = document.getElementById('font_name');
			elm['font'] = sel.options[sel.selectedIndex].value;
			sel = document.getElementById('font_size');
			elm['size'] = sel.options[sel.selectedIndex].value;
			sel = document.getElementById('font_align');
			elm['align'] = sel.options[sel.selectedIndex].value;
		}
		js_designer_update();
		js_designer_fit_marker();
	}
}

function js_designer_fit_marker()
{
	if (js_designer_selected > -1)
	{
		try
		{
			var elm = document.getElementById('js_designer_element_' + js_designer_selected);
			var mkr = document.getElementById('js_designer_marker');
			mkr.style.width = elm.offsetWidth + 'px';
			mkr.style.height = elm.offsetHeight + 'px';
		}
		catch (e)
		{
			js_designer_selected = -1;
		}
	}
}

function js_designer_update()
{
	if (js_designer_selected > -1)
	{
		elm = js_designer_elements[js_designer_selected];
		if (elm['type'] == 'text')
		{
			// Beregner maks bredde og højde
			var maxwidth = js_designer_width - elm['left'];
			var maxheight = js_designer_height - elm['top'];
			document.getElementById('js_designer_element_' + js_designer_selected).src = '/modules/' + 
				js_designer_module + '/pages/font.php' +
				'?text=' + js_designer_urlencode(elm['value']) +
				'&size=' + elm['size'] +
				'&maxwidth=' + maxwidth +
				'&maxheight=' + maxheight +
				'&font=' + elm['font'] +
				'&align=' + elm['align'] +
				'&color=' + escape(elm['color']);
		}
		else if (elm['type'] == 'image')
		{
			document.getElementById('js_designer_element_' + js_designer_selected).src = '/modules/' + 
				js_designer_module + '/pages/image.php' +
				'?file=' + escape(elm['value']) +
				'&width=' + elm['width'] +
				'&height=' + elm['height'];
		}
		document.getElementById('select_elements').options[js_designer_elements.length - js_designer_selected - 1].text = elm['value'];
	}
}

function js_designer_mouse_move(e)
{
	if (!e) e = window.event;
	if (!e) return;
	js_designer_mouse_x = e.clientX;
	js_designer_mouse_y = e.clientY;
	
	if (js_designer_move_active)
	{
		var x = js_designer_mouse_x - js_designer_move_x;
		js_designer_move_x = js_designer_mouse_x;
		var y = js_designer_mouse_y - js_designer_move_y;
		js_designer_move_y = js_designer_mouse_y;
		
		mkr = document.getElementById('js_designer_marker');
		elm = document.getElementById('js_designer_element_' + js_designer_selected);
		var cur_x = parseInt(elm.style.left);
		var cur_y = parseInt(elm.style.top);
		
		x = cur_x + x;
		y = cur_y + y;
		
		if (x < 0) x = 0;
		if (y < 0) y = 0;
		
		if (elm.offsetWidth + x > js_designer_width)
		{
			x = js_designer_width - elm.offsetWidth;
		}
		if (elm.offsetHeight + y > js_designer_height)
		{
			y = js_designer_height - elm.offsetHeight;
		}
		
		mkr.style.left = x + 'px';
		mkr.style.top = y + 'px';
		elm.style.left = x + 'px';
		elm.style.top = y + 'px';
		
		js_designer_elements[js_designer_selected]['left'] = x;
		js_designer_elements[js_designer_selected]['top'] = y;
	}
	
	if (js_designer_resize_active)
	{
		var x = js_designer_mouse_x - js_designer_move_x;
		js_designer_move_x = js_designer_mouse_x;
		var y = js_designer_mouse_y - js_designer_move_y;
		js_designer_move_y = js_designer_mouse_y;
		
		mkr = document.getElementById('js_designer_marker');
		elm = document.getElementById('js_designer_element_' + js_designer_selected);
		var cur_x = parseInt(elm.offsetWidth);
		var cur_y = parseInt(elm.offsetHeight);
		
		x = cur_x + x;
		y = cur_y + y;
		
		if (x < 30) x = 30;
		if (y < 30) y = 30;
		
		if (parseInt(js_designer_elements[js_designer_selected]['left']) + x > js_designer_width)
		{
			x = js_designer_width - parseInt(js_designer_elements[js_designer_selected]['left']);
		}
		if (parseInt(js_designer_elements[js_designer_selected]['top']) + y > js_designer_height)
		{
			y = js_designer_height - parseInt(js_designer_elements[js_designer_selected]['top']);
		}
		
		mkr.style.width = x + 'px';
		mkr.style.height = y + 'px';
		elm.style.width = x + 'px';
		elm.style.height = y + 'px';
		if (js_designer_elements[js_designer_selected]['type'] != 'text')
		{
			js_designer_elements[js_designer_selected]['height'] = y;
		}
		
		js_designer_elements[js_designer_selected]['width'] = x;
	}
	
}

function js_designer_color()
{
}

function js_designer_click_move()
{
	if (js_designer_resize_active) js_designer_end_resize();
	if (js_designer_move_active)
	{
		js_designer_end_move();
	}
	else
	{
		js_designer_start_move();
	}
}

function js_designer_start_move()
{
	js_designer_move_x = js_designer_mouse_x;
	js_designer_move_y = js_designer_mouse_y;
	js_designer_move_active = true;
	document.getElementById('js_designer_img_move').style.cursor = 'move';
}

function js_designer_end_move()
{
	js_designer_move_active = false;
	document.getElementById('js_designer_img_move').style.cursor = 'move';
}

function js_designer_end_move_timeout()
{
	js_designer_clear_move_timeout();
	js_designer_move_timeout = setTimeout('js_designer_end_move();', 500);
}

function js_designer_clear_move_timeout()
{
	if (js_designer_move_timeout != false) clearTimeout(js_designer_move_timeout);
}

function js_designer_click_resize()
{
	if (js_designer_move_active) js_designer_end_move();
	if (js_designer_resize_active)
	{
		js_designer_end_resize();
	}
	else
	{
		js_designer_start_resize();
	}
}

function js_designer_start_resize()
{
	js_designer_move_x = js_designer_mouse_x;
	js_designer_move_y = js_designer_mouse_y;
	js_designer_resize_active = true;
	document.getElementById('js_designer_img_resize').style.cursor = 'se-resize';
}

function js_designer_end_resize()
{
	js_designer_resize_active = false;
	document.getElementById('js_designer_img_resize').style.cursor = 'se-resize';
	
	// Opdaterer element
	js_designer_update();
}

function js_designer_end_resize_timeout()
{
	js_designer_clear_resize_timeout()
	js_designer_resize_timeout = setTimeout('js_designer_end_resize();', 500);
}

function js_designer_clear_resize_timeout()
{
	if (js_designer_resize_timeout != false) clearTimeout(js_designer_resize_timeout);
}

function js_designer_background_image(file)
{
	js_designer_background = file;
	document.getElementById('div_editor').style.background = 'url(\'/modules/' +
		js_designer_module + '/pages/image.php?file=' +
		file + '&width=' + js_designer_width + 
		'&height=' + js_designer_height + '\')';
}

function js_designer_background_color(col)
{
	js_designer_background = col;
	document.getElementById('div_editor').style.background = col;
}

function js_designer_show_palette(elm)
{
	js_designer_color_element = elm;
	var div = document.getElementById('div_palette');
	var div_offset = document.getElementById('div_palette_offset');
	div.style.display = '';
	div.style.left = get_offset_x(elm) + elm.offsetWidth - div.offsetWidth - get_offset_x(div_offset);
	div.style.top = get_offset_y(elm) + elm.offsetHeight - get_offset_y(div_offset);
}

function js_designer_hide_palette_timeout()
{
	if (js_designer_palette_timeout != false)
	{
		clearTimeout(js_designer_palette_timeout);
		js_designer_palette_timeout = false;
	}
	js_designer_palette_timeout = setTimeout('js_designer_hide_palette();', 250);
}

function js_designer_hide_palette()
{
	js_designer_color_element = false;
	var div = document.getElementById('div_palette');
	div.style.display = 'none';
}

function js_designer_choose_color(col)
{
	if (js_designer_color_element != false)
	{
		js_designer_color_element.value = '#' + col;
		js_designer_color_element.style.background = '#' + col;
		if (js_designer_color_element.id == 'input_background_color')
		{
			js_designer_background_color('#' + col);
		}
		else
		{
			js_designer_change();
		}
		js_designer_hide_palette();
	}
}

function js_designer_mouse_down()
{
	if (js_designer_move_icon)
	{
		js_designer_start_move();
	}
	if (js_designer_resize_icon)
	{
		js_designer_start_resize();
	}
}

function js_designer_mouse_up()
{
	if (js_designer_move_active)
	{
		js_designer_end_move();
	}
	if (js_designer_resize_active)
	{
		js_designer_end_resize();
	}
	if (js_designer_color_element != false)
	{
		js_designer_hide_palette_timeout();
	}
}

function js_designer_get_data()
{
	var data = 'background=' + escape(js_designer_background != '' ? js_designer_background : '#ffffff');
	for (var i = 0; i < js_designer_elements.length; i++)
	{
		var elm = js_designer_elements[i];
		if (elm['type'] == 'text')
		{
			data += '&type[' + i + ']=text' +
				'&value[' + i + ']=' + js_designer_urlencode(elm['value']) +
				'&size[' + i + ']=' + elm['size'] +
				'&font[' + i + ']=' + elm['font'] +
				'&align[' + i + ']=' + elm['align'] +
				'&color[' + i + ']=' + escape(elm['color']) +
				'&left[' + i + ']=' + elm['left'] +
				'&top[' + i + ']=' + elm['top'];
		}
		else if (elm['type'] == 'image')
		{
			data += '&type[' + i + ']=image' +
				'&value[' + i + ']=' + escape(elm['value']) +
				'&width[' + i + ']=' + elm['width'] +
				'&height[' + i + ']=' + elm['height'] +
				'&left[' + i + ']=' + elm['left'] +
				'&top[' + i + ']=' + elm['top'];
		}
	}
	return data;
}

function js_designer_set_data(data)
{
	var array = js_designer_parse_data(data);
	js_designer_background = array[0];
	if (js_designer_background.substr(0, 1) == '#')
	{
		document.getElementById('div_editor').style.background = js_designer_background;
		document.getElementById('input_background_color').value = js_designer_background;
		document.getElementById('input_background_color').style.background = js_designer_background;
	}
	else
	{
		document.getElementById('div_editor').style.background = 'url(\'/modules/' +
			js_designer_module + '/pages/image.php?file=' +
			js_designer_background + '&width=' + js_designer_width + 
			'&height=' + js_designer_height + '\')';
	}	
	
	js_designer_elements = Array();
	array = array[1];
	for (var i = 0; i < array.length; i++)
	{
		var elm = array[i];
		if (elm['type'] == 'text' && elm['value'] && elm['size'] && elm['font'] && elm['align'] && elm['color'] && elm['left'] && elm['top'])
		{
			js_designer_elements[js_designer_elements.length] = elm;
		}
		else if (elm['type'] == 'image' && elm['value'] && elm['width'] && elm['height'] && elm['left'] && elm['top'])
		{
			js_designer_elements[js_designer_elements.length] = elm;
		}
	}
	js_designer_redraw();
}

function js_designer_parse_data(data)
{
	var dataarray = data.split('&');
	var backgroundstr = '';
	var elementarray = Array();
	for (var i = 0; i < dataarray.length; i++)
	{
		var paramarray = dataarray[i].split('=');
		var key = paramarray[0];
		var val = unescape(paramarray[1]);
		if (key == 'background') 
		{
			backgroundstr = val;
		}
		else
		{
			var pos1 = key.indexOf('[');
			var pos2 = key.indexOf(']');
			if (pos1 > -1 && pos2 > -1)
			{
				var id = parseInt(key.substr(pos1 + 1, pos2 - pos1 - 1));
				key = key.substr(0, pos1);
				if (!elementarray[id]) elementarray[id] = Array();
				elementarray[id][key] = val;
			}
		}
	}
	var tmparray = Array();
	tmparray[0] = backgroundstr;
	tmparray[1] = elementarray;
	return tmparray;
}




/*
	Init
*/

function js_designer_init()
{
	// Billeder
	images = '';
	backgrounds = '';
	for (i = 0; i < js_designer_images.length; i++)
	{
		t = new tpl('image');
		t.set('ja_designer_module', js_designer_module);
		t.set('file', js_designer_images[i]);
		images += t.html();
		t = new tpl('background');
		t.set('ja_designer_module', js_designer_module);
		t.set('file', js_designer_images[i]);
		backgrounds += t.html();
	}	
	
	t = new tpl('layout');
	t.set('images', images);
	t.set('backgrounds', backgrounds);
	t.set('fonts', js_designer_fonts);
	t.set('width', js_designer_width);
	t.set('height', js_designer_height);
	t.htmlTo('js_designer_div');
	
	js_designer_set_data(js_designer_data);
	js_designer_redraw();
	
	t = new tpl('palette');
	t.set('a', '<td bgcolor="#');
	t.set('b', '"><img src="/modules/' + js_designer_module + '/img/15px.png" onclick="js_designer_choose_color(\'');
	t.set('c', '\')"></td>');
	t.htmlTo('div_palette');
	
	add_event_handler(document, 'mousemove', js_designer_mouse_move);
	add_event_handler(document, 'mouseup', js_designer_mouse_up);
	add_event_handler(document, 'mousedown', js_designer_mouse_down);
}

var js_designer_elements = Array();
var js_designer_background = '';
var js_designer_mouse_x = 0;
var js_designer_mouse_y = 0;
var js_designer_move_x = 0;
var js_designer_move_y = 0;
var js_designer_selected = -1;
var js_designer_move_active = false;
var js_designer_move_icon = false;
var js_designer_move_timeout = false;
var js_designer_resize_active = false;
var js_designer_resize_icon = false;
var js_designer_resize_timeout = false;
var js_designer_color_element = false;
var js_designer_palette_timeout = false;

document.write('<div id="js_designer_div"></div>');
onload = js_designer_init;

