/**
 * @author Manex Agirre
 * 
 * Kudeaketa sistemaren funtzio orokorrak.
 * 
 * OHARRA: EZ ALDATU!!! Hemengo funtzioei obekuntzak aplikatu ezkero, CMS orokorrean aplikatu eta gero migratu
 * 
 */

/**
 * 
 * Edukiak konboan kargatzeko funtzioa.
 * 
 * @param konbo_izena: Bete nahi den konboaren identifikatzailea
 * @param testua: Informazioaren testu segida.
 * 				  id1,testua1;id2,testua2;......;idN,testuaN
 * @param zat1: Elementuak bereizteko karakterea. Defektuz ';'.
 * @param zat2: Elementu bakoitzeko id eta testua bereizteko karakterea. Defektuz ','.
 * @return Edukiak adierazitako konboan kargatzen ditu.
 */
function konboa_bete(konbo_izena, testua, zat1, zat2)
{
	if (typeof zat1 == "undefined" || zat1 == "") zat1=";";
	if (typeof zat2 == "undefined" || zat2 == "") zat2=",";
	konboa = document.getElementById(konbo_izena);
	konboa.options.length=0;
	var datuak = testua.split(zat1);
	for (var i=0;i<datuak.length;i++)
	{
		if (datuak[i] != "")
		{
			var datua = datuak[i].split(zat2);
			var aukera = document.createElement('option');
			aukera.text = datua[1];
			aukera.value = datua[0];
			try {
			  konboa.add(aukera,null); // standards compliant; doesn't work in IE
			}
			catch(ex) {
			  konboa.add(aukera, konboa.length); // IE only
			}
		}
	}
}

/**
 * Formulario leihoa (main) ixteko funtzioa
 * @return null
 */
function main_itxi(){
	// Uneko formularioa ezabatu
	$("#main").remove();
	// Menua egokitu
	jQuery.get("menu.php", function(data){
		$("#menu").html(data);
	});
	// Edukian sarrera erakutsi
	jQuery.get("sarrera.php", function(data){
		$("#edukia").html(data);
	});
}

/**
 * 
 * Ezabatzeko eskaria egiteko formularioa
 * 
 * @return galderaren erantzuna. TRUE=Bai, FALSE=Ez
 */
function ezabatu()
{
	return confirm(tezabaketa_konfirmatu);
}

/**
 * Upload sistema bitartez igotako fitxategi bat ezabatzeko oraindik formularioan gaudela
 * @param id Uneko upload elementuaren identifikatzailea
 * @param divId Igotako fitxategiari dagokion div-aren identifikatzailea
 * @param fitx Igotako fitxategiaren izena
 * @return null
 */
function fitx_ezabatu(id,divId,fitx){
	var mota = $(id+"_mota").val();
	var emaitza = $(id+"_fitx");
	jQuery.get("upload_ezabatu.php?mota="+mota+"&fitx="+fitx,
		function(data){
			if (data){
				emaitza.val('');
				$("#"+divId).fadeOut(1500);
				setTimeout('$("#'+divId+'").remove()',1000);
				setTimeout('fitxategi_zerrenda_egokitu("'+id+'")',1100);
			}
		}
	);
}

function fitxategi_zerrenda_egokitu(id){
	var emaitza = $(id+"_fitx");
	$(id+'_response img').each(function(){
		if (emaitza.val() != ""){
			emaitza.val(emaitza.val()+","+$(this)[0].name);
		}else{
			emaitza.val($(this)[0].name);
		}
	})
}

/**
 * .egutegia klasea duten elementuak jQuery DatePicker bihurtu
 * @return null
 */
function egutegiak_hasieratu(){
	$('.egutegia').each(function() {
		$(this).datepicker({
			changeMonth: true,
			changeYear: true
		});
    });
	$.datepicker.setDefaults($.datepicker.regional[hizkuntza]);
}

/**
 * Fitxategiak igotzeko sistema hasieratzeko funtzioa
 * @return null
 */
