var htmlAreaObj;
var cp;
var wrapFld;
var ieSel;
var ieBookmark;
var ieRange;
var selHTML;
var haElm, haW, haH, haX, haY;
var haLink = null;
var haPage = 0;
var haContElmId = 0;
var haMediaW = null;
var haMediaH = null;
var haPanel = null;
var	optNavTree = new Array();
var	ddCtrlSelNav;
var	ddCtrlSelPage;

var _editor_url = PATH + '__miracle/lib/htmlarea/';

function haGenerate(elm,w,h) {
		
	//isSubPanelActive = true;
	haContElmId = layers[elm.elmNum]['cid'];
	haElm = elm;
	var disp = document.getElementById('disp_'+elm.elmName);
	var edit = document.getElementById('edit_'+elm.elmName);
	var editHTML = '<textarea id="riHTMLArea" style="position:absolute;left:0px;top:0px;width:'+(w)+'px;height:'+(h)+'px;">';
	editHTML += nl_decode(disp.innerHTML) + '</textarea>';

	// translate non breaking spaces before entering htmlarea
	// this makes sure these spaces are not converted to regular spaces and hence disappear in HTML rendering
	// which is what FF/Moz does with &nbsp; once designmode is set to ON
	editHTML = editHTML.replace(/nbsp;/g,'_NBSP_');  
	
	edit.innerHTML = editHTML;
	disp.style.display = 'none';
	edit.style.display = 'block';
	haObj = new HTMLArea('riHTMLArea');
	var cfg = htmlAreaRIConfig(edit.id,haHtmlMode,haStatusBar,isToolTip);
	cfg.pageStyle = layers[elm.elmNum]['elm']['css'];
	//alert (cfg.pageStyle);
	
	cfg.minHeight = h;
			
	cfg.width = w;
	cfg.height = h;
	cfg.sizeIncludesToolbar = false;
	document.getElementById('haExternalToolbar').innerHTML = '';
	haObj.generate(false);
	setTimeout(haInit,150);
	//return haObj;
	
};	

function htmlAreaRIConfig(fldName,htmlMode,statusBar,showTooltips) {

	var cfg = haObj.config;
	var fld = document.getElementById(fldName);
	// set global vars that indicate htmlarea field size and dimensions
	haW = fld.offsetWidth;
	haH = fld.offsetHeight;
	haX = fld.offsetTop;
	haY = fld.offsetLeft;
	cfg.statusBar=false; //statusBar;
	cfg.killWordOnPaste = true;
	cfg.showTooltips = showTooltips;
	var btnDir = _editor_url + cfg.imgURL;
	for (var i=0;i<wwBtns.length;i++) {
		if (wwBtns[i]['img']!='') {
			cfg.registerButton({
				id        : wwBtns[i]['nme'],
				tooltip   : (showTooltips?wwBtns[i]['ttp']:''),
				image     : btnDir + wwBtns[i]['img'],
				textMode  : false,
				action    : doWysiwygBtn
			});
		}
	}		
	cfg.toolbar= new Array();
	var btns = new Array();
	var w=0;
	for (var i=0;i<wwBtns.length;i++) {
		w+= parseInt(wwBtns[i]['wdt']);
		btns[btns.length] = wwBtns[i]['nme'];
	}
	if (btns.length>0) {
		var num = cfg.toolbar.length;
		cfg.toolbar.length = num+1;
		cfg.toolbar[num] = btns;
	}	
	return cfg;
};
function doWysiwygBtn(editor, buttonId) {
	
	htmlAreaObj = editor;
	if (htmlAreaObj.noCursor) {
		haObj.setMode('textmode');
		haObj.setMode('wysiwyg');
		//dhtmlAlert(sLngTxt['ED_WW_NOCURSOR']);
		//return;
	}
	
	if (dd.ie) {
		var doc = htmlAreaObj._doc;
		var sel = doc.selection;
		ieRange = sel.createRange();
		ieBookmark = ieRange.getBookmark();
	} 	
	var xy = htmlAreaPos(buttonId);
	
	switch (buttonId) {
	
	case 'custom_removeformat':
	
		removeFormatting();
		break;	


	case 'custom_insertsymbol':
	
		insertSymbol(wwSymbols, buttonId);
		break;	

	case 'custom_insertletter':
	
		insertSymbol(wwLetters, buttonId);
		break;	
	
	case 'custom_createlink':
	
		var link = htmlAreaObj.getParentElement();
		if (link && !/^a$/i.test(link.tagName)) link = null;
		selHTML = htmlAreaObj.getSelectedHTML();
		var test = selHTML.replace('&nbsp;','');
		if (test=='' &&!link) {
			dhtmlAlert(sLngTxt['ED_WW_SELTEXT']);
		} else {
			//alert (link);
			if (!link && (selHTML.indexOf('<a')>=0 ||selHTML.indexOf('<A')>=0 || selHTML.indexOf('a>')>=0 ||selHTML.indexOf('A>')>=0)) {
				dhtmlAlert (sLngTxt['ED_WW_LINK_ALREADY']);
			} else {	
				var typ = link?link.getAttribute('typ'):null;
				if (typ && (typ=='D')) {
					doWysiwygBtn(htmlAreaObj, 'custom_insertdoc') ;
				} else {
					if (link) {
						htmlAreaObj.selectNodeContents(link);
					}	
					linkPanel('CTXT',link);
				}	
			}	
		}
		break;

	case 'custom_removelink':
	
		var link = htmlAreaObj.getParentElement();
		if (link && !/^a$/i.test(link.tagName)) link = null;
		if (link) {
			htmlAreaObj.selectNodeContents(link);
			htmlAreaObj._doc.execCommand("unlink", false, '');
		}
		var sel = htmlAreaObj._getSelection();
		sel.collapseToStart();
		break;
		
	case 'custom_insertdoc':
	
		var link = htmlAreaObj.getParentElement();
		if (link && !/^a$/i.test(link.tagName)) link = null;
		selHTML = htmlAreaObj.getSelectedHTML();
		var test = selHTML.replace('&nbsp;','');
		if (test=='' && !link) {
			dhtmlAlert(sLngTxt['ED_WW_SELTEXT']);
		} else {
			if (!link && (selHTML.indexOf('<a')>=0 ||selHTML.indexOf('<A')>=0 || selHTML.indexOf('a>')>=0 ||selHTML.indexOf('A>')>=0)) {
				dhtmlAlert (sLngTxt['ED_WW_LINK_ALREADY']);
			} else {	
				var typ = link?link.getAttribute('typ'):null;
				if (typ && typ!='D') {
					doWysiwygBtn(htmlAreaObj, 'custom_createlink') ;
				} else {	
					if (link) htmlAreaObj.selectNodeContents(link);
					var xy = getBtnPos('custom_insertdoc', 216);
					docPicker.x = xy[0]-20;
					docPicker.y = xy[1];
					docPicker.noDrag = true;
					docPicker.show('insertDoc',null,link);
				}	
			}	
		}
		break;
		
	case 'custom_forecolor':
	
		selHTML = htmlAreaObj.getSelectedHTML();
		var test = selHTML.replace('&nbsp;','');
		if (test=='') {
			dhtmlAlert(sLngTxt['ED_WW_SELTEXT']);
		} else {
			isSubPanelActive = true;
			hideLayerList();
			haToolbarDisable();
			hideDoc();
			var xy = getBtnPos('custom_forecolor', 216);
			cp.x = xy[0]-20;
			cp.y = xy[1];
			cp.respOnClose = true;
			cp.noDrag = true;
			cp.show('','setForeColor'); //,htmlAreaObj);
		}	
		break;
		
	case 'custom_insertimage':
	
		image = htmlAreaObj.getParentElement();
		if (image && !/^img$/i.test(image.tagName)) {
			image = null;
		}	
		selHTML = htmlAreaObj.getSelectedHTML();
		var test = selHTML.replace('&nbsp;','');
		if (!image && test!='') {
			dhtmlAlert(sLngTxt['ED_WW_NO_SELTEXT']);
		} else {
			mediaPanel (image);
		}	
		break;
		
	case 'custom_killword':
	
		//selHTML = htmlAreaObj.getSelectedHTML();
		htmlAreaObj._wordClean();
		break;
		
	default:
	
		alert("No action defined for ".buttonId);
	}	
	
};

function removeFormatting() {

	htmlAreaObj.focusEditor();
	var link = htmlAreaObj.getParentElement();
	if (link && !/^a$/i.test(link.tagName)) link = null;
	if (dd.ie) {
		ieRange.moveToBookmark(ieBookmark);
		ieRange.select();
	}	
	htmlAreaObj._doc.execCommand('removeformat', false, '');
	if (link) {
		htmlAreaObj.selectNodeContents(link);
		htmlAreaObj._doc.execCommand("unlink", false, '');
	}
	var sel = htmlAreaObj._getSelection();
	sel.collapseToStart();
	
};

