var content_array_before={
	"content_image":				["element_image_modify", 				"edit image"],
	"content_image_set":			["element_image_set_modify", 			"edit content"],
	"content_image_set_title":		["element_title_modify", 				"edit constant title"],
	"content_image_set_text":		["element_text_modify", 				"edit constant text"],
	"content_image_set_element":	["element_image_set_element_modify",	"edit content"],
	"content_imtitle":				["element_imtitle_modify", 				"edit title"],
	"content_item_column":			["element_item_column_modify", 			"edit content"],
	"content_item_column_title":	["element_title_modify", 				"edit overall title"],
	"content_item_column_element":	["element_item_column_element_modify",	"edit content"],
	"content_link_column":			["element_link_column_modify", 			"edit content"],
	"content_link_column_title":	["element_title_modify", 				"edit overall title"],
	"content_link_column_element":	["element_link_column_element_modify",	"edit content"],
	"content_property_array":		["element_property_array_modify",		"edit content"],
	"content_property_array_data":	["element_property_array_data_modify",	"property data"],
	"content_text":					["element_text_modify", 				"edit text"],
	"content_text_image":			["element_text_image_modify",			"edit content"],
	"content_title":				["element_title_modify", 				"edit title"],
	"content_buy_item":				["buy_item_modify", 					"edit title/buy link"],
	"content_calendar":				["calendar_modify", 					"edit calendar link"],
	"menu_category_show":			["element_menu_category_show_specify",	"hide/show categories"],
	"menu_category_show2":			["element_menu2_category_show2_specify",	"hide/show categories"],
	"menu_category_title":			["element_menu_category_title_modify",	"rename categories"],
	"menu_category_sequence":		["element_menu_category_sequence_modify",	"set category sequence"],
	"link":							["element_ctr_link_modify",				"edit link"],
	"image_link":					["element_image_link_modify",			"edit link"],
	"cmpcat_id":					["element_cmpcat_id_modify",			"page reassign"],
	"show_on_pages":				["element_sw_category_array_modify",	"pages where shown"],
	"content_component":			["component_modify",					"edit content"]
	};
	
