var editingId = null;
//var domAdapter = getDomAdapter();

function getElement(pID)
{
  if(document.all) {
    return document.all(pID);
  }
  else {
    return document.getElementById(pID);
  }
}

function getElementsByTag(pTagName, obj)
{
  if (obj != null) {
	if (document.getElementsByTagName != null) {
		return obj.getElementsByTagName(pTagName);
	}
  }
  else {
	if(document.all) {
    	return document.all.tags(pTagName);
  	}
  	else {
  		return document.getElementsByTagName(pTagName);
  	}
  }
}

function FCKeditor_OnComplete( editorInstance )
{
	var editorFrame = getElement('divEditor');
	
	if (editorFrame != null) {
		editorFrame.style.display = 'none';
	}
}

function displayEditor(show, top, content, height)
{
	var editorFrame = getElement('divEditor');
	
	if (editorFrame != null) {
		if (show) {
			editorFrame.style.display = 'inline';
			editorFrame.style.position = 'absolute';
			editorFrame.style.top = top;
			editorFrame.style.left = 80;
		}
		else {
			editorFrame.style.display = 'none';
		}
	}

	if (show) {
		var editor = FCKeditorAPI.GetInstance( "FCKeditor1" ) ;
		editor.SetHTML( content );
	}
}

function AddBefore(sId) {
	Add(sId, true);
}

function AddAfter(sId) {
	Add(sId, false);
}

function Add(sId, bInsert) {
  var divCount;
  var sNewId;
  var sEditDelete;	
  var divOuter;
  var divNew;
  var divInner;
  var hiddenOuter;
  var hiddenNew;
  var hiddenInner;
  
  divCount = getElement("txtCount");
  
  sNewId = parseInt(divCount.value) + 1;
  while (getElement("DivEditView_" + sNewId) != null) {
	sNewId = sNewId + 1;
  }
  divCount.value = sNewId;
  
  divOuter = getElement("DivEditView_" + sId);
  hiddenOuter = getElement("HiddenDivEditView_" + sId);

  if (divOuter != null) {
	sEditDelete = "<div id='editbar'><a id='add' href='javascript:AddAfter(" + sNewId + ")'><img alt='Add' src='/images/add.gif'></a>&nbsp;";
	sEditDelete += "<a id='insert' href='javascript:AddBefore(" + sId + ")'><img alt='Insert' title='Insert' src='/images/insert.gif'></a>&nbsp;";
	sEditDelete += "<a id='edit' href='javascript:Edit(" + sNewId + ")'><img alt='Edit' src='/images/edit.gif'></a>&nbsp;";
	sEditDelete += "<a id='editstyle' href='javascript:EditStyle(" + sNewId + ")'><img alt='Edit Style' src='/images/editstyle.gif'></a>&nbsp;";
	sEditDelete += "<a id='delete' href='javascript:Delete(" + sNewId + ")'><img alt='Delete' src='/images/delete.gif'></a>&nbsp;</div>";
	
	divNew = document.createElement("DIV");
	divNew.id = "DivEditView_" + sNewId;
	divInner = document.createElement("DIV");
	divNew.appendChild(divInner);
	
	divOuter.parentNode.insertBefore(divNew, divOuter);
	divInner.innerHTML = "<br>" + sEditDelete + "{Edit or remove this text...}<br>";

  	hiddenNew = document.createElement("DIV");
	hiddenNew.id = "HiddenDivEditView_" + sNewId;
	hiddenInner = document.createElement("DIV");
	hiddenNew.appendChild(hiddenInner);
	
	hiddenOuter.parentNode.insertBefore(hiddenNew, hiddenOuter);
	
	if(!bInsert) {
	  divReplaced = divOuter.parentNode.replaceChild(divNew, divOuter);
	  divNew.parentNode.insertBefore(divReplaced, divNew);
	  hiddenReplaced = hiddenOuter.parentNode.replaceChild(hiddenNew, hiddenOuter);
	  hiddenNew.parentNode.insertBefore(hiddenReplaced, hiddenNew);
	}
  }
  
  EditStyle(sNewId);
}

