
/* Merged Plone Javascript file
 * This file is dynamically assembled from separate parts.
 * Some of these parts have 3rd party licenses or copyright information attached
 * Such information is valid for that section,
 * not for the entire composite file
 * originating files are separated by ----- filename.js -----
 */

/* ----- SWFLoadClass.js ----- */
var swfu;

window.onload = function() {

	// Max settings
	swfu = new SWFUpload({
		upload_script : "SWFUpload_script",
		target : "SWFUploadTarget",
		flash_path : "SWFUpload.swf",
		allowed_filesize : 30720,	// 30 MB
		allowed_filetypes : "*.*",
		allowed_filetypes_description : "All files...",
		browse_link_innerhtml : "Browse",
		upload_link_innerhtml : "Upload queue",
		browse_link_class : "swfuploadbtn browsebtn",
		upload_link_class : "swfuploadbtn uploadbtn",
		flash_loaded_callback : 'swfu.flashLoaded',
		upload_file_queued_callback : "fileQueued",
		upload_file_start_callback : 'uploadFileStart',
		upload_progress_callback : 'uploadProgress',
		upload_file_complete_callback : 'uploadFileComplete',
		upload_file_cancel_callback : 'uploadFileCancelled',
		upload_queue_complete_callback : 'uploadQueueComplete',
		upload_error_callback : 'uploadError',
		upload_cancel_callback : 'uploadCancel',
		auto_upload : false
	});
	
}

/* ----- SWFCallbacks.js ----- */
function fileQueued(file, queuelength) {
	var listingfiles = document.getElementById("SWFUploadFileListingFiles");

	if(!listingfiles.getElementsByTagName("ul")[0]) {
		
		var info = document.createElement("h4");
		info.appendChild(document.createTextNode("File queue"));
		
		listingfiles.appendChild(info);
		
		var ul = document.createElement("ul")
		listingfiles.appendChild(ul);
	}
	
	listingfiles = listingfiles.getElementsByTagName("ul")[0];
	
	var li = document.createElement("li");
	li.id = file.id;
	li.className = "SWFUploadFileItem";
	li.innerHTML = file.name + " <span class='progressBar' id='" + file.id + "progress'></span><a id='" + file.id + "deletebtn' class='cancelbtn' href='javascript:swfu.cancelFile(\"" + file.id + "\");'><!-- IE --></a>";

	listingfiles.appendChild(li);
	
	var queueinfo = document.getElementById("queueinfo");
	queueinfo.innerHTML = queuelength + " files queued";
	document.getElementById(swfu.movieName + "UploadBtn").style.display = "block";
	document.getElementById("cancelqueuebtn").style.display = "block";
}

function uploadFileCancelled(file, queuelength) {
	var li = document.getElementById(file.id);
	li.innerHTML = file.name + " - cancelled";
	li.className = "SWFUploadFileItem uploadCancelled";
	var queueinfo = document.getElementById("queueinfo");
	queueinfo.innerHTML = queuelength + " files queued";
}

function uploadFileStart(file, position, queuelength) {
	var div = document.getElementById("queueinfo");
	div.innerHTML = "Uploading file " + position + " of " + queuelength;

	var li = document.getElementById(file.id);
	li.className += " fileUploading";
}

function uploadProgress(file, bytesLoaded) {

	var progress = document.getElementById(file.id + "progress");
	var percent = Math.ceil((bytesLoaded / file.size) * 200)
	progress.style.background = "#f0f0f0 url(progressbar.png) no-repeat -" + (200 - percent) + "px 0";
}

function uploadError(errno) {
	// SWFUpload.debug(errno);
}

function uploadFileComplete(file) {
	var li = document.getElementById(file.id);
	li.className = "SWFUploadFileItem uploadCompleted";
}

function cancelQueue() {
	swfu.cancelQueue();
	document.getElementById(swfu.movieName + "UploadBtn").style.display = "none";
	document.getElementById("cancelqueuebtn").style.display = "none";
}

function uploadQueueComplete(file) {
	var div = document.getElementById("queueinfo");
	div.innerHTML = "All files uploaded..."
	document.getElementById("cancelqueuebtn").style.display = "none";
}

