// using history manager in order for back/forward buttons to work
var bookmarkedSection = YAHOO.util.History.getBookmarkedState( "page" );
var querySection = YAHOO.util.History.getQueryStringParameter( "section" );
var initSection = bookmarkedSection || querySection || "home.main";

// register app module
YAHOO.util.History.register( "page", initSection, function( section ) {
	// used when History.navigate is called
	loadSection( section );
} );

// initialize history object
try {
	YAHOO.util.History.initialize();
} catch ( e ) {
	YAHOO.util.Dom.getElementsBy(addLinkListeners,'a');
	YAHOO.util.Dom.getElementsBy(addFormListeners,'form');
}

// run once history object is loaded
YAHOO.util.History.onLoadEvent.subscribe( function() {

	// initial page load
	var currentSection = YAHOO.util.History.getCurrentState( "page" );
	if ( location.hash.substr(1).length > 0 ) {
		if ( currentSection != querySection ) {
			loadSection( currentSection );
		}
	}

	YAHOO.util.Dom.getElementsBy(addLinkListeners,'a');
	YAHOO.util.Dom.getElementsBy(addFormListeners,'form');
} );


function addFormListeners(o) {
	o.onsubmit = function () {

		var data="";
		for (i=0;i<o.length;i++) {
			data+=o[i].name+"="+o[i].value+"&";
		}
		data+="ajax=1";

		// submit form and handle response
		var transaction = YAHOO.util.Connect.asyncRequest('POST', o.action, handleAjaxResponse, data);

		return false;
	}
}

function addLinkListeners(o) {
	if (o.href.indexOf(document.domain)>-1) {
		o.ajaxhref=o.href;
		o.href="javascript:void(0);";
		YAHOO.util.Event.addListener(o, "click", pullAjaxData, o);
	}
}

function loadSection(section) {
	var mychar="?";
	if (section.indexOf('.') >= 0) {
		section="index.cfm?fuseaction="+section;
		mychar="&";
	}
	var transaction = YAHOO.util.Connect.asyncRequest('GET', section+mychar+"ajax=1", handleAjaxResponse, null);
}

function pullAjaxData(e, obj) {
	if (obj.ajaxhref.indexOf('?') < 0) {
		// getting page alias from href
		aHref=obj.ajaxhref.split("/");
		section=aHref[3];
	} else {
		// getting fuseaction from href
		try {
			aHref=obj.ajaxhref.split("?");
			aHref=aHref[1].split("&");
			aHref=aHref[0].split("=");
			section=aHref[1];
		} catch (err) {
			section="home.main";
		}
	}

	try {
		YAHOO.util.History.navigate( "page", section );
	} catch ( err ) {
		loadSection( section );
	}

}

var responseSuccess = function(o){
	 myJSON = eval('('+o.responseText+')');
	 content = myJSON.content;
	 background_color = myJSON.background_color;

	 //replace content
	 var ajaxContainer = document.getElementById('replaceableContainer');
	 ajaxContainer.innerHTML=content;

	 // evaluate javascript
	 scriptTag='(<script.*?>)((\n|\r|.)*?)(<\/script>)';
	 if (scripts=o.responseText.match(scriptTag)) {
	 	// remove slashes
		scripts[2]=scripts[2].replace(/\\/g,"");
		//run scripts
		eval(scripts[2]);
	 }

	 //change out bg color and menu hovers
	 if (background_color != '#' && background_color != '') {
		 var aryMain = YAHOO.util.Dom.getElementsByClassName('Main','div');
		 aryMain[0].style.backgroundColor=background_color;
		 document.getElementById('Body').style.backgroundColor=background_color;

		 var elements = YAHOO.util.Dom.getElementsByClassName('yuimenuitem','li','Yui');
		 for (i=0;i<elements.length;i++) {
			YAHOO.util.Event.on(elements[i],'mouseover',function () {
				YAHOO.util.Dom.setStyle(this,'background-color',background_color);
			});
			YAHOO.util.Event.on(elements[i],'mouseout',function () {
				YAHOO.util.Dom.setStyle(this,'background-color',"#EEEEED");
			});
		 }
	 }

	 // ajaxisize links and forms that come back
	 YAHOO.util.Dom.getElementsBy(addLinkListeners,'a');
	 YAHOO.util.Dom.getElementsBy(addFormListeners,'form');

};

var responseFailure = function(o){
	//alert("ERROR: "+o.responseText);
};

var handleAjaxResponse =
{
  success:responseSuccess,
  failure:responseFailure
};
