var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) ? true : false;

dojo.addOnLoad(function(){
	if(dojo.byId("debug"))
		dojo.style("debug","left",dojo.coords("debug").l+"px");
	if(dojo.byId("osf_loading"))
		dojo.fadeOut({ node: "osf_loading",duration:1000}).play();
	if(dojo.byId("webapp"))
		dojo.fadeIn({ node: "webapp",duration:1000}).play();
});

var ajax = null;
var keylist="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789";
	
function generateKey(length){
	var temp = '';
	for (i=0;i<length;i++)
		temp+=keylist.charAt(Math.floor(Math.random()*keylist.length));
	return temp;
}

function checkSameValue(value,constraints){
	var other = null;
	if(constraints && constraints.other && (other=dojo.byId(constraints.other)))
		return (value == other.value);
	return false;	
}

function checkCombo(combo,id) {
	if(combo.item == null)
		combo.attr("value","");
	else{
		var item = dojo.byId(id);
		if(item != null)
			item.value = combo.item.value;
	}
}

function slide(opt){
	var args = {node: opt.id, top:(dojo.coords(opt.id).t + opt.top).toString(), left:(dojo.coords(opt.id).l + opt.left).toString(), unit:"px"};
	return dojo.fx.slideTo(args);
}

function confirmSubmit(form){
	if(!form.validate())
		return false;
	return true;
}

function Toogle(id){
	var item = null;
    if (document.getElementById) {
		item = document.getElementById(id);
    } 
	else if (document.all){
        item = document.all[id];
    } 
	else if (document.layers){
		item = document.layers[id];
	}
	if (!item) {
    }
    else if (item.style) {
	    if (item.style.display == "none") {
			item.style.display = ""; 
		}
	    else {
			item.style.display = "none";
		}
    }
	else {
		item.visibility = "show"; 
	}
}

function toggleCss(id,liste,selected,style1,style2) {
	if(!dojo.hasClass(id+selected,style2))
	{
		for(var l in liste){
			if(dojo.hasClass(id+liste[l],style2))
				dojo.toggleClass(id+liste[l],style2);
			if(!dojo.hasClass(id+liste[l],style1))
				dojo.toggleClass(id+liste[l],style1);
		}
		dojo.toggleClass(id+selected,style1);
		dojo.toggleClass(id+selected,style2);
	}
}

function Location(url){
	document.location = url;
}

function Scroll(opt){
	window.scrollTo(0,0);
}

function setValue(opt){
	dojo.byId(opt.id).value = opt.value;
}

function Remove(id){
	var item = 	dojo.byId(id);
	if(item)
		item.parentNode.removeChild(item);
}

function Wipe(opt){
	var fx = dojo.fx.wipeOut({node: opt.id});
	dojo.connect(fx,"onEnd",function(){
		fx = dojo.fx.wipeIn({node: opt.id});
		if(opt.html)
			dojo.byId(opt.id).innerHTML = opt.html;
		dojo.parser.parse(opt.id);
		fx.play();
	});
	fx.play();
}

function WipeOut(opt){
	var fx = dojo.fx.wipeOut({node: opt.id});
	fx.play();
}

function ShowHide(id){
	var item = null;
    if (document.getElementById) {
		item = document.getElementById(id);
    } 
	else if (document.all){
        item = document.all[id];
    } 
	else if (document.layers){
		item = document.layers[id];
	}
	if (!item) {
    }
    else if (item.style) {
	    if (item.style.display == "none") {
			item.style.display = ""; 
		}
	    else {
			item.style.display = "none";
		}
    }
	else {
		item.visibility = "show"; 
	}
}

/* Fonction affichage */
function Show(id)
{
	var item = null;
    if (document.getElementById) 
    	item = document.getElementById(id);
    else if (document.all)
	    item = document.all[id];
    else if (document.layers)
		item = document.layers[id];
	if (item != null) 
		item.style.display = "";
}