/* ----- SWFUpload.js ----- */
function SWFUpload(settings){
  try {
    document.execCommand('BackgroundImageCache',false,true);
  }catch(e){}
  this.movieName="SWFUpload_"+SWFUpload.movieCount++;
  this.init(settings);
  this.loadFlash();
  if(this.debug)
    this.debugSettings();
}

SWFUpload.movieCount=0;
SWFUpload.handleErrors=function(errcode,file,msg){
  switch(errcode){
    case-10:
      alert("Error Code: HTTP Error, File name: "+file.name+", Message: "+msg);
      break;
    case-20:
      alert("Error Code: No upload script, File name: "+file.name+", Message: "+msg);
      break;
    case-30:
      alert("Error Code: IO Error, File name: "+file.name+", Message: "+msg);
      break;
    case-40:
      alert("Error Code: Security Error, File name: "+file.name+", Message: "+msg);
      break;
    case-50:
      alert("Error Code: Filesize exceeds limit, File name: "+file.name+", File size: "+file.size+", Message: "+msg);
      break;
      }
      };

SWFUpload.prototype.init=function(settings){
  this.settings=[];
  this.addSetting("debug",settings["debug"],false);
  this.addSetting("target",settings["target"],"");
  this.addSetting("create_ui",settings["create_ui"],false);
  this.addSetting("browse_link_class",settings["browse_link_class"],"SWFBrowseLink");
  this.addSetting("upload_link_class",settings["upload_link_class"],"SWFUploadLink");
  this.addSetting("browse_link_innerhtml",settings["browse_link_innerhtml"],"<span>Browse...</span>");
  this.addSetting("upload_link_innerhtml",settings["upload_link_innerhtml"],"<span>Upload</span>");
  this.addSetting("flash_loaded_callback",settings["flash_loaded_callback"],"SWFUpload.flashLoaded");
  this.addSetting("upload_file_queued_callback",settings["upload_file_queued_callback"],"");
  this.addSetting("upload_file_start_callback",settings["upload_file_start_callback"],"");
  this.addSetting("upload_file_complete_callback",settings["upload_file_complete_callback"],"");
  this.addSetting("upload_queue_complete_callback",settings["upload_queue_complete_callback"],"");
  this.addSetting("upload_progress_callback",settings["upload_progress_callback"],"");
  this.addSetting("upload_dialog_cancel_callback",settings["upload_dialog_cancel_callback"],"");
  this.addSetting("upload_file_error_callback",settings["upload_file_error_callback"],"SWFUpload.handleErrors");
  this.addSetting("upload_file_cancel_callback",settings["upload_file_cancel_callback"],"");
  this.addSetting("upload_queue_cancel_callback",settings["upload_queue_cancel_callback"],"");
  this.addSetting("upload_script",escape(settings["upload_script"],""));
  this.addSetting("auto_upload",settings["auto_upload"],false);
  this.addSetting("allowed_filetypes",settings["allowed_filetypes"],"*.*");
  this.addSetting("allowed_filetypes_description",settings["allowed_filetypes_description"],"All files");
  this.addSetting("allowed_filesize",settings["allowed_filesize"],1024);
  this.addSetting("flash_path",settings["flash_path"],"jscripts/SWFUpload/SWFUpload.swf");
  this.addSetting("flash_target",settings["flash_target"],"");
  this.addSetting("flash_width",settings["flash_width"],"1px");
  this.addSetting("flash_height",settings["flash_height"],"1px");
  this.addSetting("flash_color",settings["flash_color"],"#000000");
  this.debug=this.getSetting("debug");
};