var format_array={
	"ctr":	[
		["element_ctr_size_modify",					"overall size"],
		["element_ctr_position_modify",				"position"],
		["element_ctr_color_code_modify", 			"text color (code)"],
		["element_ctr_color_palette_select", 		"text color (palette)"],
		["element_ctr_bkgd_color_code_modify", 		"bgnd color (code)"],
		["element_ctr_bkgd_color_palette_select", 	"bgnd color (palette)"],
		["element_ctr_border_modify",				"border"],
		["element_ctr_font_family_modify",			"font style"],
		["element_ctr_font_size_modify",			"font size"],
		["element_ctr_font_weight_modify",			"font weight"],
		["element_ctr_padding_modify",				"padding"],
		["element_ctr_text_align_modify",			"text alignment"],
		["element_ctr_text_decoration_modify",		"underline +"]
			],
	"title":	[
		["element_title_size_modify",				"box size"],
		["element_title_position_modify",			"position"],
		["element_title_color_code_modify", 		"text color (code)"],
		["element_title_color_palette_select", 		"text color (palette)"],
		["element_title_bkgd_color_code_modify", 	"bgnd color (code)"],
		["element_title_bkgd_color_palette_select", "bgnd color (palette)"],
		["element_title_border_modify",				"border"],
		["element_title_font_family_modify",		"font style"],
		["element_title_font_size_modify",			"font size"],
		["element_title_font_weight_modify",		"font weight"],
		["element_title_padding_modify",			"padding"],
		["element_title_text_align_modify",			"text alignment"],
		["element_title_text_decoration_modify",	"underline +"]
			],
	"item_column_title":	[
		["element_title_height_modify",				"title box height"],
		["element_title_color_code_modify", 		"text color (code)"],
		["element_title_color_palette_select", 		"text color (palette)"],
		["element_title_bkgd_color_code_modify", 	"bgnd color (code)"],
		["element_title_bkgd_color_palette_select", "bgnd color (palette)"],
		["element_title_border_modify",				"border"],
		["element_title_font_family_modify",		"font style"],
		["element_title_font_size_modify",			"font size"],
		["element_title_font_weight_modify",		"font weight"],
		["element_title_padding_modify",			"padding"],
		["element_title_text_align_modify",			"text alignment"],
		["element_title_text_decoration_modify",	"underline +"]
			],
	"link_column_title":	[
		["element_title_height_modify",				"title box height"],
		["element_title_color_code_modify", 		"text color (code)"],
		["element_title_color_palette_select", 		"text color (palette)"],
		["element_title_bkgd_color_code_modify", 	"bgnd color (code)"],
		["element_title_bkgd_color_palette_select", "bgnd color (palette)"],
		["element_title_border_modify",				"border"],
		["element_title_font_family_modify",		"font style"],
		["element_title_font_size_modify",			"font size"],
		["element_title_font_weight_modify",		"font weight"],
		["element_title_padding_modify",			"padding"],
		["element_title_text_align_modify",			"text alignment"],
		["element_title_text_decoration_modify",	"underline +"]
			],
	"link_set":	[
		["element_ctr_height_modify",				"link set height"],
		["element_ctr_color_code_modify", 			"text color (code)"],
		["element_ctr_color_palette_select", 		"text color (palette)"],
		["element_ctr_bkgd_color_code_modify", 		"bgnd color (code)"],
		["element_ctr_bkgd_color_palette_select", 	"bgnd color (palette)"],
		["element_ctr_border_modify",				"border"],
		["element_ctr_font_family_modify",			"font style"],
		["element_ctr_font_size_modify",			"font size"],
		["element_ctr_font_weight_modify",			"font weight"],
		["element_ctr_padding_modify",				"padding"],
		["element_ctr_text_align_modify",			"text alignment"],
		["element_ctr_text_decoration_modify",		"underline +"],
		["element_ctr_line_spacing_modify",			"line spacing"]
			],
	"imtitle":	[
		["element_title_size_modify",				"overall size"],
		["element_title_position_modify",			"position"],
		["element_title_color_code_modify", 		"text color (code)"],
		["element_title_color_palette_select", 		"text color (palette)"],
		["element_title_bkgd_color_code_modify", 	"bgnd color (code)"],
		["element_title_bkgd_color_palette_select", "bgnd color (palette)"],
		["element_ctr_font_file_modify",			"font style"],
		["element_title_font_size_modify",			"font size"]
			],
	"image": [
		["element_image_size_modify",				"image size"],
		["element_image_position_modify",			"position"],
		["element_image_border_modify",				"border"]
			],
	"image_float": [
		["element_image_size_modify",				"image size"],
		["element_image_border_modify",				"border"],
		["element_image_top_modify",				"spacing above image"],
		["element_ctr_float_modify",				"text/image layout"]
			],
	"menu_hz": [
		["element_ctr_size_modify",					"overall size"],
		["element_ctr_position_modify",				"position"],
		["element_ctr_color_code_modify", 			"text color (code)"],
		["element_ctr_color_palette_select", 		"text color (palette)"],
		["element_ctr_bkgd_color_code_modify", 		"bgnd color (code)"],
		["element_ctr_bkgd_color_palette_select", 	"bgnd color (palette)"],
		["element_ctr_border_modify",				"border"],
		["element_ctr_font_family_modify",			"font style"],
		["element_ctr_font_size_modify",			"font size"],
		["element_ctr_font_weight_modify",			"font weight"],
		["element_ctr_padding_modify",				"padding"],
		["element_ctr_text_align_modify",			"text alignment"],
		["element_ctr_text_decoration_modify",		"underline +"]
			],
	"menu_vt": [
		["element_ctr_size_modify",					"overall size"],
		["element_ctr_position_modify",				"position"],
		["element_ctr_color_code_modify", 			"text color (code)"],
		["element_ctr_color_palette_select", 		"text color (palette)"],
		["element_ctr_bkgd_color_code_modify", 		"bgnd color (code)"],
		["element_ctr_bkgd_color_palette_select", 	"bgnd color (palette)"],
		["element_ctr_border_modify",				"border"],
		["element_ctr_font_family_modify",			"font style"],
		["element_ctr_font_size_modify",			"font size"],
		["element_ctr_font_weight_modify",			"font weight"],
		["element_ctr_padding_modify",				"padding"],
		["element_ctr_text_align_modify",			"text alignment"],
		["element_ctr_text_decoration_modify",		"underline +"],
		["element_ctr_line_spacing_modify",			"line spacing"]
			],
	"text":	[
		["element_text_size_modify",				"text box size"],
		["element_text_position_modify",			"position"],
		["element_text_color_code_modify", 			"text color (code)"],
		["element_text_color_palette_select", 		"text color (palette)"],
		["element_text_bkgd_color_code_modify", 	"bgnd color (code)"],
		["element_text_bkgd_color_palette_select", 	"bgnd color (palette)"],
		["element_text_border_modify",				"border"],
		["element_text_font_family_modify",			"font style"],
		["element_text_font_size_modify",			"font size"],
		["element_text_font_weight_modify",			"font weight"],
		["element_text_padding_modify",				"padding"],
		["element_text_text_align_modify",			"text alignment"],
		["element_text_text_decoration_modify",		"underline +"]
			],
	"property_array_data":	[
		["element_text_size_modify",				"overall size"],
		["element_text_position_modify",			"position"],
		["element_text_color_code_modify", 			"text color (code)"],
		["element_text_color_palette_select", 		"text color (palette)"],
		["element_text_bkgd_color_code_modify", 	"bgnd color (code)"],
		["element_text_bkgd_color_palette_select", 	"bgnd color (palette)"],
		["element_text_border_modify",				"border"],
		["element_text_font_family_modify",			"font style"],
		["element_text_font_size_modify",			"font size"],
		["element_text_font_weight_modify",			"font weight"],
		["element_text_padding_modify",				"padding"],
		["element_text_text_align_modify",			"text alignment"],
		["element_text_text_decoration_modify",		"underline +"]
			],
	"tn_set":	[
		["element_tn_set_position_modify",			"position"],
		["element_tn_set_bkgd_color_code_modify", 	"bgnd color (code)"],
		["element_tn_set_bkgd_color_palette_select","bgnd color (palette)"],
		["element_tn_set_border_modify",			"border"],
		["element_tn_set_padding_modify",			"border padding"],
		["element_tn_set_num_cols_modify",			"number of columns"],
		["element_tn_set_spacing_modify",			"col/row spacing"],
		["element_tn_set_tn_size_modify",			"thumbnail size"],
		["element_sub_sequence_modify",				"image sequence"]
			],
	"table":	[
		["element_ctr_size_modify",					"overall size"],
		["element_ctr_position_modify",				"position"],
		["element_ctr_color_code_modify", 			"text color (code)"],
		["element_ctr_color_palette_select", 		"text color (palette)"],
		["element_ctr_bkgd_color_code_modify", 		"bgnd color (code)"],
		["element_ctr_bkgd_color_palette_select", 	"bgnd color (palette)"],
		["element_ctr_font_family_modify",			"font style"],
		["element_ctr_font_size_modify",			"font size"],
		["element_ctr_padding_modify",				"padding"]
			],
	"search":	[
		["element_ctr_size_modify",					"overall size"],
		["element_ctr_position_modify",				"position"],
		["element_ctr_bkgd_color_code_modify", 		"bgnd color (code)"],
		["element_ctr_bkgd_color_palette_select", 	"bgnd color (palette)"],
		["element_ctr_border_modify",				"border"]
			],
	"spec_cat":	[
		["element_ctr_size_modify",					"overall size"],
		["element_ctr_position_modify",				"position"],
		["element_ctr_bkgd_color_code_modify", 		"bgnd color (code)"],
		["element_ctr_bkgd_color_palette_select", 	"bgnd color (palette)"],
		["element_ctr_border_modify",				"border"],
		["element_ctr_padding_modify",				"padding"]
			],
	"component":	[
		["component_size_modify",					"overall size"],
		["component_position_modify",				"position"],
		["component_bkgd_color_code_modify", 		"bgnd color (code)"],
		["component_bkgd_color_palette_select", 	"bgnd color (palette)"],
		["component_border_modify",					"border"],
		["component_element_show_modify",			"show/hide cmp elem"],
		["component_category_array_modify",			"pages where shown"]
			],
	// a separate section is required for "cmp_list", because the data is 
	// recorded as category data, not element data as in the cases above.
	"cmp_list":	[
		["element_cmp_list_size_modify",					"overall size"],
		["element_cmp_list_position_modify",				"position"],
		["element_cmp_list_color_code_modify", 				"text color (code)"],
		["element_cmp_list_color_palette_select", 			"text color (palette)"],
		["element_cmp_list_bkgd_color_code_modify", 		"bgnd color (code)"],
		["element_cmp_list_bkgd_color_palette_select", 		"bgnd color (palette)"],
		["element_cmp_list_border_modify",					"border"],
		["element_cmp_list_padding_modify",					"padding"],
		["element_cmp_list_num_cols_modify",				"number of columns"],
		["element_cmp_list_spacing_modify",					"col/row spacing"],
		["element_cmp_list_font_family_modify",				"font style"],
		["element_cmp_list_font_size_modify",				"font size"],
		["element_cmp_list_font_weight_modify",				"font weight"],
		["element_cmp_list_text_align_modify",				"text alignment"],
		["element_cmp_list_text_decoration_modify",			"underline +"]
			],
	"cmp_list_highlight": [
		["element_cmp_list_bkgd_color2_code_modify", 		"selected bgnd color (code)"],
		["element_cmp_list_bkgd_color2_palette_select", 	"selected bgnd color (palette)"],
		["element_cmp_list_color2_code_modify", 			"selected text color (code)"],
		["element_cmp_list_color2_palette_select", 			"selected text color (palette)"]
			]
	 };

