function KingPing()
{
};
// Ajax routines
KingPing.rootdomain='http://'+window.location.hostname;

// XMLHttpRequest functions
KingPing.request_type;
KingPing.request_page;
KingPing.request_data;
KingPing.request_called;
KingPing.request_callback;

// This is a list of XMLHttpRequest creation factory functions to try
KingPing._factories = [
	function() { return new XMLHttpRequest(); },
	function() { return new ActiveXObject("Msxml2.XMLHTTP"); },
	function() { return new ActiveXObject("Microsoft.XMLHTTP"); }
];

KingPing._factory = null;
KingPing.newRequest = function()
{
	if (KingPing._factory != null) return KingPing._factory();

	for (var i=0; i < KingPing._factories.length; i++)
	{
		try {
			var factory = KingPing._factories[i];
			var request = factory();
			if (request != null)
			{
				KingPing._factory = factory;
				return request;
			}
		}
		catch (e){
			continue;
		}
	}
	KingPing._factory = function() {
		throw new Error("XMLHttpRequest not supported");
	}
	KingPing._factory();
};

KingPing.encodeData = function(idata)
{
	var pairs = Array();
	var regexp = /%20/g; // match an encoded space
	for (var iname in idata)
	{
		if ( iname && idata[iname] )
		{
			var ivalue = idata[iname].toString();
			var pair = encodeURIComponent(iname).replace(regexp,"+") + '=' + encodeURIComponent(ivalue).replace(regexp,"+");
			pairs.push(pair);
		}
	}
	return pairs.join('&');
};

KingPing.get = function(ipage,idata,callback,errorHandler)
{
	var AJAXhandle = KingPing.newRequest();
	var url = ipage + '.php';
	var query = KingPing.encodeData(idata);
	if (query.indexOf('=')!=-1) url += '?' + query;
	AJAXhandle.onreadystatechange=function(){
		if ( AJAXhandle.readyState == 4 )
		{
			if ( AJAXhandle.status == 200 ) {
				callback(KingPing._getResponse(AJAXhandle));
			}
			else
			{
				errorHandler(AJAXhandle.status, AJAXhandle.statusText);
			}
		}
	}

	AJAXhandle.open('GET',url, true);
 	AJAXhandle.send(null);
};

KingPing.post = function(ipage,idata,callback,errorHandler)
{
	var AJAXhandle = KingPing.newRequest();
	var url = ipage + '.php';
	AJAXhandle.onreadystatechange=function(){
		if ( AJAXhandle.readyState == 4 )
		{
			if ( AJAXhandle.status==200 ) {
				callback(KingPing._getResponse(AJAXhandle));
			}
			else
			{
				errorHandler(AJAXhandle.status, AJAXhandle.statusText);
			}
		}
	}
	AJAXhandle.open('POST',url, true);
	AJAXhandle.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 	AJAXhandle.send(KingPing.encodeData(idata));
};

KingPing._getResponse = function(request)
{
	// Check thte content type returned by the server
	switch(request.getResponseHeader("Content-Type"))
	{
		case "text/xml" : return request.responseXML;
		case "text/json" :
		case "text/javascript" :
		case "application/javascript" :
		case "applicaiton/x-javascript" : return eval(request.responseText);
		default : return request.responseText;
	}
};

KingPing.call_server = function()
{
	if ( KingPing.request_called ) return;
	KingPing.request_called = true;
	var callback = KingPing.callbacks[KingPing.request_callback];
	var errorHandler = KingPing.callbacks['error_'+KingPing.request_page];
	if ( KingPing.request_type == 'get' ) KingPing.get(KingPing.request_page,KingPing.request_data,callback,errorHandler);
	if ( KingPing.request_type == 'post' ) KingPing.post(KingPing.request_page,KingPing.request_data,callback,errorHandler);
};

KingPing.ping = function() {
	document.getElementById('submit-result').innerHTML = '';
	var can_process = true;
	var site = document.pingform.url.value;
	var lng = document.pingform.lang.value;
	if (site == '') {
		alert('Please enter your blog address and click submit');
		can_process = false;
	}
	if ( site.indexOf('http') == -1 ) {
		alert('Please enter your blog URL beginning with http://');
		can_process = false;
	}
	if ( can_process ) {
		var pod = document.pingform.podcast.checked;
		var	podcastValue = 'no';

		if (pod)
			podcastValue = 'yes';
		else
			podcastValue = 'no';

		document.getElementById('submit-button').style.display = 'none';
		document.getElementById('submit-process').style.display = 'block';
		// Setup AJAX call to save data
  		KingPing.request_type = 'post';
  		KingPing.request_page = 'siteping';
  		KingPing.request_data =  new Array();
  		KingPing.request_called = false;
		KingPing.request_data["site"] = site;
  		KingPing.request_data["pc"] = podcastValue;
  		KingPing.request_data["lang"] = lng;
  		KingPing.request_data["act"] = 'ping';
  		KingPing.request_callback = 'handlePingResponse';
		KingPing.call_server();
	}
};