SWFUpload.prototype.loadFlash=function(){
  var html="";var sb=new stringBuilder();
  if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){
    sb.append('<embed type="application/x-shockwave-flash" src="'+this.getSetting("flash_path")+'" width="'+this.getSetting("flash_width")+'" height="'+this.getSetting("flash_height")+'"');
    sb.append(' id="'+this.movieName+'" name="'+this.movieName+'" ');
    sb.append('bgcolor="'+this.getSetting["flash_color"]+'" quality="high" wmode="transparent" menu="false" flashvars="');
    sb.append(this._getFlashVars());sb.append('" />');
  }else{
    sb.append('<object id="'+this.movieName+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+this.getSetting("flash_width")+'" height="'+this.getSetting("flash_height")+'">');
    sb.append('<param name="movie" value="'+this.getSetting("flash_path")+'" />');
    sb.append('<param name="bgcolor" value="#000000" />');
    sb.append('<param name="quality" value="high" />');
    sb.append('<param name="wmode" value="transparent" />');
    sb.append('<param name="menu" value="false" />');
    sb.append('<param name="flashvars" value="'+this._getFlashVars()+'" />');
    sb.append('</object>');
  }
  var container=document.createElement("div");
  container.style.width="0px";container.style.height="0px";
  container.style.position="absolute";container.style.top="0px";
  container.style.left="0px";
  var target_element=document.getElementsByTagName("body")[0];
  if(typeof(target_element)=="undefined"||target_element==null)
    return false;
  var html=sb.toString();
  target_element.appendChild(container);
  container.innerHTML=html;
  this.movieElement=document.getElementById(this.movieName);
};

SWFUpload.prototype._getFlashVars=function(){
  var sb=new stringBuilder();
  sb.append("uploadScript="+this.getSetting("upload_script"));
  sb.append("&allowedFiletypesDescription="+this.getSetting("allowed_filetypes_description"))
  sb.append("&flashLoadedCallback="+this.getSetting("flash_loaded_callback"));
  sb.append("&uploadFileQueuedCallback="+this.getSetting("upload_file_queued_callback"));
  sb.append("&uploadFileStartCallback="+this.getSetting("upload_file_start_callback"));
  sb.append("&uploadProgressCallback="+this.getSetting("upload_progress_callback"));
  sb.append("&uploadFileCompleteCallback="+this.getSetting("upload_file_complete_callback"));
  sb.append("&uploadQueueCompleteCallback="+this.getSetting("upload_queue_complete_callback"));
  sb.append("&uploadDialogCancelCallback="+this.getSetting("upload_dialog_cancel_callback"));
  sb.append("&uploadFileErrorCallback="+this.getSetting("upload_file_error_callback"));
  sb.append("&uploadFileCancelCallback="+this.getSetting("upload_file_cancel_callback"));
  sb.append("&uploadQueueCompleteCallback="+this.getSetting("upload_queue_complete_callback"));
  sb.append("&autoUpload="+this.getSetting("auto_upload"));sb.append("&allowedFiletypes="+this.getSetting("allowed_filetypes"));
  sb.append("&maximumFilesize="+this.getSetting("allowed_filesize"));
  return sb.toString();
}

SWFUpload.prototype.flashLoaded=function(bool){
  this.loadUI();
  if(this.debug)
    SWFUpload.debug("Flash called home and is ready.");
};

SWFUpload.prototype.loadUI=function(){
  if(this.getSetting("target")!=""&&this.getSetting("target")!="fileinputs"){
    var instance=this;
    var target=document.getElementById(this.getSetting("target"));
    var browselink=document.createElement("a");
    browselink.className=this.getSetting("browse_link_class");
    browselink.id=this.movieName+"BrowseBtn";
    browselink.href="javascript:void(0);";
    browselink.onclick=function(){
      instance.browse();
      return false;
    }
    browselink.innerHTML=this.getSetting("browse_link_innerhtml");
    target.innerHTML="";
    target.appendChild(browselink);
    if(this.getSetting("auto_upload")==false){
      var uploadlink=document.createElement("a");
      uploadlink.className=this.getSetting("upload_link_class");
      uploadlink.id=this.movieName+"UploadBtn";
      uploadlink.href="#";uploadlink.onclick=function(){
        instance.upload();
        return false;
      }
      uploadlink.innerHTML=this.getSetting("upload_link_innerhtml");
      target.appendChild(uploadlink);
    }
  }
};

SWFUpload.debug=function(value){
  if(window.console)
    console.log(value);else
  alert(value);
}

SWFUpload.prototype.addSetting=function(name,value,default_value){
  return this.settings[name]=(typeof(value)=="undefined"||value==null)?default_value:value;
};

