/**
* Jason Stiles Website
* Copyright 2008
* Author: Jason Stiles
*/

/** Global Variables */

var xmlHttp;
var filemgr;
var container;
var needToConfirm = true;

/** Actions */

function confirmAction() {
	return confirm("Are you sure?");
}

function confirmDelete() {
	return confirm("Are you sure you want to delete?");
}

function confirmUnload() {
	if(document.getElementById("confirmUnload")) {
		if(needToConfirm) {
			return "Changes will be lost if you leave this page.";
		}
	}
}

/** AJAX Implementations */

function GetXmlHttpObject() {
	var xmlHttp = null;
	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp = new XMLHttpRequest();
	} catch (e) {
		// Internet Explorer
		try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	return xmlHttp;
}

function AddField() {
	var title = document.getElementById("title").value;
	var desc = document.getElementById("description").value;
	var name = document.getElementById("name").value;
	var type = document.getElementById("type").value;
	var text = document.getElementById("text").value;
	
	var url = "./lib/setDatabaseField.php?title="+title+"&desc="+desc
	+"&name="+name+"&type="+type+"&text="+text;
	
	if(type == "Date") {
		var datetype = document.getElementsByName("date_type");
		
		var datetypeval = "";
		for(i=0;i<datetype.length;i++) {
			if(datetype[i].checked) {
				datetypeval = datetype[i].value;
			}
		}
		
		var dateformat = document.getElementById("date_format").value;
		var req = document.getElementById("date_req");
		
		if(req.checked) {		
			req = "1";
		} else {
			req = "0";
		}
		
		var dup = document.getElementById("date_duplicates");
		
		if(dup.checked) {
			dup = "1";
		} else {
			dup = "0";
		}
		
		var init = document.getElementById("date_init").value;
		
		if(init.checked) {
			init = "1";
		} else {
			init = "0";
		}
		var initval = document.getElementById("date_init_val").value;
		var inittype = document.getElementById("date_init_type").value;
		
		url += "&date_type="+datetypeval+"&date_format="+dateformat+
		"&req="+req+"&dup="+dup+"&date_init="+init+"&init_val="+initval+
		"&init_type="+inittype;
	} else if(type == "List") {
		var listtype = document.getElementsByName("list_type");
		
		var listtypeval = "";
		for(i=0;i<listtype.length;i++) {
			if(listtype[i].checked) {
				listtypeval = listtype[i].value;
			}
		}
		
		var list = document.getElementById("lists1").value;
		var db = document.getElementById("List_database").value;
		var column = document.getElementById("List_column1").value;
		var filter = document.getElementById("List_area").value;
		var ulist = document.getElementById("List_ulist").value;
		var list_type = document.getElementById("List_list_type").value;
		var dup = document.getElementById("list_duplicates");
		
		if(dup.checked) {
			dup = "1";
		} else {
			dup = "0";
		}
		
		var blank = document.getElementById("list_blank");
		
		if(blank.checked) {
			blank = "1";
		} else {
			blank = "0";
		}
		
		url += "&list_type="+listtypeval+"&list="+list+"&db="+db+"&column="+column
		+"&filter="+filter+"&ulist="+ulist+"&dup="+dup+"&blank="+blank+"&list_list_type="+list_type;
	} else if(type == "Lookup") {
		var db = document.getElementById("Lookup_database").value;
		var req = document.getElementById("lookup_req");
		
		if(req.checked) {
			req = "1";
		} else {
			req = "0";
		}
		
		url += "&db="+db+"&req="+req;
	} else if(type == "Number") {
		var numtype = document.getElementsByName("num_type");
		
		var numtypeval = "";
		for(i=0;i<numtype.length;i++) {
			if(numtype[i].checked) {
				numtypeval = numtype[i].value;
			}
		}
		
		var list = document.getElementById("lists2").value;
		var db = document.getElementById("Number_database").value;
		var column = document.getElementById("Number_column1").value;
		var filter = document.getElementById("Number_area").value;
		var ulist = document.getElementById("Number_ulist").value;
		var numformat = document.getElementById("number_format").value;
		var numdecimal = document.getElementById("number_decimal").value;
		var req = document.getElementById("number_req");
		var list_type = document.getElementById("Number_list_type").value;
		
		if(req.checked) {
			req = "1";
		} else {
			req = "0";
		}
		
		var	dup = document.getElementById("number_duplicates");
		
		if(dup.checked) {
			dup = "1";
		} else {
			dup = "0";
		}
		
		url += "&num_type="+numtypeval+"&list="+list+"&db="+db+"&column="+column
		+"&filter="+filter+"&ulist="+ulist+"&num_format="+numformat+"&num_decimal="
		+numdecimal+"&req="+req+"&dup="+dup+"&list_type="+list_type;
	} else if(type == "Text") {
		var texttype = document.getElementsByName("text_type");
		
		var texttypeval = "";
		for(i=0;i<texttype.length;i++) {
			if(texttype[i].checked) {
				texttypeval = texttype[i].value;
			}
		}
		
		var textsize = document.getElementById("text_size").value;
		var textrows = document.getElementById("text_rows").value;
		var textcols = document.getElementById("text_cols").value;
		var textwidth = document.getElementById("text_width").value;
		var textheight = document.getElementById("text_height").value;
		var textwidthtype = document.getElementById("text_width_type").value;
		var textheighttype = document.getElementById("text_height_type").value;
		var req = document.getElementById("text_req");
		
		if(req.checked) {
			req = "1";
		} else {
			req = "0";
		}
		
		var dup = document.getElementById("text_duplicates");
		
		if(dup.checked) {
			dup = "1";
		} else {
			dup = "0";
		}
		
		url += "&text_type="+texttypeval+"&text_size="+textsize+"&text_rows="+textrows
		+"&text_cols="+textcols+"&text_width="+textwidth+"&text_height="+textheight
		+"&text_width_type="+textwidthtype+"&text_height_type="+textheighttype
		+"&req="+req+"&dup="+dup;
	} else {
		//Type is Other
		var othertype = document.getElementsByName("other_type");
		
		var othertypeval = "";
		for(i=0;i<othertype.length;i++) {
			if(othertype[i].checked) {
				othertypeval = othertype[i].value;
			}
		}
		
		var req = document.getElementById("other_req");
		
		if(req.checked) {
			req = "1";
		} else {
			req = "0";
		}
		
		var dup = document.getElementById("other_duplicates");
		
		if(dup.checked) {
			dup = "1";
		} else {
			dup = "0";
		}
		
		url += "&other_type="+othertypeval+"&req="+req+"&dup="+dup;
	}
	
	var date = new Date();
	var timestamp = date.getTime();
	xmlHttp = GetXmlHttpObject();
	xmlHttp.onreadystatechange=AddField2;
	xmlHttp.open("GET",url+"&timestamp="+timestamp,true);
	xmlHttp.send(null);
}

