

var ckeDataProcessor;

var sansConversion = false ;
if (sansConversion) {
	spipDataProcessor={
		toDataFormat:function(html, fixForBody){
			if(fixForBody) {
				return ckeDataProcessor.toDataFormat(html,fixForBody).replace(/<head[^>]*>(.|\r|\n)*<\/head>/, '').replace(/[\r\n\s]*<body[^>]*>[\r\n\s]*/, '').replace(/[\r\n\s]*<\/body>[\r\n\s]*/, '');
			} else {
				return ckeDataProcessor.toDataFormat(html,fixForBody) ;
			}
		},
		toHtml:function(data, fixForBody){
			if(fixForBody) {
				return '<html><head><title></title></head><body>'+ckeDataProcessor.toHtml(data.replace(/<html>/,'').replace(/<\/html>/, ''),fixForBody)+'</body></html>' ;
			} else {
				return ckeDataProcessor.toHtml(data,fixForBody);
			}
		}
	};
} else {
	spipDataProcessor={
		toDataFormat:function(html, fixForBody){
			return $.ajax({url:CKEDITOR.spipurl+'?page=ckspip_convert',data:{text_area:html.replace(/<span\s+data-scayt[^>]*>\s*(.*?)\s*<\/span>/g,'$1'),cvt:'html2spip',fix:fixForBody},global:false,type:'POST',dataType:'text',async:false}).responseText;
		},
		toHtml:function(data, fixForBody){
			return $.ajax({url:CKEDITOR.spipurl+'?page=ckspip_convert',data:{text_area:data.replace(/<span\s+data-scayt[^>]*>\s*(.*?)\s*<\/span>/g,'$1'),cvt:'spip2html',fix:fixForBody},global:false,type:'POST',dataType:'text',async:false}).responseText;
		}
	};
}

function htmldecode(s){
	return $('<div/>').html(s).text();
}

