/* Harmen.CHRISTOPHE
 * classe qui étends YAHOO.util.DDProxy  V2.1.0
 * permetant de gérer le drag & drop dans le CMS 
 */
YAHOO.namespace("cms");

YAHOO.cms.DragDrop = function(id, sGroup) {
    if (!id) { return; }
    this.init(id, sGroup);
    this.setHandleElId("dragBar_"+id.replace("par",""));
    YAHOO.util.Dom.addClass(YAHOO.util.Dom.get("dragBar_"+id.replace("par","")),"dragBar");
    this.initFrame();
    this.offClass = "dragTargetOff";
    this.onClass = "dragTargetOn";
    this.els = [];
};

YAHOO.cms.DragDrop.prototype = new YAHOO.util.DDProxy();

YAHOO.cms.DragDrop.prototype.onDragDrop = function(e, id) {
	var ddTarget = YAHOO.util.DDM.getElement(id);
	switch (id) {
		case YAHOO.cms.DDApp.mdlContainer1Id:
		case YAHOO.cms.DDApp.parContainerId :
		case YAHOO.cms.DDApp.mdlContainer2Id:
			ddTarget.appendChild(this.getEl());
			break;
		default:
			ddTarget.parentNode.insertBefore(this.getEl(),ddTarget);
			break;
	}
};

YAHOO.cms.DragDrop.prototype.onDragEnter = function(e, id) {
	this.els[id] = true;
	var el = YAHOO.util.DDM.getElement(id);
	YAHOO.util.Dom.replaceClass(el, this.offClass, this.onClass);
};

YAHOO.cms.DragDrop.prototype.onDragOut = function(e, id) {
  var el = YAHOO.util.DDM.getElement(id);
  YAHOO.util.Dom.replaceClass(el, this.onClass, this.offClass);
};

YAHOO.cms.DragDrop.prototype.endDrag = function(e) {
  for (var i in this.els) {
      var el = YAHOO.util.DDM.getElement(i);
      if (el) {
      	YAHOO.util.Dom.replaceClass(el, this.onClass, this.offClass);
      }
  }
  YAHOO.cms.DDApp.makeRequest("cms_pseudo_DDApp.php?"+this.getQueryStrGroups()+"&id_source="+this.id.replace("par",""));
  this.updateMoveBars();
};



YAHOO.cms.DragDrop.prototype.getQueryStrGroups = function() {
	var mdlContainer1Id = YAHOO.cms.DDApp.mdlContainer1Id;
	var mdlContainer2Id = YAHOO.cms.DDApp.mdlContainer2Id;
	var parContainerId = YAHOO.cms.DDApp.parContainerId;
  var groupsNodes = {};
  for (group in this.groups) {
  	switch(group) {
  		case "modules":
				groupsNodes[mdlContainer1Id] = YAHOO.util.Dom.getElementsByClassName("edition",null,document.getElementById(mdlContainer1Id));
				groupsNodes[mdlContainer2Id] = YAHOO.util.Dom.getElementsByClassName("edition",null,document.getElementById(mdlContainer2Id));
  			break;
  		case "paragraphes":
				groupsNodes[parContainerId] = YAHOO.util.Dom.getElementsByClassName("edition",null,document.getElementById(parContainerId));
  			break;
  	}
  }
  var sQueryStrGroups = "";
  var varName, varValue;
  for (groupName in groupsNodes) {
  	varName = groupName.replace(mdlContainer1Id,'PAR_LEFT');
  	varName = varName.replace(mdlContainer2Id,'PAR_RIGHT');
  	for (var i=0; groupsNodes[groupName][i]; i++) {
			varValue = groupsNodes[groupName][i].id.replace('par','');
			sQueryStrGroups += "order["+varName+"][]="+varValue+"&";
  	}
  }
	return sQueryStrGroups;
};

