dojo.require("dijit.Editor");
dojo.require("dojox.image.LightboxNano");
dojo.require("dijit.form.Button"); 
dojo.require("dijit.Menu");
	
dojo.addOnLoad(function() {

	
	//set links to api
	/*dojo.query("#main .content p").forEach(function(node) {
		node.innerHTML=node.innerHTML.replace(/dojox\.([a-zA-Z_.]+)/g,'<a href="http://api.dojotoolkit.org/jsdoc/dojox/HEAD/dojox>><<$1" target="_blank">dojox $1</a>');
		node.innerHTML=node.innerHTML.replace(/dijit\.([a-zA-Z_.]+)/g,'<a href="http://api.dojotoolkit.org/jsdoc/dijit/HEAD/dijit>><<$1" target="_blank">dijit $1</a>');
		node.innerHTML=node.innerHTML.replace(/dojo\.([a-zA-Z_.]+)/g,'<a href="http://api.dojotoolkit.org/jsdoc/dojo/HEAD/dojo>><<$1" target="_blank">dojo $1</a>');
	});*/
	dojo.query("#main .content em").forEach(function(node) {

		if (dojo.query("textarea",node).length>0) continue;
		node.innerHTML=node.innerHTML.replace(/dojox\.([a-zA-Z_.]+)/g,'<a href="http://api.dojotoolkit.org/jsdoc/dojox/HEAD/dojox.$1" target="_blank">dojox.$1</a>');
		node.innerHTML=node.innerHTML.replace(/dijit\.([a-zA-Z_.]+)/g,'<a href="http://api.dojotoolkit.org/jsdoc/dijit/HEAD/dijit.$1" target="_blank">dijit.$1</a>');
		node.innerHTML=node.innerHTML.replace(/dojo\.([a-zA-Z_.]+)/g,'<a href="http://api.dojotoolkit.org/jsdoc/dojo/HEAD/dojo.$1" target="_blank">dojo.$1</a>');
		
	});
	//set ligboxbox
	dojo.query("#main .content img").forEach(function(node) {
		new dojox.image.LightboxNano({href:node.src, src:node.src},node);
		
		dojo.style(node.parentNode,"display","");
	});
	
	//some nice feature really dislike IE !
	if (dojo.isIE) return;
	
	//set drop down button
	var btns=[];
	dojo.query("#sidebar .block").forEach(function(node) {
		if (dojo.query("ul.menu li a",node).length>0) {
			btns.push(node);
		}
	});
	dojo.forEach(btns,function(btn) {
		dojo.query("ul.menu li",btn).forEach(function(node) {
			var a=dojo.query("a",node)[0];
			new dijit.MenuItem({href:a.href, label:a.innerHTML},node);
		});
		dojo.query("ul.menu",btn).forEach(function(node) {
			x= new dijit.Menu({
				onItemClick:function(menu) {
					document.location.href=menu.href;
				}
			},node);
		});
		
		new dijit.form.DropDownButton({dropDown:x},btn);
	});
	if (dojo.query("#sidebar .block").length==0) {
		dojo.style(dojo.byId("main"),"width","auto");
		dojo.style(dojo.byId("sidebar-wrapper"),{
			"marginTop":"-26px",
			"paddingRight":"8px",
			"width":"auto"
		});
	}

	var editors=[];
	var modeHtml=false;
	
	var resizableTextArea=dojo.query("textarea.resizable");
	
	if (resizableTextArea.length>0) {
		
		var div=dojo.doc.createElement("div");
		div.className="modeRichText";
		var input=dojo.doc.createElement("input");
		input.type="button";
		input.modeHtmlLabel="Mode texte riche";
		input.modePlainLabel="Mode texte simple";
		input.setLabel=function() {
			this.value=this["mode"+(!modeHtml?"Html":"Plain")+"Label"];
		};
		input.setLabel();
		dojo.connect(input,"onclick",input,function() {
			modeHtml = !modeHtml;
			input.setLabel();
			
			if (editors.length==0)
				createEditors()
			
			setMode();
		});
		div.appendChild(input);
		
		dojo.place(div,dojo.query(".body-field-wrapper")[0],"first");
	}
	
	createEditors=function() {
		dojo.query(".resizable-textarea").forEach(function(node) {
			var txtArea=node;
			var x=new dijit.Editor({
				copyToNode:txtArea,
				refToNode:node,
				value:txtArea.value,
				copyValue:function() {
					if (!modeHtml)
						this.copyToNode.value=this.getValue(true).replace(/&quot;/g,'"');
					else
						this.setValue(this.copyToNode.value);
				}
			});
			editors.push(x);
			dojo.place(x.domNode,node,"after");
			dojo.style(node,"display","none");
		});
		
		dojo.query("form").forEach(function(node) {
			dojo.connect(node, 'onsubmit', submitValues);
		});
	};

	
	setMode=function() {
		setValues();
		dojo.forEach(editors,function(editor){
			editor.copyValue();
			dojo.style(editor.refToNode,"display",(!modeHtml ?"":"none"));
			dojo.style(editor.domNode,"display",(modeHtml ?"":"none"));
		});
		var tCheck=dojo.query(".teaser-checkbox");
		if (tCheck.length>0)
			dojo.style(tCheck[0],"display",(!modeHtml?"":"none"));
	};
	setValues=function() {
		dojo.forEach(editors,function(editor){editor.copyValue();});
	};
	submitValues=function() {
		if (modeHtml) {
			modeHtml=false;
			setValues();
		}
	};
			
	createTOC=function(/*Object*/args) {
		var def={
			rootNode:dojo.body(),
			classToIgnore:[],
			position:"before",
			appendNode:dojo.body(),
			"class":"toc",
			query:"h1,h2",
			stripHtml:true
		};
		dojo.mixin(def,args);
		var hasTitle=false;
		var toc=dojo.create("ul", {"class":def["class"]});
		dojo.query(def.query, def.rootNode).sort(function (a,b) {
			if (a.sourceIndex){
				return a.sourceIndex - b.sourceIndex;
			}else if (a.compareDocumentPosition){
				return 3 - (a.compareDocumentPosition(b) & 6);
			}else{
				return 0;
			}
		}).forEach(function(node,index){
			for (var i in def.classToIgnore) {
				if (dojo.hasClass(node,def.classToIgnore[i])) {
					return;
				}
			}
			var content = node.innerHTML;
			hasTitle=true;
			node.innerHTML="";
			(toc.appendChild(dojo.create("li",{
					"class":node.tagName.toLowerCase()
				}))).appendChild(
					dojo.create("a",{
						innerHTML:(!def.stripHtml?content:content.replace(/(<([^>]+)>)/ig,"")),
						href:"#title"+index,
						"class":node.tagName.toLowerCase()
					})
			);
			node.appendChild(
				dojo.create("a",{
					innerHTML:content,
					name:"title"+index
				})
			);
		});
		if (!hasTitle) {
			dojo.destroy(toc);
			return false;
		}
		dojo.place(toc,def.appendNode,def.position);
		return toc;
	};
	if (dojo.query(".scoopeo").length>0) {
		createTOC({
			rootNode:dojo.byId("main"),
			classToIgnore:["page-title"],
			position:"before",
			appendNode:dojo.query("#main .content")[0]
		});
	}
});