function AddField2() {
	if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		var result = xmlHttp.responseText;
		result = result.split(",");
		var table = document.getElementById("fields_table");
		var lastRow = table.rows.length;
		var iteration = lastRow;
		var row = table.insertRow(lastRow);
		
		var dbid = result[0];
		var field_id = result[1];
		
		//Edit Image
		var cell0 = row.insertCell(0);
		var editimg = document.createElement('img');
		editimg.src='./images/pencil.gif';
		editimg.onclick = function() {
			window.open('index.php?print=EditDatabaseField&db='+dbid+'&field='+field_id+"&row="+lastRow,'EditField','toolbar=0,scrollbars=1,resizable=1,status=1,width=700,height=300');
		}
		cell0.appendChild(editimg);
		
		//Delete Image
		var eximg = document.createElement('img');
		eximg.src='./images/ex.gif';
		eximg.onclick = function() {
			DeleteField(result[0],result[1],lastRow);
		}
		cell0.appendChild(eximg);
		
		//Field Name
		var cell1 = row.insertCell(1);
		var name = document.createElement('span');
		name.innerHTML = result[2];
		cell1.appendChild(name);
		
		//Field Type
		var cell2 = row.insertCell(2);
		var type = document.createElement('span');
		type.innerHTML = result[3];
		cell2.appendChild(type);
		
		//Field Status
		var cell3 = row.insertCell(3);
		var status = document.createElement('span');
		status.innerHTML = result[4];
		cell3.appendChild(status);
	}
}

