/*
// +----------------------------------------------------------------------+
// | Licenses and copyright acknowledgements are located at               |
// | http://www.sonsofskadi.net/wp-content/elalicenses.txt                |
// +----------------------------------------------------------------------+
*/
var af_elaLiveReq = false;
var af_elaLiveReqLast = "-";
var af_elaYear = 0;
var af_elaMonth = 0;
var af_elaCategory = -1;
var af_elaTag = -1;
var af_elaMenu = 0;
var af_elaIsIE = false;
var af_elaProcessURI = 'http://annereeves.com/wp-content/plugins/af-extended-live-archive/includes/af-ela.php';
var af_elaResultID = 'af-ela';
var af_elaLoadingContent = '...loading';
var af_elaIdleContent = '';
var af_elaPageOffset = '10';
var af_elaCurrentOffset = 0;
var af_elaCurrentPage = 1;
var af_elaSemOffset = 0;

if (window.XMLHttpRequest) {
	af_elaLiveReq = new XMLHttpRequest();
}

function af_elaLiveReqDoReq(query) {
	if (af_elaLiveReqLast != query) {
		if (af_elaLiveReq && af_elaLiveReq.readyState < 4) {
			af_elaLiveReq.abort();
		}
		
		if (window.XMLHttpRequest) {
		// branch for IE/Windows ActiveX version
		} else if (window.ActiveXObject) {
			af_elaLiveReq = new ActiveXObject("Microsoft.XMLHTTP");
		}
		af_elaLiveReq.onreadystatechange = af_elaLiveReqProcessReqChange;
		af_elaLiveReq.open("GET", af_elaProcessURI + "?" + query);
		af_elaLiveReqLast = query;
		af_elaLiveReq.send(null);
		return true;
	} else {
		return false;
	}
}

function af_elaGenerateMenu() {
	var menuElement = document.getElementById(af_elaResultID+'-menu');
	if( menuElement == null ) {
		return false;
	} else {
		var menu_list = menuElement.childNodes;
		for( var i = 0; i < menu_list.length; i++ ) {
			if( menu_list[i].nodeName == 'LI' ) {
				menu_list[i].style.cursor = 'pointer';
				var tf = function(e) {
 					var af_elaID = af_elaEventElement(e).id;
 					af_elaMenu = af_elaID.substring(af_elaID.lastIndexOf('-') + 1, af_elaID.length);
 					af_elaSelectMenu();
				}
				
				if( af_elaIsIE ) {
					menu_list[i].attachEvent('onclick',tf);
				} else {
					menu_list[i].addEventListener('click', tf, false);
				}
			}
		}
		return true;
	}
}

function af_elaGenerateYear() {
	var yearElement = document.getElementById(af_elaResultID+'-year');
	if( yearElement == null ) {
		return false;
	} else {
		var year_list = yearElement.childNodes;
		for( var i = 0; i < year_list.length; i++ ) {
			if( year_list[i].nodeName == 'LI' ) {
				year_list[i].style.cursor = 'pointer';
				var tf = function(e) {
					var af_elaID = af_elaEventElement(e).id;
					af_elaYear = af_elaID.substring(af_elaID.lastIndexOf('-') + 1, af_elaID.length);
					af_elaSelectYear();
				}
				
				if( af_elaIsIE ) {
					year_list[i].attachEvent('onclick',tf);
				} else {
					year_list[i].addEventListener('click', tf, false);
				}
			}
		}
		return true;
	}
}

function af_elaGenerateMonth() {
	var monthElement = document.getElementById(af_elaResultID+'-month');
	if( monthElement == null ) {
		return false;
	} else {
		var month_list = monthElement.childNodes;
		for( var i = 0; i < month_list.length; i++ ) {
			if( month_list[i].nodeName == 'LI' ) {
				month_list[i].style.cursor = 'pointer';
				var tf = function(e) {
 					var af_elaID = af_elaEventElement(e).id;
 					af_elaMonth = af_elaID.substring(af_elaID.lastIndexOf('-') + 1, af_elaID.length);
 					af_elaSelectMonth();
				}
				
				if( af_elaIsIE ) {
					month_list[i].attachEvent('onclick',tf);
				} else {
					month_list[i].addEventListener('click', tf, false);
				}
			}
		}
		return true;
	}
}

function af_elaGenerateTag() {
	var tagElement = document.getElementById(af_elaResultID+'-tag');
	if( tagElement == null ) {
		return false;
	} else {
		var tag_list = tagElement.childNodes;
		if( !af_elaIsIE ) {
			for( var i = 0; i < tag_list.length; i++ ) {
				if( tag_list[i].nodeName == 'LI' ) {
					tag_list[i].style.cursor = 'pointer';
					var tf = function(e) {
		 				var af_elaID = af_elaEventElement(e).id;
		 				af_elaTag = af_elaID.substring(af_elaID.lastIndexOf('-') + 1, af_elaID.length);
		 				af_elaSelectTag();
					}
					tag_list[i].addEventListener('click', tf, false);
				}
			}
		} else {
			for( var i = 0; i < tag_list.length; i++ ) {
				if( tag_list[i].nodeName == 'LI' ) {
					tag_listIE = tag_list[i].childNodes;
					for( var j = 0; j < tag_listIE.length; j++ ) {
						if( tag_listIE[j].nodeName == 'FONT' ) {
							tag_listIE[j].style.cursor = 'pointer';
							var tf = function(e) {
		 						var af_elaID = af_elaEventElement(e).parentNode.id;
		 						af_elaTag = af_elaID.substring(af_elaID.lastIndexOf('-') + 1, af_elaID.length);
		 						af_elaSelectTag();
		 					}
		 					tag_listIE[j].attachEvent('onclick',tf);
						}
					}
				}
			}
		}
		return true;
	}
}

