var NAMESPACE_DECLARATION = ' xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dsh="http://beta.discovershropshire.org.uk/schemas/"';
var NODETYPE_TEXT = 1;
var NODETYPE_ELEMENT = 3;
var IFRAME = false;
var xmlhttp;
var resourceBrowser = false;
var uploader = false;
var entityPicker = false;
var flashEntityPicker = false;
var subjectPicker = false;
var regexPicker = false;

var CSS_FILTER = 'FILTER: progid:DXImageTransform.Microsoft.Glow(color=#FFFFFF,strength=2);FILTER: progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#666666,strength=5);';
var bodyOpacityChange = 50;
var xmlhttp;

function setImageInfo(w,h,s,f,p,o)
{
	try{
		document.getElementById('resourceImageWidth').value = w;
		document.getElementById('resourceImageHeight').value = h;
		document.getElementById('resourceFormat').value = f;
		document.getElementById('resourcePath').value = p;
		document.getElementById('originalFilename').value = o;

		size = formatFilesize(s);
		document.getElementById('resourceFileSize').value = size[0];
		document.getElementById('resourceFileSizeUnits').value = size[1];
	}catch(e){
		alert(e);
	}

	//alert(w+'X'+h+' size:'+s);
}
function formatFilesize(size) {
	var a = new Array("bytes", "KB", "MB", "GB", "TB", "PB");

	pos = 0;

	if(size<0){return Array(0,'bytes');}

	while (size >= 1024)
	{
		size /= 1024;
		pos++;
	}

	size = Math.round(size*100)/100;

	return new Array(size,a[pos]);
}
/**
* For the Gallery Edit form, when an item is show the image preview is refresh to reflect
* the current identifier item. use AJAX to query database about the item path
*/
function getImagePreview(imgButton)
{
	var fieldset = imgButton.parentNode.parentNode;
	var inputs = fieldset.getElementsByTagName('INPUT');
	var identifier = '';
	for(var i=0;i<inputs.length;i++)
	{
		if(inputs[i].name == 'identifier')
		{
			identifier = inputs[i].value;
		}
	}
	if(identifier=='')
	{
		return;
	}


	var div = fieldset.getElementsByTagName('DIV')[1];
	var img = div.getElementsByTagName('IMG')[1];


	var url = '/html/search/verb/GetRecordXML/'+identifier;


	// code for Mozilla, etc.
	if (window.XMLHttpRequest)
	{
		xmlhttp=new XMLHttpRequest()
		xmlhttp.open("GET",url,false)
		xmlhttp.send(null)
	}
	// code for IE
	else if (window.ActiveXObject)
	{
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
		if (xmlhttp)
		{
			xmlhttp.open("GET",url,false)
			xmlhttp.send()
		}
	}

	//alert(xmlhttp.responseText);

	try{
		//var path = xmlhttp.responseXML.getElementsByTagName('path')[0].firstChild.nodeValue;
		var path = '/html/resource/preview/'+identifier;
		var format = new String();
		if(xmlhttp.responseXML.getElementsByTagName('dc:format').length>0)
		{
			format = xmlhttp.responseXML.getElementsByTagName('dc:format')[0].firstChild.nodeValue;
		}
		var icon = new String();
		if(xmlhttp.responseXML.getElementsByTagName('icon').length>0)
		{
			icon = xmlhttp.responseXML.getElementsByTagName('icon')[0].firstChild.nodeValue;
		}
		if(format.indexOf('image')==-1 && icon!='')
		{
			path = icon;
		}
		img.src = path;

	}catch(e){
		alert('ERROR at 105: '+e);
	}


}
function storeCaret (textEl)
{
	try{
		if (textEl.createTextRange)
		{
			textEl.caretPos = document.selection.createRange().duplicate();
		}
	}catch(e){
		alert(e);
	}
}
function insertAtCaret (textEl, text)
{
	if(textEl.nodeName=='INPUT')
	{
		var txt = new String(text);
		var reg = new RegExp('\\[dsh:resource identifier="([A-Z0-9a-z:]+[^"])".*\]', "i");
		var match = reg.exec(txt);
		textEl.value = match[1];
		return;
	}

	if (textEl.createTextRange && textEl.caretPos)
	{
		var caretPos = textEl.caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ?
		text + ' ' : text;
	}
	else
	{
		textEl.value+= text;
	}
}
function hideUploader()
{
	if(!uploader)
	{
		return;
	}
	else
	{
		document.body.style.filter = 'FILTER:none;';
		uploader.style.display = 'none';
	}
}
function hideRegularExpressionPicker()
{
	if(!regexPicker)
	{
		return;
	}
	else
	{
		document.body.style.filter = 'FILTER:none;';
		regexPicker.style.display = 'none';
	}
}
function hideEntityPicker()
{
	if(!entityPicker)
	{
		return;
	}
	else
	{
		document.body.style.filter = 'FILTER:none;';
		entityPicker.style.display = 'none';
		try{
			
		}catch(e){}
	}
}
function hideResourceBrowser()
{
	if(!resourceBrowser)
	{
		return;
	}
	else
	{
		document.body.style.filter = 'FILTER:none;';
		resourceBrowser.style.display = 'none';
	}
}
function insertLink(txt,path)
{
	insertAtCaret(resourceBrowser.textarea,txt);
	try{
		resourceBrowser.imageToUpdate.src = path;
	}catch(e){}
}
function getIdentifier()
{
	var inputs = document.getElementsByTagName('INPUT');
	for(var i=0;i<inputs.length;i++)
	{
		if(inputs[i].name=='dc:identifier')
		{
			return inputs[i].value;
		}
	}
	return false;
}
function showResourceBrowser(img,inputType,showAll,inputToUpdate)
{
	var w = 530;
	var h = 350;
	if(showAll)
	{
		var src = "/admin/popups/resourceBrowser.php?entitiesOnly=true";
	}
	else
	{
		var src = "/admin/popups/resourceBrowser.php?entitiesOnly=true";
	}
	if(!resourceBrowser)
	{
		resourceBrowser = document.createElement('IFRAME');
		resourceBrowser.setAttribute('scrolling','none');
		resourceBrowser.style.filter = CSS_FILTER;
		resourceBrowser.style.border = '';
		resourceBrowser.style.width = w+'px';
		resourceBrowser.style.height = h+'px';
		resourceBrowser.style.position = 'absolute';
		resourceBrowser.style.display = 'none';
		resourceBrowser = img.parentNode.appendChild(resourceBrowser);
	}

	if(src!=resourceBrowser.src)
	{
		resourceBrowser.src = src;
	}

	switch(resourceBrowser.style.display)
	{
		case 'none':

		var screenCentre = getScreenCentre();
		resourceBrowser.style.display = 'block';
		resourceBrowser.style.left = Math.round(screenCentre[0]-(w/2))+'px';
		resourceBrowser.style.top = Math.round(screenCentre[1]-(h/2)-20)+'px';
		resourceBrowser.style.zIndex = 1000000;
		document.body.style.filter = 'FILTER: progid:DXImageTransform.Microsoft.Alpha( style=0,opacity='+bodyOpacityChange+');';
		break;

		default:
		document.body.style.filter = 'FILTER:none;';
		resourceBrowser.style.display = 'none';
		break;
	}


	if(inputType=='textarea')
	{
		resourceBrowser.textarea = img.parentNode.parentNode.getElementsByTagName('TEXTAREA')[0];
		resourceBrowser.imageToUpdate = null;
	}
	else if(inputType=='input')
	{


		if(inputToUpdate==null)
		{
			resourceBrowser.textarea = img.parentNode.parentNode.getElementsByTagName('INPUT')[0];
		}
		else
		{
			resourceBrowser.textarea = inputToUpdate;
		}

		try{
			var div = img.parentNode.parentNode.parentNode;
			
			var imgs = div.getElementsByTagName('IMG');
			for(var i=0;i<imgs.length;i++)
			{
				if(imgs[i].className=='preview')
				{
					resourceBrowser.imageToUpdate = imgs[i];
					break;
				}
			}
		}catch(e){
			alert(e);
		}
	}
}
function showUploader(img)
{
	var identifier = getIdentifier();

	var w = 350;
	var h = 250;
	if(!uploader)
	{
		uploader = document.createElement('IFRAME');
		uploader.setAttribute('scrolling','none');
		uploader.style.filter = CSS_FILTER;
		uploader.style.border = '';
		uploader.style.width = w+'px';
		uploader.style.height = h+'px';
		uploader.style.position = 'absolute';
		uploader.style.display = 'none';
		uploader = img.parentNode.appendChild(uploader);
	}

	switch(uploader.style.display)
	{
		case 'none':
		uploader.src="/admin/popups/uploader.php?identifier="+identifier+"&path="+img.parentNode.parentNode.getElementsByTagName('INPUT')[0].value;

		uploader.style.display = 'block';

		var screenCentre = getScreenCentre();
		uploader.style.left = Math.round(screenCentre[0]-(w/2))+'px';
		uploader.style.top = Math.round(screenCentre[1]-(h/2)+100)+'px';
		document.body.style.filter = 'FILTER: progid:DXImageTransform.Microsoft.Alpha( style=0,opacity='+bodyOpacityChange+');';
		break;

		default:
		uploader.style.display = 'none';
		document.body.style.filter = 'FILTER:none;';
		break;
	}
}
function showRegularExpressionPicker(img)
{
	var w = 350;
	var h = 250;
	if(!regexPicker)
	{
		regexPicker = document.createElement('IFRAME');
		regexPicker.setAttribute('scrolling','none');
		regexPicker.style.filter = CSS_FILTER;
		regexPicker.style.border = '';
		regexPicker.style.width = w+'px';
		regexPicker.style.height = h+'px';
		regexPicker.style.position = 'absolute';
		regexPicker.style.display = 'none';
		regexPicker = img.parentNode.appendChild(regexPicker);
	}

	regexPicker.TD = img.parentNode.parentNode.getElementsByTagName('TD')[0];
	regexPicker.INPUT = regexPicker.TD.getElementsByTagName('INPUT')[0];
	
	switch(regexPicker.style.display)
	{
		case 'none':
		regexPicker.src="/admin/popups/regularExpressionPicker.php";

		regexPicker.style.display = 'block';

		var screenCentre = getScreenCentre();
		regexPicker.style.left = Math.round(screenCentre[0]-(w/2))+'px';
		regexPicker.style.top = Math.round(screenCentre[1]-(h/2)+100)+'px';
		document.body.style.filter = 'FILTER: progid:DXImageTransform.Microsoft.Alpha( style=0,opacity='+bodyOpacityChange+');';
		break;

		default:
		regexPicker.style.display = 'none';
		regexPicker.body.style.filter = 'FILTER:none;';
		break;
	}
}
function setSubject(title)
{
	try{
		subjectPicker.TD.firstChild.nodeValue = title;
		subjectPicker.INPUT.value = title;
	}catch(e){
		alert('ERROR setting entity: '+e);
	}
}
function setEntity(identifier,title)
{
	if(entityPicker.FLASHMOVIE!=null)
	{
		//alert(identifier);
		//entityPicker.FLASHMOVIE.SetVariable('_level0.canvas.shape0.HREF',identifier);	
		
		
		hideEntityPicker();
		window.document.ImageMapEditor.SetVariable('_level0.window_edit.varTitle',title);
		window.document.ImageMapEditor.SetVariable('_level0.window_edit.varHref','/html/search/verb/GetRecord/'+identifier);
	}
	else
	{
		try{
			entityPicker.TD.firstChild.nodeValue = title;
			entityPicker.INPUT.value = identifier;
		}catch(e){
			alert('ERROR setting entity: '+e);
		}
	}
}
function setRegex(a)
{
	var identifier = a.firstChild.nodeValue;
	try{
		regexPicker.INPUT.value = identifier;
		hideRegularExpressionPicker();
	}catch(e){
		alert('ERROR setting regex: '+e);
	}
}
function flashShowEntityPicker()
{
	try{
		var w = 350;
		var h = 250;
	
		var flashID = 'ImageMapEditor';
		var flashMovie = document.getElementById(flashID);
		if(!entityPicker)
		{
			entityPicker = document.createElement('IFRAME');
			entityPicker.setAttribute('scrolling','none');
			entityPicker.style.filter = CSS_FILTER;
			entityPicker.style.border = '';
			entityPicker.style.width = w+'px';
			entityPicker.style.height = h+'px';
			entityPicker.style.position = 'absolute';
			entityPicker.style.display = 'none';
			entityPicker = flashMovie.parentNode.appendChild(entityPicker);
		}
		
		entityPicker.FLASHMOVIE = flashMovie;
	
		switch(entityPicker.style.display)
		{
			case 'none':
			if(entityPicker.filter!=CSS_FILTER || entityPicker.src=='')
			{
				entityPicker.src="/admin/popups/entityPicker.php?filter=";
				entityPicker.filter = CSS_FILTER;
			}
			entityPicker.style.display = 'block';
	
			var screenCentre = getScreenCentre();
			entityPicker.style.left = Math.round(screenCentre[0]-(w/2))+'px';
			entityPicker.style.top = (Math.round(screenCentre[1]-(h/2)+100))/2+'px';
			
			entityPicker.style.top = '-'+(h+10)+'px';//getOffsetTop(entityPicker.FLASHMOVIE)+'px';
			
			entityPicker.style.top = '800px';
			entityPicker.style.left = '150px';
			
			entityPicker.style.zIndex = 1000000;
			document.body.style.filter = 'FILTER: progid:DXImageTransform.Microsoft.Alpha( style=0,opacity='+bodyOpacityChange+');';
			break;
	
			default:
			entityPicker.style.display = 'none';
			document.body.style.filter = 'FILTER:none;';			
			break;
		}
	}catch(e){
		alert(e);
	}
}
function showEntityPicker(img,filter)
{
	var w = 350;
	var h = 250;

	
	if(!entityPicker)
	{
		entityPicker = document.createElement('IFRAME');
		entityPicker.setAttribute('scrolling','none');
		entityPicker.style.filter = CSS_FILTER;
		entityPicker.style.border = '';
		entityPicker.style.width = w+'px';
		entityPicker.style.height = h+'px';
		entityPicker.style.position = 'absolute';
		entityPicker.style.display = 'none';
		entityPicker = img.parentNode.appendChild(entityPicker);
	}

	entityPicker.TD = img.parentNode.parentNode.getElementsByTagName('TD')[0];
	entityPicker.INPUT = entityPicker.TD.getElementsByTagName('INPUT')[0];

	switch(entityPicker.style.display)
	{
		case 'none':
		if(entityPicker.filter!=filter || entityPicker.src=='')
		{
			entityPicker.src="/admin/popups/entityPicker.php?filter="+filter;
			entityPicker.filter = filter;
		}
		entityPicker.style.display = 'block';

		var screenCentre = getScreenCentre();
		entityPicker.style.left = Math.round(screenCentre[0]-(w/2))+'px';
		entityPicker.style.top = Math.round(screenCentre[1]-(h/2)+100)+'px';
		document.body.style.filter = 'FILTER: progid:DXImageTransform.Microsoft.Alpha( style=0,opacity='+bodyOpacityChange+');';
		break;

		default:
		entityPicker.style.display = 'none';
		document.body.style.filter = 'FILTER:none;';
		break;
	}
}
function hideSubjectPicker()
{
	if(!subjectPicker)
	{
		return;
	}
	else
	{
		document.body.style.filter = 'FILTER:none;';
		subjectPicker.style.display = 'none';
	}
}
function showSubjectPicker(img,filter)
{
	var w = 350;
	var h = 250;

	if(!subjectPicker)
	{
		subjectPicker = document.createElement('IFRAME');
		subjectPicker.setAttribute('scrolling','none');
		subjectPicker.style.filter = CSS_FILTER;
		subjectPicker.style.border = '';
		subjectPicker.style.width = w+'px';
		subjectPicker.style.height = h+'px';
		subjectPicker.style.position = 'absolute';
		subjectPicker.style.display = 'none';
		subjectPicker = img.parentNode.appendChild(subjectPicker);
	}

	subjectPicker.TD = img.parentNode.parentNode.getElementsByTagName('TD')[0];
	subjectPicker.INPUT = subjectPicker.TD.getElementsByTagName('INPUT')[0];

	switch(subjectPicker.style.display)
	{
		case 'none':
		if(subjectPicker.src=='')
		{
			subjectPicker.src="/admin/popups/subjectPicker.php?filter="+filter;
		}
		subjectPicker.style.display = 'block';

		var screenCentre = getScreenCentre();
		subjectPicker.style.left = Math.round(screenCentre[0]-(w/2))+'px';
		subjectPicker.style.top = Math.round(screenCentre[1]-(h/2)+100)+'px';
		document.body.style.filter = 'FILTER: progid:DXImageTransform.Microsoft.Alpha( style=0,opacity='+bodyOpacityChange+');';
		break;

		default:
		subjectPicker.style.display = 'none';
		document.body.style.filter = 'FILTER:none;';
		break;
	}
}
function getOffsetTop(el)
{
	var offsetTop = 0;
	while(el.parentNode.nodeName.toLowerCase()!='html')
	{
		offsetTop+=el.offsetTop-el.parentNode.offsetTop;
		el = el.parentNode;
	}
	return offsetTop;
}
function getScreenCentre()
{
	var size = new Array();
	if (parseInt(navigator.appVersion)>3) {
		if (navigator.appName=="Netscape") {
			winW = window.innerWidth/2;
			winH = window.innerHeight/2;
		}
		if (navigator.appName.indexOf("Microsoft")!=-1) {
			winW = (document.body.offsetWidth/2)+document.body.offsetLeft;
			winH = (document.body.offsetHeight/2)-50;
		}
	}
	
	if(window.pageYOffset){winH+=window.pageYOffset/2;}
	if(document.body.scrollTop){winH+=document.body.scrollTop/2;}
	if(document.documentElement.scrollTop){winH+=document.documentElement.scrollTop/2;}
	

	size[0] = winW;
	size[1] = winH;

	return size;
}