var editRow = 0;
function EditField(dbid,field_id,row_id) {
	var name = document.getElementById("name").value;
	var type = document.getElementById("type").value;
	var text = document.getElementById("text").value;
	editRow = row_id;
	var url = "./lib/setDatabaseField.php?dbid="+dbid+"&field="+field_id+"&name="+name+"&type="+type+"&text="+text;
	
	if(type == "Date") {
		var datetype = document.getElementsByName("date_type");
		
		var datetypeval = "";
		for(i=0;i<datetype.length;i++) {
			if(datetype[i].checked) {
				datetypeval = datetype[i].value;
			}
		}
		
		var dateformat = document.getElementById("date_format").value;
		var req = document.getElementById("date_req");
		
		if(req.checked) {		
			req = "1";
		} else {
			req = "0";
		}
		
		var dup = document.getElementById("date_duplicates");
		
		if(dup.checked) {
			dup = "1";
		} else {
			dup = "0";
		}
		
		var init = document.getElementById("date_init").value;
		
		if(init.checked) {
			init = "1";
		} else {
			init = "0";
		}
		var initval = document.getElementById("date_init_val").value;
		var inittype = document.getElementById("date_init_type").value;
		
		url += "&date_type="+datetypeval+"&date_format="+dateformat+
		"&req="+req+"&dup="+dup+"&date_init="+init+"&init_val="+initval+
		"&init_type="+inittype;
	} else if(type == "List") {
		var listtype = document.getElementsByName("list_type");
		
		var listtypeval = "";
		for(i=0;i<listtype.length;i++) {
			if(listtype[i].checked) {
				listtypeval = listtype[i].value;
			}
		}
		
		var list = document.getElementById("lists1").value;
		var db = document.getElementById("List_database").value;
		var column = document.getElementById("List_column1").value;
		var filter = document.getElementById("List_area").value;
		var ulist = document.getElementById("List_ulist").value;
		var dup = document.getElementById("list_duplicates");
		var list_type = document.getElementById("List_list_type").value;
		
		if(dup.checked) {
			dup = "1";
		} else {
			dup = "0";
		}
		
		var blank = document.getElementById("list_blank");
		
		if(blank.checked) {
			blank = "1";
		} else {
			blank = "0";
		}
		
		url += "&list_type="+listtypeval+"&list="+list+"&db="+db+"&column="+column
		+"&filter="+filter+"&ulist="+ulist+"&dup="+dup+"&blank="+blank+"&list_list_type="+list_type;
	} else if(type == "Lookup") {
		var db = document.getElementById("Lookup_database").value;
		var req = document.getElementById("lookup_req");
		
		if(req.checked) {
			req = "1";
		} else {
			req = "0";
		}
		
		url += "&db="+db+"&req="+req;
	} else if(type == "Number") {
		var numtype = document.getElementsByName("num_type");
		
		var numtypeval = "";
		for(i=0;i<numtype.length;i++) {
			if(numtype[i].checked) {
				numtypeval = numtype[i].value;
			}
		}
		
		var list = document.getElementById("lists2").value;
		var db = document.getElementById("Number_database").value;
		var column = document.getElementById("Number_column1").value;
		var filter = document.getElementById("Number_area").value;
		var ulist = document.getElementById("Number_ulist").value;
		var numformat = document.getElementById("number_format").value;
		var numdecimal = document.getElementById("number_decimal").value;
		var req = document.getElementById("number_req");
		var list_type = document.getElementById("Number_list_type").value;
		
		if(req.checked) {
			req = "1";
		} else {
			req = "0";
		}
		
		var	dup = document.getElementById("number_duplicates");
		
		if(dup.checked) {
			dup = "1";
		} else {
			dup = "0";
		}
		
		url += "&num_type="+numtypeval+"&list="+list+"&db="+db+"&column="+column
		+"&filter="+filter+"&ulist="+ulist+"&num_format="+numformat+"&num_decimal="
		+numdecimal+"&req="+req+"&dup="+dup+"&list_type="+list_type;
	} else if(type == "Text") {
		var texttype = document.getElementsByName("text_type");
		
		var texttypeval = "";
		for(i=0;i<texttype.length;i++) {
			if(texttype[i].checked) {
				texttypeval = texttype[i].value;
			}
		}
		
		var textsize = document.getElementById("text_size").value;
		var textrows = document.getElementById("text_rows").value;
		var textcols = document.getElementById("text_cols").value;
		var textwidth = document.getElementById("text_width").value;
		var textheight = document.getElementById("text_height").value;
		var textwidthtype = document.getElementById("text_width_type").value;
		var textheighttype = document.getElementById("text_height_type").value;
		var req = document.getElementById("text_req");
		
		if(req.checked) {
			req = "1";
		} else {
			req = "0";
		}
		
		var dup = document.getElementById("text_duplicates");
		
		if(dup.checked) {
			dup = "1";
		} else {
			dup = "0";
		}
		
		url += "&text_type="+texttypeval+"&text_size="+textsize+"&text_rows="+textrows
		+"&text_cols="+textcols+"&text_width="+textwidth+"&text_height="+textheight
		+"&text_width_type="+textwidthtype+"&text_height_type="+textheighttype
		+"&req="+req+"&dup="+dup;
	} else {
		//Type is Other
		var othertype = document.getElementsByName("other_type");
		
		var othertypeval = "";
		for(i=0;i<othertype.length;i++) {
			if(othertype[i].checked) {
				othertypeval = othertype[i].value;
			}
		}
		
		var req = document.getElementById("other_req");
		
		if(req.checked) {
			req = "1";
		} else {
			req = "0";
		}
		
		var dup = document.getElementById("other_duplicates");
		
		if(dup.checked) {
			dup = "1";
		} else {
			dup = "0";
		}
		
		url += "&other_type="+othertypeval+"&req="+req+"&dup="+dup;
	}
	
	var date = new Date();
	var timestamp = date.getTime();
	xmlHttp = GetXmlHttpObject();
	xmlHttp.onreadystatechange=EditField2;
	xmlHttp.open("GET",url+"&timestamp="+timestamp,true);
	xmlHttp.send(null);	
}