function af_elaGenerateCategory() {
	var categoryElement = document.getElementById(af_elaResultID+'-category');
	if( categoryElement == null ) {
		return false;
	} else {
		var category_list = categoryElement.childNodes;
		for( var i = 0; i < category_list.length; i++ ) {
			if( category_list[i].nodeName == 'LI' ) {
				if ( category_list[i].className == 'empty') {
					category_list[i].style.cursor = 'default';
				} else { 
					category_list[i].style.cursor = 'pointer';
					var tf = function(e) {
		 				var af_elaID = af_elaEventElement(e).id;
	 					af_elaCategory = af_elaID.substring(af_elaID.lastIndexOf('-') + 1, af_elaID.length);
	 					af_elaSelectCategory();
					}	
				
					if( af_elaIsIE ) {
						category_list[i].attachEvent('onclick',tf);
					} else {
						category_list[i].addEventListener('click', tf, false);
					}
				}
			}
		}
		return true;
	}
}

function af_elaGeneratePrevPosts() {
	var prevPostElement = document.getElementById(af_elaResultID+'-post-prev');
	if( prevPostElement == null) {
		return false;
	} else {
		prevPostElement.style.cursor = 'pointer';
		var tf = function(e) {
			var af_elaID = af_elaEventElement(e).id;
			if( af_elaIsIE ) {
				prevPostElement.detachEvent('onclick',tf);
			} else {
				prevPostElement.removeEventListener('click', tf, false);
			}
	 		af_elaSelectPrevPosts();
		}		
		if( af_elaIsIE ) {
			prevPostElement.attachEvent('onclick',tf);
		} else {
			prevPostElement.addEventListener('click', tf, false);
		}
		return true;
	}
}

function af_elaGenerateNextPosts() {
	var nextPostElement = document.getElementById(af_elaResultID+'-post-next');
	if( nextPostElement == null) {
		return false;
	} else {
		nextPostElement.style.cursor = 'pointer';
		var tf = function(e) {
			var af_elaID = af_elaEventElement(e).id;
	 		if( af_elaIsIE ) {
				nextPostElement.detachEvent('onclick',tf);
			} else {
				nextPostElement.removeEventListener('click', tf, false);
			}
	 		af_elaSelectNextPosts();
	 	}		
		if( af_elaIsIE ) {
			nextPostElement.attachEvent('onclick',tf);
		} else {
			nextPostElement.addEventListener('click', tf, false);
		}
		return true;
	}
}

function af_elaLiveReqProcessReqChange() {
	if (af_elaLiveReq.readyState != 4) {
		var resultElement = document.getElementById(af_elaResultTarget);
		if( resultElement == null ) return;	
		resultElement.innerHTML = af_elaLoadingContent; 
	} else if (af_elaLiveReq.readyState == 4) {
        var af_elaText = af_elaLiveReq.responseText;
		var af_elaResultTarget = af_aleRemoveSpaces(af_elaText.substring(0, af_elaText.indexOf('|')));
		af_elaText = af_elaText.substring(af_elaText.indexOf('|') + 1, af_elaText.length);
		
		var resultElement = document.getElementById(af_elaResultTarget);
		if( resultElement == null ) return;	
		resultElement.innerHTML = af_elaText; 

		var loadingElement = document.getElementById(af_elaResultID+"-loading");
		if ( loadingElement != null) loadingElement.innerHTML = af_elaPageNumber(af_elaIdleContent);

		af_elaGenerateMenu();
		af_elaGenerateYear();
		af_elaGenerateMonth();
		af_elaGenerateCategory();
		af_elaGenerateTag();
		af_elaGenerateNextPosts();
		af_elaGeneratePrevPosts();
		// Fade Anything.
		if( typeof Fat != 'undefined' && /class="fade"/.test(af_elaText)) {
			Fat.fade_all();
		}
		af_elaSemOffset = 0;
	}
}

function af_elaPageNumber(idleString) {
	var res = idleString.replace('%', af_elaCurrentPage);
	return res;
}

function af_elaLiveReqInit() {
	if (navigator.userAgent.indexOf("Safari") > 0) {
	} else if (navigator.product == "Gecko") {
	} else {
		af_elaIsIE = true;
	}
	af_elaLiveReqDoReq('');
}