/* Fonction affichage */
function Hide(id)
{
	var item = null;
    if (document.getElementById) 
    	item = document.getElementById(id);
    else if (document.all)
	    item = document.all[id];
    else if (document.layers)
		item = document.layers[id];
	if (item != null) 
		item.style.display = "none";
}

function show(opt){
	dijit.byId(opt).show();
}

function hide(opt){
	dijit.byId(opt).hide();
}

function OsfAjax(opt){
	if(ajax == null)
	{
		var xhr = {
    		url: opt.url,
    		form: (opt.form ? opt.form : null),
    		content: (opt.content ? opt.content : null),
    		handleas: "json",
    		timeout: 10000,
            load: function(data,args){
				data = dojo.fromJson(data);
				if(data.debug)
				{
					var node = dojo.byId("debug");
					if(node){
						node.innerHTML = data.debug;
						dojo.parser.parse("debug");
					}
				}
    			for(var cpt=0; cpt < data.actions.length; cpt++)
				{
					if(data.actions[cpt].type == "innerHTML")
					{
						var node = dojo.byId(data.actions[cpt].id);
						if(node){
							node.innerHTML = data.actions[cpt].html;
							dojo.parser.parse(data.actions[cpt].id);
						}
					}
					else if(data.actions[cpt].type == "setValue")
					{
						var node = dojo.byId(data.actions[cpt].id);
						if(node){
							node.value = data.actions[cpt].value;
							dojo.parser.parse(data.actions[cpt].id);
						}
					}
					else if(data.actions[cpt].type == "execute")
					{
						if(data.actions[cpt].fonction != "")
						{
							var fnc = dojo.hitch(null,data.actions[cpt].fonction);
							if(dojo.isFunction(fnc))
								fnc(data.actions[cpt].args);
						}
					}	
				}
				ajax = null;
			},
			error: function(data){
				alert("Le serveur n'est pas disponible..."+data);
    			ajax = null;
			}
		};
    	ajax = dojo.xhrPost(xhr);
    }
	return ajax;
}

/* Rcode, fonctions smileys */
function OsfSmileys(id,img) 
{
	var oField = document.getElementById(id);
	if (isMozilla) 
	{
		objectValue = oField.value;
		objectValueDeb = objectValue.substring( 0 , oField.selectionStart );
		objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );
		objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );

		var texte = objectValueDeb + img;
		oField.value= texte + objectValueFin;
		oField.selectionStart = objectValueDeb.length;
		oField.selectionEnd = oField.value.length;
		oField.focus();
		oField.setSelectionRange(texte.length,texte.length);
	}
	else
	{
		var str = document.selection.createRange().text;
		if (str.length>0)
		{
			var sel = document.selection.createRange();
			sel.text = img + str;
			sel.collapse();
			sel.select();
		}
		else
		{
			oField.focus(oField.caretPos);
			oField.focus(oField.value.length);
			oField.caretPos = document.selection.createRange().duplicate();
			
			var bidon = "%~%";
			var orig = oField.value;
			oField.caretPos.text = bidon;
			var i = oField.value.search(bidon);
			
			oField.value = orig.substr(0,i) + img + orig.substr(i, oField.value.length);
			
			var r = 0;
			for(n = 0; n < i; n++)
			{if(regexp.test(oField.value.substr(n,2)) == true){r++;}};
			pos = i + 2 + selec.length - r;
			var r = oField.createTextRange();
			r.moveStart('character', pos);
			r.collapse();
			r.select();
		}
	}
}

