//Fonction raccourci
function $(id){return document.getElementById(id);}
//un peu d'ajax
function ajax(file){if(window.XMLHttpRequest)ajxl_object=new XMLHttpRequest();else if(window.ActiveXObject)ajxl_object=new ActiveXObject("Microsoft.XMLHTTP");else return(false);ajxl_object.open("GET", file, false);ajxl_object.send(null);if(ajxl_object.readyState==4)return(ajxl_object.responseText);else return(false);}

//Si la configuration du BM est ok, on previsualise celui-ci.
function bmOk(){
	var bm_name = $("bm-name").value;
	var bm_code = $("bm-code").value;
	if(bm_name != '' && bm_name != 'Titre du Bookmarklet' && bm_code != '' && bm_code != 'Code du Bookmarklet'){
		if($("bm-preview-a"))
			$("bm-preview-a").parentNode.removeChild($("bm-preview-a"));
		var txt = document.createTextNode(bm_name);
		var newA = document.createElement('a');
		newA.href = "javascript:" + bm_code;
		newA.title = bm_name;
		newA.id = "bm-preview-a";
		newA.appendChild(txt);
		$("bm-preview").appendChild(newA);
		openDiv(newA.id);
	}
	else if($("bm-preview-a"))
		closeDiv("bm-preview-a");
}

function proposer(){
	var bm_name = $("bm-name").value;
	var bm_code = $("bm-code").value;
	var bm_tag = $("bm-tag").value;
	var bm_description = $("bm-description").value;
	var bm_site_title = $("bm-site-title").value;
	var bm_site_url = $("bm-site-url").value;
	
	if(bm_name == '' || bm_name == 'Titre du Bookmarklet')
		errorProp("Veuillez renseigner le titre de votre bookmarklet.", "bm-name")
	else if(bm_code == '' || bm_code == 'Code du Bookmarklet')
		errorProp("Veuillez renseigner le code à executer par votre bookmarklet.", "bm-code")
	else if(bm_tag == '' || bm_tag == 'Tag(s)')
		errorProp("Veuillez renseigner au moins un tag.", "bm-tag")
	else if(bm_description == '' || bm_description == 'Description')
		errorProp("Veuillez renseigner une description pour votre bookmarklet.", "bm-description")
	else{
		var code = str_replace("+", "%2B", escape(bm_code));
		var retour = ajax("http://www.bookmarklet.fr/functions.php?act=proposition&name="+escape(bm_name)+"&code="+code+"&tag="+escape(bm_tag)+"&description="+escape(bm_description)+"&site_title="+escape(bm_site_title)+"&site_url="+escape(bm_site_url))
		if(retour == '')
			okProp();
		else
			errorProp("Une erreure est survenue pendant l'enregistrement, merci de bien vouloir réessayer.")
	}
}

function errorProp(msg, id){
	if($("bm-prop-msg-p"))
			$("bm-prop-msg-p").parentNode.removeChild($("bm-prop-msg-p"));
	var txt = document.createTextNode(msg);
	var newP = document.createElement('p');
	newP.id = "bm-prop-msg-p";
	newP.className = "error";
	newP.appendChild(txt);
	$("bm-prop-msg").appendChild(newP);
	openDiv(newP.id);
	if(id != undefined){
		$(id).focus();
	}
}

function okProp(){
	$("bm-name").disabled = "true";
	$("bm-code").disabled = "true";
	$("bm-tag").disabled = "true";
	$("bm-description").disabled = "true";
	$("bm-site-title").disabled = "true";
	$("bm-site-url").disabled = "true";
	$("form-submit").value = "Bookmarklet Proposé!";
	$("form-submit").disabled = "true";
	if($("bm-prop-msg-p"))
			$("bm-prop-msg-p").parentNode.removeChild($("bm-prop-msg-p"));
	var txt = document.createTextNode("Merci, le Bookmarklet nous a correctement été transmis. Si celui-ci est correct vous le retrouverez d'ici peu dans notre annuaire.");
	var newP = document.createElement('p');
	newP.id = "bm-prop-msg-p";
	newP.className = "success";
	newP.appendChild(txt);
	$("bm-prop-msg").appendChild(newP);
	openDiv(newP.id);
	
}

function bmValid(){
	var bm_id = $("bm-id").value;
	var bm_name = $("bm-name").value;
	var bm_code = $("bm-code").value;
	var bm_tag = $("bm-tag").value;
	var bm_description = $("bm-description").value;
	var bm_site_title = $("bm-site-title").value;
	var bm_site_url = $("bm-site-url").value;
	var code = str_replace("+", "%2B", escape(bm_code));
	var retour = ajax("http://www.bookmarklet.fr/functions.php?act=validation&id="+escape(bm_id)+"&name="+escape(bm_name)+"&code="+code+"&tag="+escape(bm_tag)+"&description="+escape(bm_description)+"&site_title="+escape(bm_site_title)+"&site_url="+escape(bm_site_url))
	if(retour == '')
		window.location.reload();
			
}

function bmNotOk(id){
	var retour = ajax("http://www.bookmarklet.fr/functions.php?act=suppression&id="+escape(id));
	if(retour == '')
		window.location.reload();
}

function closeDiv(id){
	var elm = $(id);
	var divH = elm.offsetHeight;
	elm.style.display = "block";
	elm.style.overflow = "hidden";
	elm.style.margin = "0px";
	elm.style.height = divH + "px";
	for(var i = 0; i <= divH; i++){
		window.setTimeout("$('"+id+"').style.height='" + (divH - i) + "px';", (i * 10));
		var opc = divH/i;
		window.setTimeout("opChng('" + id + "', '" + opc + "')", (i * 100));
		if(i == divH){
			window.setTimeout("$('"+id+"').style.display='none';", (i * 50));
			window.setTimeout("$('"+id+"').style.height='" + (divH) + "px';", (i * 50))
		}
	}
}

function openDiv(id){
	var elm = $(id);
	elm.style.display = "block";
	var divH = elm.offsetHeight;
	elm.style.height = "0px";
	elm.style.overflow = "hidden";
	for(var i = 0; i <= divH; i++){
		window.setTimeout("$('"+id+"').style.height='" + i + "px';", (i * 10));
		var opc = i/divH;
		window.setTimeout("opChng('" + id + "', '" + (opc * 100) + "')", (i * 20));
	}
}


function opChng(id, opc){
	$(id).style.opacity=(opc/100);
	$(id).style.MozOpacity=(opc/100);
	$(id).style.KhtmlOpacity=(opc/100);
	$(id).style.filter="alpha(opacity=" + opc + ")";
}

function str_replace(search, replace, subject) {
    var s = subject;
    var ra = r instanceof Array, sa = s instanceof Array;
    var f = [].concat(search);
    var r = [].concat(replace);
    var i = (s = [].concat(s)).length;
    var j = 0;
    
    while (j = 0, i--) {
        if (s[i]) {
            while (s[i] = (s[i]+'').split(f[j]).join(ra ? r[j] || "" : r[0]), ++j in f){};
        }
    }
 
    return sa ? s : s[0];
}