function upload_hasieratu(){
	// Fitxategi bakarra igotzeko
	$('.upload').each(function() {
		var id="#"+$(this)[0].id;
		var erantzun_kutxa = $(id+"_response");
		var emaitza = $(id+"_fitx");
		$(this).uploadify({
			'uploader': 'swf/uploadify.swf',
			'script': 'upload.php',
			'checkScript': 'check.php',
			'fileDataName': 'fitx',
			'scriptData': {
				mota: $(id+"_mota").val(),
			},
			'folder': $(id+"_mota").val(), // check.php script-erako bakarrik balio du
			'cancelImg': 'irudiak/cancel.png',
			'buttonText': tarakatu,
			'auto': true,
			'fileDesc': $(id+"_ext").val(),
			'fileExt': $(id+"_ext").val(),
			'sizeLimit': $(id+"_size_limit").val(),
			onError: function(event,queueId,fileObj,errorObj){
				console.log(errorObj.info);
			},
			onComplete: function(event,queueId,fileObj,response,data){
				if (isNaN(response)){
					// Lehendik besteren bat igota zeukan? ala balitz, ezabatu
					$(id+'_response .upload_response_div img').click();
					erantzuna = "<div id='"+queueId+"' class='upload_response_div'>";
					erantzuna = erantzuna+"<b>Fitxategia:</b> "+fileObj.name;
					erantzuna = erantzuna+"<br><b>Pisua:</b> "+Math.round((fileObj.size/1024)/1024)+" MB";
					erantzuna = erantzuna+"<br><b>Abiadura:</b> "+Math.round(data.speed)+" (KB/s)";
					erantzuna = erantzuna+"<img class='ui-state-default ui-corner-all ui-icon ui-icon-circle-close' name='"+response+"' onClick='fitx_ezabatu(\""+id+"\",\""+queueId+"\",\""+response+"\")'>";
					erantzuna = erantzuna+"</div>";
					erantzun_kutxa.html(erantzuna);
					emaitza.val(response);
				}
			},
			onCheck: function(event,checkScript,fileQueue,folder,single){
				//console.log("Topatu du!");
			}
		});
    });
	// Fitxategi bat baino gehiago igotzeko
	$('.upload_multi').each(function() {
		var id="#"+$(this)[0].id;
		var erantzun_kutxa = $(id+"_response");
		var emaitza = $(id+"_fitx");
		$(this).uploadify({
			'uploader': 'swf/uploadify.swf',
			'script': 'upload.php',
			'checkScript': 'check.php',
			'fileDataName': 'fitx',
			'scriptData': {
				mota: $(id+"_mota").val(),
			},
			'folder': $(id+"_mota").val(), // check.php script-erako bakarrik balio du
			'cancelImg': 'irudiak/cancel.png',
			'buttonText': tarakatu,
			'multi': true,
			'auto': true,
			'fileDesc': $(id+"_ext").val(),
			'fileExt': $(id+"_ext").val(),
			'sizeLimit': $(id+"_size_limit").val(),
			onError: function(event,queueId,fileObj){
				console.log(fileObj.info);
			},
			onComplete: function(event,queueId,fileObj,response,data){
				if (isNaN(response)){
					erantzuna = "<div id='"+queueId+"' class='upload_response_div'>";
					erantzuna = erantzuna+"<b>Fitxategia:</b> "+fileObj.name;
					erantzuna = erantzuna+"<br><b>Pisua:</b> "+Math.round((fileObj.size/1024)/1024)+" MB";
					erantzuna = erantzuna+"<br><b>Abiadura:</b> "+Math.round(data.speed)+" (KB/s)";
					erantzuna = erantzuna+"<img class='ui-state-default ui-corner-all ui-icon ui-icon-circle-close' name='"+response+"' onClick='fitx_ezabatu(\""+id+"\",\""+queueId+"\",\""+response+"\")'>";
					erantzuna = erantzuna+"</div>";
					erantzun_kutxa.html(erantzun_kutxa.html()+erantzuna);
					if (emaitza.val() != ""){
						emaitza.val(emaitza.val()+","+response);
					}else{
						emaitza.val(response);
					}
				}
			},
			onCheck: function(event,checkScript,fileQueue,folder,single){
				//console.log("Topatu du!");
			}
		});
    });
}

/**
 * Formularioetako botoiak sortzeko funtzioa
 */
function botoiak_hasieratu(){
	$('.botoia').each(function() {
		$(this)
			.button()
    });
}

/**
 * Formularioetako colorPicker -ak sortzeko funtzioa
 */
function colorpicker_hasieratu(){
	$('.kolorea').each(function() {
		var id = $(this)[0].id;
		$('#'+id+'_picker').farbtastic('#'+id);
    });
}

/**
 * Emaitzen taula txukuntzeko funtzioa
 */
function emaitza_taula_hasieratu(){
	$('#formularioa_emaitzak table').each(function() {
		$(this).addClass('ui-widget ui-widget-content');
    });
	$('#formularioa_emaitzak table thead tr').addClass('ui-widget-header');
}

/**
 * Modal bilaketak egiteko leihoa hasieratu
 * @return null
 */
function bilaketa_leihoa(){
	$("#bilaketa_form").dialog({
		autoOpen: false,
		height: 300,
		width: 650,
		modal: true,
		buttons: {
			'Bilatu': function() {
				// Paginazioa hasieratu
				$('#paginazioa_orria').val('1');
				// Bilaketa burutu
				bilaketa();
				$(this).dialog('close');
			},
			'Utzi': function() {
				$(this).dialog('close');
			}
		}
	});
	if ($("#bilaketa_form").length > 0)
		bilaketa_hasiera();
	// Enter zapaltzean bilaketa egin dezan aldaketa
	$('#formularioa_bilatu input').live('keypress', function (e) {
		if ( e.which == 13 ){
			$('#paginazioa_orria').val('1');
			bilaketa();
			$('#bilaketa_form').dialog('close');
		}
	});
	$('#formularioa_bilatu').bind("submit", function() { 
		return false;
	});
}