/* Rcode, fonctions format */
function OsfRcode(id,selec)
{
	var oField = document.getElementById(id);
	if (isMozilla) 
	{
		objectValue = oField.value;

		deb = oField.selectionStart;
		fin = oField.selectionEnd;

		objectValueDeb = objectValue.substring( 0 , oField.selectionStart );
		objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );
		objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );

		
		if(deb != fin)
		{	
			if(selec == "lien")
				tmp = objectValueDeb + "<lien='http://MON-SITE.COM'>" + objectSelected + "</lien>";
			else
				tmp = objectValueDeb + "<" + selec + ">" + objectSelected + "</" + selec + ">";
			
		}
		else
		{
			if(selec == "lien")
				tmp = objectValueDeb + "<lien='http://MON-SITE.COM'>TEXTE</lien>";
			else if(selec == "image")
				tmp = objectValueDeb + "<image>http://MON-SITE.COM/MON-IMAGE.jpg</image>";
			else
				tmp = objectValueDeb + "<" + selec + ">" + objectSelected + "</" + selec + ">";
		}
		oField.value= tmp + objectValueFin;
		oField.selectionStart = objectValueDeb.length;
		oField.selectionEnd = tmp.length;
		oField.focus();
		oField.setSelectionRange(objectValueDeb.length + selec.length + 2,objectValueDeb.length + selec.length + 2);
	}
	else
	{
		var str = document.selection.createRange().text;

		if (str.length>0)
		{
		// Si on a selectionné du texte
			var sel = document.selection.createRange();
			if(selec == "lien")
				sel.text = "<lien='http://monsite'>" + str + "</lien>";
			else
				sel.text = "<" + selec + ">" + str + "</" + selec + ">";
			sel.collapse();
			sel.select();
		}
		else
		{
			oField.focus(oField.caretPos);
		//	alert(oField.caretPos+"\n"+oField.value.length+"\n")
			oField.focus(oField.value.length);
			oField.caretPos = document.selection.createRange().duplicate();
			
			var bidon = "%~%";
			var orig = oField.value;
			oField.caretPos.text = bidon;
			var i = oField.value.search(bidon);
			
			if(selec == "lien")
				oField.value = orig.substr(0,i) + "<lien='http://monsite'>montitre</lien>" + orig.substr(i, oField.value.length);
			else if(selec == "image")
				oField.value = orig.substr(0,i) + "<image>http://monsite/monimage.jpg</image>" + orig.substr(i, oField.value.length);
			else
				oField.value = orig.substr(0,i) + "<" + selec + "></" + selec + ">" + orig.substr(i, oField.value.length);
			
			var r = 0;
			for(n = 0; n < i; n++)
			{if(regexp.test(oField.value.substr(n,2)) == true){r++;}};
			pos = i + 2 + selec.length - r;
			//placer(document.forms['redaction'].elements['contenu'], pos);
			var r = oField.createTextRange();
			r.moveStart('character', pos);
			r.collapse();
			r.select();

		}
	}
}

var textarea;
var content;

function doImage(obj)
{
textarea = document.getElementById(obj);
var url = prompt('Enter the Image URL:','http://');
var scrollTop = textarea.scrollTop;
var scrollLeft = textarea.scrollLeft;

if (url != '' && url != null) {

	if (document.selection) 
			{
				textarea.focus();
				var sel = document.selection.createRange();
				sel.text = '[img]' + url + '[/img]';
			}
   else 
    {
		var len = textarea.value.length;
	    var start = textarea.selectionStart;
		var end = textarea.selectionEnd;
		
        var sel = textarea.value.substring(start, end);
	    //alert(sel);
		var rep = '[img]' + url + '[/img]';
        textarea.value =  textarea.value.substring(0,start) + rep + textarea.value.substring(end,len);
		
			
		textarea.scrollTop = scrollTop;
		textarea.scrollLeft = scrollLeft;
	}
}

}

