﻿mtx = true;

function cat_sucess(resp, opts) {
	var novo = Ext.DomHelper.append(
		document.body,
		{
			tag: 'div',
			id: 'nsubcats',
			cls: 'g b i',
			style: 'font-size: 14.85px; position: absolute; top:0; left:0; z-index: -100;'
		}, true
	).sequenceFx().setOpacity(0);

	/* Reescreve _conteúdo_ com resposta da transferência AJAX */
	Ext.DomHelper.overwrite(novo, {tag: 'div', html: resp.responseText}, true);

	if ('undefined' != typeof(Cufon))
		Cufon.replace('#nsubcats');

	Ext.get('subcats').sequenceFx().fadeOut(
		{duration: 0.2}
	).scale(
		novo.getWidth(),
		novo.getHeight(),
		{
			duration: 0.2,
			callback: function(sc){
				var novo = Ext.get('nsubcats');
				sc.replaceWith(
					novo.first().set({id: 'subcats', cls:'g b i'})
				).fadeIn(
					{duration: 0.2}
				);
				novo.remove();
				mtx = true;
			}
		}
	);
}

function cat_fail(resp, opts) {
	if ('undefined' != typeof(console))
		console.log('Transferencia AJAX falhou com codigo de status ' + resp.status);
	mtx = true;
}

clc = new Ext.util.DelayedTask(
	function (url) {
		if (mtx) {
			mtx = false;
			var sub = url.split('categorias/')[1];
			if (typeof(mt) != 'undefined' && mt)
				var params = {mt : 1, sub : sub};
			else
				var params = {sub : sub};

			while (Ext.get('nsubcats') != null)
				Ext.get('nsubcats').remove();

			Ext.Ajax.autoAbort = true;
			Ext.Ajax.request(
				{
					method: 'GET',
					timeout: 60000,
					disableCaching: true,
					url: "ajax/dados/lista_categorias",
					params: params,
					success: cat_sucess,
					failure: cat_fail
				}
			);
		}
		else {
			if ('undefined' != typeof(console))
				console.log('Mutex ocupado, esperando fim da requisicao AJAX');
		}
	}
);


Ext.onReady(
	function(){
		Ext.select('#cats a').each(
			function(cada){
				/* Precisa de DOM para ter uma referência */
				i = Ext.get(cada.dom);
				i.on('click',
					function(e, t, a){
						this.radioClass("vm");
						if ('undefined' != typeof(Cufon)) Cufon.replace('#cats a');
						clc.delay(300, false, false, [this.getAttribute('href')]);
					}, i, {stopEvent: true}
				);
			}
		);
	}
);