/**
 * Gakoak lehendik ez daudela kontrolatzeko funtzioa
 * @return null
 */
function gako_kontrola(){
	/* URL garbiaren konprobazioa */
	$('.gakoa').change(function (){
		var bal=$(this);
		var string = {};
		jQuery.post("gakoa.php",{"taula":$('#taula').val(),"hizk":$(this).attr("name").split("_")[1],"string":$(this).val(),"id":$("#id").val()},function(data){
			if (!isNaN(data)){
				// Errorea. Gako hori lehendik badago
				bal.css({color:'white','background-color':'rgb(230, 0, 0)'});
			}else{
				bal.val(data);
				bal.css({color:'white','background-color':'rgb(0, 150, 0)'});
			}
		});
	});
}

/**
 * Formularioko informazioa egokitzeko funtzioa
 * @return null
 */
function formularioa_egokitu(){
	// Formularioetako upload botoiak egokitu
	upload_hasieratu();
	// Formularioetako egutegiak hasieratu (jQuery DatePicker)
	egutegiak_hasieratu();
	// Botoiak hasieratu
	botoiak_hasieratu();
	// ColorPicker aukerak hasieratu
	colorpicker_hasieratu();
	// Emaitza taula hasieratu
	emaitza_taula_hasieratu();
	// Bilaketa leihoa prestatu
	bilaketa_leihoa();
	// Gakoaen kontrola hasieratu
	gako_kontrola();
}

/**	
 * query kriterioarekin bat datozen elementuak bueltatzen ditu.
 * @param string table: Zein taulatik atera behar diren datuak
 * @param string query: Zein den elementuak filtratzeko kriterioa
 * 
 */

function filter_items(table,query,list){
	if (typeof lista == "undefined") lista="sortable1";
	jQuery.getJSON("bilatu.php",{"taula":table,"query":query},
			   function(data){
		   		if (data !=''){	
			   		jQuery('#sortable1 > li').remove();
			   		for (i=0;i< data.length;i++){
			   			jQuery('#sortable1').append('<li id="item_'+data[i].id+'">'+data[i].name+'</li>');
				 	}
		   		}
			   	else{		
			   		var options = {};
			   		jQuery("#message_panel").empty();
			   		jQuery("#message_panel:hidden").removeAttr('style').show();		   							   
			   		jQuery("#message_panel").append('<span style="color:red">Emaitzarik ez!</span>');
					jQuery("#message_panel").fadeOut(3500);
				}  				     			   		
			   });
}


/**
 * Lista batean elementuak kargatzen ditu
 * @param string table : Elementuak zein taulatik kargatu behar diren.
 * @param int filter : Zein den elementuak filtratzeko irizpidea
 * @draggablea bool : Zerrenda draggablea den edo ez adierazteko
 * @param string zerrenda_id: Elikatu behar den zerrendaren ida. 2005/05/24 Ander.
 * @param string item_class: Zerrendako elementuen klasea. 2005/05/24 Ander.
 * @param string item_klik: Listako elementua klikatuta exekutatuko den funtzioa 
 */

function load_list(table,filter,draggable,list_id,item_class,item_klik){
	var draggable =(draggable == undefined)?true:false;
	(list_id == undefined)?list_id ='#sortable2':list_id='#'+list_id;
	(item_class == undefined)?item_class = 'ui-state-highlight':'';
		
	jQuery.getJSON("bilatu.php",{"taula":table,"query":filter},
			   function(data){
				if (data != null && data.length > 0){
		   			jQuery(list_id+' > li').each(function (){$(this).remove()});
			   		for (i=0;i< data.length;i++){
			   			temp = data[i].id;
			   			if(draggable){			   				
			   				jQuery(list_id).append('<li id="item_'+data[i].id+'" class="ui-state-highlight">'+data[i].name+'</li>');
			   			}
			   			else{			   				
			   				jQuery(list_id).append('<li id="item_'+data[i].id+'" onclick="'+item_klik+'('+temp+')">'+data[i].name+'</li>');
			   			}
				 	}
		   		}
			   	else{
			   		var options = {};
			   		jQuery(list_id+' > li').each(function (){$(this).remove()});
			   		if(draggable)
			   			jQuery(list_id).append("<li class='ui-state-highlight'>Arrastatu hona</li>");
			   		jQuery("#message_panel").empty();
			   		jQuery("#message_panel:hidden").removeAttr('style').show();		   							   
			   		jQuery("#message_panel").append('<span style="color:red">Emaitzarik ez!</span>');
					jQuery("#message_panel").fadeOut(3500);
				}	   		 
			   });
}

/**
 * Draggable lista bateko elementuak DBan gordetzen ditu
 * @param string table: Zein taulatan gorde behar den lista
 * @param genre: Zein generorekin lortu behar diren elementuak
 */

