var richTextEditor = new Class({
	buttons: [{id:'link',title:'Insertar enlace'},{id:'image',title:'Añadir imágen'},{id:'video',title:'Añadir video'}],
	buttonsHolder:null,
	textarea:null,
	load: function(buttonsHolder,textarea) {
		this.buttonsHolder=buttonsHolder;
		this.textarea=textarea;
		
		// Estilos del contendor de los botones...
		buttonsHolder.style.borderTop='solid 1px #666666';
		buttonsHolder.style.borderRight='solid 1px #666666';
		buttonsHolder.style.borderLeft='solid 1px #666666';
		buttonsHolder.style.background='#EEEEEE';
		buttonsHolder.style.color='#000000';
		buttonsHolder.style.padding='2px 2px';
		
		// Insertamos botones...
		var tr=$C('TR',null,$C('TBODY',null,$C('TABLE',{'.borderCollapse':'collapse'},this.buttonsHolder)));
		$A(this.buttons).each(function(elem) {
			var td=$C('TD',null,tr);
			var btnHolder=$C('DIV',{},td);
			var btn=$C('IMG',{src:'resources/images/richTextEditor/'+elem.id+'.png','.margin':'0 4px 0 4px','.cursor':'pointer',alt:elem.title,title:elem.title},btnHolder);
			btn.onclick=function() {this.showTool(elem.id,btnHolder);}.bind(this);
		}.bind(this));
	},
	showTool: function (id,bthHolder) {
	
		var w=$_('info_richTextEditor');
		if (w) {w.parentNode.removeChild(w);}
		w = null;
		
		//var h = bthHolder;
		var h = this.buttonsHolder;
		var click = h.onclick;h.onclick = function(e){e.preventDefault();};
		var w = createThemeInfo("richTextEditor");
		w.style.width='360px';
		h.appendChild(w);
		
		var ib = $_("info_richTextEditor_container");
		var xh=$C('DIV',{'.textAlign':'right'},ib);
		var x=$C('SPAN',{innerHTML:'cerrar','.cursor':'pointer'},xh); x.onclick=function() {w.parentNode.removeChild(w);}
		switch (id) {
			case 'link':
				$C('DIV',{innerHTML:'Introduce el enlace'},ib);
				var inp = $C('INPUT',{type:'text',className:'inputText','.width':'300px','.verticalAlign':'middle'},ib);
				var img=$C('IMG',{src:'resources/images/richTextEditor/save.png','.verticalAlign':'middle','.marginLeft':'6px','.cursor':'pointer'},ib);
				img.onclick=function() {
					if (inp.value=='') {alert('Debes indicar el enlace a insertar.'); return;}
					if (inp.value.indexOf('http://')==-1) {alert("La URL debe contener 'http://'."); return;}
					this.insertElement(id,inp.value);
					w.parentNode.removeChild(w);	
				}.bind(this);
				break;
			case 'image':
				$C('DIV',{innerHTML:'Introduce la direcci&oacute;n de la im&aacute;gen'},ib);
				var inp = $C('INPUT',{type:'text',className:'inputText','.width':'300px','.verticalAlign':'middle'},ib);
				var img=$C('IMG',{src:'resources/images/richTextEditor/save.png','.verticalAlign':'middle','.marginLeft':'6px','.cursor':'pointer'},ib);
				img.onclick=function() {
					if (inp.value=='') {alert('Debes indicar la direcci&oacute;n de la im&aacute;gen.'); return;}
					if (inp.value.indexOf('http://')==-1) {alert("La URL debe contener 'http://'."); return;}
					this.insertElement(id,inp.value);
					w.parentNode.removeChild(w);	
				}.bind(this);
				break;
			case 'video':
				var linkVideo = $C('DIV',{innerHTML:"Introduce la direcci&oacute;n del de YOUTUBE"},ib);
				var inp = $C('INPUT',{type:'text',className:'inputText','.width':'300px','.verticalAlign':'middle'},ib);
				var img=$C('IMG',{src:'resources/images/richTextEditor/save.png','.verticalAlign':'middle','.marginLeft':'6px','.cursor':'pointer'},ib);
				img.onclick=function() {
					if (inp.value=='') {alert('Debes indicar la direcci&oacute;n de un video de YOUTUBE.'); return;}
					if (inp.value.indexOf('http://')==-1) {alert("La URL debe contener 'http://'."); return;}
					this.insertElement(id,inp.value);
					w.parentNode.removeChild(w);	
				}.bind(this);
				break;
		}
	},
	insertElement: function (id,innerText) {
		this.insertAtCursor(this.textarea,'['+id+']'+innerText+'[/'+id+']');
	},
	insertAtCursor: function (myField, myValue) {
		//IE support
		if (document.selection) {
			myField.focus();
			sel = document.selection.createRange();
			sel.text = myValue;
		}
		//MOZILLA/NETSCAPE support
		else if (myField.selectionStart || myField.selectionStart == '0') {
			var startPos = myField.selectionStart;
			var endPos = myField.selectionEnd;
			myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);
		} else {
			myField.value += myValue;
		}
	}
});

