// pushto - change the location to a passed in value
function pushto(url) {
	location.href=url;
}

function getHTTPObject() { 
	var xmlhttp;
	/*@cc_on 
	@if (@_jscript_version >= 5) 
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
		} catch (e) { 
			try { 
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) { 
				xmlhttp = false; 
			} 
		} 
	@else 
		xmlhttp = false; 
	@end @*/ 
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { 
		try { 
			xmlhttp = new XMLHttpRequest(); 
		} catch (e) { 
			xmlhttp = false; 
		} 
	} 
	return xmlhttp; 
}

function doHTTPRequest(url,func) {
	var fns = Array(handleAddListHTTPResponse,
			handleEditListHTTPResponse,
			handleDetailsHTTPResponse,
			handlePreviewHTTPResponse,
			handleSaveFieldHTTPResponse,
			handleDeleteHTTPResponse);
			
	if(http.readyState == 4 || http.readyState == 0) {
		http.open("GET", url, true); 
		http.onreadystatechange = fns[func];
		http.send(null);
	} else {
		showLoading();
		window.setTimeout('doHTTPRequest(\''+url+'\','+func+')',10);
	}
}

// TEMPLATE DESCRIPTION UPDATE - SECTION ADD - STEP 1
function updateTemplateDesc(basepath) {
	var url = '/' + basepath + 'template_desc.php?id=';
	var ref = document.getElementById('template');
	var template = ref.options[ref.selectedIndex].value;
	if(template.length > 0) { 
		http.open("GET", url + escape(template), true); 
		http.onreadystatechange = handleTemplateHTTPResponse; 
		http.send(null);
	} else {
		document.getElementById('template_desc').value = 'Please choose a template from the pulldown menu above. A description for the chosen template will appear here.';
	}
}

function handleTemplateHTTPResponse() {
	if (http.readyState == 4) {
		document.getElementById('template_desc').value = http.responseText;
	}
}

// FORM FIELDS 
// optional args: type_choice,function
// can be called without args
function updateAllBlocks(type_choice,fn) {
	var editblock = document.getElementById('editor_edit');
	var previewblock = document.getElementById('editor_preview');
	var detailsblock = document.getElementById('editor_details');	

	var baseurl = '/' + basepath;
	var url = baseurl + 'form_editor_addlist.php';
	
	if(typeof fn == "undefined") fn = 'add';
	if(typeof type_choice != "undefined") url += "?t="+type_choice;
	
	// UPDATE ADD BLOCK
	doHTTPRequest(url,0);
	
	// UPDATE EDIT BLOCK
	url = baseurl + 'form_editor_editlist.php';
	if(typeof type_choice != "undefined") url += "?t="+type_choice;
	doHTTPRequest(url,1);
	
	// UPDATE DETAIL BLOCK
	if(typeof type_choice != "undefined") {
		url = baseurl + 'form_editor_details.php?t='+type_choice+"&f="+fn;
		doHTTPRequest(url,2);
	} else {
		detailsblock.innerHTML = '';
	}
	
	// UPDATE PREVIEW FORM
	url = baseurl + 'form_editor_preview.php';
	doHTTPRequest(url,3);

}

// encode a url
function encode(str) {
     return escape(str.replace(/ /g, "+"));
}

// decode a url
function decode(str) {
     return unescape(str.replace(/\+/g, " "));
}

// SAVE THE FIELD DETAILS FORM
function saveField() {
	var form = document.getElementById('editor_form');
	var baseurl = '/' + basepath;
	
	showLoading();
	
	// build a query string
	var qs = '';
	for(i = 0; i < form.elements.length; i++) {
		e = form.elements[i];
		switch(e.type) {
			case 'text':
				qs += e.name + "=" + encode(e.value) + "&";
				break;
			case 'radio':
				// group
				if (e.checked && qs.indexOf(e.name) == -1) {
					qs += e.name + "=" + e.value + "&";
				}
				break;
			case 'select-one':
				qs += e.name + "=" + e.options[e.selectedIndex].value + "&";
				break;
			case 'checkbox':
				if(e.checked) {
					qs += e.name + "=" + e.value + "&";
				}
				break;
			case 'hidden':
				qs += e.name + "=" + e.value + "&";
				break;
		}
	}
	qs = qs.substr(0,qs.length - 1); // chop!
	
	var url = baseurl + 'form_editor_save_details.php?' + qs;
	doHTTPRequest(url,4);
}

// DELETE THE FIELD ENTIRELY
function deleteField(id) {
	showLoading();
	var baseurl = '/' + basepath;
	var url = baseurl + 'form_editor_delete.php?id='+id;
	doHTTPRequest(url,5);
}

// CANCEL THE FIELD DETAILS AREA
function cancelField() {
	var detailsblock = document.getElementById('editor_details');
	detailsblock.innerHTML = '';
	clearAddEdit();
}


// ADD LIST BLOCK UPDATE
function handleAddListHTTPResponse() {
	if (http.readyState == 4) {
		var addblock = document.getElementById('editor_add');
		addblock.innerHTML = http.responseText;
		hideLoading();
	}
}