function save_list(table,genre,lista){
	if (typeof lista == "undefined") lista="sortable2";
	choosen = jQuery('#'+lista+' > li').map(function(){return this.id.split('_')[1]});
	param = {'taula':table,'datuak':{'genre':genre,'elementuak':choosen}};
	param2 = jQuery.param(param);
	jQuery.post("gorde.php",
			   param2,
			   function(data){
		   		if (data == 1){
		   			var options = {};
			   		jQuery("#message_panel").empty();
			   		jQuery("#message_panel").append('<span style="color:green">Aldaketak ondo gorde dira!</span>');			   				   							   			   	
			   		jQuery("#message_panel").removeAttr('style').show()
			   		jQuery("#message_panel").fadeOut(3500);
		   		}
			   	else{					   		
				}  				     			   		 
			   });
}

/**
 * Gorde Ajax funtzioa exekutatu ondoren exekutatu beharreko kodea
 * @param data Ajax funtzioaren erantzuna
 * @return undefined
 */
function gorde_response(data){
	// Erantzuna testua ala zenbakia da?
	if (isNaN(data)){
		jQuery("#message_panel").empty();
		jQuery("#message_panel:hidden").removeAttr('style').show();
		jQuery("#message_panel").append('<span style="color:red">'+data+'</span>');
	}else{
		if(data > 1){
			var taula = $('#taula').val();
			var name = $('#name').val();
			taula = taula.replace(/k$/,'');
			if ($('.ui-tabs-panel').length > 0 ){
				//2010/05/28 Ander: tab-ak badira, aukertu aktibo dagoena.
				if ($('.ui-tabs-panel:not(.ui-tabs-hide) ul.lista_zerrenda').length >0)
					$('.ui-tabs-panel:not(.ui-tabs-hide) ul.lista_zerrenda').append("<li onclick=\"edukiakAtera('"+taula+"',"+data+")\" id='"+data+"'>"+name+"</li>");
				else//2010/05/28 Ander: lehen elementua bada, lista sortu behar da.
					$('.ui-tabs-panel:not(.ui-tabs-hide)').append("<ul class='lista_zerrenda'><li onclick=\"edukiakAtera('"+taula+"',"+data+")\" id='"+data+"'>"+name+"</li></ul>");
			}
			else	
				jQuery(".lista_zerrenda").append("<li onclick=\"edukiakAtera('"+taula+"',"+data+")\" id='"+data+"'>"+name+"</li>");
			$('#info').hide();
		}
		if (data >0){
			var options = {};
	   		jQuery("#message_panel").empty();
	   		jQuery("#message_panel:hidden").removeAttr('style').show();
	   		jQuery("#message_panel").append('<span style="color:green">'+taldaketak_gorde_dira+'</span>');
	   		jQuery("#message_panel").fadeOut(5000);
	   		// Berria sortzeko formularioa denean, formularioa hasieratu
	   		$('#formularioa_sortu').each(function(){
	   			/*$(this)[0].reset();
	   			$('.upload_response_div').each(function(){
	   				$(this).remove();
	   			});*/
	   			setTimeout("location.reload()",4000);
	   		});
		}else{
			var options = {};
			jQuery("#message_panel").empty();
			jQuery("#message_panel:hidden").removeAttr('style').show();
			jQuery("#message_panel").append('<span style="color:red">'+taldaketak_gorde_dira_errorea+'</span>');
			jQuery("#message_panel").fadeOut(5000);
		}
	}
}

/**
 * Taula batetik edukiak ateratzeko funtzioa
 * @param taula edukiak atera behar diren taula
 * @param atera behar den elementuaren ida
 * @return none
 */
function edukiakAtera(taula,id)
{	
	jQuery.getJSON("bilatu.php?taula="+taula+"&query="+id,edukiakErakutsi);	
}

function edukiakErakutsi(data)
{
	jQuery('#main_form').show();
	jQuery('#info').show();
	jQuery('#tabs').hide();
	if(data.length > 0)
	{		
		if (jQuery('#main_path_bar .izenburua').length > 0){
			jQuery('#main_path_bar .izenburua').html(' > '+data[0]['title']);			
		}
		else{
			jQuery('#main_path_bar').append('<span class="izenburua"> &gt; '+data[0]['title']+'</span>');
		}
		jQuery.each(data[0],function(indizea,balioa){
			if ($('#'+indizea).length >0 && $('#'+indizea)[0].type == 'textarea'){
				for(edit in tinyMCE.editors){
					if (tinyMCE.editors[edit].editorId == indizea){
						var edukia = (balioa==null)?'':balioa;
						//Badaezpada editorea aktibatu (testu estatikoetan beharrezkoa da)						
						tinyMCE.editors[edit].controlManager.setActive(true)
						tinyMCE.editors[edit].setContent(edukia);
					}
				}
			}
			else
				if(indizea == 'image'){
					$('#'+indizea)[0].src='../images/'+balioa;
					$('#image_lbox')[0].href='../images/'+balioa;
					$('#'+indizea+'_value').val(balioa);
					$('#'+indizea+'_name').text(balioa);
				}
				$('#'+indizea).val(balioa);
		});     
	}			
	$('#info').show(); 
	/*Botoia aldatu*/	
	$('#botoia').val('Eguneratu');
	//2010/06/10 Ander: bind egin baino lehen unbind egin, bestela funtzioak pilatuz doaz
	$('#botoia').unbind('click');
	$('#botoia').bind('click',edukiakGorde);	
}