YAHOO.cms.DragDrop.prototype.updateMoveBars = function () {
	var mdlContainer1Id = YAHOO.cms.DDApp.mdlContainer1Id;
	var mdlContainer2Id = YAHOO.cms.DDApp.mdlContainer2Id;
	var parContainerId = YAHOO.cms.DDApp.parContainerId;
	/* reprise des infos de lib.pseudo_front.php */
	var moveBarSrc = {
		up: "../images/pseudo_upParagraphe.gif",
		down: "../images/pseudo_downParagraphe.gif",
		left: "../images/pseudo_leftParagraphe.gif",
		right: "../images/pseudo_rightParagraphe.gif"
	}
	// Pour chacun des groupes on récupère les div[class=moveBar]
  var oGroupsMoveBars = {};
  for (group in this.groups) {
  	switch(group) {
  		case "modules":
				oGroupsMoveBars[mdlContainer1Id]=YAHOO.util.Dom.getElementsByClassName("moveBar",null,document.getElementById(mdlContainer1Id));
				oGroupsMoveBars[mdlContainer2Id]=YAHOO.util.Dom.getElementsByClassName("moveBar",null,document.getElementById(mdlContainer2Id));
  			break;
  		case "paragraphes":
  			oGroupsMoveBars[parContainerId] = YAHOO.util.Dom.getElementsByClassName("moveBar",null,document.getElementById(parContainerId));
  			break;
  	}
  }
  var i, cMoveBars, nEdition, parId, nNewMoveBar, nAMove, nImgMove;
  // Pour chacun des groupes (sContainerId=> colonnegauche, contenu, colonnedroite)
  for (sContainerId in oGroupsMoveBars) {
  	//* Pour chacune des barres de déplacement du groupe
  	cMoveBars = oGroupsMoveBars[sContainerId];
  	for (i=0; cMoveBars[i]; i++) {
  		// On récupère le paragraphe en cours d'édition pour pouvoir recontruire les liens de déplacement avec le bon id
  		nEdition = cMoveBars[i];
  		while (nEdition && !YAHOO.util.Dom.hasClass(nEdition,"edition")) {nEdition = nEdition.parentNode;}
  		paragrapheId = nEdition.id.replace("par","");
  		// On récupère le type de paragraphe qui doit être déclaré dans "editButtons($idParagraphe)" comme classe de <span class="moveBar ">
  		paragrapheType = cMoveBars[i].className.replace("moveBar ",""); // Il ne doit y avoir que deux classes sur cet élément
  		nNewMoveBar = document.createElement("span");
  		nNewMoveBar.className=cMoveBars[i].className;
  		// La première ne doit pas avoir de bouton monter
  		if (i!=0) {
  			nAMove = document.createElement("a");
  			nAMove.href = "cms_"+paragrapheType+"Submit.php?Up="+paragrapheId;
  			nAMove.title = YAHOO.cms.DragDrop.moveBarLibelle["up"];
  			nNewMoveBar.appendChild(nAMove);
  			nImgMove = document.createElement("img");
  			nImgMove.src = moveBarSrc["up"];
  			nImgMove.alt = YAHOO.cms.DragDrop.moveBarLibelle["up"];
  			nAMove.appendChild(nImgMove);
  		}
  		// La dernière ne doit pas avoir de bouton descendre
  		if (i!=(cMoveBars.length-1)) {
  			nAMove = document.createElement("a");
  			nAMove.href = "cms_"+paragrapheType+"Submit.php?Down="+paragrapheId;
  			nAMove.title = YAHOO.cms.DragDrop.moveBarLibelle["down"];
  			nNewMoveBar.appendChild(nAMove);
  			nImgMove = document.createElement("img");
  			nImgMove.src = moveBarSrc["down"];
  			nImgMove.alt = YAHOO.cms.DragDrop.moveBarLibelle["down"];
  			nAMove.appendChild(nImgMove);
  		}
  		// si sContainerId =[mdlContainer1Id|parContainerId] => pas de déplacement à gauche
  		if ( (sContainerId!=mdlContainer1Id) && (sContainerId!=parContainerId) ) {
  			nAMove = document.createElement("a");
  			nAMove.href = "cms_"+paragrapheType+"Submit.php?Left="+paragrapheId;
  			nAMove.title = YAHOO.cms.DragDrop.moveBarLibelle["left"];
  			nNewMoveBar.appendChild(nAMove);
  			nImgMove = document.createElement("img");
  			nImgMove.src = moveBarSrc["left"];
  			nImgMove.alt = YAHOO.cms.DragDrop.moveBarLibelle["left"];
  			nAMove.appendChild(nImgMove);
  		}
  		// si sContainerId !=[mdlContainer2Id|parContainerId] => pas de déplacement à droite
  		if ( (sContainerId!=mdlContainer2Id) && (sContainerId!=parContainerId) ) {
  			nAMove = document.createElement("a");
  			nAMove.href = "cms_"+paragrapheType+"Submit.php?Right="+paragrapheId;
  			nAMove.title = YAHOO.cms.DragDrop.moveBarLibelle["right"];
  			nNewMoveBar.appendChild(nAMove);
  			nImgMove = document.createElement("img");
  			nImgMove.src = moveBarSrc["right"];
  			nImgMove.alt = YAHOO.cms.DragDrop.moveBarLibelle["right"];
  			nAMove.appendChild(nImgMove);
  		}
  		cMoveBars[i].parentNode.replaceChild(nNewMoveBar,cMoveBars[i]);
  	}
  	//*/
  }  
}