function EditField2() {
	if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		var result = xmlHttp.responseText;
		result = result.split(",");
		var table = opener.document.getElementById("fields_table");
		var row = table.rows[editRow];
		
		var cell1 = row.cells(1);
		var cell2 = row.cells(2);
		var cell3 = row.cells(3);
		
		cell1.innerHTML = result[2];
		cell2.innerHTML = result[3];
		cell3.innerHTML = result[4];
		
		window.close();
	}
}

var deleteRow = "";
function DeleteField(db,field_id,row_id) {
	deleteRow = row_id;
	var date = new Date();
	var timestamp = date.getTime();
	xmlHttp = GetXmlHttpObject();
	xmlHttp.onreadystatechange=DeleteField2;
	
	var url = "./lib/setDatabaseField.php?dbid="+db+"&field="+field_id+"&delete=true&timestamp="+timestamp;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);	
}

function DeleteField2() {
	if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		var result = xmlHttp.responseText;
		result = result.split(",");
		var table = document.getElementById("fields_table");
		var row = table.rows[deleteRow];
		
		var cell1 = row.cells(1);
		var cell2 = row.cells(2);
		var cell3 = row.cells(3);
		
		cell1.innerHTML = result[2];
		cell2.innerHTML = result[3];
		cell3.innerHTML = result[4];
	}
}

function getActivityLog(offset) {
	var date = new Date();
	var timestamp = date.getTime();
	var url = "./lib/getActivityLog.php?offset="+offset+"&time="+timestamp;
	xmlHttp = GetXmlHttpObject();
	xmlHttp.onreadystatechange=getActivityLog2;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function getActivityLog2() {
	if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		var result = xmlHttp.responseText;
		var adminLog = document.getElementById("adminLog");
		adminLog.innerHTML = result;
	}
}

columnSelect = "";
function getColumns(db,select) {
	columnSelect = select;
	var db = document.getElementById(db);
	db = db.options[db.options.selectedIndex].text;
	var date = new Date();
	var timestamp = date.getTime();
	var url = "./lib/getColumns.php?db="+db+"&timestamp="+timestamp;
	xmlHttp = GetXmlHttpObject();
	xmlHttp.onreadystatechange=getColumns2;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function getColumns2() {
	if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		var result = xmlHttp.responseText;
		var to1 = document.getElementById(columnSelect+"1");
		var to2 = document.getElementById(columnSelect+"2");
		result = result.split(";");
		removeAllOptions(columnSelect+"1");
		removeAllOptions(columnSelect+"2");
		for(i=0;i<result.length;i++) {
			var element = result[i].split(",");			
			var optionval = element[0];
			var optiontext = element[1];
			to1.options[i] = new Option(optiontext,optionval);
			to2.options[i] = new Option(optiontext,optionval);
		}
	}
}

function switchLayout(l) {
	var date = new Date();
	var timestamp = date.getTime();
	var element = document.getElementById(l);
	var newlayout = element.options[element.selectedIndex].value;
	xmlHttp = GetXmlHttpObject();
	xmlHttp.onreadystatechange=getLayout;
	var url = "./lib/getLayout.php?layout=" + newlayout + "&time=" + timestamp;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function getLayout() {
	if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		var result = xmlHttp.responseText;
		var layout = document.getElementById("layoutdemo");
		layout.innerHTML = result;
	}
}

function switchLayout2(l,dbid) {
	var date = new Date();
	var timestamp = date.getTime();
	var element = document.getElementById(l);
	var newlayout = element.options[element.selectedIndex].value;
	xmlHttp = GetXmlHttpObject();
	xmlHttp.onreadystatechange=getLayout2;
	var url = "./lib/getLayout.php?layout=" + newlayout + "&type=2&dbid="+dbid+"&time=" + timestamp;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function getLayout2() {
	if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		var result = xmlHttp.responseText;
		var layout = document.getElementById("layout_divs");
		layout.innerHTML = result;
	}
}

