if (typeof(catalogs) == "undefined") catalogs = [];

var CatalogDropDown = Class.create({ });
CatalogDropDown.select = function(id, item) {	
	$('catalogDropDownValue'+id).update($('catalogDropDownSelect'+id+'_'+item).innerHTML);
	$('catalogDropDownInput'+id).value = item;
	$('catalogDropDownSelect'+id).hide();
};

var CatalogPaginator = Class.create({ });
CatalogPaginator.goPage = function(paginator, page) {
	// Get paginator parameters
	var id             = paginator.elements['catalog'].value;
	var current        = paginator.elements['pagination'].value;
	var container      = catalogs[id]['container'];
	var link           = catalogs[id]['link'];
	var effect         = catalogs[id]['effect'];
	var maxPages       = catalogs[id]['maxPages'];
	var countPages     = catalogs[id]['pages'];
	var page           = Math.min(Math.max(page, 1), countPages);
	var pageFirst      = Math.max(1, parseInt(page)-Math.ceil(parseInt(maxPages)/2)+1);
    pageFirst          = Math.min(pageFirst, Math.max(1,parseInt(countPages)-parseInt(maxPages)+1));
    var lastPage       = Math.min(countPages, parseInt(pageFirst)+parseInt(maxPages)-1);
    var direction      = 'LEFT';
    
    // Exit if current page = selected page
    if (page == current || catalogs[id]['lock']) { return false; }
    
    // Set effect direction
    if ((current == countPages && page == 1) || (page > current && !(current == 1 && page == countPages)) ) {
    	direction = 'RIGHT';
    }
    
    // Manage Lock
	if (typeof(catalogs[id]['autoscroll']) != "undefined") {
		window.clearTimeout(catalogs[id]['autoscroll']);
	}
    catalogs[id]['lock'] = true;
    
	// For each paginator of same catalog
    var paginators = document.getElementsByName('paginationForm'+id);
	for(i=0; i<paginators.length; i++) {
		// set selected pagination value for all paginators of this catalog
		paginators[i].elements['pagination'].value = page;
		
		// set catalog paginators class of buttons
		// delete current selected and set click button (for all paginators of this catalog)
		var oButs = paginators[i].getElementsByTagName('input');
		var aButs = []; 
		var iButs = 0;
		for(iInput=0; iInput<oButs.length; iInput++) {
			if (oButs[iInput].type == 'submit') {
				aButs[iButs] = oButs[iInput];
				iButs++;
			}
		}
		for(j=pageFirst; j<=lastPage; j++) {
			if (j==page) {
				aButs[j-pageFirst+2].className = 'paginator_selected';
			} else {
				aButs[j-pageFirst+2].className = '';
			}
			aButs[j-pageFirst+2].value = j;
		}
	}
	
	// submit paginator form function of effect
	if (effect == 'none') {
		new Ajax.Updater(
			$(container), link, { method: 'post', evalScripts: true, parameters: Form.serialize(paginator) });
	} else if (effect == 'Appear') {
		$(container).setStyle({ opacity: 0 });
		new Ajax.Updater(
				$(container), link, 
				{ method: 'post', 
					evalScripts: true, 
					parameters: Form.serialize(paginator), 
					onComplete:function(){ new Effect.Appear(container, {from: 0, to: 1, duration: 0.8});}
				});
	} else if (effect == 'Slide') {
		new ScrollContent(
			container,
			link+'?'+Form.serialize(paginator), 
			direction);
		
	}

    catalogs[id]['lock'] = false;
};
CatalogPaginator.goPrevious = function(paginator) {
	var id         = paginator.elements['catalog'].value;
	var current    = paginator.elements['pagination'].value;
    var countPages = catalogs[id]['pages'];
    
    var iPage = parseInt(current)-1;
    if (iPage < 1) { iPage = countPages; }
    CatalogPaginator.goPage(paginator, iPage);
};
CatalogPaginator.goNext     = function(paginator) {
	var id         = paginator.elements['catalog'].value;
	var current    = paginator.elements['pagination'].value;
    var countPages = catalogs[id]['pages'];

    var iPage = parseInt(current)+1;
    if (iPage > countPages) { iPage = 1; }
	CatalogPaginator.goPage(paginator, iPage);
};
CatalogPaginator.autoscroll = function(id) {
	// Get paginator
	var paginators = document.getElementsByName('paginationForm'+id);
	if (paginators.length > 0) {
		CatalogPaginator.goNext(paginators[0]);
		catalogs[id]['autoscroll'] = window.setTimeout("CatalogPaginator.autoscroll('"+id+"')", 5500);
	}
}

