function likecms_ajax_alterDocumentLinks() {
	likecms_ajax_alterNodeLinks(document);
}
	
function likecms_ajax_alterNodeLinks(node) {
	var elarray = node.getElementsByTagName("A");
	var str = "";
	for (var i=0; i<elarray.length; i++) {
		var link = elarray[ i ].href;
		if (elarray[ i ].getAttribute("ajaxlink") == "1") {
			elarray[ i ].href  = "javascript: likecms_ajax_goto('" + link + "');";
			elarray[ i ].setAttribute("ajaxlink", "-1");
		}
	}
}

function likecms_ajax_goto(ref) {
	// test for ?
	var appendchar;
	if (ref.indexOf('?')>=0) {
		appendchar = '&';
	}
	else {
		appendchar = '?';
	}

	var newurl = ref + appendchar + ahahUrlAppend;

   if (typeof likecms_ajax_preCall == "function") likecms_ajax_preCall();

	likecms_ajax_callAHAH(newurl, '', document.getElementById(ahahContainerId), ahahLoadingMessage, ahahErrorMessage);
}



var likecms_ajax_current_url;
var likecms_ajax_current_post_data;
var likecms_ajax_current_pageElement;
var likecms_ajax_current_callMessage;
var likecms_ajax_current_errorMessage;

function likecms_ajax_callAHAH(url, post_data, pageElement, callMessage, errorMessage) {
 	likecms_ajax_current_url = url;
 	likecms_ajax_current_post_data = post_data;
 	likecms_ajax_current_pageElement = pageElement;
 	likecms_ajax_current_callMessage = callMessage;
 	likecms_ajax_current_errorMessage = errorMessage;
 	window.setTimeout('likecms_ajax_callAHAH_workaround(likecms_ajax_current_url, likecms_ajax_current_post_data, likecms_ajax_current_pageElement, likecms_ajax_current_callMessage, likecms_ajax_current_errorMessage)',ahahCallTimeout);
}
 
function likecms_ajax_callAHAH_workaround(url, post_data, pageElement, callMessage, errorMessage) {
     pageElement.innerHTML = callMessage;
     try {
     window.likecms_ajax_httpRequest = new XMLHttpRequest(); 
     /* e.g. Firefox */
     } catch(e) {
       try {
       window.likecms_ajax_httpRequest = new ActiveXObject("Msxml2.XMLHTTP");  
       /* some versions IE */
       } catch (e) {
         try {
         window.likecms_ajax_httpRequest = new ActiveXObject("Microsoft.XMLHTTP");  
         /* some versions IE */
         } catch (E) {
          window.likecms_ajax_httpRequest = false;
         } 
       } 
     }
     window.likecms_ajax_httpRequest.onreadystatechange
        = function() {likecms_ajax_responseAHAH(pageElement, errorMessage);};
     window.likecms_ajax_httpRequest.open("POST",url,true);
     window.likecms_ajax_httpRequest.setRequestHeader("Method", "POST " + url + " HTTP/1.1");
     window.likecms_ajax_httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
     window.likecms_ajax_httpRequest.send(post_data);
}

function likecms_ajax_responseAHAH(pageElement, errorMessage) {
   if(window.likecms_ajax_httpRequest.readyState == 4) {
      if(window.likecms_ajax_httpRequest.status == 200) {
         output = window.likecms_ajax_httpRequest.responseText;
         pageElement.innerHTML
            = output;
            
            
         likecms_ajax_alterNodeLinks(pageElement);
         likecms_ajax_execJS(pageElement);

         if (typeof likecms_ajax_onLoad == "function") likecms_ajax_onLoad();
         
         } else {
         pageElement.innerHTML
            = errorMessage+"\n"+window.likecms_ajax_httpRequest.responseText;
         }
      }
}


function likecms_ajax_execJS(node) {
	var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
	var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
	var bMoz = (navigator.appName == 'Netscape');
	var st = node.getElementsByTagName('SCRIPT');

	for(var i=0;i<st.length; i++) {
		if (bSaf) {
			strExec = st[ i ].innerHTML;
		}
		else if (bOpera) {
			strExec = st[ i ].text;
		}
		else if (bMoz) {
			strExec = st[ i ].textContent;
		}
			else {
			strExec = st[ i ].text;
		}
				
		try {
//alert(strExec);
			eval(strExec.split("<!--").join("").split("-->").join(""));
		} catch(e) {
			alert(e);
		}
	}
}

if (window.addEventListener) {
	window.addEventListener('load', likecms_ajax_alterDocumentLinks, false);
}
else {
	window.attachEvent('onload', likecms_ajax_alterDocumentLinks);
}