function renderRichText (text) {
	var maxImageWidth=360;
	var maxImageHeight=360;

	//if (!text) return "Ha habido un error con esta entrada de blog";
	// Parsear enlaces...
	var matches = text.match(/\[link\].[^\[]*\[\/link\]/g);
	if (matches) {
		$A(matches).each(function(m) {
			var src=m.replace(/\[link\]/,"").replace(/\[\/link\]/,"");
			var str='<a href="'+src+'" target="_blank">'+src+'</a>'
			text=text.replace(m,str);
		});
	}
	// Parsear imagenes...
	var matches = text.match(/\[image\].[^\[]*\[\/image\]/g);
	if (matches) {
		$A(matches).each(function(m) {
			var src=m.replace(/\[image\]/,"").replace(/\[\/image\]/,"");
			var str='<div style="text-align:center;margin: 8px 0 8px 0;"><img style="max-width:'+maxImageWidth+'px;max-width:'+maxImageHeight+'px;" src="'+src+'" /></div>'
			text=text.replace(m,str);
		});
	}
	// Parsear videos...
	var matches = text.match(/\[video\].[^\[]*\[\/video\]/g);
	if (matches) {
		$A(matches).each(function(m) {
			var src=m.replace(/http:\/\/www\.youtube\.com\/watch\?v=/,"").replace(/\[video\]/,"").replace(/\[\/video\]/,"");
			var str='<div style="text-align:center;margin: 8px 0 8px 0;"><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/'+src+'&hl=es&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/'+src+'&hl=es&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></div><div style="clear:both;"></div>';
			text=text.replace(m,str);
		});
	}
	text = text.replace(/\n/g,"<br/>");
	text = text.replace(/\\"/g,"&quot;");
	text = text.replace(/\'/g,"&quot;");
	
	//alert(text);
	//alert(unescape(text));
	
	return unescape(text);
}

function renderRichTextSnippet (text, idBlog){
	var maxImageWidth=128;
	var maxImageHeight=128;
	var flagVideo=false;

	if (!text) return "No se puede previsualizar esta entrada de blog";
	
	// Parsear enlaces...
	var matches = text.match(/\[link\].[^\[]*\[\/link\]/g);
	if (matches) {
		$A(matches).each(function(m) {
			var src=m.replace(/\[link\]/,"").replace(/\[\/link\]/,"");
			var str='<a href="'+src+'" target="_blank">'+src+'</a>';
			text=text.replace(m,str);
		});
	}
	
	// Parsear imagenes...
	var arrayImages=new Array();
	var matches = text.match(/\[image\].[^\[]*\[\/image\]/g);
	if (matches) {
		$A(matches).each(function(m) {
			var src=m.replace(/\[image\]/,"").replace(/\[\/image\]/,"");
			var str='<div style="text-align:center;margin: 8px 0 8px 0;"><img style="max-width:'+maxImageWidth+'px;max-height:'+maxImageHeight+'px;" src="'+src+'" /></div>';
			arrayImages.push(str);
			text=text.replace(m,'');
		});
	}

	// Parsear videos...
	var arrayVideos=new Array();
	var matches = text.match(/\[video\].[^\[]*\[\/video\]/g);
	if (matches) {
		$A(matches).each(function(m) {
			var src=m.replace(/http:\/\/www\.youtube\.com\/watch\?v=/,"").replace(/\[video\]/,"").replace(/\[\/video\]/,"");
			/*var str='<div style="text-align:center;margin: 8px 0 8px 0;" class="cursor" id="holderPlayer_'+idBlog+'"><object width="128" height="128"><param name="movie" value="http://www.youtube.com/v/'+src+'&hl=es&fs=1&enablejsapi=1&playerapiid=ytplayer_'+idBlog+'"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/'+src+'&hl=es&fs=1&enablejsapi=1&playerapiid=ytplayer_'+idBlog+'" type="application/x-shockwave-flash" id="myytplayer_'+idBlog+'" allowscriptaccess="always" allowfullscreen="true" width="128" height="128"></embed></object></div><div style="clear:both;"></div>';
			str+='<script>    function onYouTubePlayerReady(playerId) {ytplayer = $_("myytplayer_'+idBlog+'"); VAR_apps["myProfile_privateProfile"].modules["lastThings"].youtubePlayerManager(ytplayer);}</script>';*/
			//var str='<div class="cursor"><img src="'+getScreenFromYoutubeVideo(src, 'small')+'" /></div>'
			
			flagVideo=src;
			var playVideo = $C('DIV',{'.position':'relative'});
			var imgHolder = $C('DIV',{className:'imageHolder128 cursor', id:'playVideo_'+idBlog},playVideo);
			imgSrc = getScreenFromYoutubeVideo(src, 'big');
			var imgPlay = $C('IMG',{src:'resources/images/playOverCover128.png','.background':'url('+imgSrc+') center no-repeat',alt:'Reproducir Vídeo',title:'Reproducir Vídeo'},imgHolder);
			
			arrayVideos.push(playVideo.innerHTML);
			text=text.replace(m,'');
		});
	}
	
	text = text.replace(/\n/g,"<br/>");
	text = text.replace(/\\"/g,"&quot;");
	text = text.replace(/\'/g,"&quot;");

	var snippet=text;
	if (text.length > 403) snippet = text.substr(0,400)+'...';

	var finalHTML='<div style="margin-left:20px;">'+snippet+'</div>';
	if (arrayImages.length>0){
		finalHTML='<div class="floatLeft" style="width:140px;" >'+arrayImages[0]+'</div><div class="floatLeft" style="width:200px; margin-left:5px; text-align:justify;word-wrap:break-word;">'+snippet+'</div><div clas="floatFix"></div>';	
	}
	if (arrayVideos.length>0){
		finalHTML='<div class="floatLeft" style="width:140px; overflow:hidden;" >'+arrayVideos[0]+'</div><div class="floatLeft" style="width:200px; margin-left:5px; text-align:justify; word-wrap:break-word;">'+snippet+'</div><div clas="floatFix"></div>';	
	}

	return {'HTML':finalHTML, 'video':flagVideo};	
}

function getScreenFromYoutubeVideo( url, size )
{
  if(url === null){ return ""; }

  size = (size === null) ? "big" : size;
  var vid;
  var results;

  results = url.match("[\\?&]v=([^&#]*)");

  vid = ( results === null ) ? url : results[1];

  if(size == "small"){
    return "http://img.youtube.com/vi/"+vid+"/2.jpg";
  }else {
    return "http://img.youtube.com/vi/"+vid+"/0.jpg";
  }
}