/**
 * Taula batetik edukiak atera eta gero checkboxdun zerrenda bat bezala ateratzeko funtzioa
 * @param taula edukiak atera behar diren taula
 * @param atera behar den elementuaren ida
 * @return none
 */
function edukiakZerrendanAtera(taula,filter)
{
	filter = (filter == undefined)? '':filter;
	jQuery.getJSON("bilatu.php?taula="+taula+"&query="+filter,edukiakZerrendanErakutsi);	
}

function edukiakZerrendanErakutsi(data)
{
	jQuery('#main_form').hide();
	jQuery('#main_list').show();
	jQuery('#main_list').empty();
	string = '<form id="formularioa_emaitzak" name="formularioa_emaitzak">';
	if(data.length > 0)
	{		
		for (i=0;i< data.length;i++){			   			
   			temp = data[i].id;
   			string = string+'<input type="checkbox" name="ezabatzekoak[]" value="'+data[i].id+'" id="ez_item_'+data[i].id+'"><label for="ez_item_'+data[i].id+'">'+data[i].name+'</label>';
   			string = string+'&nbsp;<span onclick=\'edukiakAtera(jQuery("#taula").val(),'+data[i].id+')\'>Eguneratu ikon</span>';
   			string = string+'<br/>';
		};
		string = string+'<span onclick=\'txekboxak_aukeratu(jQuery("#main_list :checkbox"))\'>Guztiak aukeratu</span>&nbsp;';
		string = string+'<span onclick=\'$("#ezabaketa-confirm").dialog("open")\'>Ezabatu</span>';
	}
	string = string+'</form>';
	jQuery('#main_list').append(string);
}

/**
 * Formularioko beharrezko datuak sartu direla ziurtatzeko funtzioa
 * @param form_id Formularioaren identifikatzailea
 * @return null
 */
function beharrezkoak(form_id){
	// TinyMCE textareen edukia egokitu
	$('textarea').each(function(){
		if (tinyMCE.getInstanceById($(this)[0].id) !== undefined)
			$(this).val(tinyMCE.getInstanceById($(this)[0].id).getContent());
	});
	if (!$('#'+form_id).validate().form()){
		jQuery("#message_panel").empty();
		jQuery("#message_panel:hidden").removeAttr('style').show();
		jQuery("#message_panel").append('<span style="color:red">'+tbeharrezko_eremuak+'</span>');
		jQuery("#message_panel").fadeOut(3500);
		return 1;
	}
	return 0;
}

/**
 * Formulario bateko datuak DBan gordetzeko funtzioa
 * @return
 */
function edukiakGorde(){
	// Beharrezko informazio guztia sartu dela ziurtatu
	if (beharrezkoak('formularioa_sortu')) return;
	var taula = $('#taula').val();
	var datuak={};
	var atalak={};
	var bal="";
	var pos=0;
	$("#formularioa_sortu input").each(function(){
		if ($(this)[0].name.indexOf('[]') != -1){
			if (bal != $(this)[0].name.substring(0,$(this)[0].name.indexOf('[]'))){
				if (bal != "")
					datuak[bal] = atalak;
				bal = $(this)[0].name.substring(0,$(this)[0].name.indexOf('[]'));
				pos = 0;
				atalak={};
			}
			if ($(this)[0].checked){
				atalak[pos]=$(this).val();
				pos=pos+1;
			}
		}else{
			if (bal != "")
				datuak[bal] = atalak;
			bal = "";
			/**
			 * 2010/11/16 Manex:
			 * checkbox -a den kasuan ':checked' den konprobatu behar!
			 */
			/**
			 * 2011/01/25 Manex:
			 * Radio motako balioak hartzeko ere beste baldintza bat gehitu behar
			 */
			if (($(this).attr('type') != "checkbox") && ($(this).attr('type') != "radio")){
                datuak[$(this)[0].name] = $(this).val();
            }else{
                if (($(this).attr('type') == "checkbox") && ($(this).attr('checked')))
                    datuak[$(this)[0].name] = $(this).val();
                else if ($(this).attr('type') == "radio")
                    datuak[$(this)[0].name] = $('#'+$(this)[0].id+':checked').val();
            }
		}
	});
	$("form select").each(function(){
		datuak[$(this)[0].name] = $(this).val();
	});
	/* 2010/05/28 Ander: Badaezpadazkoa, batzutan editoreko edukia ez du automatikoki hartzen, beraz, hemen zehaztuko dugu 
	 */
	for(edit in tinyMCE.editors){
		var indizea = tinyMCE.editors[edit].editorId;
		datuak[indizea] = tinyMCE.editors[edit].getContent();
	}
	jQuery.post("gorde.php",{"taula":taula,"datuak":datuak},gorde_response);
}

/**
 * Formulario bateko datuak DBan eguneratzeko funtzioa
 * @return
 */