function xmlhttpChange()
{
	// if xmlhttp shows "loaded"
	if (xmlhttp.readyState==4)
	{
		// if "OK"
		if (xmlhttp.status==200)
		{
			var newWin = window.open();
			newWin.document.write(xmlhttp.responseText);

			newWin.document.write('<script type="text/javascript">mapInit(\'Map\');</script>');
		}
		else
		{
			alert("Problem retrieving XML data");
		}
	}
}

function getMapPreviewWindow(href,w,h)
{



	var doc = new String(GetXmlString(document.getElementById('xmlForm'),'',''));
	var areas = document.getElementById('areas_field').value;
	doc = doc.split('</map>').join(areas+'</map>');


	document.getElementById('xmlPreview').value = doc;



	//var data = '<html><body>'+document.body.innerHTML+'</body></html>';


	var data = 'xml='+doc;

	// code for Mozilla, etc.
	if (window.XMLHttpRequest)
	{
		xmlhttp=new XMLHttpRequest();
		xmlhttp.onreadystatechange=xmlhttpChange;
		xmlhttp.open("POST",href,true);

		xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		xmlhttp.send(data);
		//		alert(xmlhttp.responseText);

	}
	// code for IE
	else if (window.ActiveXObject)
	{
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		if (xmlhttp)
		{
			xmlhttp.onreadystatechange=xmlhttpChange;
			xmlhttp.open("POST",href,true);
			xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			xmlhttp.send(data);
			//			alert(xmlhttp.responseText);

		}
	}

	//IFRAME.FORM.submit();
}
function clearWhiteSpace(s)
{
	var s = new String(s);
	s = s.split("\n").join('');
	s = s.split("\r").join('');
	s = s.split("\t").join('');
	return s;
}
function updateLegend(input,value)
{
	try
	{
		var fieldset = findParentFieldset(input);
		var legend = fieldset.getElementsByTagName('LEGEND')[0];
		var childNodes = legend.childNodes;
		for(var i=0;i<childNodes.length;i++)
		{
			if(childNodes[i].nodeType==3)
			{
				if(clearWhiteSpace(childNodes[i].nodeValue)!='')
				{
					if(childNodes[i].nodeValue.indexOf('(')!=-1)
					{
						childNodes[i].nodeValue = childNodes[i].nodeValue.split('(')[0]+'('+input.value+')';
						return;
					}
				}
			}
		}
	}
	catch(e)
	{
		alert(e);
	}
}
function getXml(frm)
{
	return GetXmlString(frm,'','');
}
function ImageMapEditor_DoFSCommand(args) {
	try{
		var el = document.getElementById('areas_field');
		el.value+= args;
	}catch(e){
		alert('Error setting Field(areas_field) with data: '+args+': '+e);
	}
}
function clearField(fieldID)
{
	try{
		var el = document.getElementById(fieldID);
		el.value = '';
		
	}catch(e){
		alert('Error clearing Field('+fieldID+'): '+e);
	}
}
function setField(fieldID,fieldValue)
{
	try{
		var el = document.getElementById(fieldID);
		el.value = fieldValue;
	}catch(e){
		alert('Error setting Field('+fieldID+') with data: '+fieldValue+': '+e);
	}
}
function trimWhiteSpace(str)
{
	str = LTrim(str);
	str = RTrim(str);
	return str;
}
function GetXmlString(parentNode,parentFieldsetName,tab)
{
	var node;
	var nodeName;
	var str = new String('');
	var tmp;
	var tmpTab = '';


	var mainNodeName = '';

	try
	{
		if(tab=='')
		{
			mainNodeName = getInnerText(parentNode.getElementsByTagName('LEGEND')[0]);
			mainNodeName = trimWhiteSpace(mainNodeName);
			mainNodeName = RTrim(mainNodeName,'*');
			mainNodeName = mainNodeName.toLowerCase();
			str+= '<'+mainNodeName+' '+NAMESPACE_DECLARATION+">\n";
			tab+="\t";
		}

		var childNodes = parentNode.childNodes;
		var tab = new String(tab);
		for(var i=0;i<childNodes.length;i++)
		{
			node = childNodes[i];
			switch(node.nodeName)
			{

				case 'TEXTAREA':
				case 'INPUT':
				case 'SELECT':
				if(node.value!='' && node.value!='-')
				{
					//if(tmpTab!=tab && tab!=''){tmpTab = tab.substring(0,tab.length-1);}
					nodeName = node.name;
					str+=tab+"<"+nodeName+">";

					//alert(node.value);
					//var val = encode_utf8(node.value);
					
					var val = htmlEntities(node.value);
					
					//alert(val);

					str+=val;
					str+="</"+nodeName+">\n";
					tmpTab = tab;
				}
				break;

				case 'FIELDSET':
				if(nodeName = getInnerText(node.getElementsByTagName('LEGEND')[0]))
				{
					/*
					nodeName = new String(nodeName);
					nodeName = nodeName.split('*').join('');
					nodeName = nodeName.split(' METADATA').join('');
					nodeName = nodeName.split(' ').join('');
					nodeName = nodeName.toLowerCase();
					nodeName = trim(nodeName);
					*/

					nodeName = new String(nodeName);
					nodeName = clearWhiteSpace(nodeName);
					nodeName = nodeName.split('(')[0];
					nodeName = nodeName.split('*').join('');

					nodeName = capitalize(nodeName);
					nodeName = nodeName.split(' ').join('');
					nodeName = trim(nodeName);

					nodeName = trimWhiteSpace(nodeName);
					//tab = tab.substring(0,tab.length-1);

					var innerVal = GetXmlString(node,nodeName,tab+"\t");
					if(clearWhiteSpace(innerVal)!='')
					{
						str+=tab+"<"+nodeName+">\n";
						str+=innerVal;
						str+=tab+"</"+nodeName+">\n";
					}
				}
				break;

				default:
				str+=GetXmlString(node,'',tab);
				break;
			}
		}
		if(mainNodeName!='')
		{
			str+= "</"+mainNodeName+'>';
		}
	}catch(e){}
	return str;
}
function capitalize(str)
{
	str = trim(str);
	var str = new String(str);


	var val = str.split(' ');



	val[0] = new String(val[0]);
	val[0] = val[0].toLowerCase();

	for(var c=1; c < val.length; c++)
	{
		val[c] = val[c].substring(0,1).toUpperCase() + val[c].substring(1,val[c].length);
	}

	str = val.join('');

	return str;
}