function Edit(sId) {
  var divInner;
  var sContent;
  var iPos;
  
  divInner = getContent(sId);
  if (divInner != null) {
  	sContent = "";
	sHTML = divInner.innerHTML.toLowerCase();
	iPos = sHTML.indexOf("images/delete.gif'></a>&nbsp;</div>");
	if(iPos = -1) iPos = sHTML.indexOf("images/delete.gif\"></a>&nbsp;</div>");

	if(iPos > -1) {
		getElement("txtEditExtra").value = divInner.innerHTML.substring(0, iPos + 35);
		sContent = divInner.innerHTML.substring(iPos + 35);
	}

	editingId = sId;
	if (document.body.scrollTop > 0) {
		displayEditor(true, document.body.scrollTop + 100, sContent, divInner.offsetHeight);
	}
	else {
		displayEditor(true, divInner.offsetTop, sContent, divInner.offsetHeight);
	}
  }
}

function Delete(sId) {
  var divOuter;
  var hiddenOuter;
  
  divOuter = getElement("DivEditView_" + sId);
  hiddenOuter = getElement("HiddenDivEditView_" + sId);
  
  if (divOuter != null) {
  	divOuter.parentNode.removeChild(divOuter);
  	hiddenOuter.parentNode.removeChild(hiddenOuter);
  }
}

function Save(event) {
	UpdateHTML(editingId, false);
}

function Generate(target) {
	var divContent;
	var divSideContent;
	var inputContent;
	var inputSideContent;
	var inputTarget;
	var formGenerate;
	
	divContent = getElement("divPageContent");
	
	if (divContent != null) {
		inputContent = document.createElement("INPUT");
		inputContent.type = "hidden";
		inputContent.id = "content";
		inputContent.name = "content";
		inputContent.value = divContent.innerHTML.replace(/HiddenDivEditView/g, "DivEditView");

		inputTarget = getElement("target");
		inputTarget.value = target;

		formGenerate = getElement("formGenerate");
		formGenerate.appendChild(inputContent);

		divSideContent = getElement("divSideContent");
		
		if (divSideContent != null) {
			inputSideContent = document.createElement("INPUT");
			inputSideContent.type = "hidden";
			inputSideContent.id = "side_content";
			inputSideContent.name = "side_content";
			inputSideContent.value = divSideContent.innerHTML.replace(/HiddenDivEditView/g, "DivEditView");

			formGenerate = getElement("formGenerate");
			formGenerate.appendChild(inputSideContent);
		}
	}
}

function Cancel(event) {
	UpdateHTML(editingId, true);
}

function EditStyle(sId) {
  var divInner;
  var divStyles;
  
  divInner = getContent(sId);
  
  if (divInner != null) {
	editingId = sId;
	
	divStyles = getElement("styles");
	divStyles.style.visibility = "visible";
	if (document.body.scrollTop > 0) {
		divStyles.style.top = document.body.scrollTop + 100;
	}
	else {
		divStyles.style.top = divInner.offsetTop;
	}
  }
}

function SelectStyle(sStyleId) {
	var divInner;
	var hiddenInner;
	var divNew;
	var divStyles;
	
	divInner = getContent(editingId);
	divInner.id = sStyleId;
	hiddenInner = getHiddenContent(editingId);
	hiddenInner.id = sStyleId;

	divStyles = getElement("styles");
	divStyles.style.visibility = "hidden";
}

function UpdateHTML(sId, bCancel) {
	var divInner;
	var hiddenInner;
	var textExtraNode;
	var editor;
	
	if (!bCancel) {
		divInner = getContent(sId);

		if (divInner != null) {
			editor = FCKeditorAPI.GetInstance( "FCKeditor1" ) ;
			sHTML = editor.GetXHTML( true );

			hiddenInner = getHiddenContent(sId);
			hiddenInner.innerHTML = sHTML;

			textExtraNode = getElement("txtEditExtra");
			divInner.innerHTML = textExtraNode.value + sHTML;
		}
	}
	
	displayEditor(false);
}

function ShowHideEditHTML() {
	var divs;
	var previewmode;
	
	divs = getElementsByTag("DIV");
	
	for(var i = 0; i < divs.length; i++) {
		if(divs[i].id == "editbar") {
			if (previewmode == null) {
				if (divs[i].style.display == "none") {
					previewmode =true;
					getElement("btnPreview").value = "Preview";
				}
				else {
					previewmode = false;
					getElement("btnPreview").value = "Edit";
				}
			}

			if (previewmode) {
				divs[i].style.display = "inline";
			}
			else {
				divs[i].style.display = "none";
			}
		}
	}
}