function edukiakEguneratu(){
	// Beharrezko informazio guztia sartu dela ziurtatu
	if (beharrezkoak('formularioa_eguneratu')) return;
	var taula = $('#taula').val();
	var datuak={};
	var atalak={};
	var bal="";
	var pos=0;
	$("#formularioa_eguneratu input").each(function(){
		if ($(this)[0].name.indexOf('[]') != -1){
			if (bal != $(this)[0].name.substring(0,$(this)[0].name.indexOf('[]'))){
				if (bal != "")
					datuak[bal] = atalak;
				bal = $(this)[0].name.substring(0,$(this)[0].name.indexOf('[]'));
				pos = 0;
				atalak={};
			}
			if ($(this)[0].checked){
				atalak[pos]=$(this).val();
				pos=pos+1;
			}
		}else{
			if (bal != "")
				datuak[bal] = atalak;
			bal = "";
			/**
			 * 2010/11/16 Manex:
			 * checkbox -a den kasuan ':checked' den konprobatu behar!
			 */
			/**
			 * 2011/01/25 Manex:
			 * Radio motako balioak hartzeko ere beste baldintza bat gehitu behar
			 */
			if (($(this).attr('type') != "checkbox") && ($(this).attr('type') != "radio")){
                datuak[$(this)[0].name] = $(this).val();
            }else{
                if (($(this).attr('type') == "checkbox") && ($(this).attr('checked')))
                    datuak[$(this)[0].name] = $(this).val();
                else if ($(this).attr('type') == "radio")
                    datuak[$(this)[0].name] = $('#'+$(this)[0].id+':checked').val();
            }
		}
	});
	$("form select").each(function(){
		datuak[$(this)[0].name] = $(this).val();
	});
	/* 2010/05/28 Ander: Badaezpadazkoa, batzutan editoreko edukia ez du automatikoki hartzen, beraz, hemen zehaztuko dugu 
	 */
	for(edit in tinyMCE.editors){
		var indizea = tinyMCE.editors[edit].editorId;
		datuak[indizea] = tinyMCE.editors[edit].getContent();		
	}
	// 2010/07/19 Manex: Gakoak zuzenak direla ziurtatu
	var gako = 1;
	$('.gakoa').each(function(){
		if ($(this).css("background-color") == "rgb(230, 0, 0)"){
			$("#message_panel").empty();
	   		$("#message_panel:hidden").removeAttr('style').show();		   							   
	   		$("#message_panel").append('<span style="color:red">'+tgako_okerra+'</span>');
			$("#message_panel").fadeOut(3500);
			gako = 0;
		}
	});
	if (gako)
		jQuery.post("eguneratu.php",{"taula":taula,"datuak":datuak},gorde_response);
}

/**
 * Edukiak ezabatzeko funtzioa 
 */
function edukiakEzabatu(taula){
	// Ez bazaio funtzioari zuzenean taula izena pasatzen, formularioko elementutik eskuratu
	if (typeof taula == "undefined" || taula == "") taula = $('#taula').val();
	if (ezabatu()){
		var ezabatzekoak = [];
		/*$('#formularioa_emaitzak:checkbox:checked').each(function() {
			ezabatzekoak.push($(this).val());
	    });*/
		$('input:checkbox:checked').each(function() {
			ezabatzekoak.push($(this).val());
	    });
		jQuery.get("ezabatu.php?taula="+taula+"&datuak="+ezabatzekoak,function(data){
			if (isNaN(data)){
				jQuery("#message_panel").empty();
				jQuery("#message_panel:hidden").removeAttr('style').show();
				jQuery("#message_panel").append('<span style="color:red">'+data+'</span>');
			}else{
				if (data==1){
					jQuery("#message_panel").empty();
					jQuery("#message_panel:hidden").removeAttr('style').show();
					jQuery("#message_panel").append('<span style="color:green">'+tezabaketa_ongi_burutu+'</span>');
					jQuery("#message_panel").fadeOut(3500);
					$('#formularioa_emaitzak :checkbox:checked').each(function() {
						$('#ez_item_'+$(this).val()).remove();
				    });
				}
				else{
					jQuery("#message_panel").empty();
					jQuery("#message_panel:hidden").removeAttr('style').show();
					jQuery("#message_panel").append('<span style="color:red">'+tezabaketa_gaizki_burutu+'</span>');
					jQuery("#message_panel").fadeOut(3500);
				}
			}
		});
	}
}

/**
* Formulario bat garbitu eta ezkutatzeko funtzioa
*/

function formularioaItxi(){
	jQuery('#main_list').css('display')!='none'?jQuery('#tabs').hide():jQuery('#tabs').show();
	$('#formularioa_sortu')[0].reset();
	for(edit in tinyMCE.editors){		
		tinyMCE.editors[edit].setContent('');	
	}
	$('#info').hide();
}