KingPing.postsite = function() {
	document.getElementById('submit-result').innerHTML = '';
	var can_process = true;
	var url = document.pingform.url.value;
	if (url == '') {
		alert('Please enter your blog/feed address and click submit');
		can_process = false;
	}
	if ( url.indexOf('http') == -1 ) {
		alert('Please enter your blog/feed URL beginning with http://');
		can_process = false;
	}
	if ( can_process ) {
		var user = document.pingform.user.value;
		var name = encodeURIComponent(document.pingform.name.value);
		var memberid = document.pingform.memberid.value;
		var pid = document.pingform.pid.value;
		var registerurl = document.pingform.regurl.value;
		var podcast = document.pingform.podcast.checked;
		var	podcastValue = 'no';

		if (podcast)
			podcastValue = 'yes';
		else
			podcastValue = 'no';

		document.getElementById('submit-button').style.display = 'none';
		document.getElementById('submit-process').style.display = 'block';
		// Setup AJAX call to save data
  		KingPing.request_type = 'post';
  		KingPing.request_page = 'ajfeeds';
  		KingPing.request_data =  new Array();
  		KingPing.request_called = false;
		KingPing.request_data["url"] = url;
  		KingPing.request_data["podcast"] = podcastValue;
  		KingPing.request_data["action"] = 'ping';
  		KingPing.request_data["user"] = user;
  		KingPing.request_data["name"] = name;
  		KingPing.request_data["memberid"] = memberid;
  		KingPing.request_data["pid"] = pid;
  		KingPing.request_data["regurl"] = registerurl;
  		KingPing.request_callback = 'handlePingResponse';
		KingPing.call_server();
	}
}

KingPing.siteDelete = function(memberid,url) {
	document.getElementById('submit-result').innerHTML = '';
	document.getElementById('submit-button').style.display = 'none';
	document.getElementById('submit-process').style.display = 'block';
	// Setup AJAX call to save data
  	KingPing.request_type = 'post';
  	KingPing.request_page = 'ajdelete';
  	KingPing.request_data =  new Array();
  	KingPing.request_called = false;
	KingPing.request_data["url"] = url;
  	KingPing.request_data["memberid"] = memberid;
  	KingPing.request_callback = 'handlePingResponse';
	KingPing.call_server();
}

KingPing.updateTwitter = function(formname) {
	var twitterform = document.getElementById(formname);
	var tweetuser = twitterform.twitteruser.value;
	var tweetpwd = twitterform.twitterpwd.value;
	var user = twitterform.user.value;
	var siteurl = twitterform.siteurl.value;
	// Setup AJAX call to save data
  	KingPing.request_type = 'post';
  	KingPing.request_page = 'ajtwitter';
  	KingPing.request_data =  new Array();
  	KingPing.request_called = false;
  	KingPing.request_data["action"] = 'twitter';
	KingPing.request_data["twitteruser"] = tweetuser;
  	KingPing.request_data["twitterpwd"] = tweetpwd;
  	KingPing.request_data["user"] = user;
  	KingPing.request_data["siteurl"] = siteurl;
  	KingPing.request_callback = 'handlePingResponse';
	KingPing.call_server();
}

KingPing.sendemail = function() {
	var can_process = true;
	var namevalue = document.contactform.name.value;
	var emailvalue = document.contactform.email.value;
	if (emailvalue == "") {
		alert('Please enter your email address');
		can_process = false;
	}
	var w3 = document.contactform.www.value;
	if (w3 == "") {
		alert('Please enter your web address');
		can_process = false;
	}
	var rpcvalue = document.contactform.rpc.value;
	if (rpcvalue == "") {
		alert('Please enter your ping service address (XML RPC)');
		can_process = false;
	}
	if ( can_process ) {
		document.contactform.send.disabled =true;
		// Setup AJAX call to save data
  		KingPing.request_type = 'post';
  		KingPing.request_page = 'ajcontact';
  		KingPing.request_data =  new Array();
  		KingPing.request_called = false;
		KingPing.request_data["action"] = 'sendmail';
  		KingPing.request_data["name"] = namevalue;
  		KingPing.request_data["email"] = emailvalue;
  		KingPing.request_data["www"] = w3;
  		KingPing.request_data["rpc"] = rpcvalue;
  		KingPing.request_callback = 'handleContactResponse';
		KingPing.call_server();
	}
}