function AddEditHTML() {
	var divs;
	var iCount;
	var divInner;
	var sEditDelete;
	var inputNode;
	
	divs = getElementsByTag("DIV", document.body);
	iCount = 0;
	
	for(var i = 0; i < divs.length; i++) {
		if(divs[i].id.substring(0, 11) == "DivEditView") {
			iCount ++;
			var sId = divs[i].id.substring(divs[i].id.indexOf("_") + 1, divs[i].id.length);
			sEditDelete = "<div id='editbar'><a id='add' href='javascript:AddAfter(" + sId + ")'><img alt='Add' title='Add' src='/images/add.gif'></a>&nbsp;";
			sEditDelete += "<a id='insert' href='javascript:AddBefore(" + sId + ")'><img alt='Insert' title='Insert' src='/images/insert.gif'></a>&nbsp;";
			sEditDelete += "<a id='edit' href='javascript:Edit(" + sId + ")'><img alt='Edit' title='Edit' src='/images/edit.gif'></a>&nbsp;";
			sEditDelete += "<a id='editstyle' href='javascript:EditStyle(" + sId + ")'><img alt='Edit Style' title='Edit Style' src='/images/editstyle.gif'></a>&nbsp;";
			sEditDelete += "<a id='delete' href='javascript:Delete(" + sId + ")'><img alt='Delete' title='Delete' src='/images/delete.gif'></a>&nbsp;</div>";

			divInner = getContent(sId);
			if (divInner != null) {
				divInner.innerHTML = sEditDelete + divInner.innerHTML;
			}
		}
	}
	
	
	inputNode = document.createElement("input");
	inputNode.type = "hidden";
	inputNode.id = "txtEditExtra";
	
	document.body.appendChild(inputNode);
	
	inputNode = document.createElement("input");
	inputNode.type = "hidden";
	inputNode.id = "txtCount";
	inputNode.value = iCount;

	document.body.appendChild(inputNode);
}

function getContent(sId)
{
	var divEditView;
	var divInner;

	divEditView = getElement("DivEditView_" + sId);
	if (divEditView != null) {
		for(var j = 0; j < divEditView.childNodes.length; j++) {
			if (divEditView.childNodes[j].tagName == "DIV") {
				divInner = divEditView.childNodes[j];
			}
		}
  	}
  	
  	return divInner;
}

function getHiddenContent(sId)
{
	var divEditView;
	var divInner;
	
	divEditView = getElement("HiddenDivEditView_" + sId);
	if (divEditView != null) {
		for(var j = 0; j < divEditView.childNodes.length; j++) {
			if (divEditView.childNodes[j].tagName == "DIV") {
				divInner = divEditView.childNodes[j];
			}
		}
  	}
  	
  	return divInner;
}

function fillCheckboxesFromList(checkboxes, list, delimiter)
{
	if (delimiter == null) delimiter = ",";
	
	list = delimiter + list + delimiter;
	for (var i=0; i < checkboxes.length; i++)
	{
		if (list.indexOf(delimiter + checkboxes[i].value + delimiter) > -1)
		{
			checkboxes[i].checked = true;
		}
	}
}

function fillListFromCheckboxes(checkboxes, delimiter)
{
	if (delimiter == null) delimiter = ",";

	var list = delimiter;
	
	for (var i=0; i < checkboxes.length; i++)
	{
		if (checkboxes[i].checked)
		{
			list = list + checkboxes[i].value + delimiter;
		}
	}

	if (list == delimiter) {
		list = "";
	} else {
		list = list.substring(1, list.length - 1);
	}
	
	return list;
}

function fillListFromInputs(inputs, delimiter)
{
	if (delimiter == null) delimiter = ",";

	var list = delimiter;
	
	for (var i=0; i < inputs.length; i++)
	{
		if (inputs[i].value != "")
		{
			list = list + inputs[i].value + delimiter;
		}
	}

	if (list == delimiter) {
		list = "";
	} else {
		list = list.substring(1, list.length - 1);
	}
	
	return list;
}

function isMaxLength(obj)
{
	maxLength = parseInt(obj.getAttribute("maxLength"));
	if (maxLength > 0 && obj.value.length > maxLength)
	{
		obj.value = obj.value.substring(0, maxLength);
	}
}