//------------------------------------------------------------------------------
// FICHIER : $RCSfile: open_close_div.js,v $
// AUTEUR  : $Author: yvan $
// VERSION : $Revision: 1.4 $
// DATE    : $Date: 2010-02-14 16:42:14 $
//------------------------------------------------------------------------------
// GSite - Web site management in PHP - div open close effect js file
//
// Copyright (C) 2009 RANC Sebastien (contact@id-alizes.fr)
// 
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
// 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
// 
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//------------------------------------------------------------------------------

//For debug
//alert(Object.inspect(Element.childElements(div)));

//==============================================================================
/**
* DEPENDENCIES :
* for use this use or duplicate 
* - scripts/js/open_close_div/open_close_div.css
* Main : 
* 
*/
//==============================================================================

Event.observe(this,'load',gereDivOpenClose);
cpt = 0;
var paramByPost = false;

//==============================================================================
/**
* Cache tous les div de la classe "div_open_close_slave" à l'exception du premier
* Appelle la fonction affiche_div après un click sur un élément de classe "div_open_close_master"
* pour ouvrir un des div mettre dans l'URL son ordre en ajoutant par exemple pour le 1er
*  ...&opendiv=1
*/
//==============================================================================
function gereDivOpenClose(event) {
  var cpt_current = -1;
  if (paramByPost) {
    cpt_current = parseInt(paramByPost)-1;
    paramByPost = false;
  } else {
    var param = getURLParam('opendiv');
    var param2 = getURLParam('opendiv_id');
    if (param != '') {
      cpt_current = parseInt(param)-1;
    }else if(param2 != '') {

      $cpt_div = 0;
      $$('.div_open_close_master').each(function(div) {
        
        if (div === $(param2)) {
          cpt_current = $cpt_div;
          }
        $cpt_div ++;
      });
     
    }
  }
  //-- cache les div de la classe "div_open_close_slave"
  $$('.div_open_close_slave').each(function(div) {
    cpt ++;
    if (cpt != (cpt_current+1)) {
      div.addClassName('class_close_div');
    }
	});
  cpt = 0;
  //-- ajoute la bonne image en fonction de l'état du div
  $$('.div_open_close_master').each(function(div) {
    classInArray = div.classNames().toArray();
    if (classInArray != "") {
      classInArray.each(function(nameClass) {
        if ((nameClass == "img_open_1") || (nameClass == "img_open_2") || (nameClass == "img_open_3") || (nameClass == "img_open_4")) {
          img_open = imgOpenClose(nameClass);
          img_open = img_open["open_close_out"];
        }
        if ((nameClass == "img_close_1") || (nameClass == "img_close_2") || (nameClass == "img_close_3") || (nameClass == "img_close_4")) {
          img_close = imgOpenClose(nameClass);
          img_close = img_close["open_close_out"];
        }
      });
    }
    if (cpt == cpt_current) {
      div.addClassName(img_open);
    } else {
      div.addClassName(img_close);
    }
    cpt ++;
	});

  $$('.div_open_close_master').each(function(link) {
    Event.observe(link,'click',afficheDiv);
	});
 
  $$('.div_open_close_master').each(function(div) {
    Event.observe(div,'mouseover',overDiv);
    Event.observe(div,'mouseout',outDiv);
	});
}

//==============================================================================
/**
* XX
*/
//==============================================================================
function overDiv(event) {
  var position = 0;
  cpt =0;
  //-- le div où l'internaute clique
  var container_div = Event.findElement(event,'div');
  
  //-- Récupère la position parmi les autres div cliquables
  $$('.div_open_close_master').each(function(div) {
    //-- for debug
    //alert(Object.inspect(div));
    classInArray = container_div.classNames().toArray();
    if (classInArray != "") {
      classInArray.each(function(nameClass) {
        if ((nameClass == "img_open_1") || (nameClass == "img_open_2") || (nameClass == "img_open_3") || (nameClass == "img_open_4")) {
          over_open     = imgOpenClose(nameClass);
          img_open_over = over_open["open_close_over"];
          img_open_out  = over_open["open_close_out"];
        } else if ((nameClass == "img_close_1") || (nameClass == "img_close_2") || (nameClass == "img_close_3") || (nameClass == "img_close_4")) {
          over_close     = imgOpenClose(nameClass);
          img_close_over = over_close["open_close_over"];
          img_close_out  = over_close["open_close_out"];
        }
      });
    }    
    if (div === container_div) {
      position = cpt;
    }
    cpt++;
    
	});
  cpt = 0;
  
  classCloseDivExist = false;
  $$('.div_open_close_slave').each(function(div) {
    if (cpt == position) {
      classInArray = div.classNames().toArray();
      if (classInArray != "") {
        classInArray.each(function(nameClass) {
          if (nameClass == "class_close_div") {
            classCloseDivExist = true;
          }
        });
      }
      if (classCloseDivExist === true) {
        container_div.removeClassName(img_close_out);
        container_div.addClassName(img_close_over);
      } else {
        container_div.removeClassName(img_open_out);
        container_div.addClassName(img_open_over);
      }
    }
    cpt++;
	});
}

