var _$ = jQuery;
var action;

var disableScrollLoad =false; 
var dialogEditReference;

var current_editor_value;
var current_editor_value_clean;


function strip_tags (str, allowed_tags) {

	var key = '', allowed = false;
	var matches = [];
	var allowed_array = [];
	var allowed_tag = '';
	var i = 0;
	var k = '';
	var html = '';
	var replacer = function (search, replace, str) {
	return str.split(search).join(replace);
	};

	// Build allowes tags associative array
	if (allowed_tags) {
	allowed_array = allowed_tags.match(/([a-zA-Z0-9]+)/gi);
	}

	str += '';

	// Match tags
	matches = str.match(/(<\/?[\S][^>]*>)/gi);

	// Go through all HTML tags
	for (key in matches) {
	if (isNaN(key)) {
	// IE7 Hack
	continue;
	}

	// Save HTML tag
	html = matches[key].toString();

	// Is tag not in allowed list? Remove from str!
	allowed = false;

	// Go through all allowed tags
	for (k in allowed_array) {
	// Init
	allowed_tag = allowed_array[k];
	i = -1;

	if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+'>');}
	if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+' ');}
	if (i != 0) { i = html.toLowerCase().indexOf('</'+allowed_tag)   ;}

	// Determine
	if (i == 0) {
	allowed = true;
	break;
	}
	}

	if (!allowed) {
	str = replacer(html, "", str); // Custom replace. No regexing
	}
	}

	return str;

}