var misc_array_after={
	"zIndex":					["element_ctr_z_index_modify",		"z-layer"],
	"layout":					["element_ctr_float_modify",		"text/image layout"],
	"subelem_sequence":			["element_sub_sequence_modify",		"subelement sequence"],
	"item_sequence":			["element_sub_sequence_modify",		"item sequence"],
	"linkset_sequence":			["element_sub_sequence_modify",		"link set sequence"],
	"e_link_sequence":			["element_e_link_sequence_modify",	"link sequence"],
	"menu_highlight":			["element_menu_highlight_modify",	"selection highlighting"],
	"element_subelem_tsi_save":	["element_subelem_tsi_save",		"save subelement template"]
	};
	
//function show_menu(iconNode, elem_z_index, menu_id, edit_array_name, elem_id) {
//	iconNode.parentNode.parentNode.style.zIndex=10000;
function show_menu(menu_id, content_set_before, format_array_name, misc_set_after, 
				   elem_id, top_type, subelem_div_id) {
	if(!top_type) top_type="element";
	if(!subelem_div_id) subelem_div_id=null;
	
	var menu = document.getElementById(menu_id);
	menu.parentNode.parentNode.parentNode.style.zIndex+=1000;
	if(subelem_div_id !== null) {
		subelem = document.getElementById(subelem_div_id);
		subelem.style.zIndex+=1000;
	}
	menu.style.width="150px"; 
	menu.style.height="200px"; 
	menu.style.zIndex="10000";
	menu.style.overflow="auto"; 
	menu.style.padding="0px 5px"; 
	menu.style.backgroundColor="#eeeefe";	
	var menu_format_array = format_array[format_array_name];
	var divNode={};
	var aNode={};
	var textNode={};
	var href='';
	var done_once = false;
	if(!menu.hasChildNodes()) { // prevents duplicating the menu
	// Note that there must be NO SPACES OR TEXT in this div in the html, either of
	// which would be detected by Firefox as a child text node, causing this test to fail.
		if(content_set_before!='void') {
			for(i=0; i<content_set_before.length; i++) {
				divNode = document.createElement("div");
				divNode.style.position="relative";
				divNode.style.fontWeight="normal";
				divNode.style.fontSize="11px";
				divNode.style.padding="3px 0px";
				aNode = document.createElement("a");
				aNode.target="_self";
				if(top_type=='element') {
					href="?view=site_admin&manage=element&todo="+content_array_before[content_set_before[i]][0];
					href+="&element_id="+elem_id;
				} else if(top_type=='subelem') {
					href="?view=site_admin&manage=element&todo="+content_array_before[content_set_before[i]][0];
					href+="&subelem_id="+elem_id;
				} else if(top_type=='component') {
					href="?view=site_admin&manage=component&todo="+content_array_before[content_set_before[i]][0];
					href+="&component_id="+elem_id;
				}
				aNode.href=href;
				textNode = document.createTextNode(content_array_before[content_set_before[i]][1]);
				aNode.appendChild(textNode);
				divNode.appendChild(aNode);
				menu.appendChild(divNode);
			}
		}
		if(format_array_name!='void') {
			for(i=0; i<menu_format_array.length; i++) {
				divNode = document.createElement("div");
				divNode.style.position="relative";
				divNode.style.fontWeight="normal";
				divNode.style.fontSize="11px";
				divNode.style.padding="3px 0px";
				aNode = document.createElement("a");
				aNode.target="_self";
				if(top_type=='element') {
					href="?view=site_admin&manage=element&todo="+menu_format_array[i][0];
					href+="&element_id="+elem_id;
				} else if(top_type=='subelem') {
					href="?view=site_admin&manage=element&todo="+menu_format_array[i][0];
					href+="&subelem_id="+elem_id;
				} else if(top_type=='component') {
					href="?view=site_admin&manage=component&todo="+menu_format_array[i][0];
					href+="&component_id="+elem_id;
				}
				aNode.href=href;
				textNode = document.createTextNode(menu_format_array[i][1]);
				aNode.appendChild(textNode);
				divNode.appendChild(aNode);
				menu.appendChild(divNode);
			}
		}
		if(misc_set_after!='void') {
			for(i=0; i<misc_set_after.length; i++) {
				divNode = document.createElement("div");
				divNode.style.position="relative";
				divNode.style.fontWeight="normal";
				divNode.style.fontSize="11px";
				divNode.style.padding="3px 0px";
				aNode = document.createElement("a");
				aNode.target="_self";
				if(top_type=='element') {
					href="?view=site_admin&manage=element&todo="+misc_array_after[misc_set_after[i]][0];
					href+="&element_id="+elem_id;
				} else if(top_type=='subelem') {
					href="?view=site_admin&manage=element&todo="+misc_array_after[misc_set_after[i]][0];
					href+="&subelem_id="+elem_id;
				} else if(top_type=='component') {
					href="?view=site_admin&manage=component&todo="+misc_array_after[misc_set_after[i]][0];
					href+="&component_id="+elem_id;
				}
				aNode.href=href;
				textNode = document.createTextNode(misc_array_after[misc_set_after[i]][1]);
				aNode.appendChild(textNode);
				divNode.appendChild(aNode);
				menu.appendChild(divNode);
			}
		}
	}
	menu.style.display='block';
}

