// using history manager in order for back/forward buttons to work
var bookmarkedSection = YAHOO.util.History.getBookmarkedState( "view" );
var querySection = YAHOO.util.History.getQueryStringParameter( "section" );
var initSection = bookmarkedSection || querySection || "fuseaction=catalog.mainCategory&productGroup_ID=" + mainProductGroup_ID + '&ajax=1&x=' + Math.random();

// register app module
YAHOO.util.History.register( "view", initSection, function( section ) {
	// used when History.navigate is called
	loadSection( section );
} );

// initialize history object
try {
	YAHOO.util.History.initialize();
} catch ( e ) {
	registerAjaxEvents();
}

// run once history object is loaded
YAHOO.util.History.onLoadEvent.subscribe( function() {

	// initial page load
	var currentSection = YAHOO.util.History.getCurrentState( "view" );
	if ( location.hash.substr(1).length > 0 ) {
		if ( currentSection != querySection ) {
			loadSection( currentSection );
		}
	}

	registerAjaxEvents();
} );

/* Ajax functions */
YAHOO.util.Event.onDOMReady(registerAjaxEvents);

function registerAjaxEvents() {
	YAHOO.util.Dom.getElementsBy(addDropDownListeners,'select');
	YAHOO.util.Dom.getElementsBy(addLinkListeners,'a');
}

function addDropDownListeners(o) {
	if (o.name=='categoryDropDown') {
		o.onchange = function () {

			if (o.value!=0) {
				section = 'fuseaction=catalog.mainCategory&recordsPerPage=' + o.getAttribute('recordsPerPage') + '&page=1&ProductGroup_ID=' + o.value + '&sortBy=' + o.getAttribute('sortBy') + '&ajax=1&cfid=' + o.getAttribute('cfid') + '&cftoken=' + o.getAttribute('cftoken') + '&x=' + Math.random();
				try {
					YAHOO.util.History.navigate( "view", section );
				} catch ( err ) {
					loadSection( section );
				}				
			}
		}
	}
}

function addLinkListeners(o) {
	if (o.name=='catalogPaging') {
		o.onclick = function () {

			section = 'fuseaction=catalog.mainCategory&recordsPerPage=' + o.getAttribute('recordsPerPage') + '&page=' + o.getAttribute('page') + '&ProductGroup_ID=' + o.getAttribute('ProductGroup_ID') + '&sortBy=' + o.getAttribute('sortBy') + '&ajax=1&cfid=' + o.getAttribute('cfid') + '&cftoken=' + o.getAttribute('cftoken') + '&x=' + Math.random();
			try {
				YAHOO.util.History.navigate( "view", section );
			} catch ( err ) {
				loadSection( section );
			}			
		}
	}
	else if (o.name=='breadCrumb') {
		o.href="javascript:void(0)";
		o.onclick = function () {

			section = 'fuseaction=catalog.mainCategory&recordsPerPage=' + o.getAttribute('recordsPerPage') + '&page=' + o.getAttribute('page') + '&ProductGroup_ID=' + o.getAttribute('ProductGroup_ID') + '&sortBy=' + o.getAttribute('sortBy') + '&ajax=1&cfid=' + o.getAttribute('cfid') + '&cftoken=' + o.getAttribute('cftoken') + '&x=' + Math.random();
			try {
				YAHOO.util.History.navigate( "view", section );
			} catch ( err ) {
				loadSection( section );
			}			
		}
	}
}

function onFilterChange (recordsPerPage,ProductGroup_ID,page,sortBy,cfid,cftoken) {
	section = 'fuseaction=catalog.mainCategory&recordsPerPage=' + recordsPerPage + '&page=1&ProductGroup_ID=' + ProductGroup_ID + '&sortBy=' + sortBy + '&ajax=1&cfid=' + cfid + '&cftoken=' + cftoken + '&x=' + Math.random();
	try {
		YAHOO.util.History.navigate( "view", section );
	} catch ( err ) {
		loadSection( section );
	}				
}

function ajaxRequest(recordsPerPage,page,ProductGroup_ID,sortBy) {

	data = "fuseaction=catalog.mainCategory&recordsPerPage="+recordsPerPage+"&ProductGroup_ID="+ProductGroup_ID+"&page="+page+"&sortBy="+sortBy+"&ajax=1&cfid=' + o.getAttribute('cfid') + '&cftoken=' + o.getAttribute('cftoken') + '&x="+Math.random();

	// submit form and handle response
	var transaction = YAHOO.util.Connect.asyncRequest('GET', "index.cfm?"+data, handleAjaxResponse);

	return false;
}

function loadSection(section) {
	// submit form and handle response
	var transaction = YAHOO.util.Connect.asyncRequest('GET', "index.cfm?"+section, handleAjaxResponse);
}

var responseSuccess = function(o){

	 //replace content
	 var ajaxContainer = document.getElementById('replaceableContainer');
	 //alert(o.responseText);
	 ajaxContainer.innerHTML=o.responseText;

	 registerAjaxEvents();

};

var responseFailure = function(o){
	//alert("ERROR: "+o.responseText);
};

var handleAjaxResponse =
{
  success:responseSuccess,
  failure:responseFailure
};

function Trim(strToTrim) {
	return(strToTrim.replace(/^\s+|\s+$/g, ''));
}
function checkQty(abc) {
	if (abc.qty.length) {
		for(i=0;i<abc.qty.length;i++) {
			if (abc.qty[i].value.length==0 || Trim(abc.qty[i].value)=="") abc.qty[i].value=0;
			if (abc.qty[i].value.length==0 || isNaN(abc.qty[i].value) || abc.qty[i].value<0) {
				alert("Please enter a quantity greater than zero.");
				abc.qty[i].focus();
				return false;
			}
		}
	} else {
		if (abc.qty.value.length<0) abc.qty.value=0;
		if (abc.qty.value.length==0 || isNaN(abc.qty.value) || abc.qty.value<0) {
			alert("Please enter a quantity greater than zero.");
			abc.qty.focus();
			return false;
		}
	}
	return true;
}
