var collapsedSign = "[+]";
var expandedSign = "[-]";
var hasCustomTab = false;


function saveTabProps() {
	var customTabString = "";
	var customTabName = "";
	var propString = getTabPropString();
	
	try {
	 customTabString = getCustomTabString();
	 customTabName = document.getElementById("customname").value;
	 } catch (e) {}
	//alert("propString: "+ propString +"\ncustomTabString: " +customTabString + "\ncustomTabName: " + customTabName);
	
	var ww = getWindow();
	ww.sDataProperties = propString;
	ww.sCustomTabName = customTabName;
	ww.sCustomTabTables = customTabString;
}

function resetTabProps() {
	var dataDiv = document.getElementById('dataDiv');
	var checkBoxes = dataDiv.getElementsByTagName('input');
	for (var i = 0; i<checkBoxes.length; i++ ) {
		checkBoxes[i].checked=false;
	}
}

function getTabPropString() {
	var dataDiv = document.getElementById('dataDiv');
	var checkBoxes = dataDiv.getElementsByTagName('input');
	var propString = "";
	
	for (var i = 0; i<checkBoxes.length; i++ ) {
		if (checkBoxes[i].checked==true) {
			if(propString != "") propString = propString + "|";
			propString = propString + checkBoxes[i].value;
		}
	}
	return propString;
}

function getCustomTabString() {
	var list = document.getElementById("customtabtables");
	var tables = list.getElementsByTagName('li');
	var tabString = "";
		for (var i = 0; i<tables.length; i++ ) {
			if(tabString != "")tabString = tabString + "|";
			tabString = tabString + tables[i].id;
	}
	return tabString;
}

function setTabProps() {
	resetTabProps();
	//var propString = "tabreport|row|surfaceMgtAgency|regulatedUses|boundaries|oilandgas|subSurface";
	var propString = null;
	try {
		var ww = getWindow();
	  	propString = ww.sDataProperties;
	 } catch (e) {}
	if (propString == null) return;
	
	var boxStatus = propString.split("|");
	for (var i = 0;i<boxStatus.length;i++) {
		document.getElementById(boxStatus[i]).checked = true;
		checkNodeOrder(i, document.getElementById(boxStatus[i]).parentNode);
	}
	setCustomTab();
}

function checkNodeOrder(i, node1) {
	var node2 = getTabLis()[i];
	if (node1 == node2) return;
	else swapNodes(node1, node2);
}

function moveItemUp(node1) {
	try {
	var node2 = node1.previousSibling;
	if (node2.nodeType == 3) node2 = node2.previousSibling;
	swapNodes(node1,node2);
	} catch (e) {return;}
}

function moveItemDown(node1) {
	try {
	var node2 = node1.nextSibling;
	if (node2.nodeType == 3) node2 = node2.nextSibling;
	swapNodes(node1,node2);
	} catch (e) {return;}
}

function expandList(id) {
	if (document.getElementById(id+"label").innerHTML == collapsedSign) {
		 document.getElementById(id+"tables").style.display = "block";
		 document.getElementById(id+"label").innerHTML = expandedSign;
	 }
	 else {
	  	document.getElementById(id+"tables").style.display = "none";
		 document.getElementById(id+"label").innerHTML = collapsedSign;
	 }
}

function addCustomTab() {
	var tabid= "customtab";
	document.getElementById("customTabButton").disabled = "disabled"
	var newTab = document.createElement('li');
	newTab.setAttribute('id','customtab'+tabid);
	var newTabText = document.createTextNode('Tab Name:');
	newTab.appendChild(newTabText);
	var newTabInput = document.createElement('input');
	newTabInput.setAttribute('type','text');
	newTabInput.setAttribute('length','20');
	newTabInput.setAttribute('name','customname');
	newTabInput.setAttribute('id','customname');
	newTab.appendChild(newTabInput);
	var newTabTables = document.createElement('ul');
	newTabTables.setAttribute('id','customtabtables');
	newTab.appendChild(newTabTables);
	var list = document.getElementById("proplist");
	list.insertBefore(newTab,list.firstChild);
}

function addTableToCustomTab(tableName, tableId) {
	var customTab = document.getElementById("customtabtables");
	var newTable = document.createElement('li');
	newTable.setAttribute('id',tableId);
	newTable.setAttribute('name',tableId);
	var tableText = document.createTextNode(tableName);
	var cancelImage = document.createElement('img');
	cancelImage.setAttribute('src','images/buttons/cancelred.jpg');
	cancelImage.setAttribute('alt','Remove Table From Tab');
	//cancelImage.setAttribute('onclick','alert("hi")');
	cancelImage.onclick = function() { removeTableFromCustomTab(this.parentNode);}
	newTable.appendChild(cancelImage);
	newTable.appendChild(tableText);
	customTab.appendChild(newTable);
}

function removeTableFromCustomTab(node) {
	node.parentNode.removeChild(node);
	
	//node.removeNode(true);
}


function swapNodes(node1, node2) {
	var tempId1;
	var tempId2;
	if (node2 == null || node1 == null) return;
 	var listNode = node1.parentNode;
	
	
	var isChecked1 = node1.getElementsByTagName('input')[0].checked;
	var temp1 = node1.cloneNode(true);
	var tempId1 = node1.id;
	
	
	var isChecked2 = node2.getElementsByTagName('input')[0].checked;
	var temp2 = node2.cloneNode(true);
	var tempId2 = node2.id;
	
	listNode.replaceChild(temp2,node1);
	listNode.replaceChild(temp1,node2);
	
	temp1.getElementsByTagName('input')[0].checked = isChecked1;
	temp1.id = tempId2;
	temp2.getElementsByTagName('input')[0].checked = isChecked2;
	temp2.id = tempId1;
	
}

function getTabLis() {
	var tabLis = new Array();
	var i = 1;
	var nextNode;
	while (true) {
		nextNode = document.getElementById("tabli"+i);
		if (nextNode == null) return tabLis;
		else tabLis.push(nextNode);
		i++;
	}
}

function setCustomTab() {
var customTabTablesArray = new Array();
	var ww = getWindow();
	var customTabName = ww.sCustomTabName;
	var customTabTables = ww.sCustomTabTables;
	if (customTabName != null) {
	if (customTabTables!=null) customTabTablesArray = customTabTables.split('|');
		addCustomTab();
		document.getElementById("customname").value = customTabName;
		for (var i = 0; i < customTabTablesArray.length; i++) {
			document.getElementById(customTabTablesArray[i]+"Button").onclick();
		}
	}
}

function createLink(viewer) {
	var href;
	var linkText;
	saveTabProps();
	var ww = getWindow();
	var link = document.getElementById("propertiesLink");
	if (viewer == "landsviewer")  {
	href = "http://"+window.location.host + "/landsviewer/map.aspx";
	linkText = "Landsviewer";
	}
	else {
	 href = "http://"+window.location.host + "/NILS-PARCEL2/map.jsp";
	 linkText = "GeoCommunicator";
	} 
	href = href + "?tabprops="+ww.sDataProperties;
	href = href + "&customTabName="+ww.sCustomTabName;
	href = href + "&customTabTables="+ww.sCustomTabTables;
	link.href=href;
	link.innerHTML = linkText;
}