function hide_menu(menu_id, orig_z_index, subelem_div_id, subelem_z_index) {
	if(!subelem_div_id) subelem_div_id=null;
	if(!subelem_z_index) subelem_z_index = 0;
	menu = document.getElementById(menu_id);
	// this sets the z-index of the dotted line div
	menu.parentNode.parentNode.style.zIndex=orig_z_index;
	// this sets the z-index for the div that holds the element.
	menu.parentNode.parentNode.parentNode.style.zIndex=orig_z_index;
	if(subelem_div_id !== null) {
		subelem = document.getElementById(subelem_div_id);
		subelem.style.zIndex = subelem_z_index;
	}
	menu.style.display='none';
}

function set_input_image(input_cbx) {
	if(input_cbx.checked) {	
		document.getElementById('image').disabled=true;
		document.getElementById('image_width').disabled=true;
		document.getElementById('image_height').disabled=true;
		document.getElementById('image_left').disabled=true;
		document.getElementById('image_top').disabled=true;
} else {
		document.getElementById('image').disabled=false;
		document.getElementById('image_width').disabled=false;
		document.getElementById('image_height').disabled=false;
		document.getElementById('image_left').disabled=false;
		document.getElementById('image_top').disabled=false;
	}
}

/* Drag.js: drag absolutely positioned HTML elements. --------------------- 
 *
 * This module defines a single drag() function that is designed to be called
 * from an onmousedown event handler.  Subsequent mousemove events will
 * move the specified element. A mouseup event will terminate the drag.
 * If the element is dragged off the screen, the window does not scroll.
 * This implementation works with both the DOM Level 2 event model and the
 * IE event model.
 * 
 * Arguments:
 *
 *   elementToDrag:  the element that received the mousedown event or
 *     some containing element. It must be absolutely positioned.  Its 
 *     style.left and style.top values will be changed based on the user's
 *     drag.
 *
 *   event: the Event object for the mousedown event.
 **/
 
