//FUNCIÓN AJAX
var LOAD_STATUS_TEXT = '<div id="cargando"><img src="/img/loading.gif" alt="cargando"></div>';

var CBOX_CONFIG = {
	pordefecto: {
		width:950,
		height:650,
		overlayClose:true
	},
	agenda: {
		iframe: true,
		width:950,
		height:650,
		//maxHeight:'90%',
		overlayClose:true
	},
	errorpssp: {
		open:true,
		inline:true, 
		maxWidth:'90%',
		maxHeight:'90%',
		href:'#errPSSP',
		overlayClose:true
	},
	dialogpssp: {
		open:true,
		inline:true, 
		width:'650',
		height:'402',
		href:'#dialogPSSP',
		overlayClose:true
	}
};


function moduloSendAjax(pArrayParams) {

   var pParams          = pArrayParams.params;
   var pCtn             = pArrayParams.ctn;
   var fnCallback       = pArrayParams.callback;
   var pUrl             = pArrayParams.url;
   var pMethod          = pArrayParams.method;
   var pCache           = pArrayParams.cache;
   var pInsertMethod	= pArrayParams.insertmethod;   // replace (por defecto), append, inner (reemplaza el contenido)
   var pColorbox        = pArrayParams.colorbox;
   var pCboxType        = pArrayParams.cboxtype;
   var pCboxConfig      = pArrayParams.cboxconfig || 'CBOX_CONFIG.pordefecto';
   var pPreload         = pArrayParams.preload;  // Selectores de jquery para hacer la precarga
   
   var objCboxConfig = {};
   eval('objCboxConfig = $.extend(objCboxConfig,'+pCboxConfig+')');
   
   if (!pUrl) pUrl = '/modulo/index.html';
   if (typeof pParams == 'object') pParams = {params:$.param(pParams)}
  
   if (pCtn)  {
        if (pColorbox && pCboxType == 'inline') {
            $.colorbox($.extend(objCboxConfig, {inline:true, href:'#'+pCtn}));
            return false;
        }
        var Container = $(document.getElementById(pCtn));
        var currentHtml = Container.html();
        Container.css({width: Container.innerWidth(), height: Container.innerHeight()});  
        Container.append(LOAD_STATUS_TEXT);
        
        //try {if (DEBUG_DPL && DEBUG_DPL == 1) return false;} catch(err) { }
   }
   
   if (pColorbox) {
	    var configCbox = {
	    	href: pParams ? pUrl + '?' + pParams : pUrl
	    };
	    if (pCboxType == 'iframe') configCbox['iframe'] = true;
	    if (pCboxType == 'inline') configCbox['inline'] = true;
	    if (pMethod) configCbox['method'] = pMethod;
	    configCbox = $.extend(objCboxConfig, configCbox);
        $.colorbox(configCbox);
        return false;     
   }

   $.ajax({
      url: pUrl,
      data: pParams,
      type: pMethod || 'get',
      cache: (typeof pCache != 'undefined') ? pCache : true,
      success: function(pHtml){
	     $('#cargando').remove();
         if (pHtml) {
            if (pCtn) {
                var destObject = $(document.getElementById(pCtn));
                switch (pInsertMethod) {
                	case 'append':
                		destObject.append(pHtml); 
                		break;
                	case 'inner':
                		destObject.html(pHtml); 
                		break;
                	default:
                		destObject.replaceWith(pHtml); 
                		break;
                }
                
                preloadAjax(pPreload); 
            }
            //setListeners("#"+pCtn);
            if (typeof fnCallback == 'function') fnCallback();
         }else{
            if (pCtn) $(document.getElementById(pCtn)).html(currentHtml);         
         }
      },
      error: function () {
    	  if (pCtn) $(document.getElementById(pCtn)).html(currentHtml); 
      }
   });
}


function preloadAjax(pSelectors) {
   if (typeof pSelectors == 'string') {
      $(pSelectors).each(function() {
         var href = $(this).attr('href');
         if (href) moduloAjax(href, {ctn: null, cache: true});
      });
   }
}


function moduloAjax(url, pConfigParams) {
   var config = {callback: function() {}};
   if (typeof pConfigParams == 'function'){
      config['callback'] = pConfigParams;
   }else if (pConfigParams && typeof pConfigParams == 'object') {
      config = pConfigParams;
   }

   var argsDec     = url.split("?")[1];
   if (!argsDec) argsDec = url.split("#")[1];
   
   if (argsDec) {
	   if (argsDec.indexOf('params=') != -1){
	      if (!config['params']) config['params']  = "params=" + argsDec.split("params=")[1].split("&")[0];
	   }
	
	   if (argsDec.indexOf('ctn=') != -1){
	       if (typeof config['ctn'] == 'undefined') config['ctn'] = argsDec.split("ctn=")[1].split("&")[0];
	   }
   }

   moduloSendAjax(config);

   return false;
}