function trim(s) {
	s = new String(s);
	while (s.substring(0,1) == ' ') {
		s = s.substring(1,s.length);
	}
	while (s.substring(s.length-1,s.length) == ' ') {
		s = s.substring(0,s.length-1);
	}
	return s;
}


function openHelp(a,str)
{
	alert(str);
}
function hideFieldset(img,mapFlag)
{
	if(mapFlag)
	{
		if(document.getElementById('mapEditArea'))
		{
			document.getElementById('mapEditArea').style.display=='none' ? document.getElementById('mapEditArea').style.display='block' : document.getElementById('mapEditArea').style.display='none';
		}
	}
	
	
	var fieldset = findParentFieldset(img);
	var childNodes = fieldset.childNodes;
	var displayState = 'block';

	if(img.src.indexOf('minus')==-1)
	{
		img.src = img.src.split('plus').join('minus');
		displayState = 'block';

		if(!findParentFieldset(fieldset))
		{
			try
			{
				window.parent.metadataEditorExpand(document.getElementsByTagName('FIELDSET')[0]);
			}
			catch(e)
			{
			}
		}
	}
	else
	{
		img.src = img.src.split('minus').join('plus');
		displayState = 'none';
		if(!findParentFieldset(fieldset))
		{
			try
			{
				window.parent.metadataEditorCollapse();
			}
			catch(e)
			{
			}
		}
	}

	for(var i=0;i<childNodes.length;i++)
	{
		switch(childNodes[i].nodeName.toLowerCase())
		{
			case 'div':
			if(displayState=='block')
			{
				childNodes[i].style.display = '';//table-row';
			}
			else
			{
				childNodes[i].style.display = 'none';
			}
			break;

			case 'fieldset':
			childNodes[i].style.display = displayState;
			break;
		}
	}
}
function cloneFieldset(img,forceAppend)
{
	
	var fieldset = findParentFieldset(img);
	var cloned = fieldset.cloneNode(true);

	var legends = cloned.getElementsByTagName('LEGEND');
	
	var anchors = legends[0].getElementsByTagName('A');
	for(var i=0;i<anchors.length;i++)
	{
		anchors[i].style.display = '';
	}
	var selects = cloned.getElementsByTagName('SELECT');
	for(var i=0;i<selects.length;i++)
	{
		selects[i].value = '';
		try{selects[i].onchange();}catch(e){}
	}	
	var inputs = cloned.getElementsByTagName('INPUT');
	for(var i=0;i<inputs.length;i++)
	{
		inputs[i].value = '';
		try{inputs[i].onchange();}catch(e){}
	}	
	var textareas = cloned.getElementsByTagName('TEXTAREA');
	for(var i=0;i<textareas.length;i++)
	{
		textareas[i].value = '';
	}
	var tds = cloned.getElementsByTagName('TD');
	for(var i=0;i<tds.length;i++)
	{
		tds[i].firstChild.nodeValue = '';
	}
	var imgs = cloned.getElementsByTagName('IMG');
	for(var i=0;i<imgs.length;i++)
	{
		if(imgs[i].src.indexOf('resource')!=-1)
		{
			imgs[i].style.display = 'none';
		}
	}

	if(forceAppend!=null)
	{
		fieldset.parentNode.appendChild(cloned);
	}
	else
	{
		fieldset.parentNode.insertBefore(cloned,fieldset);
	}
}
function clonediv(img)
{
	var label = findParentLabel(img);
	var cloned = label.cloneNode(true);

	var tds = cloned.getElementsByTagName('TD');
	if(tds.length>0)
	{
		tds[0].firstChild.nodeValue = '-';
	}
	
	//label.parentNode.insertBefore(cloned,label);
	
	
	label.parentNode.insertBefore(cloned,label.nextSibling);
}