var load = function(){
	var submit_perm = true;
    
	jQuery('.cursos .ilist .buttonWrapper .updateButton').live('click',function(i){
	    jQuery('.avisoFecha').fadeOut().remove();
	    jQuery('.cursos .EDITOR').each(function(){
		    jQuery(this).find('form').each(function(){
		        var a = jQuery(this).find('input[name=caduc_date]').val();
		        if(a == '0000-00-00')
		        {
		            jQuery(this).prepend('<div id="avisoFecha" class="avisoFecha">Indica Fecha de Caducidad para ver el curso en la parte pública</div>');
		        }
		        var o = jQuery(this).find('select[name=status]').val();
		        if(o == '0')
		        {
		        	jQuery(this).prepend('<div id="avisoFecha" class="avisoFecha">Pon el Estado a On para ver el formulario de inscripción en la parte pública</div>');
		        }
		    });
		});
	}); 
	
	jQuery('.cursos .EDITOR').each(function(){
	    jQuery(this).find('form').each(function(){
	        var a = jQuery(this).find('input[name=caduc_date]').val();
	        if(a == '0000-00-00')
	        {
	            jQuery(this).prepend('<div id="avisoFecha" class="avisoFecha">Indica Fecha de Caducidad para ver el curso en la parte pública</div>');
	        }
	        var o = jQuery(this).find('select[name=status]').val();
	        if(o == '0')
	        {
	        	jQuery(this).prepend('<div id="avisoFecha" class="avisoFecha">Pon el Estado a On para ver el formulario de inscripción en la parte pública</div>');
	        }
	    });
	});
	
	_$('.cursos .EDITOR').each(function(i){
	    _$(this).hide();

	    var a = _$(this).find('form input[name="name"]').val();
	    var i = _$(this).find('form input[name="id"]').val();
	    jQuery('select[name=cursakos]').append('<option value='+i+'>'+a+'</option>');
	});
	_$('#cursiko').show();
	_$('select[name=cursakos]').live('change',function(i){
	    var o = jQuery(this).val();
	    _$('.nonew .EDITOR').hide();
	    _$('#form1wp_i_cursos'+o).parent().show();
	});
	_$('.cursos').show();
	
    var options = {
    		beforeSubmit: function(formData, jqForm, options){
    					_$("body").css("cursor","wait");
    					if(_$("input[name=conditions]").length>0){
    						if (!_$("input[name=conditions]").is(":checked")){
    							_$("body").css("cursor","default");
    							_$("input[name=conditions]").parents("label").append("<p class=\"errorP\" >Debes aceptar las conticiones de privacidad.</p>");
    							window.setTimeout(function (){ _$(".errorP" ).fadeOut("slow",function(){_$(".errorP").remove();}); _$(".errorInput").removeClass("errorInput"); },5000);
    							return false;
    						}
    						
    					}
    		},
            success : function(formData, jqForm){
    						
    						if(formData.error){
    							jQuery('#form1'+formData.form+formData.id+' .buttonWrapper').append('<span class="adviUpdate">Los datos no se han actualizado</span>');
    							window.setTimeout(function (){ 
    								_$(".adviUpdate").remove();
    							},2000);
    						}
    						if (aerr = formData.error){
    							tmpf = "form1"+formData.form+formData.id;
    							var msg = _$("<div />");
    							msg.addClass("errorContainer");
    							jQuery("#"+tmpf).parents(".wrapper").append(msg);
    							msg.hide();
    							for (var a in aerr){
    								jQuery("[name="+a+"]", jQuery("#"+tmpf) ).addClass("errorInput");
    								msg.append("<p class=\"errorP\" >"+aerr[a]+"</p>");
    							}
    							msg.fadeIn("slow");
    							window.setTimeout(function (){ msg.fadeOut("slow",function(){msg.remove();}); _$(".errorInput").removeClass("errorInput"); },2000);
    							_$("body").css("cursor","default");
    							return false;
    						}
    						
    						
    						if (aerr = formData.public_error){
    							tmpf = "form1"+formData.form+formData.id;
    							for (var a in aerr){
    								fld = jQuery("[name="+a+"]", jQuery("#"+tmpf) );
    								fld.addClass("errorInput");
    								fld.after("<p class=\"errorP\" >"+aerr[a]+"</p>");
    							}
    							$('html,body').animate( {scrollTop: (_$(".errorP").eq(0).offset().top-100)}, 1000);
    							window.setTimeout(function (){ 
    								_$(".errorInput").removeClass("errorInput");
    								_$(".errorP").fadeOut("slow",function(){
    									_$(this).remove();
    								});
    							},5000);
    							_$("body").css("cursor","default");
    							return false;
    						}

    						if (aerr = formData.supererror){
    							_$(".iforms").fadeOut("slow",function(){
    								_$(".iforms").before('<p class="warn">'+ formData.supererror+'</p>');
    								_$(".iforms").remove();
    								$('html,body').animate( {scrollTop: (_$(".warn").eq(0).offset().top-100)}, 1000);
    							});
    							_$("body").css("cursor","default");
    							return false;
    						}
    						
    						if (aerr = formData.success){
    							_$(".iforms").fadeOut("slow",function(){
    								_$(".iforms").before('<p class="warn">'+ formData.success +'</p>');
    								_$(".iforms").remove();
    								$('html,body').animate( {scrollTop: (_$(".warn").eq(0).offset().top-100)}, 1000);
    							});
    							_$("body").css("cursor","default");
    							return false;
    						}
    						
			    			switch (formData.action){
			    				case 'new':
								//console.log("joe");
			    					
			    					if (formData.ok_flag=="1"){
				    					newf = "form1"+formData.form+"0";
				    					var wrp = jQuery("#"+newf).parents(".ibox").find(".ilistbox");
				    					var box = jQuery("#"+newf).parents(".ibox").find(".ilist");
				    					jQuery("#"+newf).clearForm();
				    					jQuery("#"+newf).find("input:visible").eq("0").focus();
				    					if (formData.html == null){
				    						formData.html = '<p><a href="javascript:location.reload();" >RELOAD to view changes</a></p>';
				    					}else{
					    					if (typeof formData.html == "object"){
					    						html = formData.html.file.replace(/%OPENHTMLTAG%/gi,'<');
					    						html = html.replace(/%CLOSEHTMLTAG%/gi,'>');
					    						formData.html = html 
					    					}
				    					}
				    					wrp.append(formData.html);
				    					disableScrollLoad = true;
				    					box.animate({scrollTop: wrp.height()}, 1000, function(){ window.setTimeout(function(){disableScrollLoad = false; if(formData.form=="wp_i_cursos" || formData.form=="wp_i_alumnos"){alert('Los datos se han guardado');window.location.reload();} },500); });
				    					
			    					}
			    				break;
			    				case 'delete':
			    					if (formData.ok_flag=="1"){
			    						newf = "form1"+formData.form+formData.id;
			        					var wrp = jQuery("#"+newf).parents(".wrapper");
			        					wrp.fadeOut("slow",function(){ wrp.remove(); });
			        					if(formData.form=='wp_i_cursos')
			        					{
			        						var a = jQuery('select[name=cursakos]').val();
			        						jQuery('select[name=cursakos]').find('option[value='+a+']').remove();
			        					}
			    					}
			    				break;
			    				case 'update':
			    					jQuery('.noseformu').remove();
			    					if (formData.ok_flag=="1"){
			    						newf = "form1"+formData.form+formData.id;
			    						jQuery('#'+newf+' .buttonWrapper').append('<span class="advise">Los datos se han actualizado</span>');
			    						jQuery("input", jQuery("#"+newf) ).addClass("updatedInput");
	
										window.setTimeout(function (){ 
											jQuery("input", jQuery("#"+newf) ).removeClass("updatedInput");
											jQuery('.advise').fadeOut().remove();
										},2000);
			    					}
			    				break;
			    				// ktulur
			    				case 'edit':
			    					if (formData.ok_flag=="1"){
			    					}
			    				break;
			    				
			    			}
			    			
			    			_$("body").css("cursor","default");
    		}, 
            dataType:  'json' 
        }; 
    
    
    
	_$("button[name=action]").live("click",function(){
		var self = _$(this);
		var parentform = self.parents("form.iforms");
		action = self.val();
		ac = _$(":hidden[name=action]", _$(parentform));
		if (ac.length<=0 ){
			parentform.append('<input type="hidden" name="action" value="'+action+'"/>');
		}else{
			ac.val(action);
		}
		
		if (action=="delete"){
			if (confirm("Estas seguro?"))	{
				parentform.ajaxSubmit(options);
			}
		}else	{
				parentform.ajaxSubmit(options);
		}
		return false;
	});
	
    if (_$("#dialog").length>0){
	_$("#dialog").dialog({
		bgiframe: true,
		autoOpen: false,
                draggable: true,
		
		width: 600,
		height: 'auto',
		position: 'top',
		resizable: true,
		title: 'Editar',
		closeText: '',
		modal: true,
		open: function() {
			var self = _$(this);
			
			tinyMCE.execCommand('mceAddControl', false, 'extTextarea');
		},
		buttons: {
			'Guardar': function() {
				
				//allFields.removeClass('ui-state-error');

				var newval = tinyMCE.activeEditor.getContent();
				
				current_editor_value.val(newval);
				current_editor_value_clean.val(strip_tags(newval));
				//.find("[value=update]").

				 var self = _$(this);
				 var parentform = current_editor_value.parents("form.iforms");
		                //var parentform = _$("form1wp_i_cursos17"); 
                        	parentform.append('<input type="hidden" name="action" value="update"/>');
					


                                parentform.ajaxSubmit(options);
				self.dialog('close');
                		//return false;
	
				//current_editor_value.next(".buttonWrapper").find("[value=update]").trigger("click");
				
			},
			'Cancelar': function() {
				_$(this).dialog('close');
			}
		},
		close: function() {
			
			current_editor_value = false;
			tinyMCE.execCommand('mceRemoveControl',false,'extTextarea');
		}
	});

	
	
    }
	
	_$(".ilist").scroll(function(){
		if (disableScrollLoad==true) return false;
		var self = _$(this); 
		var chbox = self.find(".ilistbox");
		
		if ((chbox.height()-self.height()) == self.scrollTop()){
			
			
		}
	}); 
	
	_$(".extEditable").live("click",function(){
		var self = _$(this);
                current_editor_value_clean = self;
                self = self.next(); // El input con html para el tiny está adjunto despues
		current_editor_value = self; 
		_$('#extTextarea').val(self.val());
		_$('#dialog').dialog('open');
			
	});
	
	
	d = new Date(); 
	//console.log('2000:+90');
	dd = d.getFullYear();
	min = dd-90;
	max = dd+10;
	oo = min+":"+max;
			
	
	if (_$(".datepicker").length>0) {
		//_$.datepicker.   setDateFormat('ymd','-');
		_$(".datepicker").datepicker(
		{dateFormat: _$.datepicker.W3C, changeYear:true, yearRange: oo, changeMonth:true, prevText: '', nextText: '' });

	}
	
	if (_$("#tabscontent").length>0) {

		_$("#tabscontent").tabs();

		
	}
	
	if (_$(".filterbox").length>0) {
		_$(".filterbox").find("select").live("change",function(){
			var self = _$(this);
			var ibox = self.parents(".ibox");
			var thisform = self.parents("form");
			thisform.ajaxSubmit({
				
				success : function(formData, jqForm){
					ibox.fadeOut();
					ibox.before(formData);
					ibox.remove();
					
					load();
				
				},
				dataType:  null 
			});
			
		});
		
		_$("#docsv").bind("click",function(){
			var self = _$(this);
			var thisform = self.parents("form");
			
			document.location = 'http://'+location.host+"/"+thisform.attr("action")+"&csv=true";
			return false;
		});
	}
	_$('a[rel="tag"]').each(function(){
		if(_$(this).attr('class'))
		{
		    var a = _$(this).attr('title');
		    a = a.substr(a, a.indexOf(' '));
		    a = a / 5;
		    if(a<1)
		    {
		        a=a+0.6;
		    }
		    _$(this).css('font-size',a+'em');
		}
	});
	_$("a[href^=http://www.facebook.com]").attr("target","_black");
};


jQuery(document).ready(load);
