/*
ver. 0.1

Klasa do wspomagania Ajaxa


Wymagania - prototype, behaviour


*/

function AjaxHandler(){

	//Nazwa akcje
	var action_name = '';

	//Nazwa formularza
	var form_name = '';

	this.setAction = function(name){
		action_name = name;
		form_name = name;
	}

	this.setForm = function(name){
		form_name = name;
	}


	this.action = function(url,pars,type){
		switch (type){
			case 'get':{
				var req = new Ajax.Request( url, { method: 'get', parameters: pars, onComplete: this.parseResponse });break;				}
			case 'post':{
				var postArgs = getFormElements(form_name);
				var req = new Ajax.Request( url, { method: 'post', parameters: pars, postBody: postArgs, onComplete: this.parseResponse });break;				}
		}


	}


	this.parseResponse = function( res ){

		var err = '';
		var msg = '';
		var id = '0';
		var type = 'get_get';

		if($('ah_response')){
			$('ah_response').innerHTML = res.responseText;
		}
		if($('ah_edit_id')){
		 	id = $('ah_edit_id').innerHTML;
		}
		if($('ah_type')){
			type = $('ah_type').innerHTML;
		}
		if($('ah_msg')){
			msg = $('ah_msg').innerHTML;
		}
		if($('ah_err')){
		 	err = $('ah_err').innerHTML;
		}
		if($('ah_response')){
			$('ah_response').innerHTML = '';
		}
		if($('ah_insertion')){
			$('ah_insertion').innerHTML = '';
		}
		
		switch(type){
			case 'update': {
				if(err != ''){
					$('ah_err').innerHTML = err;
					Element.show('ah_err');
				}
				if(msg != ''){
					$('ah_msg').innerHTML = msg;
					Element.show('ah_msg');
				}
				$(id).innerHTML = res.responseText;
				Behaviour.apply();
				break;
			}
			case 'insert': {
				if(err != ''){
					$('ah_err').innerHTML = err;
					Element.show('ah_err');
				}
				if(msg != ''){
					$('ah_msg').innerHTML = msg;
					Element.show('ah_msg');
				}
				var newElem = document.createElement('div');
				newElem.innerHTML  = res.responseText;
				$('ah_lista').appendChild(newElem);
				Behaviour.apply();
				break;
			}
			case 'form': {
				new Insertion.After(id, res.responseText );
				Event.observe('ah_update', 'click', function(event){  ajaxHandler.action('index.php?action='+action_name+'&show=save&ajax=1&id='+id,'','post');});

				break;
			}
			case 'delete': {
				if(err != ''){
					$('ah_err').innerHTML = err;
					Element.show('ah_err');
				}
				if(msg != ''){
					$('ah_msg').innerHTML = msg;
					Element.show('ah_msg');
				}
				$('ah_lista').removeChild($(id));
				//$(id).innerHTML = '';
				break;
			}

			case 'replace_html': {
				if(err != ''){
					$('ah_err').innerHTML = err;
					Element.show('ah_err');
				}
				if(msg != ''){
					$('ah_msg').innerHTML = msg;
					Element.show('ah_msg');
				}
				$('ah_replacer').innerHTML = res.responseText;
				Element.show('ah_replacer');
				break;
			}
			case 'replace': {
				
				if($('ah_replacer')){
					
					$('ah_replacer').innerHTML = msg;
							
					//dla wyszukiwarki manipulacja buttonem 'pokaz liste'
								
					if($('ah_get_limit')){
						
						if(msg == 0) $('ah_get_limit').disabled = true;
							else $('ah_get_limit').disabled = false;
					}
					
				}
				break;
			}
			case 'get_get': {
				$('ah_replacer').innerHTML = msg;
				break;
			}
			
			
			case 'get_check':{

				if (parseInt(msg) == 0){

					alert(save_comment);

				}else{

					alert(check_comment);
				}
				
				break;

			}			

			case 'get_count':{

				if (parseInt(msg) == 0){

					alert(no_save_list);

				}else{

					window.location.href = "?action=search&show=show_save";
				}
				
				break;

			}
			
			case 'get_limit':{
				

				if (parseInt(msg) > 99){

					alert(limit);
					window.location.href = "?action=search&show=show_list";

				}else{

					window.location.href = "?action=search&show=show_list";
				}
				
				break;

			}			

			case 'get_post': {
				$('ah_replacer').innerHTML = msg;
				break;
			}


		}
	}

	this.showError = function (){
		//todo
	}

	this.init = function(){
		this.clear();
		var myGlobalHandlers = {
				onCreate: function(){
					Element.show('systemWorking');
				},

				onComplete: function() {
					if(Ajax.activeRequestCount == 0){
						Element.hide('systemWorking');
					}
				}
			};

		Ajax.Responders.register(myGlobalHandlers);

	}

	this.clear = function(){
		if($('ah_msg')){
			Element.hide('ah_msg');
		}
		if($('ah_err')){
			Element.hide('ah_err');
		}
		if($('ah_response')){
			Element.hide('ah_response');
		}
	}
}