function drag(elementToDrag, event, id, field_type, cc_id, element_padding) {
	if(!element_padding) element_padding=0;
    // The mouse position (in window coordinates)
    // at which the drag begins 
    var startX = event.clientX, startY = event.clientY;    

    // The original position (in document coordinates) of the
    // element that is going to be dragged.  Since elementToDrag is 
    // absolutely positioned, we assume that its offsetParent is the
    // document body.
    var origX = elementToDrag.offsetLeft, origY = elementToDrag.offsetTop;

    // Even though the coordinates are computed in different 
    // coordinate systems, we can still compute the difference between them
    // and use it in the moveHandler() function.  This works because
    // the scrollbar position never changes during the drag.
    var deltaX = startX - origX, deltaY = startY - origY;

    // Register the event handlers that will respond to the mousemove events
    // and the mouseup event that follow this mousedown event.  
    if (document.addEventListener) {  // DOM Level 2 event model
        // Register capturing event handlers
        document.addEventListener("mousemove", moveHandler, true);
        document.addEventListener("mouseup", upHandler, true);
    }
    else if (document.attachEvent) {  // IE 5+ Event Model
        // In the IE event model, we capture events by calling
        // setCapture() on the element to capture them.
        elementToDrag.setCapture();
        elementToDrag.attachEvent("onmousemove", moveHandler);
        elementToDrag.attachEvent("onmouseup", upHandler);
        // Treat loss of mouse capture as a mouseup event
        elementToDrag.attachEvent("onlosecapture", upHandler);
    }
    else {  // IE 4 Event Model
        // In IE 4 we can't use attachEvent() or setCapture(), so we set
        // event handlers directly on the document object and hope that the
        // mouse events we need will bubble up.  
        var oldmovehandler = document.onmousemove; // used by upHandler() 
        var olduphandler = document.onmouseup;
        document.onmousemove = moveHandler;
        document.onmouseup = upHandler;
    }

    // We've handled this event. Don't let anybody else see it.  
    if (event.stopPropagation) event.stopPropagation();  // DOM Level 2
    else event.cancelBubble = true;                      // IE

    // Now prevent any default action.
    if (event.preventDefault) event.preventDefault();   // DOM Level 2
    else event.returnValue = false;                     // IE

    /**
     * This is the handler that captures mousemove events when an element
     * is being dragged. It is responsible for moving the element.
     **/
    function moveHandler(e) {
        if (!e) e = window.event;  // IE Event Model

        // Move the element to the current mouse position, adjusted as
        // necessary by the offset of the initial mouse-click.
        elementToDrag.style.left = (e.clientX - deltaX - element_padding) + "px";
        elementToDrag.style.top = (e.clientY - deltaY - element_padding) + "px";
//        elementToDrag.parentNode.style.left = (parseInt(elementToDrag.style.left)-element_padding) + 'px';
//        elementToDrag.parentNode.style.top = (parseInt(elementToDrag.style.top)-element_padding) + 'px';

// And don't let anyone else see this event.
        if (e.stopPropagation) e.stopPropagation();  // DOM Level 2
        else e.cancelBubble = true;                  // IE
    }

    /**
     * This is the handler that captures the final mouseup event that
     * occurs at the end of a drag.
     **/
    function upHandler(e) {

        if (!e) e = window.event;  // IE Event Model
        // Unregister the capturing event handlers.
        if (document.removeEventListener) {  // DOM event model
            document.removeEventListener("mouseup", upHandler, true);
            document.removeEventListener("mousemove", moveHandler, true);
        }
        else if (document.detachEvent) {  // IE 5+ Event Model
            elementToDrag.detachEvent("onlosecapture", upHandler);
            elementToDrag.detachEvent("onmouseup", upHandler);
            elementToDrag.detachEvent("onmousemove", moveHandler);
            elementToDrag.releaseCapture();
        }
        else {  // IE 4 Event Model
            // Restore the original handlers, if any
            document.onmouseup = olduphandler;
            document.onmousemove = oldmovehandler;
        }

        // And don't let the event propagate any further.
        if (e.stopPropagation) e.stopPropagation();  // DOM Level 2
        else e.cancelBubble = true;                  // IE
		
		// Drag specifications required:
		//	1. The element to be dragged must be absolutely positioned
		//  2. The "element_id" provided must correspond to the element
		//     which is being dragged, either in whole or text/image only.
		if(field_type == 1) 		{ // drag the containing box
			get_url = '?view=site_admin&manage=element&todo=element_drag_get';
			get_url += '&element_id=' + id;
			get_url += '&element_left=' + elementToDrag.style.left;
			get_url += '&element_top=' + elementToDrag.style.top;
		} else if(field_type == 2) 	{ // drag the title box
			get_url = '?view=site_admin&manage=element&todo=element_drag_get';
			get_url += '&element_id=' + id;
			get_url += '&element_title_left=' + elementToDrag.style.left;
			get_url += '&element_title_top=' + elementToDrag.style.top;
		} else if(field_type == 3) 	{ // drag the image
			get_url = '?view=site_admin&manage=element&todo=element_drag_get';
			get_url += '&element_id=' + id;
			get_url += '&element_image_left=' + elementToDrag.style.left;
			get_url += '&element_image_top=' + elementToDrag.style.top;
		} else if(field_type == 4) 	{ // drag the text box
			get_url = '?view=site_admin&manage=element&todo=element_drag_get';
			get_url += '&element_id=' + id;
			get_url += '&element_text_left=' + elementToDrag.style.left;
			get_url += '&element_text_top=' + elementToDrag.style.top;
		} else if(field_type == 13) 	{ // drag the tn box
			get_url = '?view=site_admin&manage=element&todo=element_drag_get';
			get_url += '&element_id=' + id;
			get_url += '&element_tn_set_left=' + elementToDrag.style.left;
			get_url += '&element_tn_set_top=' + elementToDrag.style.top;
		} else if(field_type == 5) 	{  // drag the sw_container element in a category page
			get_url = '?view=site_admin&manage=element&todo=element_drag_get';
			get_url += '&element_id=' + id;
			get_url += '&element_left=' + elementToDrag.style.left;
			get_url += '&element_top=' + elementToDrag.style.top;
			get_url += '&category_id=' + cc_id;
		} else if(field_type == 6) 	{  // drag the sw_container element in a component page
			get_url = '?view=site_admin&manage=element&todo=element_drag_get';
			get_url += '&element_id=' + id;
			get_url += '&element_left=' + elementToDrag.style.left;
			get_url += '&element_top=' + elementToDrag.style.top;
			get_url += '&component_id=' + cc_id;
		} else if(field_type == 7) 	{  // drag a sw_title/sw_imtitle in a category page
			get_url = '?view=site_admin&manage=element&todo=element_drag_get';
			get_url += '&element_id=' + id;
			get_url += '&element_title_left=' + elementToDrag.style.left;
			get_url += '&element_title_top=' + elementToDrag.style.top;
			get_url += '&category_id=' + cc_id;
		} else if(field_type == 8) 	{  // drag a sw_title/sw_imtitle in a component page
			get_url = '?view=site_admin&manage=element&todo=element_drag_get';
			get_url += '&element_id=' + id;
			get_url += '&element_title_left=' + elementToDrag.style.left;
			get_url += '&element_title_top=' + elementToDrag.style.top;
			get_url += '&component_id=' + cc_id;
		} else if(field_type == 9) 	{  // drag a sw_image/sw_imimage in a category page
			get_url = '?view=site_admin&manage=element&todo=element_drag_get';
			get_url += '&element_id=' + id;
			get_url += '&element_image_left=' + elementToDrag.style.left;
			get_url += '&element_image_top=' + elementToDrag.style.top;
			get_url += '&category_id=' + cc_id;
		} else if(field_type == 10) 	{  // drag a sw_image/sw_imimage in a component page
			get_url = '?view=site_admin&manage=element&todo=element_drag_get';
			get_url += '&element_id=' + id;
			get_url += '&element_image_left=' + elementToDrag.style.left;
			get_url += '&element_image_top=' + elementToDrag.style.top;
			get_url += '&component_id=' + cc_id;
		} else if(field_type == 11) 	{  // drag a sw_text or sw_text or cmppg_text in a category page
			get_url = '?view=site_admin&manage=element&todo=element_drag_get';
			get_url += '&element_id=' + id;
			get_url += '&element_text_left=' + elementToDrag.style.left;
			get_url += '&element_text_top=' + elementToDrag.style.top;
			get_url += '&category_id=' + cc_id;
		} else if(field_type == 12) 	{  // drag a sw_text or sw_text or cmppg_text in a component page
			get_url = '?view=site_admin&manage=element&todo=element_drag_get';
			get_url += '&element_id=' + id;
			get_url += '&element_text_left=' + elementToDrag.style.left;
			get_url += '&element_text_top=' + elementToDrag.style.top;
			get_url += '&component_id=' + cc_id;
		} else if(field_type == 100) 	{  // drag a component
			get_url = '?view=site_admin&manage=component&todo=component_drag_get';
			get_url += '&component_id=' + id;
			get_url += '&component_left=' + elementToDrag.style.left;
			get_url += '&component_top=' + elementToDrag.style.top;
		}
		window.location.href=get_url;
    }
}
/* end of drag.js ---------------------------------------------------------- */

