/************************************************
	AJAX Functions
*************************************************/
//Global Vars
var GLOBAL_ajaxPostErrorMsg = 'Post was unsuccessful.';
var GLOBAL_ajaxGetErrorMsg = 'Could not return HTML.';
var GLOBAL_AjaxLoadingMsg = 'Loading...';
var GLOBAL_FUNCTION_STORAGE = new Array();

var AjaxObj = function(){
	this.initItems = new Array(2);
	//Init items
		this.initItems['ajax'] = {
			tagName : 'a',
			func : function(obj){
				var ajAxDetails = obj.className.split(' ');
				urlDetails = obj.href;
				obj.setAttribute('origHref',urlDetails);
				obj.href='javascript:Ajax.pageToContainer(\''+urlDetails+'\',\''+ajAxDetails[1]+'\')';
				ajAxDetails.splice(0,1);
				obj.className = AjaxLite.implode(' ',ajAxDetails);
			}
		};
		this.initItems['ajaxForm'] = {
			tagName : 'form',
			func : function(obj){
				var ajaxFormDetails = obj.className.split(' ');
				var postAction = '';
				if(ajaxFormDetails.length>1){postAction=ajaxFormDetails[1];}
				if(obj.onsubmit){
					obj.setAttribute('funcRef',AjaxLite.registerGlobalFunction(obj.onsubmit));
				}
				obj.onsubmit = function(){
					if(this.getAttribute('funcRef')){
						if(GLOBAL_FUNCTION_STORAGE[this.getAttribute('funcRef')]()){
							AjaxLite.ajaxForm(this,postAction);
							return false;
						} else {
							return false;
						}
					} else {
						Ajax.ajaxForm(this,postAction);
						return false;
					}
				};
				ajaxFormDetails.splice(0,1);
				obj.className = AjaxLite.implode(' ',ajaxFormDetails);
			}
		};
	this.initAjaxPage = function(){
		for(var i in AjaxLite.initItems){
			var arr = AjaxLite.getElementsByClassName(i,AjaxLite.initItems[i].tagName);
			for(var j=0;j<arr.length;j++){AjaxLite.initItems[i].func(arr[j]);}
		}
	};
	if(window.attachEvent){window.attachEvent('onload',this.initAjaxPage);}/*IE*/
	if(window.addEventListener){window.addEventListener('load',this.initAjaxPage,false);}/*MOZILLA*/
	this.implode = function(glue,pieces){
		var str = '';
		for(var i=0;i<pieces.length;i++){
			if(i!=0) str += glue;
			str += pieces[i];
		}
		return str;
	};
	this.getElementsByClassName = function(className,tag,elm){
		var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
		var tag = tag || "*";
		var elm = elm || document;
		var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
		var returnElements = [];
		var current;
		var length = elements.length;
		for(var i=0; i<length; i++){
			current = elements[i];
			if(testClass.test(current.className)){
				returnElements.push(current);
			}
		}
		return returnElements;
	};
	this.pageToContainer = function(url,container){
		this.loadAjaxReturn(container,GLOBAL_AjaxLoadingMsg);
		var stateChangeFunc = function(response){AjaxLite.loadAjaxReturn(container,response);};
		this.ajaxGet(url,stateChangeFunc);
	};
	this.httpObj = function(){ 
		var objXMLHttp=null;
		if (window.XMLHttpRequest){objXMLHttp=new XMLHttpRequest()}
		else if(window.ActiveXObject){objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")}
		return objXMLHttp;
	};
	this.ajaxGet = function(uri,stateChangeFunc){
		var myHttp = this.httpObj();
		if (myHttp==null){alert(GLOBAL_ajaxGetErrorMsg);return;}
		myHttp.onreadystatechange=function(){if(myHttp.readyState==4 || myHttp.readyState=='complete'){stateChangeFunc(myHttp.responseText);}};
		myHttp.open("GET",uri,true);
		myHttp.send(null);
	};
	this.ajaxPost = function(uri,args,postAction,formObj){
		var myHttp = this.httpObj();
		if (myHttp==null){alert(GLOBAL_ajaxPostErrorMsg);return;}
		if(postAction=='') postAction = function(resp){/*Do nothing*/};
		if(typeof(postAction)=='string'){
			myHttp.onreadystatechange=function(){if(myHttp.readyState==4 || myHttp.readyState=='complete'){AjaxLite[postAction](myHttp.responseText,formObj);}};
		} else if(typeof(postAction)=='function') {
			myHttp.onreadystatechange=function(){if(myHttp.readyState==4 || myHttp.readyState=='complete'){postAction(myHttp.responseText);}};
		}
		myHttp.open('post', uri, true);
		myHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		myHttp.send(args);
	};
	this.ajaxForm = function(formObj,postAction){
		var args = AjaxLite.serializeForm(formObj);
		this.ajaxPost(formObj.action,args,postAction,formObj);
	};
	this.registerGlobalFunction = function(func){GLOBAL_FUNCTION_STORAGE[GLOBAL_FUNCTION_STORAGE.length] = func; return(GLOBAL_FUNCTION_STORAGE.length-1);};
	this.isObj = function(obj){if(typeof(obj)!='object' && typeof(obj)=='string'){obj = document.getElementById(obj);} return obj;};
	this.loadAjaxReturn = function(obj,response){obj = this.isObj(obj);obj.innerHTML=response;};
	this.serializeForm = function(formObj){
		myStr = '';
		var val = null;
		var count = 0;
		for(var i=0;i<formObj.length;i++){
			if(formObj[i].name=='includeSerialize'){
				var fNames = formObj[i].value.split(',');
				for(var j=0;j<fNames.length;j++){
					if(count!=0){myStr += '&';}
					myStr += this.serializeForm(document.forms[fNames[j]]);
					count++;
				}
			} else {
				if(formObj[i].name!=''){
					val = this.returnInputValue(formObj[i]);
					if(val!=null){
						if(count!=0){myStr += '&';}
						myStr += formObj[i].name + '=' + val;
						count++;
					}
				}
			}
		}
		return myStr;
	};
	this.returnInputValue = function(obj){ /*returns input value of a form obj.*/
		var val = null;
		switch(obj.type){
			case 'radio':
			case 'checkbox':
				if(obj.checked==true){val=obj.value;}
				break;
			case 'select-one':
				val = obj.options[obj.selectedIndex].value;
				break;
			case 'hidden':
			case 'password':
			case 'submit':
			case 'text':
			case 'textarea':
			default:
				val = obj.value;
				break;
		}
		return val;
	};
};
var AjaxLite = new AjaxObj;


// (C) 2000 www.CodeLifter.com
// http://www.codelifter.com
// Free for all users, but leave in this  header
// NS4-6,IE4-6
// Fade effect only in IE; degrades gracefully
var SLIDESHOW_slideShowSpeed = 5000 //Length of picture view
var SLIDESHOW_crossFadeDuration = 3//Length of transition
var SLIDESHOW_ssTracker = new Array();
var SLIDESHOW_Arrs = new Array();
var SLIDESHOW_preLoad = new Array();


function SLIDESHOW_doPreload(sArr){
	for(var x=0;x<sArr.length;x++){
		SLIDESHOW_preLoad[SLIDESHOW_preLoad.length] = new Image()
   		SLIDESHOW_preLoad[SLIDESHOW_preLoad.length-1].src = sArr[x];
	}
}

function SLIDESHOW_init_slideshows(){
	var ssImgs = AjaxLite.getElementsByClassName('slideshow');
	for(var i=0;i<ssImgs.length;i++){
		var sDir = ssImgs[i].className.split(' ')[1];
		SLIDESHOW_ssTracker.push(ssImgs[i]);
		var ref = SLIDESHOW_ssTracker.length - 1;
		ssImgs[i].setAttribute('arrKey',ref);
		ssImgs[i].setAttribute('ssPos',0);
		var pFunc = function(resp){
			var arr = eval("(" + resp + ")");
			SLIDESHOW_doPreload(arr.images);
			SLIDESHOW_Arrs[ref] = arr.images;
			SLIDESHOW_runSlideShow(ref);
		}
		AjaxLite.ajaxGet('/slideshows.php?dir='+sDir,pFunc);
	}
}

function SLIDESHOW_runSlideShow(iKeyRef){
	imgObj = SLIDESHOW_ssTracker[iKeyRef];
	imgList = SLIDESHOW_Arrs[iKeyRef];
	if (document.all){
	  imgObj.style.filter="blendTrans(duration=2)"
	  imgObj.style.filter="blendTrans(duration=SLIDESHOW_crossFadeDuration)"
	  imgObj.filters.blendTrans.Apply()      
	}
	var curImg = SLIDESHOW_ssTracker[iKeyRef].getAttribute('ssPos');
	imgObj.src = imgList[curImg];
	if (document.all){
	  imgObj.filters.blendTrans.Play()
	}
	curImg++;
	if(curImg>(SLIDESHOW_Arrs[iKeyRef].length-1)) curImg=0;
	imgObj.setAttribute('ssPos',curImg);
	setTimeout('SLIDESHOW_runSlideShow('+iKeyRef+')', SLIDESHOW_slideShowSpeed);
}
if(window.attachEvent){window.attachEvent('onload',SLIDESHOW_init_slideshows);}/*IE*/
if(window.addEventListener){window.addEventListener('load',SLIDESHOW_init_slideshows,false);}/*MOZILLA*/