//==============================================================================
/**
* XX
*/
//==============================================================================
function outDiv(event) {
  var position = 0;
  cpt =0;
  // le div où l'internaute clique
  var container_div = Event.findElement(event,'div');
  
  // Récupère la position parmi les autres div cliquables
  $$('.div_open_close_master').each(function(div) {
    //alert(Object.inspect(div));
    classInArray = container_div.classNames().toArray();
    if (classInArray != "") {
      classInArray.each(function(nameClass) {
        if ((nameClass == "img_open_1") || (nameClass == "img_open_2") || (nameClass == "img_open_3") || (nameClass == "img_open_4")) {
          over_open     = imgOpenClose(nameClass);
          img_open_over = over_open["open_close_over"];
          img_open_out  = over_open["open_close_out"];
        } else if ((nameClass == "img_close_1") || (nameClass == "img_close_2") || (nameClass == "img_close_3") || (nameClass == "img_close_4")) {
          over_close     = imgOpenClose(nameClass);
          img_close_over = over_close["open_close_over"];
          img_close_out  = over_close["open_close_out"];
        }
      });
    }
    if (div === container_div) {
      position = cpt;
    }
    cpt++;
    
	});
  cpt = 0;
  
  classCloseDivExist = false;
  $$('.div_open_close_slave').each(function(div) {
    if (cpt == position) {
      classInArray = div.classNames().toArray();
      if (classInArray != "") {
        classInArray.each(function(nameClass) {
          if (nameClass == "class_close_div") {
            classCloseDivExist = true;
          }
        });
      }
      if (classCloseDivExist === true) {
        container_div.removeClassName(img_close_over);
        container_div.addClassName(img_close_out);
      } else {
        container_div.removeClassName(img_open_over);
        container_div.addClassName(img_open_out);
      }
    }
    cpt++;
	});
}

//==============================================================================
/**
* XX
*/
//==============================================================================
function afficheDiv(event) { 
	var position = 0;
  cpt =0;
  // le div où l'internaute clique
  var container_div = Event.findElement(event,'div.div_open_close_master');
  //alert(Object.inspect(container_div));
  // Récupère la position parmi les autres div cliquables
  $$('.div_open_close_master').each(function(div) {
    //alert(Object.inspect(div));
    classInArray = container_div.classNames().toArray();
    if (classInArray != "") {
      classInArray.each(function(nameClass) {
        if ((nameClass == "img_open_1") || (nameClass == "img_open_2") || (nameClass == "img_open_3") || (nameClass == "img_open_4")) {
          over_open     = imgOpenClose(nameClass);
          img_open_over = over_open["open_close_over"];
        }
        if ((nameClass == "img_close_1") || (nameClass == "img_close_2") || (nameClass == "img_close_3") || (nameClass == "img_close_4")) {
          over_close     = imgOpenClose(nameClass);
          img_close_over = over_close["open_close_over"];
        }
      });
    }
    if (div === container_div) {
      position = cpt;
    }
    cpt++;
    
	});
  cpt = 0;

  classCloseDivExist = false;
  $$('.div_open_close_slave').each(function(div) {
    if (cpt == position) {
      classInArray = div.classNames().toArray();
      if (classInArray != "") {
        classInArray.each(function(nameClass) {
          if (nameClass == "class_close_div") {
            classCloseDivExist = true;
          }
        });
      }
      if (classCloseDivExist === true) {
        div.removeClassName('class_close_div');
        container_div.removeClassName(img_close_over);
        container_div.addClassName(img_open_over);
      } else {
        div.addClassName('class_close_div');
        container_div.removeClassName(img_open_over);
        container_div.addClassName(img_close_over);
      }
    }
    cpt++;
	});
}

//==============================================================================
/**
* XX
*/
//==============================================================================
function getURLParam(strParamName) {
  var strReturn = "";
  var strHref = window.location.href;
  if (strHref.indexOf("?") > -1) {
    var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
    var aQueryString = strQueryString.split("&");
    for (var iParam = 0; iParam < aQueryString.length; iParam++) {
      if (aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1) {
        var aParam = aQueryString[iParam].split("=");
        strReturn = aParam[1];
        break;
      }
    }
  }
  //remove #
  if (strReturn.indexOf("#") > -1) {
	  strReturn = strReturn.substring(0,strReturn.indexOf("#"));
  }
  return unescape(strReturn);
} 

//==============================================================================
/**
* XX
*/
//==============================================================================
function imgOpenClose (open_close) {
  table_open_close = new Array();
  switch (open_close) {
    case 'img_open_1'  : 
    case 'img_close_1' :
      open_close_out = "class_img_open_close_out_1";
      open_close_over = "class_img_open_close_over_1";
    break;
    
    case 'img_open_2'  :
    case 'img_close_2' :
      open_close_out = "class_img_open_close_out_2";
      open_close_over = "class_img_open_close_over_2";
    break;
    
    case 'img_open_3'  :
    case 'img_close_3' :
      open_close_out = "class_img_open_close_out_3";
      open_close_over = "class_img_open_close_over_3";
    break;
    
    case 'img_open_4'  :
    case 'img_close_4' :
      open_close_out = "class_img_open_close_out_4";
      open_close_over = "class_img_open_close_over_4";
    break;
  }
  
  table_open_close["open_close_out"]  = open_close_out;
  table_open_close["open_close_over"] = open_close_over;
  
  return table_open_close;
}

//------------------------------------------------------------------------------
// $Log: open_close_div.js,v $
// Revision 1.4  2010-02-14 16:42:14  yvan
// no message
//
// Revision 1.3  2010-02-10 18:57:19  yvan
// no message
//
// Revision 1.2  2009-12-09 20:08:59  bouba
// work in progress on library v02
//
// Revision 1.1  2009-12-08 19:55:43  bouba
// first version
//
//
//-- End of source  ------------------------------------------------------------