function edukiakSortu(param){
	jQuery('#main_list').hide();
	jQuery('#main_form').show();
	for (eremuak in param){
		$('#formularioa_sortu').append('<input type="hidden" name='+eremuak+' id='+eremuak+' value="'+param[eremuak]+'"/>');	
	}
	$('#formularioa_sortu')[0].reset();
	$('#id').val('');
	$('#info').show();
	/*Botoia aldatu*/	
	$('#botoia').val('Sortu');
	//2010/06/10 Ander: bind egin baino lehen unbind egin, bestela funtzioak pilatuz doaz
	$('#botoia').unbind('click');
	$('#botoia').bind('click',edukiakGorde);
}

/**
 * Checkbox guztiak aukeratu/desaukeratzeko funtzioa
 * @param array Aukeratu/desaukeratu beharreko elementuen arraya
 */
function txekboxak_aukeratu(elem){
	var kont=0;
	$(elem).each(function(){
		this.checked?kont++:'';
		this.checked=true;
	});		
	if (kont == $(elem).length){
		$(elem).each(function(){			
			this.checked=false;
		});		
	}
}
/**
 * Kudeaketa panelean bilaketaren ordena aldatzeko funtzioa
 * @param id Bilaketaren identifikatzailea; datu-baseko eremua
 * @return bull
 */
function bilaketa_ordena(id){
	var ord="asc";
	// Lehendik orden hau dauka?
	if ($('#'+id+'_ordena img').length > 0){
		if ($('#'+id+'_ordena img').hasClass('ui-icon-triangle-1-s'))
			ord = "desc";
		else
			ord = "asc";
	}
	// Klaseak egokitu
	$('thead th').each(function(){$(this).removeClass('ordena')});
	// Irudi guztiak ezabatu
	$('.ui-icon-triangle-1-s').each(function(){$(this).remove();})
	$('.ui-icon-triangle-1-n').each(function(){$(this).remove();})
	// Irudia egokitu
	if (ord == "asc")
		$('#'+id+'_ordena').append(" <img class='ui-icon ui-icon-triangle-1-s'>");
	else
		$('#'+id+'_ordena').append(" <img class='ui-icon ui-icon-triangle-1-n'>");
	// Ordenazio irizpidea aldatu
	$('#ordena').val(id+' '+ord);
	// Bilaketa prozesua berriz jaurti
	bilaketa();
}

// Orria kargatzean lehendik cookian dagoena kargatzeko funtzioa
function bilaketa_hasiera(){
	var taula=$('#taula').val()+"_kudeaketa";
	// Cookie -aren datuak kargatu formularioan
	cookie_kargatu(taula);
	// Benetako bilaketa burutu
	bilaketa();
}

/**
 * Kudeaketa paneleko bilaketa prozesua jaurtitzeko funtzioa
 * @return
 */
function bilaketa(){
	// TODO: Bilaketa baten aldagaiak cookie -etan gordetzeko aukera gehitu
	$('.loading').show();
	var taula=$('#taula').val()+"_kudeaketa";
	//alert('taula: '+taula);
	if ($('#eragiketa').length == 0) var eragiketa="erakutsi"; else var eragiketa=$('#eragiketa').val();
	//alert('eragiketa: '+eragiketa);
	// Bilaketa irizpideak prestatu eta bidali
	var bilaketa={};
	var atalak={};
	var bal="";
	var pos=0;
	$("#formularioa_bilatu input").each(function(){
		if ($(this)[0].name.indexOf('[]') != -1){
			if (bal != $(this)[0].name.substring(0,$(this)[0].name.indexOf('[]'))){
				if (bal != "")
					bilaketa[bal] = atalak;
				bal = $(this)[0].name.substring(0,$(this)[0].name.indexOf('[]'));
				pos = 0;
				atalak={};
			}
			if ($(this)[0].checked){
				atalak[pos]=$(this).val();
				pos=pos+1;
			}
		}else{
			if (bal != "")
				bilaketa[bal] = atalak;
			bal = "";
			if ($(this).attr('type') != "checkbox")
				bilaketa[$(this)[0].name] = $(this).val();
			else if ($(this).attr('checked'))
				bilaketa[$(this)[0].name] = $(this).val();
		}
	});
	$("form select").each(function(){
		bilaketa[$(this)[0].name] = $(this).val();
	});
	// Cookie-a sortu/eguneratu
	cookie_sortu(taula,bilaketa);
	// Paginazioa aplikatu da?
	if ($('.paginazioa').length > 0){
		// Paginaziorik gabe emaitza guztiaren bilaketa
		jQuery.getJSON("bilatu.php",{"taula":taula,"query":bilaketa},function(data){
			$('#paginazioa_guztira').val(data.length);
			paginazioa_kargatu();
		});
		bilaketa["muga"] = $('#paginazioa_muga').val();
		bilaketa["orria"] = $('#paginazioa_orria').val()-1;
	}
	// Bilaketa prozesua martxan jarri
	jQuery.getJSON("bilatu.php",{"taula":taula,"query":bilaketa},function(data){
		has = 0;
		if ($('.paginazioa').length > 0){
			has = eval(eval($('#paginazioa_orria').val()-1)*$('#paginazioa_muga').val());
		}
		// Lehengo emaitza garbitu
		$('#formularioa_emaitzak tbody').empty();
		for (i=0;i<data.length;i++){
			var erantzuna="<tr id='ez_item_"+data[i][0]+"'><td style='text-align:center'>"+eval(has+i+1)+"</td>";
			for (j=1;j<data[i].length;j++){
				erantzuna=erantzuna+"<td>"+data[i][j]+"</td>";
			}
			erantzuna=erantzuna+"<td><a href='?atala="+$('#atala').val()+"&eragiketa="+eragiketa+"&id="+data[i][0]+"' class='botoia'>"+teguneratu+"</a></td>";
			erantzuna=erantzuna+"<td style='text-align:center'><input type='checkbox' name='id[]' value='"+data[i][0]+"'></td>";
			erantzuna=erantzuna+"</tr>";
			$('#formularioa_emaitzak tbody').append(erantzuna);
		}
		botoiak_hasieratu();
		$('.loading').hide();
	})
}