function switchContent(l) {
	var date = new Date();
	var timestamp = date.getTime();
	var element = document.getElementById(l);
	var type = element.options[element.selectedIndex].value;
	xmlHttp = GetXmlHttpObject();
	xmlHttp.onreadystatechange=getContent;
	var url = "./lib/getContent.php?type=" + type + "&time=" + timestamp;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function getContent() {
	if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		var result = xmlHttp.responseText;
		var content = document.getElementById("stuff");
		content.innerHTML = result;
	}
}

function ChangeCalendar(id,cid,d) {
	var date = new Date();
	var timestamp = date.getTime();
	container = cid;
	var url = "./lib/changeCalendar.php?id="+id+"&cid="+cid+"&date="+d+"&timestamp="+timestamp;
	xmlHttp = GetXmlHttpObject();
	xmlHttp.onreadystatechange=doChangeCalendar;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function doChangeCalendar() {
	if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		var result = xmlHttp.responseText;
		document.getElementById(container).innerHTML=result;
	}
}

function SaveToolbar(member) {
	var date = new Date();
	var timestamp = date.getTime();
	var tools = document.getElementById("toolbarIcons");
	if(tools.style.display == "") {
		tools.style.display="none";
		var url = "./lib/setMemberPref.php?pref=toolbarshow&val=hide&member="+member+"&timestamp="+timestamp;
		xmlHttp = GetXmlHttpObject();
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	} else {
		tools.style.display="";
		var url = "./lib/setMemberPref.php?pref=toolbarshow&val=show&member="+member+"&timestamp="+timestamp;
		xmlHttp = GetXmlHttpObject();
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	}
}

/** Dynamic Changes */

function changeClass(element,to) {
	var elements = element.split(",");
	for(i=0; i<elements.length; i++) {
		var ele = document.getElementById(elements[i]);
		ele.className=to;
	}
}

function checkTheBox(checkbox) {
	var box = document.getElementById(checkbox);
	box.checked = !box.checked;
}

function checkAllBoxes(checkAllBox,list) {
	var field = document.getElementById(checkAllBox);
	if(field.checked) {
		field = document.getElementsByName(list);
		for(i = 0; i < field.length; i++) {
			field[i].checked = true;
		}
	} else {
		uncheckAllBoxes(list);
	}
}

function uncheckAllBoxes(list) {
	var field = document.getElementsByName(list);
	for(i = 0; i < field.length; i++) {
		field[i].checked = false;
	}
}

function addOrder(prefix) {
	var column = document.getElementById("cols3");
	var op = document.getElementById("op2");
	
	var select = document.getElementById("order");
	var length = select.options.length;
	
	var text = column.value + " " + op.value;
	
	select.options[length] = new Option(text,prefix +"_"+ text);
	select.options[length].selected=true;
}

function createFilter(col,op,val,andor,area) {
	var col = document.getElementById(col);
	var op = document.getElementById(op);
	var val = document.getElementById(val);
	var andor = document.getElementById(andor);
	var area = document.getElementById(area);
	
	if(op.value == "like") {
		area.value = area.value + col.value + " " +
		op.value + " '%" + val.value + "%' " + andor.value + " ";
	} else {
		area.value = area.value + col.value + " " +
		op.value + " '" + val.value + "' " + andor.value + " ";
	}
}

function createOption(prefix) {
	var column = document.getElementById("cols2");
	var op = document.getElementById("op");
	var value = document.getElementById("value");
	var andor = document.getElementById("andor");
	var select = document.getElementById("constraints");
	var length = select.options.length;
	
	if(op.value=="like") {
		if(value.value.indexOf("=") != -1) {
			var text = column.value+" like " + prefix+"_"+value.value.substring(1,value.value.length);
		} else {
			var text = column.value+" like '%"+value.value+"%'";
		}
	} else {
		if(value.value.indexOf("=") != -1) {
			var text = column.value+op.value+prefix+"_"+value.value.substring(1,value.value.length);
		} else {
			var text = column.value+op.value+"'"+value.value+"'";
		}
	}
	
	if(andor.value != "") {
		text += " " + andor.value;
	}
	
	select.options[length] = new Option(text,prefix +"_"+ text);
	select.options[length].selected=true;
}

function moveOption(moveFrom,moveTo) {
	var from = document.getElementById(moveFrom);
	for(i=0; i<from.options.length; i++) {
		var selected = from.options[i].selected;
		var val = from.options[i].value;
		var text = from.options[i].text;
		if(selected) {
			var to = document.getElementById(moveTo);
			var length = to.options.length;
			to.options[length] = new Option(text,val);
			to.options[length].selected=true;
		}
	}
}

