/***********************************************************************
*  MAIN.JS  [admin.walkerart.org]
*
*  by Brent Gustafson - (C) 2003 walkerart.org
***********************************************************************/

var navColorOn = "#4A4A4A";		//nav rollover color
var navColorOff = "#333333";	//nav rolloff color
var numRecs = 0;				//number of records
var recClose = false;			//record open or closed
var formOn = "#F8F8F8";			//form field focus color
var formOff = "#FFFFFF";		//form field blur color
var oldTextVal = "";			//old textarea value for WAC tags
var sponsorId = "";				//sponsor name


//change background color
function color(id, color) {
	document.getElementById(id).style.backgroundColor = color;
}


//open or close all folders
function displayFolders() {
	for (i=1; i<=numRecs; i++) {
		if (document.getElementById("rec" + i)) {
			if (recClose) {
				document.getElementById("rec" + i).style.display = "none";
				document.getElementById("img" + i).src = "/images/i_folder_close.gif";
			}
			else {
				document.getElementById("rec" + i).style.display = "block";
				document.getElementById("img" + i).src = "/images/i_folder_open.gif";
			}
		}
	}
	if (recClose) {
		document.getElementById("b_folder").src = "/images/b_open_all.gif";
		recClose = false;
	}
	else {
		document.getElementById("b_folder").src = "/images/b_close_all.gif";
		recClose = true;
	}
}


//open or close one folder
function display(id) {
	var record = document.getElementById("rec" + id);
	var recImg = document.getElementById("img" + id);
	if (record.style.display == "none") {
		record.style.display = "block";
		recImg.src = "/images/i_folder_open.gif";
	}
	else {
		record.style.display = "none";
		recImg.src = "/images/i_folder_close.gif";
	}
}


//go to URL
function goTo(url) {
	document.location = url;
}


//add only one query string onto URL or after Id or Start_with if there is one
function query(str) {
	var id = document.location.href.indexOf("?id");
	var id_start = document.location.href.indexOf("?in_canopy");
	if (id != -1) {
		var ques = document.location.href.indexOf("&");
		if (ques != -1) document.location = document.location.href.substring(0,ques) + "&" + str;
		else document.location = document.location.href + "&" + str;
	}
	else if (id_start != -1) {
		var ques2 = document.location.href.indexOf("&");
		if (ques2 != -1) document.location = document.location.href.substring(0,ques2) + "&" + str;
		else document.location = document.location.href + "&" + str;
	}
	else {
		var quer = document.location.href.indexOf("?");
		if (quer != -1) document.location = document.location.href.substring(0,quer) + "?" + str;
		else document.location = document.location.href + "?" + str;
	}
}


//show object
function show(id) {
	document.getElementById(id).style.display = "block";
}


//hide object
function hide(id) {
	document.getElementById(id).style.display = "none";
}


//set location value and address value
function setLocation(loc, addr, val) {
	var locArray = val.split("*#*");
	setPull(loc,locArray[0]);
	if (locArray[1]) setPull(addr,locArray[1]);
}


//set value from a pulldown-to-text field
function setPull(id, val) {
	if (val != " ") document.getElementById(id).value = val;
}


//set value of a form field to another form field
function setField(idFrom, idTo) {
	document.getElementById(idTo).value = document.getElementById(idFrom).value;
}


//hide or show object visibility
function vis(id) {
	if (document.getElementById(id).style.visibility == "visible") {
		document.getElementById(id).style.visibility = "hidden";
	}
	else {
		document.getElementById(id).style.visibility = "visible";
	}
}


//HTML formatting for form field text.
function wacTag(id, type) {
	var tagStart, tagEnd = "";
	var formObj = document.getElementById(id);
	mtext="";
	
	//undo last tag insert
	if (type == "U") {
		if (oldTextVal != "") formObj.value = oldTextVal;
		return;
	}
	
	oldTextVal = formObj.value;
	
	//set tags
	if (type == "T") {
		tagStart = "<wac_title>";
		tagEnd = "</wac_title>";
	}
	else if (type == "B") {
		tagStart = "<wac_em>";
		tagEnd = "</wac_em>";
	}
	else if (type == "I") {
		tagStart = "<wac_italic>";
		tagEnd = "</wac_italic>";
	}
	else if (type == "L") {
		var thisURL = prompt("Enter the complete URL for the link you wish to add.", "http://");
		if ((thisURL.indexOf("://") != -1) || (thisURL.indexOf("mailto:") != -1)) {
			tagStart = "<wac_a href=\"" + thisURL + "\">";
			tagEnd = "</wac_a>";
		}
		else {
			alert("Error: URL must start with either \"http://\" or \"mailto:\".");
			return;
		}
	}
	else if (type == "M") {
		var thisId = prompt("Enter the ID of the media you wish to add.");
		tagStart = "<wac_media mid=\"" + thisId + "\"/>";
	}
	else if (type == "S") {
		if (sponsorId != " ") {
		tagStart = "<img src=\"http://calendar.walkerart.org/images/logo_" + sponsorId + ".gif\" border=\"0\"/>";
			}
		else return;
	}
	else if (type == "TL") {  //ticket link
		var showCode = prompt("Enter the Show Code for this event.");
		if (showCode) {
			formObj.value = "";
			tagStart = "https://tickets.walkerart.org/loader.asp?target=show_events_list.asp%3FshCode=" + showCode;
		}
		else return;
	}
	
	if (formObj.setSelectionRange > "") {
		var p0 = formObj.selectionStart;
		var p1 = formObj.selectionEnd;
		var top = formObj.scrollTop;
		var str = mtext;
		var cur0 = p0 + tagStart.length;
		var cur1 = p0 + tagStart.length + str.length;
		while (p1 > p0 && formObj.value.substring(p1-1, p1) == ' ') p1--; 
		if (p1 > p0) {
		  str = formObj.value.substring(p0, p1);
		  cur0 = p0 + tagStart.length + str.length + tagEnd.length;
		  cur1 = cur0;
		}
		formObj.value = formObj.value.substring(0,p0) + tagStart + str + tagEnd + formObj.value.substring(p1);
		formObj.focus();
		formObj.selectionStart = cur0;
		formObj.selectionEnd = cur1;
		formObj.scrollTop = top;
	} else if (document.selection) {
		var str = document.selection.createRange().text;
		formObj.focus();
		range = document.selection.createRange()
		if (str == "") {
		  range.text = tagStart + mtext + tagEnd;
		  range.moveStart("character", -tagEnd.length - mtext.length );
		  range.moveEnd("character", -tagEnd.length );
		} else {
		  if (str.charAt(str.length - 1) == " ") {
			tagEnd = tagEnd + " ";
			str = str.substr(0, str.length - 1);
		  }
		  range.text = tagStart + str + tagEnd;
		}
		range.select();
	} else { formObj.value += tagStart + mtext + tagEnd; }
	return;
}