function setForeColor(color) {

	if (color!=-1) {
		color = color.replace(/#/g,'');
		htmlAreaObj.focusEditor();
		//	htmlAreaObj._createRange(htmlAreaObj._getSelection());
		if (dd.ie) {
			ieRange.moveToBookmark(ieBookmark);
			ieRange.select();
		}	
		htmlAreaObj._doc.execCommand('forecolor', false, "#" + color);
	}	
	cp.noDrag = false;
	cp.respOnClose = false;
	isSubPanelActive = false;
	showLayerList();
	haToolbarEnable();
	unHideDoc();
	
	
};

function insertImg(img) {

	htmlAreaObj.focusEditor();
	initDocElms('IMG',htmlAreaObj._doc);
	if (dd.ie) {
		ieRange.moveToBookmark(ieBookmark);
		ieRange.select();
	}	
	htmlAreaObj._doc.execCommand("insertimage", false, USRIMG_DIR + img);
	var thisLink = compareDocElms('IMG',htmlAreaObj._doc);
	thisLink.border = 0;
	
};

function insertDoc(doc,modify) {

	htmlAreaObj.focusEditor();
	if (doc!='') {
		initDocElms('A',htmlAreaObj._doc);
		if (dd.ie) {
			ieRange.moveToBookmark(ieBookmark);
			ieRange.select();
		}	
		htmlAreaObj._doc.execCommand("createlink", false, DOC_DIR + doc);
		var sel = htmlAreaObj._getSelection();
		sel.collapseToEnd();
		var link = htmlAreaObj.getParentElement();
		if (link && !/^a$/i.test(link.tagName)) link = null;
		if (link) {
			link.target = '_BLANK';
			link.setAttribute('typ','D');
			link.removeAttribute('id');
		}	
		compareDocElms('A',htmlAreaObj._doc);
		/*
		var thisLink = compareDocElms('A',htmlAreaObj._doc);
		thisLink.target = '_BLANK';
		if (!modify) thisLink.setAttribute('typ','D');
		*/
	}	
	
};

function insertLink(url,target) {

	var args = insertLink.arguments;
	var url = args[0];
	var target = args[1];
	var id = '';
	if (args.length>2) id = args[2];
		
	var thisLink = null;
	htmlAreaObj.focusEditor();
	initDocElms('A',htmlAreaObj._doc);
	if (dd.ie) {
		ieRange.moveToBookmark(ieBookmark);
		ieRange.select();
	}
	if (url=='') {
		htmlAreaObj._doc.execCommand("unlink", false, '');
	} else {	
		htmlAreaObj._doc.execCommand("createlink", false, url);
		var link = htmlAreaObj.getParentElement();
		if (link && !/^a$/i.test(link.tagName)) link = null;
		if (link) {
			link.target = target;
			link.removeAttribute('id');
		} else {
			link = compareDocElms('A',htmlAreaObj._doc);
			link.target = target;
			link.removeAttribute('id');
		}	
	}
	compareDocElms('A',htmlAreaObj._doc);
	return link;
		
};

function initDocElms(tag,doc) {

	var elms = doc.getElementsByTagName(tag);
	for (var i=0;i<elms.length;i++) {
		var elm = elms[i];
		elm.id = '_'+i;
	}
	
};

function compareDocElms(tag,doc) {

	var f = -1;
	var elms = doc.getElementsByTagName(tag);
	for (var i=0;i<elms.length;i++) {
		var elm = elms[i];
		if (elm.id=='') {
			f = i;
		} else {
			elm.id = '';
		}		
	}
	return elms[f];
	
};

function htmlAreaPos() {

	var x = parseInt(parseInt(haX) + parseInt((haW-215)/2));
	var y = parseInt(parseInt(haY) - 150);
	if (y<0) y=38;
	return [x,y];
	
};
function insertSymbol(syms,nme) {

	isSubPanelActive = true;
	htmlAreaObj.focusEditor();
	var caption = getBtnTooltip(nme);
	var w = 16;
	var h = 16;
	var cols = 10;
	var rows = 9; //parseInt(syms.length/cols) + syms.length%cols;
	if (tbPanel && !tbPanel.isClosed) tbPanel.close();
	var xy = getBtnPos(nme, (w*cols+20));
	tbPanel = new panel('insertSymbol',false,null,caption,20,w*cols+20,h*rows+20,false,xy[0],xy[1]);
	tbPanel.disableDrag();
	tbPanel.disableMin();
	hideDoc();
	tbPanel.closeEvent = function () {
		isSubPanelActive = false;
		unHideDoc();
	};
	
	var elm = riElm('DIV','','A',12,10,null,null,1);
	//elm.style.border = 'solid 1 px #333333';
	elm.style.backgroundColor = '#ffffff';
	//elm.style.overflow = 'auto';
	var elm1, elm2;
	var x = 0;
	var y = 0;
	//alert (syms.length);
	var i = -1;
	for (var y=0;y<rows;y++) {

		for (var x=0;x<cols;x++) {

			elm1 = riElm('DIV','','A',x*w,y*h,w,h,1);
			elm1.style.borderLeft = 'solid 1px #999999';
			elm1.style.borderTop = 'solid 1px #999999';
			if (x==cols-1) elm1.style.borderRight = 'solid 1px #999999';
			if (y==rows-1) elm1.style.borderBottom = 'solid 1px #999999';
			elm1.style.textAlign = 'center';
			i++;
			if (i<syms.length) {
				elm1.style.backgroundColor = '#ffffff';
				elm2 = riElm('DIV','','A',0,0,w,h-1,1);
				elm2.style.textAlign = 'center';
				elm2.style.paddingTop = '1px';
				elm2.innerHTML = syms[i]['cod'];
				elm2.cod = syms[i]['cod'];
				elm1.appendChild(elm2);
				elm1.style.cursor = 'pointer';
				elm2.addEventListener('click',symbolEvent,false);
				elm2.addEventListener('mouseover',symbolEvent,false);
				elm2.addEventListener('mouseout',symbolEvent,false);
			} else {
				elm1.style.backgroundColor = '#EFEFEF';
				elm1.style.cursor = 'default';
			}
			elm1.className = 'detailDesc';
			elm.appendChild(elm1);

		}
	}
	
	tbPanel.setContent (elm);
	
};
	
function symbolEvent (e) {

	var elm = e.target;
	switch (e.type) {
	case 'click':
		htmlAreaObj.insertHTML(elm.cod);
		break;
	case 'mouseover':
		elm.style.backgroundColor = '#0000FF';
		elm.style.color = '#FFFFFF';
		break;
	case 'mouseout':
		elm.style.backgroundColor = '#FFFFFF';
		elm.style.color = '#363636';
		break;
	}			
	e.stopPropagation();
	
};

function linkPanel (etyp, link) {

	isSubPanelActive = true;
	
	if (etyp=='CTXT') {
		haLink = link;
	}	
	
	var url = '';
	var title = '';
	var target = '_self';
	var nav = 0;
	var page = 0;
	var pageName = '';
	var tpl = 0;
	var typ = 'I';
	var w = 370;
	var h = 216;
	var wDesc = 105;
	if (etyp=='CTXT') {
		if (link) {
			typ = link.getAttribute('typ');
			url = link.getAttribute('href');
			url = url.replace(/http:\/\//,'');
			target = link.getAttribute('target');
			if (typ=='I') {
				//title = link.getAttribute('title');
				url = '';
				nav = link.getAttribute('nav');
				page = link.getAttribute('pge');
				tpl = link.getAttribute('tpl');
			}
			haPage = page;
		}
		htmlAreaObj.focusEditor();
		hideLayerList();
		haToolbarDisable();
		//htmlAreaObj._iframe.style.display = 'none';
		hideDoc();
		//haDisable();
		var caption = getBtnTooltip('custom_createlink');
		var xy = getBtnPos('custom_createlink', w);
		var x = xy[0];
		var y = xy[1];
	} else {
		typ = link['typ'];
		url = link['url'];
		url = url.replace(/http:\/\//,'');
		target = link['trg'];
		target = (target=='S'?'_self':'_blank');
		if (typ=='I') {
			nav = link['nav'];
			page = link['pge'];
			tpl = link['tpl'];
			nme = link['nme'];
			pnm = link['pnm'];
			url = nme;
		}
		hideLayerList();
		haToolbarDisable();
		var caption = sLngTxt['ED_CAPTION_LINK'];
		isToolBarActive = true;
		var x = document.getElementById('imgmap').offsetLeft + 22;
		var y = document.getElementById('imgmap').offsetTop + 72;
		
	}
	if (tbPanel && !tbPanel.isClosed) tbPanel.close();
	tbPanel = new panel('haLink',false,null,caption,20,w,h,false,x,y,null,false);
	tbPanel.disableDrag();
	tbPanel.disableMin();
	tbPanel.etyp = etyp;
	tbPanel.closeEvent = function () {

		isSubPanelActive = false;
		showLayerList();
		document.body.removeChild(document.getElementById('haLinkNameTbl'));
		haToolbarEnable();
		if (tbPanel.etyp=='CTXT') {	
			unHideDoc();
		} else {
			isToolBarActive = false;
		}	
		
		
	};

	// absolute (fixed) coordinates of panel content
	tbPanel.x1 = x + 20;
	tbPanel.y1 = y + 34;
	
	var elm = riElm('DIV','','A',0,0,300,400,1);
	
	var elm1 = riElm('DIV','','A',0,0,wDesc,null,1);
	elm1.style.textAlign = 'right';
	elm1.className = 'panelFieldDesc';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_WW_LINK_DESC_TYPE']));
	elm.appendChild(elm1);

	var ddNum = 0;
	var vals = new Array();
	var vnum = -1;
	if (etyp!='CTXT') {
		vals[0] = new Array('N',sLngTxt['ED_WW_LINK_NONE']);
		vnum = 0;
	}	
	vals[++vnum] = new Array('I',sLngTxt['ED_WW_LINK_INTERN']);
	vals[++vnum] = new Array('E',sLngTxt['ED_WW_LINK_EXTERN']);
	vals[++vnum] = new Array('M',sLngTxt['ED_WW_LINK_EMAIL']);
	ddCtrl[ddNum] = new dropdownControl('ddCtrl['+ddNum+']',vals,150,20);
	ddCtrl[ddNum].elmId = 'pageNavId';
	ddCtrl[ddNum].selectEvent = 'haLinkDropdownSelect('+ddNum+')';
	ddCtrl[ddNum].clickEvent = 'haLinkDropdownClick('+ddNum+')';
	elm1 = parent.riElm('DIV','ddCtrl['+ddNum+']','A',wDesc+10,0,150,20,2);
	elm.appendChild(elm1);
	
	var optNavs = new Array();
	var treeNum = -1;
	optNavs[0] = new Array(-1,sLngTxt['ED_WW_LINK_NEWPAGE']);
	optNavs[1] = new Array(0,sLngTxt['ED_WW_LINK_PAGETREE']);
	if (nav==0) treeNum = 0;
	for (var i=0;i<navigators.length;i++) {
		optNavs[i+2] = new Array(navigators[i]['nid'],navigators[i]['nme']);
		if (nav==navigators[i]['nid']) treeNum = i;
	}
	optNavTree = new Array();
	pageNavTree = new Array();
	if (treeNum==0) {
		pageNavTree = pages;
	} else if (treeNum>0) {
		if (typeof(navigators[treeNum]['tre'])!='undefined') {
			pageNavTree = navigators[treeNum]['tre'];
		} 
	}	
	var indent;
	for (var i=0;i<pageNavTree.length;i++) {
		indent = '';
		for (j=0;j<parseInt(pageNavTree[i]['lvl']);j++) indent+= '> ';   //'&nbsp;&nbsp;&nbsp;';
		if (typeof(pageNavTree[i]['pge'])=='undefined') pageNavTree[i]['pge'] = pageNavTree[i]['pid']; // nav tree has pid instead of pge attribute
		if (pageNavTree[i]['pge']>0) {
			optNavTree[i] = new Array(pageNavTree[i]['pge'],indent+pageNavTree[i]['txt']);
		} else {
			optNavTree[i] = new Array(pageNavTree[i]['pge'],indent+pageNavTree[i]['txt'],true);
		}	
	}	
	
	var elm1 = riElm('DIV','haLinkNavDesc','A',0,25,wDesc,null,1);
	elm1.style.textAlign = 'right';
	elm1.className = 'panelFieldDesc';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_WW_LINK_DESC_SELNAV']));
	elm.appendChild(elm1);

	ddNum++;
	ddCtrlSelNav = ddNum;
	ddCtrl[ddNum] = new dropdownControl('ddCtrl['+ddNum+']',optNavs,150,20);
	ddCtrl[ddNum].elmId = 'linkNavId';
	ddCtrl[ddNum].selectEvent = 'haLinkDropdownSelect('+ddNum+')';
	ddCtrl[ddNum].clickEvent = 'haLinkDropdownClick('+ddNum+')';
	elm1 = parent.riElm('DIV','ddCtrl['+ddNum+']','A',wDesc+10,25,150,20,2);
	elm.appendChild(elm1);

	var elm1 = riElm('DIV','haLinkPageDesc','A',0,50,wDesc,null,1);
	elm1.style.textAlign = 'right';
	elm1.className = 'panelFieldDesc';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_WW_LINK_DESC_SELPAGE']));
	elm.appendChild(elm1);

	ddNum++;
	ddCtrlSelPage = ddNum;
	ddCtrl[ddNum] = new dropdownControl('ddCtrl['+ddNum+']',optNavTree,150,20);
	ddCtrl[ddNum].elmId = 'linkNavTreeId';
	ddCtrl[ddNum].selectEvent = 'haLinkDropdownSelect('+ddNum+')';
	ddCtrl[ddNum].clickEvent = 'haLinkDropdownClick('+ddNum+')';
	elm1 = parent.riElm('DIV','ddCtrl['+ddNum+']','A',wDesc+10,50,150,20,2);
	elm.appendChild(elm1);
	

	var elm1 = riElm('DIV','haLinkNameDesc','A',0,75,wDesc,null,1);
	elm1.style.textAlign = 'right';
	elm1.className = 'panelFieldDesc';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_WW_LINK_DESC_URL']));
	elm.appendChild(elm1);
	
	var elm1 = riElm('TABLE','haLinkNameTbl','F',tbPanel.x1+wDesc + 10,tbPanel.y1+75,220,null,99999999999);
	//elm1.style.overflow = 'auto';
	elm2 = riElm('TR','','');
	elm3 = riElm('TD','','');
	elm4 = riElm('INPUT','haLinkName','',0,0,210);
	elm4.value = url;
	//elm4.x1 = x1;
	//elm4.y1 = y1;
	elm4.type = 'text';
	//elm4.optTyp = typ;
	elm4.className = 'panelField';
	elm4.style.overflow = 'auto';
	elm3.appendChild(elm4);
	elm2.appendChild(elm3);
	elm1.appendChild(elm2);
	elm1.style.display = 'none';
	document.body.appendChild(elm1);

	var optTpls = new Array();
	for (var i=0;i<tpls.length;i++) {
		optTpls[i] = new Array(tpls[i]['tid'],tpls[i]['nme']);
	}

	var elm1 = riElm('DIV','haLinkTplDesc','A',0,100,wDesc,null,0);
	elm1.style.textAlign = 'right';
	elm1.className = 'panelFieldDesc';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_PAGE_SEL_TPL']));
	elm.appendChild(elm1);

	ddNum++;
	ddCtrl[ddNum] = new dropdownControl('ddCtrl['+ddNum+']',optTpls,150,20);
	ddCtrl[ddNum].elmId = 'linkNavTreeId';
	ddCtrl[ddNum].selectEvent = 'haLinkDropdownSelect('+ddNum+')';
	elm1 = parent.riElm('DIV','ddCtrl['+ddNum+']','A',wDesc+10,100,150,20,2);
	elm.appendChild(elm1);

	var elm1 = riElm('DIV','haLinkTargetDesc','A',0,125,wDesc,null,0);
	elm1.style.textAlign = 'right';
	elm1.className = 'panelFieldDesc';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_WW_LINK_DESC_TARGET']));
	elm.appendChild(elm1);

	ddNum++;
	var vals = new Array();
	vals[0] = new Array('_self',sLngTxt['ED_WW_LINKTARGET_SELF']);
	vals[1] = new Array('_blank',sLngTxt['ED_WW_LINKTARGET_BLANK']);
	ddCtrl[ddNum] = new dropdownControl('ddCtrl['+ddNum+']',vals,150,20);
	ddCtrl[ddNum].elmId = 'linkTarget';
	ddCtrl[ddNum].selectEvent = 'haLinkDropdownSelect('+ddNum+')';
	elm1 = parent.riElm('DIV','ddCtrl['+ddNum+']','A',wDesc+10,125,150,20,2);
	elm.appendChild(elm1);
	
	elm1 = riElm('IMG','submit','A',parseInt((w-80)/2),135,null,null,1);
	elm1.src = IFC_IMG_DIR + 'submit_btn_out.png';
	elm1.border = 0;
	elm1.etyp = etyp;
	if (etyp!='CTXT') {
		elm1.lyr = link['lyr'];
		elm1.num = link['num'];
	}	
	elm1.addEventListener('click',haLinkEvent,false);
	elm1.addEventListener('mouseover',haLinkEvent,false);
	elm1.addEventListener('mouseout',haLinkEvent,false);
	window.addEventListener('keypress',haLinkEvent,false);
	elm.appendChild(elm1);
	
	//elm.style.overflow = 'auto';
	tbPanel.setContent (elm);
	
	if (page==0 && pageNavTree.length>0) page = pageNavTree[0]['pge'];
	if (tpl==0 && optTpls.length>0) tpl = optTpls[0][0];
	ddCtrl[0].render(typ);
	ddCtrl[1].render(nav);
	ddCtrl[2].render(page);
	ddCtrl[3].render(tpl);
	ddCtrl[4].render(target);
	
	haLinkDisEnable();

};
	
function haLinkDisEnable() {

	var typ = ddCtrl[0].getValue();
	var nav = ddCtrl[1].getValue();
	var pge = ddCtrl[2].getValue();
	var tpl = ddCtrl[3].getValue();
	var trg = ddCtrl[4].getValue();
	var nme = document.getElementById('haLinkName');
	var elmNme = document.getElementById('haLinkNameTbl');
	var elmNav = document.getElementById('ddCtrl[1]');
	var elmPge = document.getElementById('ddCtrl[2]');
	var elmTpl = document.getElementById('ddCtrl[3]');
	var elmTrg = document.getElementById('ddCtrl[4]');
	var dscNav = document.getElementById('haLinkNavDesc');
	var dscPge = document.getElementById('haLinkPageDesc');
	var dscTpl = document.getElementById('haLinkTplDesc');
	var dscNme = document.getElementById('haLinkNameDesc');
	var dscTrg = document.getElementById('haLinkTargetDesc');

	switch (typ) {

	case 'I':

		dscNav.style.display = 'block';
		elmNav.style.display = 'block'; // nav
		dscTrg.style.display = 'block';
		elmTrg.style.display = 'block'; // target
		if (ddCtrl[1].getValue() == -1) {
			elmPge.style.display = 'none';; // page
			dscPge.style.display = 'none';
			dscNme.style.display = 'block';
			dscNme.style.top = '50px';
			elmNme.style.display = 'block';
			elmNme.style.top = (tbPanel.y1 + 50) + 'px';
			dscNme.firstChild.nodeValue = sLngTxt['ED_WW_LINK_DESC_PAGENAME'];
			dscTpl.style.display = 'block';
			dscTpl.style.top = '75px';
			elmTpl.style.display = 'block'; // template
			elmTpl.style.top = '75px';
			dscTrg.style.top = '100px';
			elmTrg.style.top = '100px';
		} else {	
			elmPge.style.display = 'block'; // page
			dscPge.style.display = 'block';
			dscPge.style.top = '50px';
			dscNme.style.display = 'none';
			elmNme.style.display = 'none';
			dscNme.firstChild.nodeValue = sLngTxt['ED_WW_LINK_DESC_URL'];
			dscTpl.style.display = 'none';
			elmTpl.style.display = 'none'; // template
			dscTrg.style.top = '75px';
			elmTrg.style.top = '75px';
		}
		break;

	case 'E':

		elmNav.style.display = 'none';; // nav
		elmPge.style.display = 'none';; // page
		nme.disabled = false;
		dscNav.style.display = 'none';
		dscPge.style.display = 'none';
		dscTpl.style.display = 'none';
		dscTrg.style.display = 'block';
		dscNme.style.display = 'block';
		dscNme.firstChild.nodeValue = sLngTxt['ED_WW_LINK_DESC_URL'];
		dscNme.style.top = '25px';
		elmNme.style.display = 'block';
		elmNme.style.top = (tbPanel.y1 + 25) + 'px';
		elmTpl.style.display = 'none';; // template
		elmTrg.style.display = 'block';; // target
		dscTrg.style.top = '50px';
		elmTrg.style.top = '50px';
		break;

	case 'M':

		elmNav.style.display = 'none';; // nav
		elmPge.style.display = 'none';; // page
		nme.disabled = false;
		dscNav.style.display = 'none';
		dscPge.style.display = 'none';
		dscTpl.style.display = 'none';
		dscTrg.style.display = 'none';
		dscNme.style.display = 'block';
		dscNme.firstChild.nodeValue = sLngTxt['ED_WW_LINK_DESC_EMAIL'];
		dscNme.style.top = '25px';
		elmNme.style.display = 'block';
		elmNme.style.top = (tbPanel.y1 + 25) + 'px';
		elmTpl.style.display = 'none';; // template
		elmTrg.style.display = 'none';; // target
		dscTrg.style.top = '50px';
		elmTrg.style.top = '50px';
		break;

	case 'N':

		elmNav.style.display = 'none';; // nav
		elmPge.style.display = 'none';; // page
		dscNav.style.display = 'none';
		dscPge.style.display = 'none';
		dscTpl.style.display = 'none';
		dscTrg.style.display = 'none';
		dscNme.style.display = 'none';
		elmNme.style.display = 'none';
		elmTpl.style.display = 'none'; // template
		elmTrg.style.display = 'none'; // target
		break;
		
	}	
	
};	

function haLinkEvent (e) {

	var elm = e.target;
	
	var typ = '';
	var url = '';
	var nav = '';
	var tpl = '';
	var pge = '';
	var nme = '';
	var pnm = '';
	var trg = '';
	
	switch (e.type) {
	case 'click':
	
		switch (elm.id) {
		case 'submit':
		
			var typ = ddCtrl[0].getValue();
			var nme = document.getElementById('haLinkName').value;
			
			var msg = '';
			switch (typ) {
			case 'I':
			
				var nav = ddCtrl[1].getValue();
				if (nav==-1 && nme=='') {
					msg = sLngTxt['ED_WW_LINK_REQ_PAGENAME'];
				} else {
					//haNav = nav;
					pnm = '';
					if (nav==-1) {
						// new page
						tpl = ddCtrl[3].getValue();
						if (haPage<0) { // old value of link was also new page: keep it
						} else {
							pnm = makeUrlName(nme);
							pge = haAddIntLink(nme,pnm,tpl);
						}	
					} else {
						// existing page
						if (haPage<0) { // old value of link was new page: delete it
							haDelIntLink(haPage);
						}	
						pge = ddCtrl[2].getValue();
						haPage = pge;
						tpl = 0;
						for (var i=0;i<pageNavTree.length;i++) {
							if (pageNavTree[i]['pge']==haPage) {
								tpl = pageNavTree[i]['tpl'];
								break;
							}	
						}
					}
					if (pnm=='') {
						for (var i=0;i<optNavTree.length;i++) {
							//alert (optNavTree[i][0] +'/'+haPage);
							if (optNavTree[i][0]==haPage) {
								nme = optNavTree[i][1];
								nme = nme.replace("> ","");
								pnm = makeUrlName(nme);
								break;
							}
						}
					}
					//alert (pnm);
					if (elm.etyp=='CTXT') {
						var thisPge = makeUrlName(PNME);
						url = window.location.href;
						if (pageIsRedirDefault) url += '/' + thisPge;
						if (pnm != thisPge) {
							url += INTLINKCHAR + pnm;
						}					
					} else {
						url = PATH + HOME + EXT + '/' + pnm;
					}	
					trg = ddCtrl[4].getValue();
				}
				break;
				
			case 'E':
			
				if (nme=='') {
					msg = sLngTxt['ED_WW_LINK_REQ_URL'];
				} else {	
					if (haPage<0) { // old value of link was new page: delete it
						haDelIntLink(haPage);
					}	
					trg = ddCtrl[4].getValue();
					nme = nme.toLowerCase();
					nme = nme.replace(/http:\/\//g,'');
					nme = nme.replace(/http:\//g,'');
					nme = nme.replace(/http:/g,'');
					url = 'http://' + nme;
				}	
				break;
			case 'M':
			
				if (nme=='') {
					msg = sLngTxt['ED_WW_LINK_REQ_EMAIL'];
				} else {
					if (pge<0) { // old value of link was new page: delete it
						haDelIntLink(pge);
					}	
					url = 'mailto:' + nme;
				}					
				break;
			
			case 'N':
			
				break;	
				
			}	
			
			if (msg!='') {

				dhtmlAlert (msg);

			} else {
			
				if (elm.etyp=='CTXT') {
			
					htmlAreaObj.focusEditor();
					var link = htmlAreaObj.getParentElement();
					if (link && !/^a$/i.test(link.tagName)) link = null;
	
					if (link == null) {
						
						link = insertLink(url,trg);
						
					} 
					
					link.href = url;
					link.target = trg;
					link.setAttribute('typ',typ);
					if (typ=='I') {
						if (nav==-1) nav=0;
						link.setAttribute('nav',nav);
						link.setAttribute('pge',pge);
						link.setAttribute('tpl',tpl);
					} else {	
						link.removeAttribute('nav');
						link.removeAttribute('pge');
						link.removeAttribute('tpl');
					}
					var sel = htmlAreaObj._getSelection();
					sel.collapseToEnd();
				
				} else  {
				
					if (elm.etyp=='SIMG') {

						layers[elm.lyr]['elm']['url'] = url;
						layers[elm.lyr]['elm']['typ'] = typ;
						layers[elm.lyr]['elm']['trg'] = (trg=='_self'?'S':'B');
						layers[elm.lyr]['elm']['nav'] = nav;
						layers[elm.lyr]['elm']['tpl'] = tpl;
						layers[elm.lyr]['elm']['pge'] = pge;
						layers[elm.lyr]['elm']['nme'] = nme;
						layers[elm.lyr]['elm']['pnm'] = pnm;
					
					} else {	
	
						layers[elm.lyr]['elm']['prp'][elm.num]['url'] = url;
						layers[elm.lyr]['elm']['prp'][elm.num]['typ'] = typ;
						layers[elm.lyr]['elm']['prp'][elm.num]['trg'] = (trg=='_self'?'S':'B');
						layers[elm.lyr]['elm']['prp'][elm.num]['nav'] = nav;
						layers[elm.lyr]['elm']['prp'][elm.num]['tpl'] = tpl;
						layers[elm.lyr]['elm']['prp'][elm.num]['pge'] = pge;
						layers[elm.lyr]['elm']['prp'][elm.num]['nme'] = nme;
						layers[elm.lyr]['elm']['prp'][elm.num]['pnm'] = pnm;
						
					}	
					var img = document.getElementById('img_'+layers[elm.lyr]['lyr']);
					var elm1 = document.getElementById('elm_'+layers[elm.lyr]['lyr']);
					while (elm1.childNodes.length>0) {
						elm1.removeChild(elm1.childNodes[0]);
					};
					if (url!='') {
						var elm2 = riElm('A','','');
						elm2.href = url;
						elm2.appendChild(img);
						elm1.appendChild(elm2);
					} else {
						elm1.appendChild(img);
					}	
				
				}
				
				tbPanel.close();
				
			}	

			break;
			
		}
		break;
	
	case 'mouseover':
	
		switch (elm.id) {
		case 'submit':
		
			elm.src = IFC_IMG_DIR + 'submit_btn_over.png';
			elm.style.cursor = 'pointer';
			break;
			
		}	
		break;
			
	case 'mouseout':
	
		switch (elm.id) {
		case 'submit':
		
			elm.src = IFC_IMG_DIR + 'submit_btn_out.png';
			elm.style.cursor = 'default';
			break;

		}			
		break;	
	}
			
	e.stopPropagation();
	
};

function haAddIntLink(nme,pnm,tpl) {

	// store new internal links so pages can be added on save
	// new pages are stored in html with negative page ids so they can be found during the session and edited
	// hence this function returns a negative number which will be the page id of the link in the html.
	
	var num = 0;
	var num1;
	for (var i=0;i<haIntLinks.lenght;i++) {
		num1 = haIntLinks[i]['num'];
		if (num1>num) num = num1;
	}
	num++;
	haIntLinks.length++;
	var i = haIntLinks.length-1;
	haIntLinks[i] = new Array();
	haIntLinks[i]['num'] = num;
	haIntLinks[i]['cid'] = haContElmId;
	haIntLinks[i]['nme'] = nme;
	haIntLinks[i]['pnm'] = pnm;
	haIntLinks[i]['tpl'] = tpl;
	return -num;
	
};

function haDelIntLink(num) {
	
	num = -num;
	var tmp = haIntLinks;
	haIntLinks = new Array();
	var j = -1;
	for (var i=0;i<tmp.lenght;i++) {
		if (num!=tmp[i]['num']) {
			j++;
			haIntLinks[j] = new Array();
			haIntLinks[j]['num'] = tmp['num'];
			haIntLinks[j]['cid'] = tmp['cid'];
			haIntLinks[j]['nme'] = tmp['nme'];
			haIntLinks[j]['tpl'] = tmp['tpl'];
		}	
	}
	
};

function getBtnTooltip (nme) {

	var ttp = '';
	for (var i=0;i<wwBtns.length;i++) {
		if (wwBtns[i]['nme']==nme) {
			ttp = wwBtns[i]['ttp'];
			break;
		}
	}
	return ttp;
			
};

function getBtnPos (nme, w) {

	var pos = 0;
	for (var i=0;i<wwBtns.length;i++) {
		if (wwBtns[i]['nme']==nme) {
			pos = wwBtns[i]['pos'];
			break;
		}
	}
	var x = parseInt(pos) + 50 -  parseInt(w/2);
	if (x<0) x=0;
	if (x+w>screen.availWidth) x = screen.availWidth - w;
	var y = 72;
	
	return [x,y];
			
};

function haInit() {

	// set cursor in editor
	// this function is called with a timeout to make sure htmlarea object exists
	// if this time is not enough for some reason, the nocursor indicator will prompt user to set hte fursor himself when inserting stuff
	// Also used to execute stuff after returning from haDisable
	
	haObj.focusEditor();
	try {
	
		haToolbarEnable();
		haObj.setMode('textmode');
		haObj.setMode('wysiwyg');
		haObj.noCursor = false;
		haReplaceSwfHTML(true); // replace any Flash movies with flash icon image that is shown in editor (flash movie itself would not be shown)		

		// solution required where editor is closed when panel is opened (to prevent dispaly cursor bug in firefox) 
		// cursor bug workaround using fixed positioned table with input element in it seems to work so this no longer required
		/*
		if (haLinkId!='') { 
			// find link just processed, remove the temporary id and set the other attributes
			
			var link = haObj._doc.getElementById(haLinkId);
			link.removeAttribute('id');
			link.href = haUrl;
			link.target = haTarget;
			link.setAttribute('typ',haTyp);
			if (haTyp=='I') {
				link.setAttribute('nav',haNav);
				link.setAttribute('page',haPage);
				link.setAttribute('tpl',haTpl);
			} else {	
				link.removeAttribute('nav');
				link.removeAttribute('page');
				link.removeAttribute('tpl');
			}	
			if (haUrl=='') {
				haObj.selectNodeContents(link);
				haObj._doc.execCommand("unlink", false, '');
				haObj.selectNodeContents(null);
			}	
			haLinkId = '';
			haUrl = '';
			haTarget = '';
			haNav = 0;
			haPage = 0;
			haTpl = 0;
		}
		*/
	} catch (e) {}
	
};	

function haDisable() {
	
	var disp = document.getElementById('disp_'+haElm.elmName);
	var edit = document.getElementById('edit_'+haElm.elmName);
	disp.innerHTML = haObj.riGetInnerHTML();
	edit.innerHTML = '';
	edit.style.display = 'none';
	disp.style.display = 'block';
	
};	

function haToolbarDisable() {

	var dis = document.getElementById('haExtToolbarDisable');
	dis.style.display = 'block';
	dis.style.width = '100%';
	shadowBtnDisable(SAVE);
	shadowBtnDisable(CANCEL);
	
};

function haToolbarEnable() {

	var dis = document.getElementById('haExtToolbarDisable');
	dis.style.display = 'none';
	dis.style.width = '100%';
	shadowBtnEnable(SAVE);
	shadowBtnEnable(CANCEL);
	
};

function haLinkDropdownClick(num) {

	var anyDrpDnSelected = false;
	for (var i=0;i<=2;i++) {
		if (ddCtrl[i].selMode) {
			anyDrpDnSelected = true;
			break;
		}
	}
	var elmName = document.getElementById('haLinkNameTbl');
	if (anyDrpDnSelected) {
		elmName.style.top = '-100px';
	} else {
		haLinkDisEnable();
	}
	
};			
		 

function haLinkDropdownSelect(num) {

	haLinkDropdownClick(num);
	haLinkDisEnable();
	if (num==ddCtrlSelNav) {
	
		// rebuild page tree after selecting nav
		
		var treeNum = ddCtrl[num].getOptionNum()-2;
		
		optNavTree = new Array();
		pageNavTree = new Array();
		if (treeNum==-1) {
			pageNavTree = pages;
		} else if (treeNum>=0) {
			if (typeof(navigators[treeNum]['tre'])!='undefined') {
				pageNavTree = navigators[treeNum]['tre'];
			} 
		}	
		var indent;
		for (var i=0;i<pageNavTree.length;i++) {
			indent = '';
			for (j=0;j<parseInt(pageNavTree[i]['lvl']);j++) indent+= '> ';   //'&nbsp;&nbsp;&nbsp;';
			//if (typeof(pageNavTree[i]['pge'])=='undefined') pageNavTree[i]['pge'] = pageNavTree[i]['pge']; // nav tree has pid instead of pge attribute
			if (pageNavTree[i]['pge']>0) {
				optNavTree[i] = new Array(pageNavTree[i]['pge'],indent+pageNavTree[i]['txt']);
			} else {
				optNavTree[i] = new Array(pageNavTree[i]['pge'],indent+pageNavTree[i]['txt'],true);
			}
		}
		
		ddCtrl[ddCtrlSelPage].populate(optNavTree);
		if (optNavTree.length==0) ddCtrl[ddCtrlSelPage].render('');

	}
	
};

function haMediaDropdownClick(num) {

};

function haMediaDropdownSelect(num) {

	//haMediaDropdownClick(num);
	haMediaDisEnable();
	
};


function mediaPanel(img) {

	isSubPanelActive = true;
	
	var typ = '';
	var nme = '';
	var aln = '';
	var mrg = '';
	var mrgT = '';
	var mrgR = '';
	var mrgB = '';
	var mrgL = '';
	var wdt = '';
	var hgt = '';
	var alt = '';
	if (img) {
		typ = img.getAttribute('typ');
		if (typ=='swf') {
			nme = img.getAttribute('imgsrc').replace(IMG_DIR,'');
		} else {	
			nme = img.src.replace(IMG_DIR,'');
		}	
		this.imgNme = nme;
		aln = img.style.cssFloat;
		mrgT = img.style.marginTop.replace(/px/,'');
		mrgR = img.style.marginRight.replace(/px/,'');
		mrgB = img.style.marginBottom.replace(/px/,'');
		mrgL = img.style.marginLeft.replace(/px/,'');
		if (mrgT + mrgR + mrgB + mrgL == '') {
			mrg = '';
			mrg = mrgT = mrgR = mrgB = mrgL = '';
		} else if (mrgT==mrgR && mrgT==mrgB && mrgT==mrgL) {
			mrg = mrgT;
			mrgT = mrgR = mrgB = mrgL = '';
		}	
		wdt = img.style.width.replace(/px/,'');
		hgt = img.style.height.replace(/px/,'');
		alt = img.alt;
		haMediaW = img.getAttribute('filew');
		haMediaH = img.getAttribute('fileh');
	}	
	
	htmlAreaObj.focusEditor();

	hideLayerList();
	haToolbarDisable();
	//haDisable();
	hideDoc();
	var caption = getBtnTooltip('custom_insertimage');
	var w = 310;
	var h = 330;
	var wDesc = 80;
	if (tbPanel && !tbPanel.isClosed) tbPanel.close();
	var xy = getBtnPos('custom_insertimage', w);
	var x = xy[0];
	var y = xy[1];
	tbPanel = new panel('haImg',false,null,caption,20,w,h,false,x,y,null,false);
	tbPanel.disableDrag();
	tbPanel.disableMin();
	tbPanel.closeEvent = function () {

		//document.body.removeChild(document.getElementById('haLinkNameTbl'));
		isSubPanelActive = false;
		//haObj = haGenerate(haElm,haW,haH);
		unHideDoc();
		showLayerList();
		haToolbarEnable();
		
	};
	
	tbPanel.img = img; // existing image
	tbPanel.imgNme = nme;
	tbPanel.imgW = wdt;
	tbPanel.imgH = hgt;
	tbPanel.fileW = haMediaW;
	tbPanel.fileH = haMediaH;
	
	// absolute (fixed) coordinates of panel content
	tbPanel.x1 = x + 20;
	tbPanel.y1 = y + 34;
	
	
	var elm = riElm('DIV','','A',0,0,300,400,1);
	
	var elm1 = riElm('DIV','','A',0,0,wDesc,null,1);
	elm1.style.textAlign = 'right';
	elm1.className = 'panelFieldDesc';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_WW_MEDIA_DESC_TYPE']));
	elm.appendChild(elm1);

	var ddNum = 0;
	var vals = new Array();
	vals[0] = new Array('',sLngTxt['ED_WW_MEDIA_IMG']);
	vals[1] = new Array('swf',sLngTxt['ED_WW_MEDIA_SWF']);
	ddCtrl[ddNum] = new dropdownControl('ddCtrl['+ddNum+']',vals,150,20);
	//ddCtrl[ddNum].elmId = 'pageNavId';
	ddCtrl[ddNum].selectEvent = 'haMediaDropdownSelect('+ddNum+')';
	ddCtrl[ddNum].clickEvent = 'haMediaDropdownClick('+ddNum+')';
	elm1 = parent.riElm('DIV','ddCtrl['+ddNum+']','A',wDesc+10,0,150,20,2);
	elm.appendChild(elm1);
	
	var elm1 = riElm('DIV','haMediaNameDesc','A',0,25,wDesc,null,1);
	elm1.style.textAlign = 'right';
	elm1.className = 'panelFieldDesc';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_WW_MEDIA_DESC_NAME']));
	elm.appendChild(elm1);

	var elm1 = riElm('INPUT','haMediaName','A',wDesc+10,25,150,null,1);
	elm1.className = 'panelFieldDisabled1';
	elm1.style.cursor = 'default';
	elm1.disabled = true;
	elm1.value = nme;
	elm.appendChild(elm1);
	
	elm1 = parent.riElm('IMG','haMediaUpload','A',wDesc+167,24,null,null,1);
	elm1.src = IFC_IMG_DIR + 'upload.png';
	elm1.style.cursor = 'pointer';
	elm1.addEventListener('click',haMediaEvent,false);
	elm1.addEventListener('mouseover',haMediaEvent,false);
	elm1.addEventListener('mouseout',haMediaEvent,false);
	elm.appendChild(elm1);
	
	var elm1 = riElm('DIV','haMediaAlignDesc','A',0,50,wDesc,null,1);
	elm1.style.textAlign = 'right';
	elm1.className = 'panelFieldDesc';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_WW_MEDIA_DESC_ALIGN']));
	elm.appendChild(elm1);

	var ddNum = 1;
	var vals = new Array();
	vals[0] = new Array('',sLngTxt['ED_WW_MEDIA_DESC_ALIGNDEFAULT']);
	vals[1] = new Array('left',sLngTxt['ED_WW_MEDIA_DESC_ALIGNLEFT']);
	vals[2] = new Array('right',sLngTxt['ED_WW_MEDIA_DESC_ALIGNRIGHT']);
	ddCtrl[ddNum] = new dropdownControl('ddCtrl['+ddNum+']',vals,150,20);
	//ddCtrl[ddNum].elmId = 'pageNavId';
	ddCtrl[ddNum].selectEvent = 'haMediaDropdownSelect('+ddNum+')';
	ddCtrl[ddNum].clickEvent = 'haMediaDropdownClick('+ddNum+')';
	elm1 = parent.riElm('DIV','ddCtrl['+ddNum+']','A',wDesc+10,50,150,20,2);
	elm.appendChild(elm1);
	
	var elm1 = riElm('DIV','haMediaMarginDesc','A',0,75,wDesc,null,1);
	elm1.style.textAlign = 'right';
	elm1.className = 'panelFieldDesc';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_WW_MEDIA_DESC_MARGINS']));
	elm.appendChild(elm1);

	var elm1 = riElm('INPUT','haMediaMargin','A',wDesc + 10,75,15,null,1);
	elm1.value = mrg;
	elm1.className = 'panelField';
	elm1.style.textAlign = 'right';
	elm1.validate = NUMERIC;
	elm1.addEventListener('keyup',validateEvent,false);
	elm1.addEventListener('keyup',haMediaEvent,false);
	elm.appendChild(elm1);

	var elm1 = riElm('DIV','haMediaMarginTDesc','A',wDesc + 20,75,wDesc,null,1);
	elm1.className = 'panelFieldDesc';
	elm1.style.textAlign = 'right';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_WW_MEDIA_DESC_MARGINTOP']));
	elm.appendChild(elm1);

	var elm1 = riElm('INPUT','haMediaMarginT','A',wDesc + 105,75,15,null,1);
	elm1.value = mrgT;
	elm1.className = 'panelField';
	elm1.style.textAlign = 'right';
	elm1.validate = NUMERIC;
	elm1.addEventListener('keyup',validateEvent,false);
	elm1.addEventListener('keyup',haMediaEvent,false);
	elm.appendChild(elm1);

	var elm1 = riElm('DIV','haMediaMarginRDesc','A',wDesc + 20,95,wDesc,null,1);
	elm1.style.textAlign = 'right';
	elm1.className = 'panelFieldDesc';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_WW_MEDIA_DESC_MARGINRIGHT']));
	elm.appendChild(elm1);

	var elm1 = riElm('INPUT','haMediaMarginR','A',wDesc + 105,95,15,null,1);
	elm1.value = mrgR;
	elm1.className = 'panelField';
	elm1.style.textAlign = 'right';
	elm1.validate = NUMERIC;
	elm1.addEventListener('keyup',validateEvent,false);
	elm1.addEventListener('keyup',haMediaEvent,false);
	elm.appendChild(elm1);

	var elm1 = riElm('DIV','haMediaMarginBDesc','A',wDesc + 20,115,wDesc,null,1);
	elm1.style.textAlign = 'right';
	elm1.className = 'panelFieldDesc';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_WW_MEDIA_DESC_MARGINBOTTOM']));
	elm.appendChild(elm1);

	var elm1 = riElm('INPUT','haMediaMarginB','A',wDesc + 105,115,15,null,1);
	elm1.value = mrgB;
	elm1.className = 'panelField';
	elm1.style.textAlign = 'right';
	elm1.validate = NUMERIC;
	elm1.addEventListener('keyup',validateEvent,false);
	elm1.addEventListener('keyup',haMediaEvent,false);
	elm.appendChild(elm1);

	var elm1 = riElm('DIV','haMediaMarginLDesc','A',wDesc + 20,135,wDesc,null,1);
	elm1.style.textAlign = 'right';
	elm1.className = 'panelFieldDesc';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_WW_MEDIA_DESC_MARGINLEFT']));
	elm.appendChild(elm1);

	var elm1 = riElm('INPUT','haMediaMarginL','A',wDesc + 105,135,15,null,1);
	elm1.value = mrgL;
	elm1.className = 'panelField';
	elm1.style.textAlign = 'right';
	elm1.validate = NUMERIC;
	elm1.addEventListener('keyup',validateEvent,false);
	elm1.addEventListener('keyup',haMediaEvent,false);
	elm.appendChild(elm1);

	var elm1 = riElm('DIV','haMediaAltDesc','A',0,160,wDesc,null,1);
	elm1.style.textAlign = 'right';
	elm1.className = 'panelFieldDesc';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_WW_MEDIA_DESC_ALT']));
	elm.appendChild(elm1);

	var elm1 = riElm('INPUT','haMediaAlt','A',wDesc + 10,160,165,null,1);
	elm1.value = alt;
	elm1.className = 'panelField';
	elm.appendChild(elm1);

	var elm1 = riElm('DIV','haMediaWidthDesc','A',0,185,wDesc,null,1);
	elm1.style.textAlign = 'right';
	elm1.className = 'panelFieldDesc';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_WW_MEDIA_DESC_WIDTH']));
	elm.appendChild(elm1);

	var elm1 = riElm('INPUT','haMediaWidth','A',wDesc + 10,185,30,null,1);
	elm1.value = wdt;
	elm1.className = 'panelField';
	elm1.style.textAlign = 'right';
	elm1.validate = NUMERIC;
	elm1.addEventListener('keyup',validateEvent,false);
	elm1.addEventListener('change',haMediaEvent,false);
	elm.appendChild(elm1);

	var elm1 = riElm('DIV','haMediaHeightDesc','A',0,210,wDesc,null,1);
	elm1.style.textAlign = 'right';
	elm1.className = 'panelFieldDesc';
	elm1.appendChild(document.createTextNode(sLngTxt['ED_WW_MEDIA_DESC_HEIGHT']));
	elm.appendChild(elm1);

	var elm1 = riElm('INPUT','haMediaHeight','A',wDesc + 10,210,30,null,1);
	elm1.value = hgt;
	elm1.className = 'panelField';
	elm1.style.textAlign = 'right';
	elm1.validate = NUMERIC;
	elm1.addEventListener('keyup',validateEvent,false);
	elm1.addEventListener('change',haMediaEvent,false);
	elm.appendChild(elm1);
	
	var elm1 = riElm('IMG','haMediaConstrProps','A',wDesc+45,190,null,null,1);
	elm1.src = IFC_IMG_DIR +'uplimg_constr_locked.png';
	elm1.border = 0;
	elm1.title = sLngTxt['ED_WW_MEDIA_TT_CONSTRAIN'];
	elm1.addEventListener('click',haMediaEvent,false);
	elm1.addEventListener('mouseover',haMediaEvent,false);
	elm1.addEventListener('mouseout',haMediaEvent,false);
	elm.appendChild(elm1);

	var elm1 = riElm('IMG','haMediaOrigSize','A',wDesc+65,197,null,null,1);
	elm1.src = IFC_IMG_DIR +'imgfullsize.png';
	elm1.style.MozOpacity = 0.5;
	elm1.border = 0;
	elm1.title = sLngTxt['ED_WW_MEDIA_TT_ORIGSIZE'];
	elm1.addEventListener('click',haMediaEvent,false);
	elm1.addEventListener('mouseover',haMediaEvent,false);
	elm1.addEventListener('mouseout',haMediaEvent,false);
	elm.appendChild(elm1);
	
	elm1 = riElm('IMG','submit','A',parseInt((w-80)/2),240,null,null,1);
	elm1.src = IFC_IMG_DIR + 'submit_btn_out.png';
	elm1.border = 0;
	elm1.addEventListener('click',haMediaEvent,false);
	elm1.addEventListener('mouseover',haMediaEvent,false);
	elm1.addEventListener('mouseout',haMediaEvent,false);
	window.addEventListener('keypress',haMediaEvent,false);
	elm.appendChild(elm1);
	
	//elm.style.overflow = 'auto';
	tbPanel.setContent (elm);
	
	/*
	if (page==0 && pageNavTree.length>0) page = pageNavTree[0]['pge'];
	if (tpl==0 && optTpls.length>0) tpl = optTpls[0][0];
	*/
	ddCtrl[0].render(typ);
	if (nme!='') ddCtrl[0].disable();
	ddCtrl[1].render(aln);
	haMediaDisEnable();

};
	
function haMediaDisEnable() {

	var elmNme = document.getElementById('haMediaName');
	var dscAln = document.getElementById('haMediaAlignDesc');
	var dscMrg = document.getElementById('haMediaMarginDesc');
	var dscMrgT = document.getElementById('haMediaMarginTDesc');
	var dscMrgR = document.getElementById('haMediaMarginRDesc');
	var dscMrgB = document.getElementById('haMediaMarginBDesc');
	var dscMrgL = document.getElementById('haMediaMarginLDesc');
	var dscAlt = document.getElementById('haMediaAltDesc');
	var dscWdt = document.getElementById('haMediaWidthDesc');
	var dscHgt = document.getElementById('haMediaHeightDesc');
	var elmAln = document.getElementById('ddCtrl[1]');
	var elmMrg = document.getElementById('haMediaMargin');
	var elmMrgT = document.getElementById('haMediaMarginT');
	var elmMrgR = document.getElementById('haMediaMarginR');
	var elmMrgB = document.getElementById('haMediaMarginB');
	var elmMrgL = document.getElementById('haMediaMarginL');
	var elmAlt = document.getElementById('haMediaAlt');
	var elmWdt = document.getElementById('haMediaWidth');
	var elmHgt = document.getElementById('haMediaHeight');
	var elmCst = document.getElementById('haMediaConstrProps');
	var elmOrg = document.getElementById('haMediaOrigSize');
	var elmSbm = document.getElementById('submit');

	if (elmNme.value == '') {
		dscAln.style.display = 'none';
		dscMrg.style.display = 'none';
		dscMrgT.style.display = 'none';
		dscMrgR.style.display = 'none';
		dscMrgB.style.display = 'none';
		dscMrgL.style.display = 'none';
		dscAlt.style.display = 'none';
		dscWdt.style.display = 'none';
		dscHgt.style.display = 'none';
		elmAln.style.display = 'none';
		elmMrg.style.display = 'none';
		elmMrgT.style.display = 'none';
		elmMrgR.style.display = 'none';
		elmMrgB.style.display = 'none';
		elmMrgL.style.display = 'none';
		elmAlt.style.display = 'none';
		elmWdt.style.display = 'none';
		elmHgt.style.display = 'none';
		elmCst.style.display = 'none';
		elmOrg.style.display = 'none';
		elmSbm.style.display = 'none';
	} else {
		dscAln.style.display = 'block';
		dscMrg.style.display = 'block';
		dscMrgT.style.display = 'block';
		dscMrgR.style.display = 'block';
		dscMrgB.style.display = 'block';
		dscMrgL.style.display = 'block';
		dscAlt.style.display = 'block';
		dscWdt.style.display = 'block';
		dscHgt.style.display = 'block';
		elmAln.style.display = 'block';
		elmMrg.style.display = 'block';
		elmMrgT.style.display = 'block';
		elmMrgR.style.display = 'block';
		elmMrgB.style.display = 'block';
		elmMrgL.style.display = 'block';
		elmAlt.style.display = 'block';
		elmWdt.style.display = 'block';
		elmHgt.style.display = 'block';
		elmCst.style.display = 'block';
		elmOrg.style.display = 'block';
		elmSbm.style.display = 'block';
	}
	
		

};

function haMediaUplClose () {

	haPanel = null;
	tbPanel.enable();
	tbPanel.disableDrag();
	
};

function haMediaUplValue (upl) {

	document.getElementById('haMediaName').value = upl.img;
	haMediaW = upl.imgW;
	haMediaH = upl.imgH;
	document.getElementById('haMediaWidth').value = upl.imgW;
	document.getElementById('haMediaHeight').value = upl.imgH;
	document.getElementById('haMediaConstrProps').src = IFC_IMG_DIR + 'uplimg_constr_locked.png';
	
	haMediaDisEnable();
	
};

function haMediaEvent (e) {

	var elm = e.target;
	
	switch (e.type) {
	case 'click':
	
		switch (elm.id) {

		case 'haMediaUpload':
		
			var isSWF = (ddCtrl[0].getValue() == 'swf');
			var x = tbPanel.x1 + 200;
			var y = tbPanel.y1 + 25;
			tbPanel.disable();
			haPanel = new imgUpload(x,y,isSWF,tbPanel.imgNme,tbPanel.imgW,tbPanel.imgH,tbPanel.fileW,tbPanel.fileH);
			haPanel.targetEvent = haMediaUplValue;
			haPanel.closeEvent = haMediaUplClose;
			break;


		case 'haMediaConstrProps':
		
			if (elm.src.indexOf('unlocked')>=0) { 
				elm.src = IFC_IMG_DIR + 'uplimg_constr_locked.png';
			} else {	
				elm.src = IFC_IMG_DIR + 'uplimg_constr_unlocked.png';
			}	
			break;

		case 'haMediaOrigSize':
		
			var elmWdt = document.getElementById('haMediaWidth');
			var elmHgt = document.getElementById('haMediaHeight');
			elmWdt.value = haMediaW;
			elmHgt.value = haMediaH;
			break;
			
		case 'submit':
		
			var url = IMG_DIR + document.getElementById('haMediaName').value;
			var aln = ddCtrl[1].getValue();
			var elmWdt = document.getElementById('haMediaWidth');
			var elmHgt = document.getElementById('haMediaHeight');
			if (elmWdt.value=='') elmWdt.value = haMediaW;
			if (elmWdt.value=='') elmHgt.value = haMediaH;
			var wdt = elmWdt.value;
			var hgt = elmHgt.value;
			var alt = document.getElementById('haMediaAlt').value;
			var mrg = document.getElementById('haMediaMargin').value;
			var mrgT = document.getElementById('haMediaMarginT').value;
			var mrgR = document.getElementById('haMediaMarginR').value;
			var mrgB = document.getElementById('haMediaMarginB').value;
			var mrgL = document.getElementById('haMediaMarginL').value;
			
			htmlAreaObj.focusEditor();
			var sel = htmlAreaObj._getSelection();
			var range = htmlAreaObj._createRange(sel);
			//range.deleteContents();
			
			if (ddCtrl[0].getValue() == 'swf') {
			
				var node = haSwfHTML (url,wdt,hgt,haMediaW,haMediaH,aln,mrg,mrgT,mrgR,mrgB,mrgL,true);
				htmlAreaObj.insertNodeAtSelection(node);

			} else {
			
				var img = null;
				if (tbPanel.img) {
					var img = tbPanel.img;
				} else {
					htmlAreaObj._doc.execCommand("insertimage", false, '_tmp_');
					// inelegant way of accessing image DOM node just inserted
					var elms = htmlAreaObj._doc.getElementsByTagName('img');
					for (var i=0;i<elms.length;i++) {
						if (elms[i].src.indexOf('_tmp_')>=0) {
							img = elms[i];
							break;
						}	
					}	
				}
				img.src = url;
				img.alt = alt;
				img.style.width = wdt + 'px';;
				img.style.height = hgt + 'px';
				if (aln=='') {
					img.style.cssFloat = null;
				} else {	
					img.style.cssFloat = aln;
				}	
				img.style.margin = null;
				img.style.marginTop = null;
				img.style.marginRight = null;
				img.style.marginBottom = null;
				img.style.marginLeft = null;
				if (mrg!='') {
					img.style.margin = mrg + 'px';
				} else {
					if (mrgT!='') img.style.marginTop = mrgT + 'px';	
					if (mrgR!='') img.style.marginRight = mrgR + 'px';	
					if (mrgB!='') img.style.marginBottom = mrgB + 'px';	
					if (mrgL!='') img.style.marginLeft = mrgL + 'px';	
				}
				img.setAttribute('filew',haMediaW);
				img.setAttribute('fileh',haMediaH);

			}			
			tbPanel.close();
			
		}
		break;
		
	case 'keyup':
	
		if (elm.id=='haMediaMargin') {
		
			document.getElementById('haMediaMarginT').value = '';
			document.getElementById('haMediaMarginR').value = '';
			document.getElementById('haMediaMarginB').value = '';
			document.getElementById('haMediaMarginL').value = '';
			
		} else if (elm.id.indexOf('haMediaMargin')>=0) {
		
			document.getElementById('haMediaMargin').value = '';
		
		}	
		break;
		
	case 'change':	
	
		if (elm.id=='haMediaWidth' || elm.id=='haMediaHeight') {
		
			var elmImgW = document.getElementById('haMediaWidth');
			var elmImgH = document.getElementById('haMediaHeight');
			var elmConstrain = document.getElementById('haMediaConstrProps');
			if (elm.id=='haMediaWidth') {
				if (elmConstrain.src.indexOf('_locked')>=0) {
					elmImgH.value = parseInt(elmImgW.value * haMediaH/haMediaW );
				}	
			} else if (elm.id=='haMediaHeight') {
				if (elmConstrain.src.indexOf('_locked')>=0) {
					elmImgW.value = parseInt(elmImgH.value * haMediaW/haMediaH );
				}	
			}
			
		}	
		break;
		
	case 'mouseover':
	
		switch (elm.id) {
		case 'submit':
		
			elm.src = IFC_IMG_DIR + 'submit_btn_over.png';
			elm.style.cursor = 'pointer';
			break;

		case 'haMediaUpload':
		
			elm.src = IFC_IMG_DIR + 'upload_over.png';
			elm.style.cursor = 'pointer';
			break;

		case 'haMediaConstrProps':
		
			if (elm.src.indexOf('unlocked')>=0) { 
				elm.src = IFC_IMG_DIR + 'uplimg_constr_unlocked_over.png';
			} else {	
				elm.src = IFC_IMG_DIR + 'uplimg_constr_locked_over.png';
			}	
			elm.style.cursor = 'pointer';
			break;

		case 'haMediaOrigSize':
		
			elm.style.MozOpacity = 1;
			elm.style.cursor = 'pointer';
			break;
			
		}	
		break;
			
	case 'mouseout':
	
		switch (elm.id) {
		case 'submit':
		
			elm.src = IFC_IMG_DIR + 'submit_btn_out.png';
			elm.style.cursor = 'default';
			break;

		case 'haMediaUpload':
		
			elm.src = IFC_IMG_DIR + 'upload.png';
			elm.style.cursor = 'default';
			break;
			
		case 'haMediaConstrProps':
		
			if (elm.src.indexOf('unlocked')>=0) { 
				elm.src = IFC_IMG_DIR + 'uplimg_constr_unlocked.png';
			} else {	
				elm.src = IFC_IMG_DIR + 'uplimg_constr_locked.png';
			}	
			elm.style.cursor = 'default';
			break;

		case 'haMediaOrigSize':
		
			elm.style.MozOpacity = 0.5;
			elm.style.cursor = 'default';
			break;

		}			
		break;	
	}
			
	e.stopPropagation();
	
};

function haSwfHTML(url,w,h,fW,fH,aln,mrg,mrgT,mrgR,mrgB,mrgL,editMode) {

	var node;
	
	if (editMode) {

		var x = (w<16)?0:parseInt((w-16)/2);
		var y = (h<16)?0:parseInt((h-16)/2);
		var doc = haObj._doc;
		node = doc.createElement('img');
		node.src = IFC_IMG_DIR + 'blank.gif';
		node.style.border = 'solid 1px #666666';
		node.style.backgroundColor = '#cccccc';
		node.style.backgroundImage = 'url(' + IFC_IMG_DIR + 'btn_flash.png)';
		node.style.backgroundRepeat = 'no-repeat';
		node.style.backgroundPosition = '50%';

	} else {
	
		var doc = document;
		node = doc.createElement('div');
		
		var embed = '';
		embed+= '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ';
		embed+= 'codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" ';
		embed+= 'width="' + w + '" height="' + h +'">\n'; 
		embed+= '<param name="movie" value="' + url + '">\n';
		embed+= '<param name="quality" value="high">\n';
		embed+= '<param name="bgcolor" value="#FFFFFF">\n';
		// pluginurl seems to disable flash in firefox
		//embed+= '<param name="pluginurl" value="http://www.macromedia.com/go/getflashplayer">\n';
		embed+= '<!--[if gte IE 7]> <-->\n';
		embed+= '<object data="' + url + '" type="application/x-shockwave-flash" ';
		embed+= 'width="' + w + '" height="' + h +'" id="swf2">\n'; 
		embed+= '<param name="quality" value="high">\n';
		//embed+= '<param name="bgcolor" value="#FFFFFF">\n';
		embed+= '<param name="pluginurl" value="http://www.macromedia.com/go/getflashplayer">\n';
		embed+= 'You need flash to view this content: <a href="http://www.macromedia.com/go/getflashplayer">';
		embed+= 'http://www.macromedia.com/go/getflashplayer</a>\n';
		embed+= '</object>\n';
		embed+= '<!--><![endif]-->\n';
		embed+= '<!--[if lt IE 7]>\n';
		embed+= 'You need flash to view this content: <a href="http://www.macromedia.com/go/getflashplayer">';
		embed+= 'http://www.macromedia.com/go/getflashplayer</a>\n';
		embed+= '<![endif]-->\n';
		embed+= '</object>';	
		node.innerHTML = embed;

	}	

	node.setAttribute ('typ','swf');
	node.setAttribute ('filew',fW);
	node.setAttribute ('fileh',fH);
	node.setAttribute('imgsrc',url);
	node.style.height = h +'px';
	node.style.width = w + 'px';
	if (aln!='') node.style.cssFloat = aln;
	if (mrg!='') {
		node.style.margin = mrg + 'px';
	} else {
		if (mrgT!='') node.style.marginTop = mrgT + 'px';	
		if (mrgR!='') node.style.marginRight = mrgR + 'px';	
		if (mrgB!='') node.style.marginBottom = mrgB + 'px';	
		if (mrgL!='') node.style.marginLeft = mrgL + 'px';	
	}

	return node;
	
};

function haReplaceSwfHTML(editMode) {

	// replaces HTML when switching from edit mode to view mode and vice versa
	// editMode is true if being switched from desgin to edit mode
	
	var node1, node2;
	var tag = editMode?'div':'img';
	var elms = haObj._doc.getElementsByTagName(tag);
	for (var i=0;i<elms.length;i++) {
		
		node1 = elms[i];
		if (node1.getAttribute('typ')=='swf') {
		
			var url = node1.getAttribute('imgsrc');
			var aln = node1.style.cssFloat;
			var mrgT = node1.style.marginTop.replace(/px/,'');
			var mrgR = node1.style.marginRight.replace(/px/,'');
			var mrgB = node1.style.marginBottom.replace(/px/,'');
			var mrgL = node1.style.marginLeft.replace(/px/,'');
			if (mrgT + mrgR + mrgB + mrgL == '') {
				mrg = '';
				mrg = mrgT = mrgR = mrgB = mrgL = '';
			} else if (mrgT==mrgR && mrgT==mrgB && mrgT==mrgL) {
				mrg = mrgT;
				mrgT = mrgR = mrgB = mrgL = '';
			}	
			var wdt = node1.style.width.replace(/px/,'');
			var hgt = node1.style.height.replace(/px/,'');
			var fW = node1.getAttribute('filew');
			var fH = node1.getAttribute('fileh');
			node2 = haSwfHTML(url,wdt,hgt,fW,fH,aln,mrg,mrgT,mrgR,mrgB,mrgL,editMode);
			var p = node1.parentNode;
			p.replaceChild(node2, node1);
		}
	}

};