function getCboxConfig(pTag) {
    var config = null;
        
    
    if ($(pTag).hasClass('aCbox')) {
    	config = {colorbox: true};
    	if ($(pTag).hasClass('aCboxIl')) config['cboxtype']   = 'inline';   			// Colorbox inline
    	if ($(pTag).hasClass('aCboxIf')) config['cboxtype']   = 'iframe';   			// Colorbox en iframe
    	if ($(pTag).attr('rel')) 		 config['cboxconfig'] = $(pTag).attr('rel');    // Config de colorbox
    	if ($(pTag).hasClass('aCboxOr')) { // Colorbox a la url original
    		if ($(pTag).attr('action'))  { // Es un formulario
    			config['url'] = $(pTag).attr('action');
    			config['params'] = $(pTag).serialize(); // Sobreescribo los parametros
    		}
    		if ($(pTag).attr('href'))    config['url'] = $(pTag).attr('href');
    	}
    }
    
    return config;
}


setListeners = function () {
    $("a.aV").live('click', function (pEvent){  
       var tmpTag = pEvent.target;
       if (typeof tmpTag.href == 'undefined') tmpTag = pEvent.currentTarget;
       
       var tmpHref = $(tmpTag).attr('href');
       if (tmpHref) moduloAjax(tmpHref, getCboxConfig(tmpTag));

       return false;
    });
    
    $("form.aV").live('submit', function (pEvent){
       var form = $(pEvent.target);
       if (form.get(0).tagName != 'FORM') form = $(pEvent.currentTarget);
       
       var ctn = $('input[name*="ctn"]',form).val();
       var fnEval = null; eval('fnEval = '+$('input[name*="callback"]',form).val());
       var params = 'params=' + escape(form.serialize());
       var method = form.attr('method');
       
       var configAjax = {
          params:params, 
          ctn:ctn,
          callback: fnEval,
          method: method
       };

       var configCbox = getCboxConfig(form.get(0));
       if (configCbox) configAjax = $.extend(configAjax, configCbox);
       
       moduloSendAjax(configAjax);
       return false;
    });
    
    
    $("select.aV").live('change', function (pEvent){
       moduloAjax($("option:selected", pEvent.target).attr('enlace'), getCboxConfig(pEvent.target));		
       return false;
    });

    
    $("ul:not(#filtro_genero).aV li").live('click', function (pEvent){
    	var configAjax = {
    		callback: function(){ $('.scroll-pane').jScrollPane({showArrows: true});}
    	}

        var configCbox = getCboxConfig(pEvent.target);
        if (configCbox) configAjax = $.extend(configAjax, configCbox);
        
	    moduloAjax($(this).attr('enlace'), configAjax);		
        return false;
    });
    
    
    $('div.exito .boton').live('click', function (pEvent) {
    	top.$.colorbox.close();
    });
    

    
    $("#buscar_boton").click(function (pEvent){
         var params='';    	

         //Capturar el value de cada checkbox activo
         $("input:checkbox[name='canales_activos_list\\[\\]']:checked").each(function () {
            params = params + $(this).val()+',';
         });
         
         //Si no hay ninguno seleccionado es el mismo comportamiento que si seleccionasen todos
         if (params=='') {
            $("input:checkbox[name='canales_activos_list\\[\\]']:not(checked)").each(function () {
               params = params + $(this).val() + ',';
            });
         }
         
         //Cortar la ultima ',' si la hubiera
         if (params.charAt((params.length-1))==',') {
            params = params.substring(0, params.length-1);               
         }

         //Montar una url siguiendo la mecanica Ajax usada normalmente
         var url_base_ajax = $("div:[id=checkbox_group_container]").attr('enlace');
         var url_params_ajax = url_base_ajax + '%26canales_activos='+params;
         //Llamada al modulo con la función ya montada
         
         var configAjax = {
                 callback: function()
                 {
					 $('ul.sub-menu').fadeOut(200, function() {
					 	$(this).hide();
					 });   
                 }
              };
         
         moduloAjax(url_params_ajax,configAjax);	
    });
}

doActions = function () {
	if ($('#errPSSP').length > 0) {
		$.colorbox(CBOX_CONFIG.errorpssp);
	}	else if ($('#dialogPSSP').length > 0) {
		$.colorbox(CBOX_CONFIG.dialogpssp);
	}	
}

$(document).ready(function() {
  setListeners();
  doActions();
});