function af_elaSelectYear() {
	if(af_elaLiveReqDoReq('menu=' + af_elaMenu + '&year=' + af_elaYear)) {
		var loadingElement = document.getElementById(af_elaResultID+"-loading");
		if ( loadingElement != null) loadingElement.innerHTML = af_elaLoadingContent;
	}
	af_elaCurrentOffset = 0;
	af_elaSemOffset = 0;
}

function af_elaSelectMonth() {
	if (af_elaLiveReqDoReq('menu=' + af_elaMenu + '&year=' + af_elaYear + '&month=' + af_elaMonth)) {
		var loadingElement = document.getElementById(af_elaResultID+"-loading");
		if ( loadingElement != null) loadingElement.innerHTML = af_elaLoadingContent;
	}
	af_elaCurrentOffset = 0;
	af_elaSemOffset = 0;
}

function af_elaSelectTag() {
	if (af_elaLiveReqDoReq('menu=' + af_elaMenu + '&tag=' + af_elaTag)) {
		var loadingElement = document.getElementById(af_elaResultID+"-loading");
		if ( loadingElement != null) loadingElement.innerHTML = af_elaLoadingContent;
	}
	af_elaCurrentOffset = 0;
	af_elaSemOffset = 0;
}

function af_elaSelectCategory() {
	if (af_elaLiveReqDoReq('menu=' + af_elaMenu + '&category=' + af_elaCategory)) {
		var loadingElement = document.getElementById(af_elaResultID+"-loading");
		if ( loadingElement != null) loadingElement.innerHTML = af_elaLoadingContent;
	}
	af_elaCurrentOffset = 0;
	af_elaSemOffset = 0;
}

function af_elaSelectMenu() {
	if (af_elaLiveReqDoReq('menu=' + af_elaMenu)) {
		var loadingElement = document.getElementById(af_elaResultID+"-loading");
		if ( loadingElement != null) loadingElement.innerHTML = af_elaLoadingContent;
	}
	af_elaSelectReset();
}

function af_elaSelectNextPosts() {
	var globalVars = af_elaCollectGlobal();
	var tempOffset = eval(af_elaCurrentOffset)+eval(af_elaPageOffset);
	if(!af_elaSemOffset) {
		af_elaCurrentOffset = tempOffset;
		af_elaCurrentPage += 1;
	}
	af_elaSemOffset = 1;
	if (af_elaLiveReqDoReq('menu=' + af_elaMenu + '&paged_offset=' + tempOffset+ globalVars)) {
		var loadingElement = document.getElementById(af_elaResultID+"-loading");
		if ( loadingElement != null) loadingElement.innerHTML = af_elaLoadingContent;
	}
}

function af_elaSelectPrevPosts() {
	var globalVars = af_elaCollectGlobal();
	var tempOffset = eval(af_elaCurrentOffset)-eval(af_elaPageOffset);
	if(!af_elaSemOffset) {
		af_elaCurrentOffset = tempOffset;
		af_elaCurrentPage -= 1;
	}
	af_elaSemOffset = 1;
	if (af_elaLiveReqDoReq('menu=' + af_elaMenu + '&paged_offset=' + tempOffset + globalVars)) {
		var loadingElement = document.getElementById(af_elaResultID+"-loading");
		if ( loadingElement != null) loadingElement.innerHTML = af_elaLoadingContent;
	}
}

function af_elaSelectReset() {
	af_elaCurrentOffset = 0;
	af_elaCurrentPage =1;
	af_elaSemOffset = 0;
	af_elaYear = 0;
	af_elaMonth = 0;
	af_elaCategory = -1;
	af_elaTag = -1;
	af_elaPosts = 0;
}

function af_elaCollectGlobal() {
	var year= '&year=0';
	var month= '&month=0';
	var tag= '&tag=-1';
	var category= '&category=-1';
	if (af_elaYear) var year = '&year=' + af_elaYear;
	if (af_elaMonth) var month = '&month=' + af_elaMonth;
	if (af_elaTag) var tag = '&tag=' + af_elaTag;
	if (af_elaCategory) var category = '&category=' + af_elaCategory;
	return year + month + tag + category;
}

function af_elaEventElement(e) {
	if( af_elaIsIE ) {
		return e.srcElement;
	} else {
		return e.currentTarget;
	}
}

function af_aleRemoveSpaces(TextToTrim)
{
  var buffer = "";
  var TextToTrimLen = TextToTrim.length;
  var TextToTrimLenMinusOne = TextToTrim.length - 1;
  for (index = 0; index < TextToTrimLen; index++)
  {
    if (TextToTrim.charAt(index) != ' ')
    {
      buffer += TextToTrim.charAt(index);
    }
    else
    {
      if (buffer.length > 0)
      {
        if (TextToTrim.charAt(index+1) != ' ' && index != TextToTrimLenMinusOne)
        {
          buffer += TextToTrim.charAt(index);
        }
      }
    }
  }
  return buffer;
}

function af_elaAddEvent(obj, evType, fn) {
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, true);
		return true;
	} else if (obj.attachEvent) {
		var r = obj.attachEvent("on"+evType, fn); 
		return r;
	} else {
		return false;
	}
}

af_elaAddEvent(window, 'load', af_elaLiveReqInit);