// EDIT LIST BLOCK UPDATE
function handleEditListHTTPResponse() {
	if (http.readyState == 4) {
		var editblock = document.getElementById('editor_edit');
		editblock.innerHTML = http.responseText;
		hideLoading();
	}
}
// DETAILS BLOCK UPDATE
function handleDetailsHTTPResponse() {
	if (http.readyState == 4) {
		var detailsblock = document.getElementById('editor_details');
		detailsblock.innerHTML = http.responseText;
		hideLoading();
	}
}

// FIELD SAVE UPDATE
function handleSaveFieldHTTPResponse() {
	if (http.readyState == 4) {
		var detailsblock = document.getElementById('editor_details');
		var txt = http.responseText;
		updateAllBlocks();
		hideLoading();
		detailsblock.innerHTML = txt;
		clearAddEdit();
	}
}

// FIELD DELETE UPDATE
function handleDeleteHTTPResponse() {
	if (http.readyState == 4) {
		var detailsblock = document.getElementById('editor_details');
		var txt = http.responseText;
		updateAllBlocks();
		detailsblock.innerHTML = txt;
		clearAddEdit();
		hideLoading();
	}
}

// PREVIEW BLOCK UPDATE
function handlePreviewHTTPResponse() {
	if (http.readyState == 4) {
		var previewblock = document.getElementById('editor_preview');
		previewblock.innerHTML = http.responseText;
		hideLoading();
	}
}

function clearAddEdit() {
	document.getElementById('add_field').selectedIndex = null;
	document.getElementById('edit_field').selectedIndex = null;
}

function showLoading() {
	var lblock = document.getElementById('editor_loading');
	if(lblock.style.visibility.indexOf("hidden") > -1 || lblock.style.visibility == '') {
		lblock.style.visibility = "visible";
		disableForm();
	}
}

function hideLoading() {
	var lblock = document.getElementById('editor_loading');
	if(lblock.style.visibility.indexOf("visible") > -1 || lblock.style.visibility == '') {
		lblock.style.visibility = "hidden";
		enableForm();
	}
}

function disableForm() {
	var fref = document.getElementById('editor_form');
	for(i = 0; i < fref.elements.length; i++) {
		fref.elements[i].disabled = "disabled";
	}
}

function enableForm() {
	var fref = document.getElementById('editor_form');
	for(i = 0; i < fref.elements.length; i++) {
		fref.elements[i].disabled = "";
	}
}

// TEMPLATE KEYWORD UPDATE
// set the keyword string so the user can see what the url for their page is going to be
function updateKeywordURL(base,fld) {
	var keyword = document.getElementById(fld).value;
	keyword = keyword.replace(/ /g,'-');
	keyword = keyword.replace(/%/g,'');
	keyword = keyword.replace(/#/g,'');
	keyword = keyword.replace(/\?/g,'');
	keyword = keyword.replace(/\&/g,'');
	keyword = keyword.replace(/'/g,'');
	keyword = keyword.replace(/\./g,'');
	keyword = keyword.toLowerCase();
	if(keyword.length > 0) {
		var fullstring = "Visitors will be able to access this section at: " + base + keyword + "/";
	} else {
		var fullstring = "Enter a keyword to see where visitors will be able to access this section.";
	}
	var el_ref = document.getElementById("keyword_string");
	el_ref.innerHTML = fullstring;
}

function keywordStripChars(fld) {
	var keyword = document.getElementById(fld).value;
	var el_ref = document.getElementById(fld);
	keyword = keyword.replace(/ /g,'-');
	keyword = keyword.replace(/%/g,'');
	keyword = keyword.replace(/#/g,'');
	keyword = keyword.replace(/\?/g,'');
	keyword = keyword.replace(/\&/g,'');
	keyword = keyword.replace(/'/g,'');
	keyword = keyword.replace(/\./g,'');	
	keyword = keyword.toLowerCase();
	el_ref.value = keyword;	
}

function confirmDelete(frm) {
	if(typeof frm.id.length != "undefined") {
		for(i=0;i<frm.id.length;i++) {
			if(frm.id[i].checked) {
				if(confirm('Are you sure you want to delete the selected section?')) {
					frm.act.value = 'delete';
					frm.submit();
					return true;
				} else {
					return false;
				}
			}
		}
	} else {
		if(frm.id.checked) {
			frm.act.value = 'delete';
			frm.submit();
			return true;
		}
	}	
	alert('You must select a section for deletion first.');
}

function doEdit(frm) {
	if(typeof frm.id.length != "undefined") {
		for(i=0;i<frm.id.length;i++) {
			if(frm.id[i].checked) {
				frm.act.value = 'edit';
				frm.submit();
				return true;
			}
		}
	} else {
		if(frm.id.checked) {
			frm.act.value = 'edit';
			frm.submit();
			return true;
		}
	}
	alert('You must select a section to edit first.');	
	return false;
}

// refresh an image so that it is always current
function refreshImage(imgRef) {
	var now = new Date();
	imgRef.src += "?" + now.getTime();
}

// pop up filemanager
function pop_filemanager() {
	var options = 'scrollbars=no,status=no,menu=no,location=no,resizable=yes,width=480,height=420';
	var pop = window.open('/filemanager.php','popimage',options);
}

// DEFINED STUFF
var http = getHTTPObject();