function removeOption(removeFrom) {
	var from = document.getElementById(removeFrom);
	for(i=0; i<from.options.length; i++) {
		var selected = from.options[i].selected;
		if(selected) {
			from.options.remove(i);
		}
	}
}

function addAllOptions(moveFrom,moveTo) {
	var from = document.getElementById(moveFrom);
	var to = document.getElementById(moveTo);
	removeAllOptions(moveTo);
	for(i=0; i<from.options.length; i++) {
		var optionval = from.options[i].value;
		var optiontext = from.options[i].text;
		to.options[i] = new Option(optiontext,optionval);
		to.options[i].selected = true;
	}
}

function removeAllOptions(removeFrom) {
	var from = document.getElementById(removeFrom);
	from.options.length = 0;
}

function moveOptionsUp(selectId) {
	var selectList = document.getElementById(selectId);
	var selectOptions = selectList.getElementsByTagName('option');
	for (var i = 1; i < selectOptions.length; i++) {
		var opt = selectOptions[i];
		if (opt.selected) {
			selectList.removeChild(opt);
			selectList.insertBefore(opt, selectOptions[i - 1]);
		}
	}
}

function moveOptionsDown(selectId) {
	var selectList = document.getElementById(selectId);
	var selectOptions = selectList.getElementsByTagName('option');
	for (var i = selectOptions.length - 2; i >= 0; i--) {
		var opt = selectOptions[i];
		if (opt.selected) {
			var nextOpt = selectOptions[i + 1];
			opt = selectList.removeChild(opt);
			nextOpt = selectList.replaceChild(opt, nextOpt);
			selectList.insertBefore(nextOpt, opt);
		}
	}
}

function switchView(f,t) {
	var from = document.getElementById(f);
	var to = document.getElementById(t);
	if(from.style.display == "") {
		from.style.display = "none";
		to.style.display = "";
	} else {
		from.style.display = "";
		to.style.display = "none";
	}
}

function Show(el) {
	var elements = el.split(",");
	for(i=0; i< elements.length; i++) {
		var element = document.getElementById(elements[i]);
		if(element.style.display == "none") {
			element.style.display = "";
		} else {
			element.style.display = "none";
		}
	}
}

function ShowBlock(el) {
	var elements = el.split(",");
	for(i=0; i< elements.length; i++) {
		var element = document.getElementById(elements[i]);
		element.style.display = "block";
	}
}

function ShowInline(el) {
	var elements = el.split(",");
	for(i=0; i< elements.length; i++) {
		var element = document.getElementById(elements[i]);
		if(element.style.display == "inline") {
			element.style.display = "none";
		} else {
			element.style.display = "inline";
		}
	}
}

function Hide(el) {
	var elements = el.split(",");
	for(i=0; i<elements.length; i++) {
		var element = document.getElementById(elements[i]);
		element.style.display="none";
	}
}

currentTab = 0;
function ShuffleTabs(tabs,direction) {
	var tabsarr = tabs.split(",");
	var display = 0;
	if(direction == "Left") {
		currentTab++;		
		for(i=0; i<tabsarr.length; i++) {
			if(display == 6) break;
			
			if(currentTab > tabsarr.length) {
				currentTab = tabsarr.length;
				break;
			} else if(currentTab < 0) {
				currentTab = 0;
				break;
			}
			
			var dif = tabsarr.length - currentTab;
			if(dif < 6) {
				currentTab = dif+1;
			}
			
			if(i >= currentTab) {
				document.getElementById(tabsarr[i]).style.display="block";
				display++;
			} else {
				document.getElementById(tabsarr[i]).style.display="none";
			}
		}
	} else {
		currentTab--;
		for(i=tabsarr.length-1; i>=0; i--) {
			if(display == 6) break;
			
			if(currentTab > tabsarr.length) {
				currentTab = tabsarr.length;
				break;
			} else if(currentTab < 0) {
				currentTab = 0;
				break;
			}
			
			if(i <= currentTab+5) {
				document.getElementById(tabsarr[i]).style.display="block";
				display++;
			} else {
				document.getElementById(tabsarr[i]).style.display="none";
			}
		}
	}
}

/** Form Related Stuff */

function addColumn(from,to) {
	var as = document.getElementById('as');
	var from = document.getElementById(from);
	var to = document.getElementById(to);
	var length = to.options.length;
	
	if(as.value != '') {
		var text = from.options[from.options.selectedIndex].text + " as '" + as.value + "'";
		to.options[length] = new Option(text,text);
		to.options[length].selected = true;
	}
}

