var lastID
var defaultLabelWindowX = 0, defaultLabelWindowY = 0

function xescape(str) {
	str = str.replace(/&/g, "&amp;");
	str = str.replace(/"/g, "&quot;") // "
	str = str.replace(/'/g, "&#039;") // '
	str = str.replace(/</g, "&lt;");
	str = str.replace(/>/g, "&gt;");

	return str;
}

function xunescape(str) {
	str = str.replace(/&amp;/g, "&");
	str = str.replace(/&quot;/g, "\"") // "
	str = str.replace(/&#039;/g, "'") // '
	str = str.replace(/&lt;/g, "<");
	str = str.replace(/&gt;/g, ">");

	return str;
}

function lmo(id, event){
	// find template div or span
	var templates = grabTemplateNames(event.currentTarget)
	setTimeout("setStatus(\""+templates+"\", \""+id+"\")", 20)
	lastID = id
	var aElement = findAElement(event.currentTarget)
	if (aElement!=null) {
		// check if there is Label dialog open
		if (labelWindow==null || labelWindow.closed) {
			aElement.addEventListener("keypress", lkp, true)
//			aElement.addEventListener("mouseover", lamo, false)
			// focus the link
			aElement.focus()
		}
	}
}
function grabTemplateNames(elem) {
	var templates = "", tst=""
	while (elem!=null) {
		if (elem.tagName!=null && (elem.tagName.toUpperCase()=='DIV' || elem.tagName.toUpperCase()=='SPAN' || elem.tagName.toUpperCase()=='TBODY')) {
			var attr = elem.attributes.getNamedItem("id")
			if (attr!=null && attr.name!=null && attr.value.indexOf('.tpl')>0) {
				templates = attr.value + " > " + templates 
			}
		}	
		elem = elem.parentNode
	}
	return templates
}

function setStatus(templates, id) {
	window.status = templates+id 
}

function findAElement(elem) {
	while ((elem.parentNode.tagName.toUpperCase()!='A' || elem.parentNode.href=='') && elem.parentNode.tagName.toUpperCase()!='BODY') {
		elem = elem.parentNode
	}
	if (elem.parentNode.tagName.toUpperCase()!='A') {
		return null
	}
	return elem.parentNode
}

function lamo(event){
	setStatus (grabTemplateNames(event.currentTarget), lastID)
}

function lmu(id, event){
	lastID = window.status = ''
}

function lkp(event){
	if (event.charCode==69 || event.charCode==101) { // 'E', 'e'
		if (lastID!='') showLabelForm(lastID)
	}
}
function lmc(id, event){
	if (findAElement(event.currentTarget)!=null) {
		return // inside <a>
	}
	showLabelForm(id)
}
function setLabel(){
	// find all spans having onMouseOver=lom('labelWindow.lf.val.value')
	var ID = labelWindow.document.forms["lf"].val.value
	allElem = document.body.getElementsByTagName("SPAN")
	for (a=0; a < allElem.length; a++) {
		var attr = allElem[a].attributes.getNamedItem("id")
		if (attr!=null && attr.value == labelID) {
			allElem[a].innerHTML = labelWindow.document.forms["lf"].val.value
			lng_labels[labelID] = xescape(labelWindow.document.forms["lf"].val.value);
		}
	}	
	// document.all[labelWindow.lf.name.value].innerHTML = labelWindow.lf.val.value
}

var labelWindow
var labelID
var initialValue

function showLabelForm(id){
	if (labelWindow!=null && !labelWindow.closed) {
		labelWindow.close()
	}
	if (defaultLabelWindowX==0) {
		defaultLabelWindowX = window.screenX+100
		defaultLabelWindowY = window.screenY+100
	}
	labelWindow = window.open("","labelWnd","width=450, height=60, left="+defaultLabelWindowX+", top="+defaultLabelWindowY)
	labelID = id
	setTimeout("fillLabelWindow()",100)
}
function fillLabelWindow(){
	var labelText = "";
	var content = "<HTML><HEAD><TITLE>Label Dialog</TITLE><META http-equiv='Content-Type' content='text/html; charset="+page_charset+"'></HEAD><body style='margin:5px' bgcolor=\"#FFFBD3\" onUnload=\"rememberXY();\">"
	content += "<form name=lf action=\""+catalogs.admin+"/set_label.php\" method=post onSubmit=\"window.opener.setLabel()\" accept-charset=\""+page_charset+"\">"
	content += "<table cellspacing=0 cellpadding=0 id=\"tbl\"><tr style=\"font-size:12px;font-weight:bold\"><td>name</td><td>value</td></tr><tr valign=top><td style=\"font-size:12px\">"
	allElem = document.body.getElementsByTagName("SPAN")
	labelText = lng_labels[labelID];
	initialValue = xunescape(labelText);
	content += labelID+"&nbsp;&nbsp;</td><td>"
	if (labelText.length>40 || labelText.match(/[\n\r]/)) {
		content += "<textarea name=\"val\" cols=\"50\" rows=\"5\">"+labelText+"</textarea>"
	} else {
		content += "<input type=\"text\" name=\"val\" value=\""+labelText+"\" size=\"50\">"
	}
	content += "</td></tr><tr><td colspan=2 align=center><input type=hidden name=name value='"+labelID+"'><input type=hidden name=lang value='"+store_language+"'>"
	content += "<a href=\"javascript:window.opener.setLabel()\"><img align=middle border=\"0\" width=23 height=22 src=\""+catalogs.images+"/preview.gif\">&nbsp;preview</a>&nbsp;&nbsp;&nbsp;<a href=\"javascript:window.opener.setLabel();document.forms['lf'].submit()\"><img align=middle border=\"0\" width=23 height=22 src=\""+catalogs.images+"/save.gif\">&nbsp;save</a>&nbsp;&nbsp;&nbsp;<a href=\"javascript:restoreLabel();window.close()\"><img align=middle border=\"0\" width=23 height=22 src=\""+catalogs.images+"/cancel.gif\">&nbsp;cancel</a>"
	content += "</td></tr></table></form></body></html>"
	content += "<script>function rememberXY() { window.opener.defaultLabelWindowX = window.screenX; window.opener.defaultLabelWindowY = window.screenY; }</script>"
	content += "<script>function restoreLabel() { document.forms['lf'].val.value=window.opener.initialValue; window.opener.setLabel() }</script>"


	labelWindow.document.write(content)
	labelWindow.document.forms["lf"].val.focus()
	labelWindow.document.forms["lf"].val.select()
	labelWindow.document.close()
	var w = labelWindow.document.getElementById("tbl").offsetWidth
	var h = labelWindow.document.getElementById("tbl").offsetHeight
	labelWindow.innerWidth = w+23
	labelWindow.innerHeight = h+20
	labelWindow.resizeTo(w+33, h+50)
	labelWindow.focus()
}
function dmo(event) {
	if (window.status=='') {
		window.status = grabTemplateNames(event.currentTarget)
	}
}

function dmu(event) {
	window.status = ''
}
// functions to run from debug console

// make a border around the template
function markTemplate(tmplt, remove){
	// find all spans and divs having name=tmplt
	var tags = new Array()
	tags[0] = "SPAN"
	tags[1] = "DIV"
	tags[2] = "TBODY"
	var i
	for(i=0; i<tags.length; i++){
	var allelem = document.body.getElementsByTagName(tags[i])
	for (a=0; a < allelem.length; a++) {
		var attr = allelem[a].attributes.getNamedItem("id")
		if (attr!=null && attr.value==tmplt) {
				if (tags[i]=='TBODY') {
					if (remove) {
						borderStyle = "0pt none black"
					} else {
						borderStyle = "1pt solid black"
					}	
					var j
					for (j=0; j<allelem[a].childNodes.length; j++) {
						var row = allelem[a].childNodes[j]
						var k
						for (k=0; k<row.childNodes.length; k++) {
							if (row.childNodes[k].tagName=='TD') {
								row.childNodes[k].style.border = borderStyle
							}
						}	
					}
				} else {
					markElement(allelem[a], remove)
				}
		}
	}
	}
}

function markElement(elem, remove) {
	if (remove) {
		elem.style.border = 'none'
		elem.style.borderWidth="0pt"
	} else {
		elem.style.border = 'solid'
		elem.style.borderWidth="1pt"
		elem.style.borderColor='black'
	}
}

function tmo(tmplt, event) {
	markTemplate(tmplt, 0)
}
function tmu(tmplt, event) {
	markTemplate(tmplt, 1)
}