/**
 * Edukien kudeaketa paneleko paginazioa kargatzeko funtzioa
 * @return null
 */
function paginazioa_kargatu(){
	var str = "";
	var guztira = $('#paginazioa_guztira').val();
	var muga = $('#paginazioa_muga').val();
	var orria = eval($('#paginazioa_orria').val());
	// Orri kopurua kalkulatu
	var orri_kop = Math.ceil(eval(guztira/muga));
	if (eval(orria-4) > 0)
		str = str+"&nbsp;<a onclick='paginazioa(1)' class='botoia'>"+tlehenengoa+"</a>";
	if (eval(orria-3) > 0)
		str = str+"&nbsp;<a onclick='paginazioa("+eval(orria-1)+")' class='botoia'>"+taurrekoa+"</a>";
	if (eval(orria-2) > 0)
		str = str+"&nbsp;<a onclick='paginazioa("+eval(orria-2)+")' class='botoia'>"+eval(orria-2)+"</a>";
	if (eval(orria-1) > 0)
		str = str+"&nbsp;<a onclick='paginazioa("+eval(orria-1)+")' class='botoia'>"+eval(orria-1)+"</a>";
	str = str+"&nbsp;<a class='botoia' style='color:black;border-color:black;'>"+orria+"</a>";
	if (eval(orria+1) <= orri_kop)
		str = str+"&nbsp;<a onclick='paginazioa("+eval(orria+1)+")' class='botoia'>"+eval(orria+1)+"</a>";
	if (eval(orria+2) <= orri_kop)
		str = str+"&nbsp;<a onclick='paginazioa("+eval(orria+2)+")' class='botoia'>"+eval(orria+2)+"</a>";
	if (eval(orria+3) <= orri_kop)
		str = str+"&nbsp;<a onclick='paginazioa("+eval(orria+1)+")' class='botoia'>"+thurrengoa+"</a>";
	if (eval(orria+4) < orri_kop)
		str = str+"&nbsp;<a onclick='paginazioa("+orri_kop+")' class='botoia'>"+tazkena+"</a>";
	// Paginazioak ezarri
	$('.paginazioa').each(function(){
		$(this).html(str);
	});
	// Paginazio botoien itxura
	botoiak_hasieratu();
}

/**
 * Orriz aldatzeko funtzioa
 * @return null
 */
function paginazioa(orria){
	$('#paginazioa_orria').val(orria);
	bilaketa();
}

/**
 * Cookie bat sortu/eguneratzeko funtzioa
 * @param taula: Kudeatzen ari garen uneko taularen izena. Cookiaren izena izango da.
 * @param datuak: Bilaketa irizpideen array-a. 'bilatu.php' -ri pasatzen zaion array-a
 * @return null
 */
function cookie_sortu(taula,datuak){
	// Cookiaren iraungitze data ordu betekoa jarriko dugu
	var iraungitze = new Date();
	iraungitze.setHours(iraungitze.getHours()+1);
	// Cookiaren balio zerrenda osatu
	var str = "";
	for (var i in datuak){
	    if (str == "")
	        str = i+"&"+datuak[i];
	    else
	        str = str+"#"+i+"&"+datuak[i];
	}
	document.cookie = taula + "=" + encodeURIComponent(str) + "; expires=" + iraungitze + "; path=/";
	return null;
}

/**
 * Cookie bateko datuak bilaketa formularioan aplikatzeko funtzioa
 * @param taula string: Cookie izena
 * @return null
 */
function cookie_kargatu(taula){
	var cookie = Get_Cookie(taula);
	if (cookie != null){
		var datuak = cookie.split("#");
		var i;
		for (i=0;i<datuak.length;i++){
			var balioak = datuak[i].split("&");
			$('#'+balioak[0]).val(balioak[1]);
		}
	}
	return null;
}

function cookie_ezabatu(taula){
	
}

/**
 * Cookie bat lortzeko funtzioa
 * @param check_name string: Cookiaren izena
 * @return cookiaren informazioa
 */
function Get_Cookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f

	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );


		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
}