function addOrder(prefix) {
	var column = document.getElementById("cols3");
	var op = document.getElementById("op2");
	
	var select = document.getElementById("order");
	var length = select.options.length;
	
	var text = column.value + " " + op.value;
	
	select.options[length] = new Option(text,prefix +"_"+ text);
	select.options[length].selected=true;
}

function CheckDate(d) {
	var dates = d.split(",");
	for(i=0; i<dates.length; i++) {
		var tdate = dates[i];
		var datefield = document.getElementById(tdate);
		if(datefield.value.length < 10) {
			alert("Date Format must be MM/DD/YYYY. Please correct and submit again.");
			datefield.style.backgroundColor="ff9595";
			return false;
		} else {
			datefield.style.backgroundColor="FFFFFF";
		}
	}
	return true;
}

function CheckForm(efs) {
	var fields = efs.split(",");
	for(i=0;i<fields.length;i++) {
		field = document.getElementById(fields[i]);
		if(field.value == '') {
			alert(field.id + " cannot be blank.");
			field.style.backgroundColor="ff9595";
			return false;
		}
	}
	return true;
}

function CheckTaskDate(d) {
	var tdate = document.getElementById(d);
	if(document.getElementById("NoDueTime").checked == false) {
		if(tdate.value.length < 10) {
			alert("Date Format must be MM/DD/YYYY. Please correct and submit again.");
			tdate.style.backgroundColor="ff9595";
			return false;
		}
	}
	return true;
}

function clear(thing) {
	var element = document.getElementById(thing);
	element.innerHTML = "";
}

function setContent() {
	var content = document.getElementById("editorContent").value;
	document.getElementById("textEditor").contentWindow.document.write(content);
}

function setHidden() {
	if(document.getElementById("textEditor")) {
		var content = document.getElementById("textEditor").contentWindow.document.body.innerHTML;
		document.getElementById("editorContent").value = content;
	}
}

function grayOut(vis, options) {
	// Pass true to gray out screen, false to ungray
	// options are optional.  This is a JSON object with the following (optional) properties
	// opacity:0-100
	// Lower number = less grayout higher = more of a blackout
	// zindex: #
	// HTML elements with a higher zindex appear on top of the gray out
	// bgcolor: (#xxxxxx)
	// Standard RGB Hex color code
	// grayOut(true, {'zindex':'50', 'bgcolor':'#0000FF', 'opacity':'70'});
	// Because options is JSON opacity/zindex/bgcolor are all optional and can appear
	// in any order.  Pass only the properties you need to set.
	var options = options || {};
	var zindex = options.zindex || 100;
	var opacity = options.opacity || 40;
	var opaque = (opacity / 100);
	var bgcolor = options.bgcolor || '#000000';
	var dark=document.getElementById('darkenScreenObject');
	if (!dark) {
		// The dark layer doesn't exist, it's never been created.  So we'll
		// create it here and apply some basic styles.
		var tbody = document.getElementsByTagName("body")[0];
		var tnode = document.createElement('div');
		// Create the layer.
		tnode.style.position='absolute';
		// Position absolutely
		tnode.style.top='0px';
		// In the top
		tnode.style.left='0px';
		// Left corner of the page
		tnode.style.overflow='hidden';
		// Try to avoid making scroll bars
		tnode.style.display='none';
		// Start out Hidden
		tnode.id='darkenScreenObject';
		// Name it so we can find it later
		tbody.appendChild(tnode);
		// Add it to the web page
		dark=document.getElementById('darkenScreenObject');
		// Get the object.
	}
	if (vis) {
		// Calculate the page width and height
		if( document.body && ( document.body.scrollWidth || document.body.scrollHeight ) ) {
			var pageWidth = document.body.scrollWidth+'px';
			var pageHeight = document.body.scrollHeight+'px';
		} else if( document.body.offsetWidth ) {
			var pageWidth = document.body.offsetWidth+'px';
			var pageHeight = document.body.offsetHeight+'px';
		} else {
			var pageWidth='100%';
			var pageHeight='100%';
		}

		//set the shader to cover the entire page and make it visible.
		dark.style.opacity=opaque;
		dark.style.MozOpacity=opaque;
		dark.style.filter='alpha(opacity='+opacity+')';
		dark.style.zIndex=zindex;
		dark.style.backgroundColor=bgcolor;
		dark.style.width= '100%';
		dark.style.height= '100%';
		dark.style.display='block';
	} else {
		dark.style.display='none';
	}
}

/** TextEditor Functions */

function init(messages) {
	if(document.getElementById("textEditor")) {
		document.getElementById("textEditor").contentWindow.document.designMode = "On";
	}
	
	//Popup Message
	if(messages > 0) {
		window.open("index.php?print=Printer&type=pmod&pmod=CheckMessages&title=New Messages","CheckMessages","status=1,toolbar=0,scrollbars=1,width=500,height=300");
	}
}