function HideSpipUI(editor_id){
	if($(editor_id).size()==0){return;}
	var crayon=editor_id.match(/^(#crayon_\d+)\s/), item, editor_id_light = editor_id ;
	if(crayon) {
		editor_id_light='textarea.crayon-active' ;
		stack[editor_id].crborder=$(crayon[1]+' .formulaire_spip').css('border');
		stack[editor_id].crbg=$(crayon[1]+' .formulaire_spip').css('background-color');
		$(crayon[1]+' .formulaire_spip')
			.css('border','none')
			.css('background-color','white');
		item=$(crayon+' div.edition');
	} else {
		editor_id_light = editor_id.match(/^#\S*\s+(.*)$/) ;
		if (editor_id_light) {
			editor_id_light = editor_id_light[1] ;
		} else {
			editor_id_light = editor_id ;
		}

		item=$(editor_id_light).parents().find('div.forum, div.edition:has('+editor_id_light+')');
	}
	item.each(function() {
		if ($(this).find(editor_id_light).length == 1) {
			if (editor_id.match(/^#formulaire_forum\s/)) {
				stack[editor_id].fobd=$(this).css('border');
				stack[editor_id].fobg=$(this).css('background');
				$(this).css('border','none');
				$(this).css('background','none');
			}
			$(this).find('.spip_barre').css('display','none').end()
				.find('.explication').css('display','none').end()
				.find('.markItUpHeader').css('display','none').end()
				.find('.markItUpTabs').css('display','none').end()
				.find('.markItUpPreview').css('display','none').end()
				.find('.markItUpFooter').css('display','none');
		}
	}) ;
}

function ShowSpipUI(editor_id){
	if($(editor_id).size()==0){return;}
	if (! stack[editor_id].nobarre) {
		$(editor_id).removeClass('no_barre') ;
		barrebouilles_editor(editor_id) ;
		stack[editor_id].nobarre = false ;
	}
	var crayon=editor_id.match(/^(#crayon_\d+)\s/), item ;
	if(crayon) {
		item=$(crayon+' div.edition');
	} else {
		item=$(editor_id).parents().find('div.forum, div.edition:has('+editor_id+')');
	}
	item.each(function() {
		if (editor_id.match(/^#formulaire_forum\s/)) {
			$(this).css('border',stack[editor_id].fobd);
			$(this).css('background',stack[editor_id].fobg);
		}
		if(crayon) {
			$(crayon[1]+' .formulaire_spip')
				.css('border',stack[editor_id].crborder)
				.css('background-color',stack[editor_id].crbg);
		}
		if($(this).find('.markItUpTabs .previsuVoir').hasClass('on')){
			$(this).find('.markItUpTabs').css('display','').end()
				.find('.markItUpPreview').css('display','block').end()
				.find('.markItUpEditor').css('display','none');
		}else{
			$(this).find('.spip_barre').css('display','').end()
				.find('.explication').css('display','').end()
				.find('.markItUpHeader').css('display','').end()
				.find('.markItUpTabs').css('display','').end()
				.find('.markItUpFooter').css('display','').end()
				.find('.markItUpEditor').css('display','block').end()
				.find('.markItUpPreview').css('display','none');
		}
		}) ;	
}

var stack=[];

function SpipEditor2CKEditor(editor_id){
	if ($(editor_id).size()==0) {return;}
	$('#swapeditor_'+stack[editor_id].ndx)
		.attr('disabled',true)
		.attr('title',htmldecode('Chargement'))
		.find('img')
			.attr('src','http://www.ibcp.fr/plugins/ckeditor-spip-plugin/images/searching.gif');
	$(editor_id).attr('disabled',true);
	var EdConfig={};$.extend(EdConfig,CKEDITOR.ckConfig) ;
	EdConfig.toolbar='Spip'+stack[editor_id].tb;
	try { 
		var id = $(editor_id).attr('id') ;
		if (id) {
			var instance = CKEDITOR.instances[id] ;
			if (instance) {
				instance.destroy() ;
			}
		}
	} catch (E) { /* rien */ }
	try { 
	$(editor_id).ckeditor(function(){
		HideSpipUI(editor_id);
		stack[editor_id].n='#'+this.container.getId();
		stack[editor_id].editor=this.name ;

		
	
		var parent_ids = [ '.cadre-formulaire-editer', '.formulaire_crayon', '.cadre-formulaire', '.formulaire_spip', '#contenu' ] ;
		var pc=0,parent_trouve=false ;
		do {
			stack[editor_id].parent_id = parent_ids[pc++] ;
			if ($(stack[editor_id].parent_id).length>0) {
				parent_trouve=true ;
				stack[editor_id].marges=$(editor_id).parents(stack[editor_id].parent_id).width()-$(stack[editor_id].n).width() ;
			}
		} while ((pc<parent_ids.length) && (!parent_trouve)) ;
		

		if (parent_trouve) {
			this.on('resize', function(e) {
				$(editor_id).parents(stack[editor_id].parent_id).width($(stack[editor_id].n).width()+stack[editor_id].marges);
			});
		}
		contexteChange(editor_id);
		$(editor_id).attr('disabled',false);
		$('#swapeditor_'+stack[editor_id].ndx)
			.attr('title',htmldecode('Utiliser l&#39;éditeur de SPIP'))
			.find('img')
				.attr('src','http://www.ibcp.fr/plugins/ckeditor-spip-plugin/images/ckeditor_spip.png') ;
		$('#swapeditor_'+stack[editor_id].ndx).attr('disabled',false);
		this.setReadOnly(false);
		this.on('dataReady', function(e){ 
			this.resize(CKEDITOR.ckConfig.minwidth,CKEDITOR.ckConfig.height);
		});
		$(editor_id).parents().find('input[class=submit]') 
			.attr('onclick', 'javacript:CKEditor2SpipEditor(\''+editor_id+'\');') ;
	},EdConfig);
	} catch (E) { /* rien */ }
}

function barrebouilles_editor(editor_id){ 

	if ($(editor_id).hasClass('inserer_barre_forum'))
		$(editor_id).barre_outils('forum');
	if ($(editor_id).hasClass('inserer_barre_edition'))
		$(editor_id).barre_outils('edition');
	if ($(editor_id).hasClass('inserer_previsualisation'))
		$(editor_id).barre_previsualisation();

	if ($(editor_id).hasClass('textarea_forum'))
		$(editor_id).barre_outils('forum');
	if($(editor_id).attr('name').match(/^(texte|\w+_texte)$/)) {
		if (!editor_id.match(/\b#formulaire_forum\b/)) {
			$(editor_id).barre_outils('edition').barre_previsualisation();
		}
		 
		else {
			$(editor_id).barre_outils('forum');
		}
	}
}

function CKEditor2SpipEditor(editor_id){
	if($(editor_id).size()==0){return;}
	$('#swapeditor_'+stack[editor_id].ndx)
		.attr('disabled',true)
		.attr('title',htmldecode('Chargement'))
		.find('img')
			.attr('src','http://www.ibcp.fr/plugins/ckeditor-spip-plugin/images/searching.gif');
	$(editor_id)
		.attr('disabled',true)
		.css('display','block')
		.ckeditorGet().destroy();
	ShowSpipUI(editor_id);
	$('#swapeditor_'+stack[editor_id].ndx)
		.attr('title',htmldecode('Utiliser CKEditor'))
		.find('img')
			.attr('src','http://www.ibcp.fr/plugins/ckeditor-spip-plugin/images/ckeditor.png')
		.end()
		.attr('disabled',false);
	$(editor_id)
		.attr('disabled',false);
}

function SwapEditor(editor_id){
	if($(editor_id).size()==0){return;}
	try{
		CKEditor2SpipEditor(editor_id);
	}catch(e){
		SpipEditor2CKEditor(editor_id);
	}
}

function contexteChange(editor_id){
	if($(editor_id).size()==0){return;}
	if($("#contexte_"+stack[editor_id].ndx).length){
		var contexte=$("#contexte_"+stack[editor_id].ndx).val().match(/^([\.#])(.*)$/);
		if(stack[editor_id].ctx){
			if(stack[editor_id].ctx[1]=="#"){
				$(stack[editor_id].n+' iframe').contents().find('body').attr('id','');
			}else{
				$(stack[editor_id].n+' iframe').contents().find('body').removeClass(stack[editor_id].ctx[2]);
			}
		}
		stack[editor_id].ctx=contexte;
		if(contexte){
			if(contexte[1]=="#"){
				$(stack[editor_id].n+' iframe').contents().find('body').attr('id', contexte[2]);
			}else{
				$(stack[editor_id].n+' iframe').contents().find('body').addClass(contexte[2]);
			}
		}
	}
}

function cke_crayon_submit(editor_id){
	if($(editor_id).size()==0){return;}
	try{
		$(editor_id).ckeditorGet().updateElement();
	}catch(e){ /* rien */ }
	$(this).parents('.formulaire_crayon').submit();
}

function fullInitCKEDITOR(editor_ids){
	if(!editor_ids)editor_ids=[["textarea[name=texte]","Full"]];
	CKEDITOR.ckConfig.on={
		'pluginsLoaded':function(ev){ckeDataProcessor=ev.editor.dataProcessor;ev.editor.dataProcessor=spipDataProcessor;}
	};
	if (!CKEDITOR.fullInitDone) {
		CKEDITOR.on('dialogDefinition',function(ev){
			var dialogName=ev.data.name,
				dialogDefinition=ev.data.definition;
			if(dialogName==='about'){
				var aboutTab=dialogDefinition.getContents('tab1');
				aboutTab.style='height:280px;';
				aboutTab.add({
					'type':'html',
					'html':'<div class="cke_about_container">Copyright &copy; 2009 <a style="text-decoration:underline;color:blue;cursor:pointer;" href="http://code.google.com/p/ckeditor-spip-plugin/">Plugin SPIP</a> - Frédéric Bonnaud, Mehdi Cherifi, Emmanuel Dreyfus</div>'
				});
			}
			var advTab=dialogDefinition.getContents('advanced');
			if(advTab){
				var advClasses=advTab.get('advCSSClasses');
				if(advClasses){
					advClasses['default']='spip';
				}
			}
		});
		for(var plugin in CKEDITOR.ckConfig.loadExtraPlugins){
			CKEDITOR.plugins.addExternal(plugin, CKEDITOR.ckConfig.loadExtraPlugins[plugin]);
		}
		CKEDITOR.fullInitDone=true;
	}
	for(var id in editor_ids){
		if (($(editor_ids[id][0]).length > 0) && ($(editor_ids[id][0]).css('display') != 'none')) { 
		try {
			$(editor_ids[id][0]).ckeditorGet() ;
		} catch(e) {
			var editor_id=editor_ids[id][0], editor_tb=editor_ids[id][1], crayon=editor_ids[id][2], editor_md5=editor_ids[id][3] ;
				
			var ndx=$('[id^=cke_cpt_]').size(),buttons='';
			while ($('[id=cke_cpt_'+ndx+']').size()>0) { ndx++ ; }
			if (typeof stack[editor_id] == 'undefined') {
				stack[editor_id] = {} ;
			}
			stack[editor_id].crayons = 0 ;
			stack[editor_id].ndx = ndx ;
			stack[editor_id].tb = editor_tb ;
			stack[editor_id].nobarre = ($(editor_id).hasClass('no_barre') || CKEDITOR.ckeditmode == 'spip') ;
			stack[editor_id].md5 = editor_md5 ;
			if (! stack[editor_id].nobarre)
				$(editor_id).addClass('no_barre');

			if ($('.after_'+editor_md5).length==0) {
				$(editor_id).after('<span id="cke_cpt_'+ndx+'" class="after_'+editor_md5+'"></span>');
	 
				if(CKEDITOR.version<CKEDITOR.ckpreferedversion){
					var pref='CKEditor version %1 est installé, ce plugin préférerait la version %2. Veuillez d&#39;abord désintaller la version actuelle.';
					$('#cke_cpt_'+ndx).prepend(
						'<div class="erreur_message">'+pref.replace(/%2/,CKEDITOR.ckpreferedversion).replace(/%1/,CKEDITOR.version)+'</div>'
					);
				}
	
			}
			
			if(CKEDITOR.ckeditmode!='ckeditor-exclu'){
				buttons=buttons +
					'<button style="margin:0;width:40px;height:24px;" type="button" id="swapeditor_'+ndx+'" onclick="javascript:SwapEditor(\''+editor_id+'\');" title="' 
					+htmldecode(CKEDITOR.ckeditmode=='spip'?'Utiliser CKEditor':'Utiliser l&#39;éditeur de SPIP') 
					+'"><img src="http://www.ibcp.fr/plugins/ckeditor-spip-plugin/images/ckeditor.png"/></button>';
			}

	
	;
			if(buttons && ($('.before_'+editor_md5).length == 0)) {
				var div ;
				var style = "width;100%;text-align:right;position:relative;top:-24px;height:0px;" ;
				if (crayon) {
					div = $('textarea.crayon-active').closest('.formulaire_crayon') ;
				} else {
					editor_id_light = editor_id.match(/^#\S*\s+(.*)$/) ;
					if (editor_id_light) {
						editor_id_light = editor_id_light[1] ;
					} else {
						editor_id_light = editor_id ;
					}

					div = $(editor_id_light).closest('.markItUpContainer') ;
					if (div.length == 0) { 
						div = $(editor_id).siblings('label:first') ;
						style = "width;100%;text-align:right;position:relative;top:-8px;height:0px;" ;
					}
					
				}
				if (div.length != 0) {
					div.prepend('<div id="cke_buttons_'+ndx+'" class="before_'+editor_md5+'" style="'+style+'"><a name="cke_buttons_ancre_'+ndx+'"></a>'+buttons+'</div>');
				}
			}
	
			if(crayon){
				$('#'+crayon+' .crayon-submit')
					.after('<button id="save" style=\'background:url("") no-repeat scroll left top transparent;\' onclick="javascript:return cke_crayon_submit(\''+editor_id+'\');" title="Enregistrer">Enregistrer</button>')
					.remove();
			}
			if(CKEDITOR.ckeditmode!='spip'){
				SpipEditor2CKEditor(editor_ids[id][0]) ;
			}
		}}
	}
}