function doURL(obj){
	textarea = document.getElementById(obj);
	var url = prompt('Enter the URL:','http://');
	var scrollTop = textarea.scrollTop;
	var scrollLeft = textarea.scrollLeft;

	if (url != '' && url != null){
		if (document.selection){
			textarea.focus();
			var sel = document.selection.createRange();
			if(sel.text=="")
				sel.text = '[url]'  + url + '[/url]';
			else
				sel.text = '[url=' + url + ']' + sel.text + '[/url]';
			
			//alert(sel.text);
		} else {
			var len = textarea.value.length;
			var start = textarea.selectionStart;
			var end = textarea.selectionEnd;
			var sel = textarea.value.substring(start, end);
			
			if(sel=="")
				var rep = '[url]' + url + '[/url]';
			else
				var rep = '[url=' + url + ']' + sel + '[/url]';
			//alert(sel);
			
			textarea.value =  textarea.value.substring(0,start) + rep + textarea.value.substring(end,len);
			textarea.scrollTop = scrollTop;
			textarea.scrollLeft = scrollLeft;
		}
	}
}

function doEmail(obj){
	textarea = document.getElementById(obj);
	var url = prompt('Enter the email:','test@test.com');
	var scrollTop = textarea.scrollTop;
	var scrollLeft = textarea.scrollLeft;

	if (url != '' && url != null){
		if (document.selection){
			textarea.focus();
			var sel = document.selection.createRange();
			if(sel.text=="")
				sel.text = '[email]'  + url + '[/email]';
			else
				sel.text = '[email=' + url + ']' + sel.text + '[/email]';
			
			//alert(sel.text);
		} else {
			var len = textarea.value.length;
			var start = textarea.selectionStart;
			var end = textarea.selectionEnd;
			var sel = textarea.value.substring(start, end);
			
			if(sel=="")
				var rep = '[email]' + url + '[/email]';
			else
				var rep = '[email=' + url + ']' + sel + '[/email]';
			//alert(sel);
			
			textarea.value =  textarea.value.substring(0,start) + rep + textarea.value.substring(end,len);
			textarea.scrollTop = scrollTop;
			textarea.scrollLeft = scrollLeft;
		}
	}
}

function doAddTags(tag1,tag2,obj)
{
textarea = document.getElementById(obj);
	// Code for IE
		if (document.selection) 
			{
				textarea.focus();
				var sel = document.selection.createRange();
				//alert(sel.text);
				sel.text = tag1 + sel.text + tag2;
			}
   else 
    {  // Code for Mozilla Firefox
		var len = textarea.value.length;
	    var start = textarea.selectionStart;
		var end = textarea.selectionEnd;
		
		
		var scrollTop = textarea.scrollTop;
		var scrollLeft = textarea.scrollLeft;

		
        var sel = textarea.value.substring(start, end);
	    //alert(sel);
		var rep = tag1 + sel + tag2;
        textarea.value =  textarea.value.substring(0,start) + rep + textarea.value.substring(end,len);
		
		textarea.scrollTop = scrollTop;
		textarea.scrollLeft = scrollLeft;
		
		
	}
}

function doList(tag1,tag2,obj){
	textarea = document.getElementById(obj);
	if (document.selection) { // Code for IE
		textarea.focus();
		var sel = document.selection.createRange();
		var list = sel.text.split('\n');
		
		for(i=0;i<list.length;i++) 
			list[i] = '[*]' + list[i];
		//alert(list.join("\n"));
		sel.text = tag1 + '\n' + list.join("\n") + '\n' + tag2;
	} else { // Code for Firefox
		var len = textarea.value.length;
		var start = textarea.selectionStart;
		var end = textarea.selectionEnd;
		var i;
		
		var scrollTop = textarea.scrollTop;
		var scrollLeft = textarea.scrollLeft;
		
		var sel = textarea.value.substring(start, end);
		//alert(sel);
		
		var list = sel.split('\n');
		
		for(i=0;i<list.length;i++) 
			list[i] = '[*]' + list[i];
		//alert(list.join("<br>"));
		
		
		var rep = tag1 + '\n' + list.join("\n") + '\n' +tag2;
		textarea.value =  textarea.value.substring(0,start) + rep + textarea.value.substring(end,len);
		textarea.scrollTop = scrollTop;
		textarea.scrollLeft = scrollLeft;
	}
}