/* resize.js --------------------------------------------------------------- */
function resize(elementToDrag, event, id, field_type, cc_id, element_padding, move_x) {
	if(move_x!==false) move_x=true;
	if(!element_padding) element_padding=0;
    // The mouse position (in window coordinates)
    // at which the drag begins 
    var startX = event.clientX, startY = event.clientY;    

	// The original position (in document coordinates) of the
    // element that is going to be dragged.  
    var origX = elementToDrag.offsetLeft; 
	var origY = elementToDrag.offsetTop;

	// Even though the coordinates are computed in different 
    // coordinate systems, we can still compute the difference between them
    // and use it in the moveHandler() function.  This works because
    // the scrollbar position never changes during the drag.
    var deltaX = startX - origX, deltaY = startY - origY;

    // Register the event handlers that will respond to the mousemove events
    // and the mouseup event that follow this mousedown event.  
    if (document.addEventListener) {  // DOM Level 2 event model
        // Register capturing event handlers
        document.addEventListener("mousemove", moveHandler, true);
        document.addEventListener("mouseup", upHandler, true);
    }
    else if (document.attachEvent) {  // IE 5+ Event Model
        // In the IE event model, we capture events by calling
        // setCapture() on the element to capture them.
        elementToDrag.setCapture();
        elementToDrag.attachEvent("onmousemove", moveHandler);
        elementToDrag.attachEvent("onmouseup", upHandler);
        // Treat loss of mouse capture as a mouseup event
        elementToDrag.attachEvent("onlosecapture", upHandler);
    }
    else {  // IE 4 Event Model
        // In IE 4 we can't use attachEvent() or setCapture(), so we set
        // event handlers directly on the document object and hope that the
        // mouse events we need will bubble up.  
        var oldmovehandler = document.onmousemove; // used by upHandler() 
        var olduphandler = document.onmouseup;
        document.onmousemove = moveHandler;
        document.onmouseup = upHandler;
    }

    // We've handled this event. Don't let anybody else see it.  
    if (event.stopPropagation) event.stopPropagation();  // DOM Level 2
    else event.cancelBubble = true;                      // IE

    // Now prevent any default action.
    if (event.preventDefault) event.preventDefault();   // DOM Level 2
    else event.returnValue = false;                     // IE

    /**
     * This is the handler that captures mousemove events when an element
     * is being dragged. It is responsible for moving the element.
     **/
    function moveHandler(e) {
        if (!e) e = window.event;  // IE Event Model
        // Move the element to the current mouse position, adjusted as
        // necessary by the offset of the initial mouse-click.
		if(move_x) elementToDrag.style.left = (e.clientX - deltaX) + "px";
		elementToDrag.style.top = (e.clientY - deltaY) + "px";
        if(move_x) elementToDrag.parentNode.style.width = (parseInt(elementToDrag.style.left)+parseInt(elementToDrag.style.width)-2*element_padding) + 'px';
        elementToDrag.parentNode.style.height = (parseInt(elementToDrag.style.top)+parseInt(elementToDrag.style.height)-2*element_padding) + 'px';
        // And don't let anyone else see this event.
        if (e.stopPropagation) e.stopPropagation();  // DOM Level 2
        else e.cancelBubble = true;                  // IE
    }

    /**
     * This is the handler that captures the final mouseup event that
     * occurs at the end of a drag.
     **/
    function upHandler(e) {
        if (!e) e = window.event;  // IE Event Model

		// Unregister the capturing event handlers.
        if (document.removeEventListener) {  // DOM event model
            document.removeEventListener("mouseup", upHandler, true);
            document.removeEventListener("mousemove", moveHandler, true);
        }
        else if (document.detachEvent) {  // IE 5+ Event Model
            elementToDrag.detachEvent("onlosecapture", upHandler);
            elementToDrag.detachEvent("onmouseup", upHandler);
            elementToDrag.detachEvent("onmousemove", moveHandler);
            elementToDrag.releaseCapture();
        }
        else {  // IE 4 Event Model
            // Restore the original handlers, if any
            document.onmouseup = olduphandler;
            document.onmousemove = oldmovehandler;
        }

        // And don't let the event propagate any further.
        if (e.stopPropagation) e.stopPropagation();  // DOM Level 2
        else e.cancelBubble = true;                  // IE

		if(field_type == 1) { // resize the containing box
			get_url = '?view=site_admin&manage=element&todo=element_resize_get';
			get_url += '&element_id=' + id;
			get_url += '&element_width=' + parseInt(elementToDrag.parentNode.style.width);
			get_url += '&element_height=' + parseInt(elementToDrag.parentNode.style.height);
		}
		else if(field_type == 2) { // resize the title
			get_url = '?view=site_admin&manage=element&todo=element_resize_get';
			get_url += '&element_id=' + id;
			get_url += '&element_title_width=' + parseInt(elementToDrag.parentNode.style.width);
			get_url += '&element_title_height=' + parseInt(elementToDrag.parentNode.style.height);
		}
		else if (field_type == 3) { // resize the image
			get_url = '?view=site_admin&manage=element&todo=element_resize_get';
			get_url += '&element_id=' + id;
			get_url += '&element_image_width=' + parseInt(elementToDrag.parentNode.style.width);
			get_url += '&element_image_height=' + parseInt(elementToDrag.parentNode.style.height);
		}
		else if(field_type == 4) { // resize the text box
			get_url = '?view=site_admin&manage=element&todo=element_resize_get';
			get_url += '&element_id=' + id;
			get_url += '&element_text_width=' + parseInt(elementToDrag.parentNode.style.width);
			get_url += '&element_text_height=' + parseInt(elementToDrag.parentNode.style.height);
		}
		else if(field_type == 5) { // resize the sw_container element in a category page
			get_url = '?view=site_admin&manage=element&todo=element_resize_get';
			get_url += '&element_id=' + id;
			get_url += '&element_width=' + parseInt(elementToDrag.parentNode.style.width);
			get_url += '&element_height=' + parseInt(elementToDrag.parentNode.style.height);
			get_url += '&category_id=' + cc_id;
		}
		else if(field_type == 6) { // resize the sw_container element in a component page
			get_url = '?view=site_admin&manage=element&todo=element_resize_get';
			get_url += '&element_id=' + id;
			get_url += '&element_width=' + parseInt(elementToDrag.parentNode.style.width);
			get_url += '&element_height=' + parseInt(elementToDrag.parentNode.style.height);
			get_url += '&component_id=' + cc_id;
		}
		else if(field_type == 7) { // resize a sw_title/sw_imtitle element in a category page
			get_url = '?view=site_admin&manage=element&todo=element_resize_get';
			get_url += '&element_id=' + id;
			get_url += '&element_title_width=' + parseInt(elementToDrag.parentNode.style.width);
			get_url += '&element_title_height=' + parseInt(elementToDrag.parentNode.style.height);
			get_url += '&category_id=' + cc_id;
		}
		else if(field_type == 8) { // resize a sw_title/sw_imtitle element in a component page
			get_url = '?view=site_admin&manage=element&todo=element_resize_get';
			get_url += '&element_id=' + id;
			get_url += '&element_title_width=' + parseInt(elementToDrag.parentNode.style.width);
			get_url += '&element_title_height=' + parseInt(elementToDrag.parentNode.style.height);
			get_url += '&component_id=' + cc_id;
		}
		else if(field_type == 9) { // resize a sw_image/sw_imimage element in a category page
			get_url = '?view=site_admin&manage=element&todo=element_resize_get';
			get_url += '&element_id=' + id;
			get_url += '&element_image_width=' + parseInt(elementToDrag.parentNode.style.width);
			get_url += '&element_image_height=' + parseInt(elementToDrag.parentNode.style.height);
			get_url += '&category_id=' + cc_id;
		}
		else if(field_type == 10) { // resize a sw_image/sw_imimage element in a component page
			get_url = '?view=site_admin&manage=element&todo=element_resize_get';
			get_url += '&element_id=' + id;
			get_url += '&element_image_width=' + parseInt(elementToDrag.parentNode.style.width);
			get_url += '&element_image_height=' + parseInt(elementToDrag.parentNode.style.height);
			get_url += '&component_id=' + cc_id;
		}
		else if(field_type == 11) { // resize a sw_text or sw_text or cmppg_text in a category page
			get_url = '?view=site_admin&manage=element&todo=element_resize_get';
			get_url += '&element_id=' + id;
			get_url += '&element_text_width=' + parseInt(elementToDrag.parentNode.style.width);
			get_url += '&element_text_height=' + parseInt(elementToDrag.parentNode.style.height);
			get_url += '&category_id=' + cc_id;
		}
		else if(field_type == 12) { // resize a sw_text or sw_text or cmppg_text in a component page
			get_url = '?view=site_admin&manage=element&todo=element_resize_get';
			get_url += '&element_id=' + id;
			get_url += '&element_text_width=' + parseInt(elementToDrag.parentNode.style.width);
			get_url += '&element_text_height=' + parseInt(elementToDrag.parentNode.style.height);
			get_url += '&component_id=' + cc_id;
		}
		else if(field_type == 100) { // resize a component
			get_url = '?view=site_admin&manage=component&todo=component_resize_get';
			get_url += '&component_id=' + id;
			get_url += '&component_width=' + parseInt(elementToDrag.parentNode.style.width);
			get_url += '&component_height=' + parseInt(elementToDrag.parentNode.style.height);
		}
		window.location.href=get_url;
	}
}
/* end of resize.js -------------------------------------------------------- */

