var xmlhttp = false;

/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
	try {
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	} catch (E) {
		xmlhttp = false;
	}
}
@end @*/

if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
	xmlhttp = new XMLHttpRequest();
}

function changeContent(url, element_id) {
	var element = document.getElementById(element_id);
	xmlhttp.open("GET", url, true);
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			element.innerHTML = xmlhttp.responseText;
			convertLinks(changeContentTargets, element_id);
			execScripts(element_id);
		}
	}
	xmlhttp.send('');
}

function showHide(id) {
	m = document.getElementById(id);
	d = m.style.display;
	if (d == 'none') {
		m.style.display = 'block';
	} else {
		m.style.display = 'none';
	}
	return;
}

function buildPost(form_id) {
	if (typeof(form_id) == 'object') {
		form = form_id;
	} else {
		form = document.forms[form_id];
	}
    var qs = ''
    for (e=0;e<form.elements.length;e++) {
        if (form.elements[e].name!='') {
			var ele = form.elements[e]
            var name = ele.name;
            qs+=(qs=='')?'':'&'
			if (ele.type == 'radio') {
				if (ele.checked) {
					qs+= name+'='+escape(ele.value);
				}
			} else {
				qs+= name+'='+escape(ele.value);
			}
        }
    }
    qs+="\n";
    return qs
}

function postForm(form_id, url) {
    var post = buildPost(form_id);
    xmlhttp.open("POST", url, false);
    xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xmlhttp.send(post);
}

function saveWiki (page, element_id) {
	postForm(page, '/wiki.php/'+page);
	loadWiki(page);
}

function execScripts (element_id) {
	area = document.getElementById(element_id);
	scripts = area.getElementsByTagName('script');
	if (scripts) {
		for (var i=0; i<scripts.length; i++) {
			var script = scripts[i];
			if (script.type == 'text/javascript') {
				eval(script.innerHTML);
			}
		}
	}
}

function convertLinks (matches, element_id) {
	if (element_id) {
		var area = document.getElementById(element_id);
	} else {
		var area = document.getElementsByTagName('body');
		area = area[0];
	}
	var anchors = area.getElementsByTagName('a');
	if (anchors) {
		for (var i=0; i<anchors.length; i++) {
			var a = anchors[i];
			var href = a.href;
			if (a.className.indexOf('permalink') == -1) {
				for (var match in matches) {
					var replacement = matches[match]
					var re = new RegExp(match);
					if (href.match(re)) {
						var link = href.replace(re, replacement);
						a.href = link;
					}
				}
			}
		}
	}
}

function doalert() {
	alert('stuff');
}

function XconvertLinks (element_id, url, target) {
	if (element_id) {
		var loc = document.getElementById(element_id);
	} else {
		var loc = document.getElementsByTagName('body');
	}
	var anchors = loc.getElementsByTagName('a');
	if (anchors) {
		for (var i=0; i<anchors.length; i++) {
			var a = anchors[i];
			if (a.className.indexOf('jsWiki') != -1 || element_id) {
				var href = a.href;
				if (url && target) {
					var re = new RegExp("http:\/\/[^\/]+\\"+url+"(.*)");
					if (href.match(re)) {
						//alert(re);return;
						args = href.replace(re, '$1');
						a.href = "javascript:changeContent('"+url+args+"', '"+target+"');";
					}
				}
				var re = /^http:\/\/(caleb.)?alerque.com\/([A-Z])/;
				if (href.match(re)) {
					link = href.replace(re, '$2');
					a.href = "javascript:changeContent('/wiki.php/"+link+"', 'content');";
				}
			}
		}
	}
	var forms = loc.getElementsByTagName('form');
	if (forms) {
		for (var i=0; i<forms.length; i++) {
			var f = forms[i];
			if (f.className.indexOf('jsWiki') != -1 || element_id) {
				f.action = "javascript:saveWiki('"+f.id+"', '"+element_id+"');";
			}
		}
	}
}