function AhLista(name){
	//todo
}


function getFormElements(name){
		var res = '';
		var form_ = $(name);
		//var elements = document.getElementsByTagName('input');
		var inputs = form_.getElementsByTagName('input');
		var selects = form_.getElementsByTagName('select');

		var nodes = $A(inputs);

		nodes.each(function(node){
			if(node.type == 'checkbox'){

				if(node.checked == true) res = res + node.name+'='+node.value+'&';
				}else{
					if(node.value != ''){
						res = res + node.name+'='+node.value+'&';
					}
				}
		});

		nodes = $A(selects);
		nodes.each(function(node){
			if(node.value != ''){
				res = res + node.name+'='+node.value+'&';
			}
		});
		return res;
	}




/****************************************/



var ajaxHandler = new AjaxHandler();
ajaxHandler.init();
ajaxHandler.setAction(action);

if($('ah_insert')){
	Event.observe('ah_insert', 'click', function(event){  ajaxHandler.action('','action='+action+'&show=add&ajax=1','get');});
}

if($('ah_get_get')){

	if(show == ''){
		show = 'get';
	}
	Event.observe('ah_get_get', 'click', function(event){  ajaxHandler.action('','action='+action+'&show='+show+'&ajax=2','get');});

}

if($('ah_get_post')){
	Event.observe('ah_get_post', 'click', function(event){  ajaxHandler.action('index.php?action='+action+'&show=get&ajax=2','','post');});
}

if($('ah_button_login')){
	Event.observe('ah_button_login', 'click', function(event){
		var postArgs = getFormElements('logForm');
		var req = new Ajax.Request( url, { method: 'post', parameters: '', postBody: postArgs, onComplete: validateLogin });

	});

		$('logForm').onSubmit = function(event){
		var postArgs = getFormElements('logForm');
		var req = new Ajax.Request( url, { method: 'post', parameters: '', postBody: postArgs, onComplete: validateLogin });

	}

}


if($('ah_get_count')){


	Event.observe('ah_get_count', 'click', function(event){  ajaxHandler.action('','action='+action+'&show=get_count&ajax=1','get');});


}


if($('ah_get_limit')){
	
	Event.observe('ah_get_limit', 'click', function(event){  ajaxHandler.action('','action='+action+'&show=get_limit&ajax=1','get');});

}


if($('ah_get_check')){

	Event.observe('ah_get_check', 'click', function(event){  ajaxHandler.action('','action='+action+'&show=save&ajax=1','get');});

}





function validateLogin(res){
		if($('ah_response')){
				$('ah_response').innerHTML = res.responseText;
		}
		if($('ah_msg')){
			msg = $('ah_msg').innerHTML;
		}
		if(msg == '1'){
			document.location=document.location.search;
		}else{
			Element.hide('systemWorking');
			$('logForm').reset();
			alert(msg);
			$('contener_login').className = 'login_div display_none';
			$('menu_top_login').innerHTML = msg;

		}
	}