var advancedSearchFormFieldCounts = new Array();
function clonedivAdvancedSearchForm(img)
{
	var label = findParentLabel(img);
	var cloned = label.cloneNode(true);
	if(m = img.parentNode.getElementsByTagName('INPUT')[0].name.match(/fields\[([a-zA-Z]+)\]\[(.*)\]$/))
	{
		if(advancedSearchFormFieldCounts[m[1]]==null)
		{
			advancedSearchFormFieldCounts[m[1]] = 0;
		}
		advancedSearchFormFieldCounts[m[1]]++;
		var newName = 'fields['+m[1]+']['+advancedSearchFormFieldCounts[m[1]]+']';
		
		var inputs = cloned.getElementsByTagName('INPUT');
		for(var i=0;i<inputs.length;i++)
		{
			
			if(inputs[i].name.match(/^fieldsExclude\[/))
			{
				inputs[i].name = 'fieldsExclude['+m[1]+']['+advancedSearchFormFieldCounts[m[1]]+']';
			}
			else if(inputs[i].name.match(/^fields\[/))
			{
				inputs[i].name = 'fields['+m[1]+']['+advancedSearchFormFieldCounts[m[1]]+']';
				inputs[i].value = '';
			}
			
		}
	}
	label.parentNode.insertBefore(cloned,label.nextSibling);
}
function deletediv(img)
{
	if(confirm('Are you sure you wish to delete this?'))
	{
		var label = findParentLabel(img);
		label.parentNode.removeChild(label);
	}
}
function deleteFieldset(img)
{
	if(confirm('Are you sure you wish to delete this?'))
	{
		var fieldset = findParentFieldset(img);
		fieldset.parentNode.removeChild(fieldset);
	}
}
function findParentLabel(img)
{
	var node = img;
	while(node.nodeName.toLowerCase()!='div')
	{
		node = node.parentNode;
		if(node.nodeName.toLowerCase()=='div')
		{
			return node;
		}
	}
	return false;
}
function findParentFieldset(img)
{
	var node = img;
	while(node = node.parentNode)
	{
		try
		{
			if(node.nodeName.toLowerCase()=='fieldset')
			{
				return node;
			}
		}
		catch(e)
		{
			return false;
		}
	}
	return false;
}
function imgMouseOver(img)
{
	img.src = img.src.split('_off').join('_over');
}
function imgMouseOut(img)
{
	img.src = img.src.split('_over').join('_off');
}
function validateForm(frm)
{
	var errors = new Array();
	var lbls = frm.getElementsByTagName('LABEL');
	for(var i=0;i<lbls.length;i++)
	{
		var parentFieldset = lbls[i].parentNode.parentNode;
		var parentLegend = getInnerText(parentFieldset.getElementsByTagName('LEGEND')[0]);
		//alert(parentLegend);

		var sLabel = getInnerText(lbls[i]);
		if(sLabel.indexOf('*')!=-1 && parentLegend.indexOf('*')!=-1)
		{
			//Validate for non blank
			var input = getInputFromLabel(lbls[i]);
			if(input)
			{
				if(isEmpty(input))
				{
					parentLegend = parentLegend.split('*').join('');
					sLabel = sLabel.split('*').join('');
					errors[errors.length] = parentLegend+' - '+sLabel+' cannot be blank';
				}
			}
		}
	}

	try{
		if(errors.length>0)
		{
			alert(errors.join("\n"));
			return false;
		}
		else
		{
			var inputToSet = document.getElementById('xml_field');
			inputToSet.value = GetXmlString(document.getElementById('xmlForm'),'','');
			return true;
		}
	}catch(e){
		alert(e);
		
	}
}
function getInputFromLabel(lbl)
{
	var inputs = lbl.parentNode.getElementsByTagName('INPUT');
	if(inputs.length==1)
	{
		return inputs[0];
	}
	var inputs = lbl.parentNode.getElementsByTagName('SELECT');
	if(inputs.length==1)
	{
		return inputs[0];
	}
	return false;
}
function isEmpty(input)
{
	if(input.value=='')
	{
		return true;
	}
	else
	{
		return false;
	}
}
/*
function getInnerText(node)
{
var sGetInnerText = new String('');
switch(node.nodeType)
{
case 1://elementNode
if(node.nodeName!='SELECT')
{
var childNodes = node.childNodes;
for(var i=0;i<childNodes.length;i++)
{
sGetInnerText+=getInnerText(childNodes[i]);
}
}
break;

default:
try{
sGetInnerText+=node.nodeValue;
}catch(e){}
break;
}

return sGetInnerText;
}
function LTrim(str)
{
var whitespace = new String(" \t\n\r");

var s = new String(str);

if (whitespace.indexOf(s.charAt(0)) != -1)
{
var j=0, i = s.length;
while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
{
j++;
}
s = s.substring(j, i);
}

return s;
}
function RTrim(str,needle)
{
if(needle==null)
{
needle = " \t\n\r";
}
var whitespace = new String(needle);

var s = new String(str);

if (whitespace.indexOf(s.charAt(s.length-1)) != -1)
{
var i = s.length - 1;       // Get length of string
while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
i--;
s = s.substring(0, i+1);
}

return s;
}
*/



function encode_utf8(rohtext) {
	// dient der Normalisierung des Zeilenumbruchs
	rohtext = rohtext.replace(/\r\n/g,"\n");
	var utftext = "";
	for(var n=0; n<rohtext.length; n++)
	{
		// ermitteln des Unicodes des  aktuellen Zeichens
		var c=rohtext.charCodeAt(n);
		// alle Zeichen von 0-127 => 1byte
		if (c<128)
		utftext += String.fromCharCode(c);
		// alle Zeichen von 127 bis 2047 => 2byte
		else if((c>127) && (c<2048)) {
			utftext += String.fromCharCode((c>>6)|192);
			utftext += String.fromCharCode((c&63)|128);}
			// alle Zeichen von 2048 bis 66536 => 3byte
			else {
				utftext += String.fromCharCode((c>>12)|224);
				utftext += String.fromCharCode(((c>>6)&63)|128);
				utftext += String.fromCharCode((c&63)|128);}
	}
	return utftext;
}
function decode_utf8(utftext)
{
	var plaintext = ""; var i=0; var c=c1=c2=0;
	// while-Schleife, weil einige Zeichen uebersprungen werden
	while(i<utftext.length)
	{
		c = utftext.charCodeAt(i);
		if (c<128) {
			plaintext += String.fromCharCode(c);
			i++;}
			else if((c>191) && (c<224)) {
				c2 = utftext.charCodeAt(i+1);
				plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
				i+=2;}
				else {
					c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
					plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
					i+=3;}
	}
	return plaintext;
}
function htmlEntities(str)
{
  var chars = new Array ('&','\'','"','<','>');

  var entities = new Array ('amp','#39','quot','lt','gt');

  newString = new String(str);
  for (var i = 0; i < chars.length; i++)
  {
    myRegExp = new RegExp();
    myRegExp.compile(chars[i],'g')
    newString = newString.replace (myRegExp, '&' + entities[i] + ';');
  }
  return newString;
}