function TextEdit(command,value) {
	document.getElementById("textEditor").contentWindow.document.execCommand(command,false,value);
	if(filemgr) {
		filemgr.close();
	}
}

function CreateLink() {	
	var sText = document.getElementById("textEditor").contentWindow.document.selection.createRange();	
	if(sText.text != "") {
		document.getElementById("textEditor").contentWindow.document.execCommand("CreateLink");
		if(sText.parentElement().tagName == "A") {
			sText.execCommand("ForeColor",false,"#FF0033");
		}
	} else {
		alert("You must select some text before you can create a link.");
	}
}

function ViewEditorSource(checked) {
	if(checked) {
		var html = document.getElementById("textEditor").contentWindow.document.body.innerHTML;
		document.getElementById("html_source").value=html;
		Show('html_source');
		Hide('textEditor');
	} else {
		var html = document.getElementById("html_source").value;
		document.getElementById("textEditor").contentWindow.document.body.innerHTML = html;
		Show('textEditor');
		Hide('html_source');
	}
}

/** File Manager Stuff */

function OpenFileManager(member) {
	textEditor.document.body.focus();
	var filemgr = window.open("index.php?FILEMGR=" + member,"FileManager","status=1,toolbar=0,resizable=1,titlebar=0,location=0,scrollbars=1,width=800,height=500");
}

function SelectFiles(files) {
	var doit = document.getElementById("do");
	if(doit.value == "Insert") {
		var files = document.getElementsByName(files);
		for(i = 0; i < files.length; i++) {
			if(files[i].checked == true) {
				opener.TextEdit('InsertImage',files[i].value);
			}
		}
		return false;
	}
}

imageurl = null;
function setPreview(imageurl) {
	var previewer = document.getElementById('preview');
	var html = "<img src='" + imageurl + "' />";
	previewer.innerHTML=html;
}

/** Table Stuff */

function AddFieldRow(fid,num) {
	var fid = document.getElementById(fid);
	for(i=0; i<num; i++) {
		var lastRow = fid.rows.length;
		alert(lastRow);
		var iteration = lastRow;
		var row = fid.insertRow(lastRow);
		
		//Delete Row Image
		var cell0 = row.insertCell(0);
		var eximg = document.createElement('img');
		eximg.src='./images/ex.gif';
		eximg.onclick = function() {
			document.getElementById('fields').deleteRow(iteration);
		}
		cell0.appendChild(eximg);
		
		// Name
		var cell1 = row.insertCell(1);
		var nameinput = document.createElement('input');
		nameinput.type = 'text';
		nameinput.name = 'names[]';
		nameinput.id = 'name' + iteration;
		nameinput.size = 10;
		nameinput.value = "";
		cell1.appendChild(nameinput);
		
		// Form Text
		var cell2 = row.insertCell(2);
		var textinput = document.createElement('input');
		textinput.type = 'text';
		textinput.name = 'texts[]';
		textinput.id = 'text' + iteration;
		textinput.size = 15;
		textinput.value = "";
		cell2.appendChild(textinput);
		
		// Type
		var cell3 = row.insertCell(3);
		var sel = document.createElement('select');
		sel.name = 'types[]';
		sel.options[0] = new Option('Checkbox','Checkbox');
		sel.options[1] = new Option('Date','Date');
		sel.options[2] = new Option('Date & Time','DateTime');
		sel.options[3] = new Option('Time','Time');
		sel.options[4] = new Option('Decimal','Decimal');
		sel.options[5] = new Option('List','List');
		sel.options[6] = new Option('Member Field','Memberfield');
		sel.options[7] = new Option('Number Field','Numberfield');
		sel.options[8] = new Option('Radio','Radio');
		sel.options[9] = new Option('Text Area','Textarea');
		sel.options[10] = new Option('Text Field','Textfield');
		cell3.appendChild(sel);
		
		// Values
		var cell4 = row.insertCell(4);
		var valuesinput = document.createElement('input');
		valuesinput.type = 'text';
		valuesinput.name = 'values[]';
		valuesinput.id = 'value' + iteration;
		valuesinput.size = 15;
		cell4.appendChild(valuesinput);
		
		// Default
		var cell5 = row.insertCell(5);
		var defaultinput = document.createElement('input');
		defaultinput.type = 'text';
		defaultinput.name = 'defaults[]';
		defaultinput.id = 'def' + iteration;
		defaultinput.size = 10;
		cell5.appendChild(defaultinput);
	}
}