KingPing.handlePingResponse = function(response) {
	if(response.indexOf('|') == -1) {
		alert(response);
	} else {
		var update = new Array();
		update = response.split('|');
		if (update[0].indexOf('goodping') != -1 ) {
			document.getElementById('submit-result').innerHTML = update[1];
			if (update.length > 2) {
				if (update[2].indexOf('update') != -1 ) {
					document.getElementById(update[3]).innerHTML += update[4];
				}
				if (update[2].indexOf('reload') != -1 ) {
					alert(update[4]);
					window.location = update[3];
				}
			}
		}
		else {
			document.getElementById(update[0]).innerHTML = update[1];
		}
	}
	document.getElementById('submit-button').style.display = 'block';
	document.getElementById('submit-process').style.display = 'none';
}

KingPing.error_handlePingResponse = function(response) {
	document.getElementById('submit-result').innerHTML = 'Error processing URL. Please try again later';
	document.getElementById('submit-button').style.display = 'block';
	document.getElementById('submit-process').style.display = 'none';
}

KingPing.handleContactResponse = function(response) {
	var update = new Array();
	if(response.indexOf('|') != -1) {
		update = response.split('|');
		document.contactform.send.value='Send';
		if(update[1].indexOf('T') != 0)
			document.contactform.send.disabled =false;
		else
			document.contactform.send.value='Sent';

		document.getElementById(update[0]).innerHTML = update[1];
	}
}

KingPing.error_handleContactResponse = function(response) {
	document.getElementById('contactareamsg').innerHTML = 'Error process email. Please try again later.';
	document.contactform.send.disabled =false;
}

KingPing.callbacks = {
	handlePingResponse:				KingPing.handlePingResponse,
	error_handlePingResponse:		KingPing.error_handlePingResponse,
	handleContactResponse:			KingPing.handleContactResponse,
	error_handleContactResponse:	KingPing.error_handleContactResponse
};

function scrollLeftRight(){};
scrollLeftRight.scrollClassDiv = null; // will hold scrollable division elements
scrollLeftRight.showcnt = 8; // number of link divisions to show
scrollLeftRight.leftlink = 0; // current left most link visible
scrollLeftRight.containDiv = "scrolled-box"; // set to division id of container
scrollLeftRight.scrollClass = "scrolled-links"; // set to class for division to scroll

scrollLeftRight.scrollBoxLeft = function(){
	if ( scrollLeftRight.leftlink+scrollLeftRight.showcnt >= scrollLeftRight.scrollClassDiv.length ) {
		return;
	}
	else {
		scrollLeftRight.scrollClassDiv[scrollLeftRight.leftlink].style.display = 'none';
		scrollLeftRight.scrollClassDiv[scrollLeftRight.leftlink+scrollLeftRight.showcnt].style.display = 'block';
		scrollLeftRight.leftlink++;
	}
};

scrollLeftRight.scrollBoxRight = function(){
	if ( scrollLeftRight.leftlink == 0 ) {
		return;
	}
	else {
		scrollLeftRight.leftlink--;
		scrollLeftRight.scrollClassDiv[scrollLeftRight.leftlink+scrollLeftRight.showcnt].style.display = 'none';
		scrollLeftRight.scrollClassDiv[scrollLeftRight.leftlink].style.display = 'block';
	}
};

scrollLeftRight.init = function(){
	if ( document.getElementById(scrollLeftRight.containDiv) ) {
		var scrollBoxDivisions=document.getElementById(scrollLeftRight.containDiv).getElementsByTagName("div");
		scrollLeftRight.scrollClassDiv = new Array();
		for (var i=0; i<scrollBoxDivisions.length; i++){
			if ( scrollBoxDivisions[i].className == scrollLeftRight.scrollClass ) scrollLeftRight.scrollClassDiv.push(scrollBoxDivisions[i]);
		}
		for (i=0; i<scrollLeftRight.showcnt; i++){
			if ( i < scrollLeftRight.scrollClassDiv.length ) {
				scrollLeftRight.scrollClassDiv[i].style.display = 'block';
			}
		}
		scrollLeftRight.leftlink=0;
	}
};

// now create onload event to call init
if (window.addEventListener){
	window.addEventListener("load",scrollLeftRight.init,false)
}
else {
	if (window.attachEvent) {
		window.attachEvent("onload",scrollLeftRight.init)
	}
	else window.onload = scrollLeftRight.init
}