SWFUpload.prototype.getSetting=function(name){
  return(typeof(this.settings[name])=="undefined")?null:this.settings[name];
};

SWFUpload.prototype.browse=function(){
  this.movieElement.browse();
};

SWFUpload.prototype.upload=function(){
    this.movieElement.upload();
}

SWFUpload.prototype.cancelFile=function(file_id){
  this.movieElement.cancelFile(file_id);
};

SWFUpload.prototype.cancelQueue=function(){
  this.movieElement.cancelQueue();
};

SWFUpload.prototype.debugSettings=function(){
    var sb=new stringBuilder();
    sb.append("----- DEBUG SETTINGS START ----\n");
    sb.append("ID: "+this.movieElement.id+"\n");
    for(var key in this.settings)
      sb.append(key+": "+this.settings[key]+"\n");
    sb.append("----- DEBUG SETTINGS END ----\n");
    sb.append("\n");var res=sb.toString();
    SWFUpload.debug(res);
};
    
function stringBuilder(join){
  this._strings=new Array;
  this._join=(typeof join=="undefined")?"":join;
  stringBuilder.prototype.append=function(str){
    this._strings.push(str);
  };
  stringBuilder.prototype.toString=function(){
    return this._strings.join(this._join);
  };
};

/* ----- soldoc_ajax.js ----- */
/**
* Lister les documents de type BolsDoc avec un objet
* XMLHTTPRequest.
*/
/* Creation de la variable globale qui contiendra l'objet XHR */
var requete = null;
/**
* Fonction privee qui va creer un objet XHR.
* Cette fonction initialisera la valeur dans la variable globale definie
* ci-dessus.
*/

registerPloneFunction(initHttpService);

function initHttpService() {
http = createXHRObject();
}

function createXHRObject() {
var xhro = null;
if (window.XMLHttpRequest) requete = new XMLHttpRequest(); // Firefox
else if(window.ActiveXObject) requete = new ActiveXObject("Microsoft.XMLHTTP"); // IE

return requete;
}

/** ----------------------------------------------------------------------
* Rechercher les documents.
* Fonction publique appelee par la page affichee.
* Cette fonction va initialiser la creation de l'objet XHR puis appeler
* le code serveur afin de recuperer les donnees a modifier dans la page.
* ------------------------------------------------------------------------
*/
function soldoc_getDocuments(idr)
{

/* A cet endroit precis, on peut faire apparaitre un message d'attente */
var blocListe = document.getElementById('wait');
blocListe.innerHTML = '<img src="/documentationq1/byproduct/images/cm/wait.gif" height="100" width="100" border="0" alt="wait" />';

var blocListe = document.getElementById('BolsDoc');
blocListe.innerHTML = '<p class="textorange">Processing, please wait...</p>';

/* Definition du fichier de traitement */
/*var surl = 'soldoc_selectSearchMode?p='+ idr;*/
var surl = 'soldoc_popupList?k=' + idr;


/* Envoi de la requete a la page de traitement */
requete.open('GET', surl, true);
/* On surveille le changement d'etat de la requete qui va passer successivement de 1 a 4 */
requete.onreadystatechange = function()
{
/* Lorsque l'etat est a 4 */
if(requete.readyState == 4)
{
/* Si on a un statut a 200 */
if(requete.status == 200)
{
/* Mise a jour de l'affichage, on appelle la fonction appropriee */
soldoc_displayListDocuments(idr);
}
}
};
requete.send(null);
}

/** ----------------------------------------------------------------------
* Afficher les documents
* Fonction privee qui va mettre a jour l'affichage de la page.
* ------------------------------------------------------------------------
*/
function soldoc_displayListDocuments(idr)
{
/*var listeDocs = requete.responseText;*/

/*var blocListe = document.getElementById('BolsDoc');*/
/*blocListe.innerHTML = listeDocs;*/

/*var blocListe = document.getElementById('wait');*/
/*blocListe.innerHTML = '';*/


/*document.write(listeDocs);*/
/*document.close();*/

/*window.location = "http://localhost:8080/documentation/byproduct/soldoc_popupList?k=" + idr + "&fromsso=y";*/
window.location = "/documentationq1/byproduct/soldoc_popupList?k=" + idr + "&fromsso=y";
}


