﻿/**
* freepaper_spip.js
* le 06/07/2008
*/

var m_freepaper_swfUrl="plugins/freepaper/swf/freepaper.0.5.0.swf";	//obligatoire : chemin et nom vers le fichier swf "freepaper.swf"
var m_freepaper_phpURL="plugins/freepaper/php/freepaper_spip.php";	//URL du script PHP freepaper.php


var freepaper = new Object();

freepaper.embedDoc = function(flashvars,params,attributes) {
	if (!params.width) {params.width=600;}
	if (!params.height) {params.height=800;}
	if (!attributes.altContentId) {attributes.altContentId="freepaper1";}
	attributes.id=attributes.altContentId+"_ready";
	var elem=document.getElementById(attributes.altContentId);
	elem.style.height=params.height+"px";
	elem.style.width=params.width+"px";
	var xhr = getXhr(); //On récupère un objet XMLHttpRequest, qui va permettre de communiquer avec le serveur
	if (!xhr) {
		throw new Error("Impossible d'ouvrir une communication xhr.");
	}
	//onreadystatechange est appelé par le script php lorsque l'objet xhr change d'état !
	xhr.onreadystatechange = function(){
		if(xhr.readyState == 4) {
			// On ne fait quelque chose que si on a tout reçu (code 4) et que le serveur est ok (code 200)
			//Quelque soit la réponse, on insère FreepapeR
			if (xhr.status == 200){
				if (attributes.trace==true) alert(xhr.responseText);
				var pos=xhr.responseText.lastIndexOf("TRYING WITH -> ");
				//s'il y a "TRYING WITH -> " il faut essayer d'ouvrir un fichier swf alternatif dans le dossier IMG/swf : on feinte le système
				if (pos>0) {
					var re= /IMG\/pdf/;
					flashvars.pdfURL=flashvars.pdfURL.replace(re,'IMG/swf');
				}
				freepaper.display(flashvars,params,attributes);
			// Error 404 : fichier non trouvé
			} else {
				var s="Ouverture de "+m_freepaper_phpURL+"\n";
				s+="Erreur: " + xhr.status + " " + xhr.statusText;
				alert(s); 
			}
		}
	}
	xhr.open("POST",m_freepaper_phpURL,true);
	// ne pas oublier ça pour le post
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send("docURL="+flashvars.pdfURL+"&callerURL="+document.URL);
}


freepaper.display= function(flashvars,params,attributes) {
	flashvars.swfURL=flashvars.pdfURL+".swf";
	flashvars.pdfURL=null;
	attributes.styleclass="freepaper";
	swfobject.embedSWF(m_freepaper_swfUrl, attributes.altContentId, params.width, params.height, "8.0.0",false, flashvars, params, attributes);
	setTimeout(freepaper.resetGetFlashPlayer_Proxy(attributes.altContentId),500);
}

freepaper.resetGetFlashPlayer_Proxy=function(altContentId) {
	return function() {
     	freepaper.resetGetFlashPlayer(altContentId);
   	}
}

freepaper.resetGetFlashPlayer=function(altContentId) {
	var elem=document.getElementById(altContentId);
	if (elem) {
		elem.style.backgroundImage="url(plugins/freepaper/images/empty.gif)";
		var elemImg=elem.getElementsByTagName("IMG")[0];
		elemImg.style.display="block";
		alert("Téléchargez le plugin Flash !");
	}
}


//Ajout de règles CSS
freepaper.addNewRule=function(selector,declaration,index) {
	if (document.styleSheets) {
		//FF
		if (document.styleSheets[0].cssRules) {
			document.styleSheets[0].insertRule(selector+"{"+declaration+";}",index); //ajout d'une nouvelle règle pour FF
		//IE
		} else if  (document.styleSheets[0].rules) {
			document.styleSheets[0].addRule(selector, declaration,index); //ajout d'un enouvelle règle pour IE
		}
	}
}


//Pour pouvoir utiliser AJAX, il nous faut créer en javascript un objet que l'on nomme XmlHttpRequest 
//sa création est différente suivant que l'on est avec FF ou IE
function getXhr(){
	var xhr = null; 
	if(window.XMLHttpRequest) // Firefox et autres
		xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject){ // Internet Explorer 
		try {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	else { // XMLHttpRequest non supporté par le navigateur 
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
		xhr = false; 
	} 
	return xhr
}