/**
 * Controller JS Writen by Serymoon http://www.serymoon.com
 *  Use Mootols for http://www.mootools.net
 */

/*érkező data tömb lehetséges felépítése
 * 
 * top_data = array(where, type, position, inject, data)
 * inner data = array(tag, params, data, inject)
 *
 */
 
// érkező adatok renderelése
function paraseData(cE, D, W) {
D.each(function(value, key) {
 	var nE = new Element(value.tag, value.params);
 	nE.inject(cE, W);
 	if (value.data) {
 		paraseData(nE, value.data, value.inject)
 	}
 	else {
 		refressAnchors();
 	}
});
}

// érkező adatok kirakása az oldalra
function requestRender(data) {
	if (data) {
        
		data.each(function (value, key) {
           
 			var cTag = $(value.where);
 			value.position.each(function(value, key){
 				var ccTag = cTag[value]();
                // eldöntendő mi történjen ha hibás a renderelés!!!
                cTag = (ccTag !== null)? ccTag : cTag;

 			})
 			if (value.type == 'html') {
 				cTag.set('html', value.data);
 				refressAnchors();
 			}
 			else {
 				paraseData(cTag, value.data, value.inject);
			}

            
		});
	}
}


// az új a tagok begyüjtése
function refressAnchors() {
getAnchors('json', chooseSRC);
}

// belső hivatkozások kezelése tartalom frissítése
function chooseSRC(a) {
	var jsonRequest = new Request.JSON({
		method: 'post',
		url: a.getProperty('href'),
		onSuccess: function(txt, response){
            //requestRender(response);
		},
		onComplete: function(request){
           
			requestRender(request);
		},
		onFailure: function(error){
			alert('Plese contact site Administrator! Error No.:' + error);
		}
		}).post({'json': 'request'});
};

// anchorok begyüjtése ellenőrzése
function getAnchors(a, b) {
	// get all inner anchor
	var anchor = $$('a.' + a);
	var anchor_length = anchor.length;
	
	for (var i = 0; i<anchor_length; i++) {
		anchor[i].removeEvents('click');
		anchor[i].addEvent('click', function(event){
				event.stop();
			  b(this, b);  
		});
	}
}

// oldal betöltödésekor meghívandó funkciók
window.addEvent('domready', function () {
	refressAnchors();
    getVirtuals();
});