function drag_cell_border(elementToDrag, table_id, curr_cell_id, neighbor_id, event, hv) {
	if(document.all) {
		var table = document.all['table'+table_id];
		var curr_cell = document.all['tc'+curr_cell_id];
		if(neighbor_id != 0) var neighbor = document.all['tc'+neighbor_id];
	} else {
		var table = document.getElementById('table'+table_id);
		var curr_cell = document.getElementById('tc'+curr_cell_id);
		if(neighbor_id != 0) var neighbor = document.getElementById('tc'+neighbor_id);
	}
	
	// Get the original position of the handle
	var etd_orig_left = elementToDrag.style.left;
	var etd_orig_top = elementToDrag.style.top;
	
	// Get the original dimensions of the table
	var table_orig_width = table.style.width;
	var table_orig_height = table.style.height
//	var table_final_width = '';
//	var table_final_height = '';
	
	// Get the original dimensions of the current cell
	var curr_cell_orig_width = curr_cell.style.width;
	var curr_cell_orig_height = curr_cell.style.height;
//	var curr_cell_final_width = '';
//	var curr_cell_final_height = '';

	// Get the original dimensions of the neighboring cell
	if(neighbor_id != 0) {
		var neighbor_orig_width = neighbor.style.width;
		var neighbor_orig_height = neighbor.style.height;
	//	var neighbor_final_width = '';
	//	var neighbor_final_height = '';
	}

	// The mouse position (in window coordinates)
    // at which the drag begins 
    var startX = event.clientX, startY = event.clientY;    

    // The original position (in document coordinates) of the
    // element that is going to be dragged.  Since elementToDrag is 
    // absolutely positioned, we assume that its offsetParent is the
    // document body.
    var origX = elementToDrag.offsetLeft, origY = elementToDrag.offsetTop;

	// Even though the coordinates are computed in different 
    // coordinate systems, we can still compute the difference between them
    // and use it in the moveHandler() function.  This works because
    // the scrollbar position never changes during the drag.
    var deltaX = startX - origX, deltaY = startY - origY;

    // Register the event handlers that will respond to the mousemove events
    // and the mouseup event that follow this mousedown event.  
    if (document.addEventListener) {  // DOM Level 2 event model
        // Register capturing event handlers
        document.addEventListener("mousemove", moveHandler, true);
        document.addEventListener("mouseup", upHandler, true);
    }
    else if (document.attachEvent) {  // IE 5+ Event Model
        // In the IE event model, we capture events by calling
        // setCapture() on the element to capture them.
        elementToDrag.setCapture();
        elementToDrag.attachEvent("onmousemove", moveHandler);
        elementToDrag.attachEvent("onmouseup", upHandler);
        // Treat loss of mouse capture as a mouseup event
        elementToDrag.attachEvent("onlosecapture", upHandler);
    }
    else {  // IE 4 Event Model
        // In IE 4 we can't use attachEvent() or setCapture(), so we set
        // event handlers directly on the document object and hope that the
        // mouse events we need will bubble up.  
        var oldmovehandler = document.onmousemove; // used by upHandler() 
        var olduphandler = document.onmouseup;
        document.onmousemove = moveHandler;
        document.onmouseup = upHandler;
    }

    // We've handled this event. Don't let anybody else see it.  
    if (event.stopPropagation) event.stopPropagation();  // DOM Level 2
    else event.cancelBubble = true;                      // IE

    // Now prevent any default action.
    if (event.preventDefault) event.preventDefault();   // DOM Level 2
    else event.returnValue = false;                     // IE

    /**
     * This is the handler that captures mousemove events when an element
     * is being dragged. It is responsible for moving the element.
     **/
    function moveHandler(e) {
        if (!e) e = window.event;  // IE Event Model

        // Move the element to the current mouse position, and adjust the width
		// and height of the current cell and its neighbor as necessary.
		if(hv=="h") {
			if(neighbor_id != 0) {
				var joint_cell_w = parseInt(curr_cell.style.width) + parseInt(neighbor.style.width);
				elementToDrag.style.left = (e.clientX - deltaX) + "px";
				curr_cell.style.width = elementToDrag.style.left;
				neighbor.style.width = (joint_cell_w - parseInt(elementToDrag.style.left)) + "px";
			} else {
				elementToDrag.style.left = (e.clientX - deltaX) + "px";
				curr_cell.style.width = (e.clientX - deltaX) + "px";
//				curr_cell.style.width = elementToDrag.style.left;
				table.style.width = (parseInt(table_orig_width) + parseInt(curr_cell.style.width) - parseInt(curr_cell_orig_width)) + "px";
			}
		} else {
			if(neighbor_id != 0) {
				var joint_cell_h = parseInt(curr_cell.style.height) + parseInt(neighbor.style.height);
				elementToDrag.style.top = (e.clientY - deltaY) + "px";
				curr_cell.style.height = elementToDrag.style.top;
				neighbor.style.height = (joint_cell_h - parseInt(elementToDrag.style.top)) + "px";
			} else {
				elementToDrag.style.top = (e.clientY - deltaY) + "px";
				curr_cell.style.height = elementToDrag.style.top;
				table.style.height = (parseInt(table_orig_height) + parseInt(curr_cell.style.height) - parseInt(curr_cell_orig_height)) + "px";
			}
		}
		
// And don't let anyone else see this event.
        if (e.stopPropagation) e.stopPropagation();  // DOM Level 2
        else e.cancelBubble = true;                  // IE
    }

    /**
     * This is the handler that captures the final mouseup event that
     * occurs at the end of a drag.
     **/
    function upHandler(e) {
        if (!e) e = window.event;  // IE Event Model
        // Unregister the capturing event handlers.
        if (document.removeEventListener) {  // DOM event model
            document.removeEventListener("mouseup", upHandler, true);
            document.removeEventListener("mousemove", moveHandler, true);
        }
        else if (document.detachEvent) {  // IE 5+ Event Model
            elementToDrag.detachEvent("onlosecapture", upHandler);
            elementToDrag.detachEvent("onmouseup", upHandler);
            elementToDrag.detachEvent("onmousemove", moveHandler);
            elementToDrag.releaseCapture();
        }
        else {  // IE 4 Event Model
            // Restore the original handlers, if any
            document.onmouseup = olduphandler;
            document.onmousemove = oldmovehandler;
        }

        // And don't let the event propagate any further.
        if (e.stopPropagation) e.stopPropagation();  // DOM Level 2
        else e.cancelBubble = true;                  // IE
		
		dx = e.clientX - etd_orig_left;
//		alert(table.style.width);
//		alert(elementToDrag.style.left);
		
//	alert('elementToDrag.id = ' + elementToDrag.id + '\n' +
//		  'table_id = ' + table_id + '\n' +
//		  'neighbor_id = ' + neighbor_id + '\n' +
//		  'hv = ' + hv);

// Specify the action taken when the drag is complete.
		// Drag specifications required:
		//	1. The element to be dragged must be absolutely positioned
		//  2. The "element_id" provided must correspond to the element
		//     which is being dragged, either in whole or text/image only.
		if(hv=="h") {
			if(neighbor_id != 0) {
				get_url = '?view=site_admin&manage=element&todo=e_table_dimens_update';
				get_url +=  '&element_id=' + table_id +
							'&table_w=' + parseInt(table.style.width) +
							'&cc_id=' + curr_cell_id +
							'&cc_w=' + parseInt(curr_cell.style.width) +
							'&nbr_id=' + neighbor_id +
							'&nbr_w='  + parseInt(neighbor.style.width);
			} else {
				get_url = '?view=site_admin&manage=element&todo=e_table_dimens_update';
				get_url +=  '&element_id=' + table_id +
							'&table_w=' + parseInt(table.style.width) +
							'&cc_id=' + curr_cell_id +
							'&cc_w=' + parseInt(curr_cell.style.width);
			}
		} else {
			if(neighbor_id != 0) {
				get_url = '?view=site_admin&manage=element&todo=e_table_dimens_update';
				get_url +=  '&element_id=' + table_id +
							'&table_h=' + parseInt(table.style.height) +
							'&cc_id=' + curr_cell_id +
							'&cc_h=' + parseInt(curr_cell.style.height) +
							'&nbr_id=' + neighbor_id +
							'&nbr_h='  + parseInt(neighbor.style.height);
			} else {
				get_url = '?view=site_admin&manage=element&todo=e_table_dimens_update';
				get_url +=  '&element_id=' + table_id +
							'&table_h=' + parseInt(table.style.height) +
							'&cc_id=' + curr_cell_id +
							'&cc_h=' + parseInt(curr_cell.style.height);
			}
		}
		window.location.href=get_url;
    }
	
}
/* end of drag_cell_border.js ---------------------------------------------------------- */

function table_cell_modify(id) {
	request = "?view=site_admin&manage=element&todo=e_table_cell_modify&e_table_cell_id="+id;
	window.location.href=request;
}