/** ----------------------------------------------------------------------
* Rechercher les sous-dossiers
* Fonction publique appelee par la page affichee.
* Cette fonction va initialiser la creation de l'objet XHR puis appeler
* le code serveur afin de recuperer les donnees a modifier dans la page.
* ------------------------------------------------------------------------
*/
function soldoc_getFolders(idr, numero)
{
var lebloc = 'bloc' + (numero+1);

for(var no = numero + 1 ; no < 10; no++) {
  var lbloc = 'bloc' + (no);
  document.getElementById(lbloc).innerHTML = '';
}


/* Si il n'y a pas d'identifiant de Folder, on fait disparaitre la seconde liste au cas ou elle serait affichee */
if(idr == 'vide')
{
document.getElementById(lebloc).innerHTML = '';
}
else
{
/* A cet endroit precis, on peut faire apparaitre un message d'attente */
var blocListe = document.getElementById(lebloc);
blocListe.innerHTML = '<img src="/documentationq1/byproduct/images/cm/wait-small.gif" />';


/* On cree l'objet XHR */
/* creerRequete();*/
/* Definition du fichier de traitement */
var url = 'soldoc_listFoldersHtml?p='+ idr + '&n=' + numero;
/* Envoi de la requete a la page de traitement */
requete.open('GET', url, true);
/* On surveille le changement d'etat de la requete qui va passer successivement de 1 a 4 */
requete.onreadystatechange = function()
{
/* Lorsque l'etat est a 4 */
if(requete.readyState == 4)
{
/* Si on a un statut a 200 */
if(requete.status == 200)
{
/* Mise a jour de l'affichage, on appelle la fonction appropriee */
soldoc_displayListFolders(idr, numero+1);
}
}
};
requete.send(null);
}
}



function gotoUrl(idr) {


  var blocListe1 = document.getElementById('wait');
  blocListe1.innerHTML = '<img src="/documentationq1/byproduct/images/cm/wait.gif" height="100" width="100" border="0" />';

  var blocListe2 = document.getElementById('BolsDoc');
  blocListe2.innerHTML = '<p class="textorange">Processing, please wait ...</p>';
  
  window.location.href="/documentationq1/byproduct/soldoc_popupList?k=" + idr + "&fromsso=y";
}

/** ----------------------------------------------------------------------
* Afficher les sous dossiers
* Fonction privee qui va mettre a jour l'affichage de la page.
* Liste dossier recue: 
* ------------------------------------------------------------------------
*/
function soldoc_displayListFolders(idr, numero)
{
var listeDossiers = requete.responseText;
var lebloc = 'bloc' + (numero);

var blocListe = document.getElementById(lebloc);
blocListe.innerHTML = listeDossiers;


/* On a sectionne 0 pour revenir en arriere sur une liste */
if ((idr) == '0' && numero > 2) {
  var lebloc = 'sel' + (numero -2);
  var bl = document.getElementById(lebloc).value;
  idr = bl;
}


/* Affichage moteur de recherche sous listes de dossiers */

/** -------------------------
* Pour de l'AJAX           
* ---------------------------
*/

var blocdocsearch = 'docsearch';
if (idr != '0') {
  document.getElementById(blocdocsearch ).innerHTML = '<a href="javascript:;" onClick="soldoc_getDocuments(\'' + idr + '\');"><img src="search_icon.gif" />Search user manuals</a>';
} else {
  document.getElementById(blocdocsearch ).innerHTML = '';
}

/** -------------------------
* Pour du HTML 
* ---------------------------
*/
/*document.getElementById(blocdocsearch ).innerHTML = '<a href="soldoc_popupList?k=' + idr + '"><img src="search_icon.gif" />Search user manuals</a>';*/

/*document.getElementById(blocdocsearch ).innerHTML = '<a href="javascript: gotoUrl(\'' + idr +'\');"><img src="search_icon.gif" />Search user manuals</a>';*/

}