//add options from one select list to another
function addVal(idFrom, idTo) {
	var objFrom = document.getElementById(idFrom);
	var objTo = document.getElementById(idTo);
	
	for (i=0; i<objFrom.length; i++) {
		if (objFrom.options[i].selected) {
			inHere = false;
			fromVal = objFrom.options[i].value;
			
			for (j=0; j<objTo.length; j++) {
				if (fromVal == objTo.options[j].value) inHere = true;
			}
			
			if (!inHere) {
				fromText = objFrom.options[i].text;
				var objOption = document.createElement("option");
				objOption.text = fromText;
				objOption.value = fromVal;
				if (document.all) objTo.add(objOption); //IE
				else objTo.add(objOption, null);
			}
		}
	}
}


//remove options from select list unless only one value remains
function removeValNotLast(id) {
	if (document.getElementById(id).length > 1) removeVal(id);
}


//remove options from a select list
function removeVal(id) {
	var objSelect = document.getElementById(id);
	for (i=objSelect.length-1; i>=0; i--) {
		if (objSelect.options[i].selected) {
			objSelect.remove(i);
		}
	}
}


//select all options in a select list
function selectAll(id) {
	var objSelect = document.getElementById(id);

	for (i=0; i<objSelect.length; i++) {
		objSelect.options[i].selected = true;
	}
}


//select all options in a select list
function deselectAll(id) {
	var objSelect = document.getElementById(id);

	for (i=0; i<objSelect.length; i++) {
		objSelect.options[i].selected = false;
	}
}


//show the meta data for media in iframe
function showFrame(selectId, frameId, link) {
	var selList = document.getElementById(selectId);
	
	if (selList.selectedIndex != -1) {
		document.getElementById(frameId).src = link + "?id=" + selList.options[selList.selectedIndex].value;
	}
}


//move selected item down in select list
function selectDown(id) {
	var objSelect = document.getElementById(id);
	var objIndex = objSelect.selectedIndex;
	
	if (objIndex < objSelect.length-1) {
		var tempVal = objSelect.options[objIndex].value;
		var tempText = objSelect.options[objIndex].text;
		
		objSelect.options[objIndex].value = objSelect.options[objIndex+1].value;
		objSelect.options[objIndex].text = objSelect.options[objIndex+1].text;
		
		objSelect.options[objIndex+1].value = tempVal;
		objSelect.options[objIndex+1].text = tempText;
		
		objSelect.options[objIndex].selected = false;
		objSelect.options[objIndex+1].selected = true;
	}
}


//move selected item up in select list
function selectUp(id) {
	var objSelect = document.getElementById(id);
	var objIndex = objSelect.selectedIndex;
	
	if (objIndex > 0) {
		var tempVal = objSelect.options[objIndex].value;
		var tempText = objSelect.options[objIndex].text;
		
		objSelect.options[objIndex].value = objSelect.options[objIndex-1].value;
		objSelect.options[objIndex].text = objSelect.options[objIndex-1].text;
		
		objSelect.options[objIndex-1].value = tempVal;
		objSelect.options[objIndex-1].text = tempText;
		
		objSelect.options[objIndex].selected = false;
		objSelect.options[objIndex-1].selected = true;
	}	
}


//window popups
function popup(url, width, height) {
	var properties = "width=" + width + ",height=" + height;
	myPopup = window.open(url, "myPopup", properties);
	myPopup.focus();
}


//confirm deletion of records
function confirmDelete(id, title) {
	if (confirm("Are you sure you want to delete the record \"" + title + "\"?")) {
		query("delete=" + id);
	}
}