﻿var BACKGROUND_TOP = 125;
var BACKGROUND_LEFT = 150;
var BACKGROUND_HEIGHT = 800;
var BACKGROUND_WIDTH = 800;
var MENU_RAYON = 300;
var FOLDER_ICON_HEIGHT = 48;
var FOLDER_ICON_WIDTH = 48;
var MENU_LABEL_WIDTH = 150;
var MENU_EXPLICATION_WIDTH = 400;
var MENU_EXPLICATION_HEIGHT = 190;
var MENU_EXPLICATION_PADDING_TOP = 10;
var MENU_EXPLICATION_PADDING_LEFT = 10;
var MENU_SPEED = 2;

function onLoadHandled()
{
    PlaceBackGround();
    CreateMenu();
    //PlaceBottomLine();
    DisplayWelcome();
}

window.onresize=function resizeHandler()
{
    //onLoadHandled();
}

function getWindowHeight()
{
    if (parseInt(navigator.appVersion)>3) {
        if (navigator.appName=="Netscape") {
            return window.innerHeight;
        }
        if (navigator.appName.indexOf("Microsoft")!=-1) {
            return document.body.offsetHeight;
        }
    }
}

function getWindowWidth()
{
    if (parseInt(navigator.appVersion)>3) {
        if (navigator.appName=="Netscape") {
            return window.innerWidth;
        }
        if (navigator.appName.indexOf("Microsoft")!=-1) {
            return document.body.offsetWidth;
        }
    }
}
/*Menu creation*/
//var MENU_PUBLIC = new Array();

//MENU_PUBLIC[0] = new MenuItem("Page d'accueil","page1.aspx",null,"Le Groupement des Gynécologues Obstétriciens de Langue Française de Belgique est la seule association scientifique représentative de tous les spécialistes et hyperspécialistes de la Gynécologie-Obstétrique francophone.");
//MENU_PUBLIC[1] = new MenuItem("Mot du Président","page1.aspx",null,"Créé en 2003 avec l’aide logistique de Roularta Medica, le site Web du GGOLFB, régulièrement mis à jour, comprend deux parties distinctes...");
//MENU_PUBLIC[2] = new MenuItem("Dates des réunions","page1.aspx",null,"Vous trouverez ici toutes les dates de congrès ou réunion susceptibles de repérsenter un intérêt pour les gynécologues obstétriciens qu'ils soient de langue française ou autre.");
//MENU_PUBLIC[3] = new MenuItem("Devenez membres","page1.aspx",null,"Si vous désirez devenir membre du GGOLFB, vous trouverez sur cette page toutes les informations concernant la procédure à suivre et les avantages que procure le fait d'être membre.");
//MENU_PUBLIC[4] = new MenuItem("Groupes de travail","page1.aspx",null,"Le GGOLFB constitue des groupes de travail sur différents sujets. Le but de ces unités est de répondre à divers besoins rencontrés par les gynécologues-obstétriciens, tant du point de vue strictement médical et scientifique, par le développement d'attitudes de consensus et la conduite et la participation à des études scientifiques, que du point de vue représentatif vis-à-vis des autorités dirigeantes.");
//MENU_PUBLIC[5] = new MenuItem("Contactez-nous !","page1.aspx",null,"Si vous désirez contacter certains responsables du GGOLFB, vous trouverez toutes les informations utiles à cet endroit.");

function MenuItem(label,url,menu,text)
{
    this.label = label;
    this.url = url;
    this.menu = menu;
    this.text = text;
}

function SubMenu(menu)
{
    this.menu = menu;
}

var menuItemHover = null;
function changeImage(element)
{
  var target = element.target || element.srcElement;
  
  //Change folder image
  var v = target.getAttribute("src");
  id = target.parentNode.id;
  id = myReplace(id, 'item', 'label');
  if(v.indexOf("images/Folder_Closed.png",0) > -1 && (element.type == "mouseover" || element.type == "onmouseover"))
    v = "images/foldergreen.png";
  else if(v.indexOf("images/foldergreen.png",0) > -1 && (element.type == "mouseout" || element.type == "onmouseout"))
    v = "images/Folder_Closed.png";
  else return;
  
  target.setAttribute("src", v);
  
  //Close all files
  for(i = 0; i < MENU_PUBLIC.length; i++)
  {
    var f = document.getElementById('item' + i);
    var l = document.getElementById('label' + i);
    if(f != null && f != undefined)
    {
        f = f.firstChild;
        if(f != target)
        {
            img = f.getAttribute("src");
            if(img.indexOf("images/foldergreen.png",0) > -1)f.setAttribute("src", "images/Folder_Closed.png");
        }
    }
    if(l != null && l != undefined) l.style.color = 'Gray';
  }
  
  //Change label aspect
  var label = document.getElementById(id);
  label.style.color = '#FD4811';
  
  //View menu explanations
  if(element.type == "mouseover" || element.type == "onmouseover") 
  {
    if(menuItemHover == target.parentNode) return;//Do not repeat the operation for the same menu item
    menuItemHover = target.parentNode;
    setTimeout('ShowMenuExplanation()',300);//To give time to the browser to rfresh the UI before to move the menu explanation panel.
  }
}

/*End of menu creation*/

function PlaceBackGround()
{
    var background = GetElement('MainMenu');
    background.style.top = BACKGROUND_TOP + 'px';
    background.style.left = BACKGROUND_LEFT + 'px';
    
    var sponsor = GetElement('sponsor');
    sponsor.style.top = '58' + 'px';
    sponsor.style.left = '800' + 'px';
}

function CreateMenu()
{
    if(MENU_PUBLIC == null) return;
    
    baseAngle = 180/(MENU_PUBLIC.length + 1);
    baseAngle = (baseAngle * Math.PI)/180;//Conversion en radian
    
    centreX = BACKGROUND_LEFT + (GetSizeFromId('MainMenu')[0]/2);
    centreY = BACKGROUND_TOP + (GetSizeFromId('MainMenu')[1]/2);
    
    for(i = 0; i < MENU_PUBLIC.length; i++)
    {
        itemDiv = document.createElement('div');
        itemDiv.setAttribute('id','item' + i);
        itemDiv.style.position = 'absolute';
        itemDiv.style.zIndex = '1';
        if(itemDiv.addEventListener)
        {
            itemDiv.addEventListener('mouseover',changeImage,false);
            //itemDiv.addEventListener('mouseout',changeImage,false);
        }
        else if(itemDiv.attachEvent)
        {
            itemDiv.attachEvent('onmouseover',changeImage);
            //itemDiv.attachEvent('onmouseout',changeImage);
        }
        
        img = document.createElement('img');
        img.setAttribute('src','images/Folder_Closed.png');
        itemDiv.appendChild(img);
        
        GetElement('form1').appendChild(itemDiv);
        
        itemDiv.style.left = (centreX + (MENU_RAYON * Math.cos((i + 1) * baseAngle)) - (FOLDER_ICON_WIDTH/2)) + 'px';
        itemDiv.style.top = (centreY - (MENU_RAYON * Math.sin((i + 1) * baseAngle)) - (FOLDER_ICON_HEIGHT/2)) + 'px';
        
        label = document.createElement('div');
        label.setAttribute('id','label' + i);
        label.style.position = 'absolute';
        label.style.zIndex = '1';
        label.appendChild(document.createTextNode(MENU_PUBLIC[i].label));
        GetElement('form1').appendChild(label);
        
        label.style.textAlign = 'center';
        label.style.width = MENU_LABEL_WIDTH + 'px';
        label.style.top = GetPosition(itemDiv)[1] + FOLDER_ICON_HEIGHT + 'px';
        label.style.left = GetPosition(itemDiv)[0] - ((MENU_LABEL_WIDTH - FOLDER_ICON_WIDTH)/2) + 'px';
    }
}

function ShowMenuExplanation()
{
    if(menuItemHover == null) return;
    var element = document.getElementById('MainMenuExplain');
    if(element == null || element == undefined) return;
    
    if(element.style.visibility != 'hidden')element.style.visibility = 'hidden';
    element.style.zIndex = '2';//to be sure that this div element is above the others
    element.style.width = '0px';
    element.style.height = '0px';
    //position before starting animation
    element.style.top = menuItemHover.style.top;
    element.style.left = menuItemHover.style.left;
    //Delete child nodes
    //while(element.hasChildNodes())element.removeChild(element.firstChild);
    
    element.style.visibility = 'visible';
    MoveMenuExplanation();
}

function DisplayWelcome()
{
    SetExplainFinalSize();
    var element = document.getElementById('MainMenuExplain');
    if(element == null || element == undefined) return;
    
    element.style.zIndex = '2';//to be sure that this div element is above the others
    element.style.width = MENU_EXPLICATION_WIDTH + 'px';
    element.style.height = MENU_EXPLICATION_HEIGHT + 'px';
    element.style.top = finalTopExplain + 'px';
    element.style.left = finalLeftExplain + 'px';
    //Delete child nodes
    //while(element.hasChildNodes())element.removeChild(element.firstChild);
    
    PopulateMenuExplain('Bienvenue', 'Bienvenue sur le site du GGOLFB (Groupement des Gynécologues Obstétriciens de Langue Française de Belgique).', null);
    element.style.visibility = 'visible';  
}

var finalTopExplain = -1;
var finalLeftExplain = -1;
function MoveMenuExplanation()
{
    //document.getElementById('Label1').appendChild(document.createTextNode('prout'));
    var element = document.getElementById('MainMenuExplain');
    
    SetExplainFinalSize();
    
    offsetX = finalLeftExplain - GetPosition(element)[0];
    offsetY = finalTopExplain - GetPosition(element)[1];
    
    if(offsetX == 0 || offsetY == 0)
    {
        PlaceTextInMenuExplain();
        return;
    }
    if(Math.abs(offsetX) - MENU_SPEED < 0 || Math.abs(offsetY) - MENU_SPEED < 0)
    {
        element.style.width = MENU_EXPLICATION_WIDTH + 'px';
        element.style.height = MENU_EXPLICATION_HEIGHT + 'px';
        element.style.left = finalLeftExplain + 'px';
        element.style.top = finalTopExplain + 'px';
        PlaceTextInMenuExplain();
        return;
    }
    
    element.style.left = Math.abs(offsetX) < Math.abs(offsetY) ? GetPosition(element)[0] + ((offsetX/Math.abs(offsetX)) * MENU_SPEED) + 'px' : GetPosition(element)[0] + (Math.round(offsetX/Math.abs(offsetY)) * MENU_SPEED) + 'px';
    element.style.top = Math.abs(offsetY) < Math.abs(offsetX) ? GetPosition(element)[1] + ((offsetY/Math.abs(offsetY)) * MENU_SPEED) + 'px' : GetPosition(element)[1] + (Math.round(offsetY/Math.abs(offsetX)) * MENU_SPEED) + 'px';
    
    //Size of the element
    reducFactor = Math.abs(GetPosition(element)[0] - GetPosition(menuItemHover)[0]) / Math.abs(finalLeftExplain - GetPosition(menuItemHover)[0]);
    element.style.width = Math.abs(MENU_EXPLICATION_WIDTH * reducFactor) + 'px';
    element.style.height = Math.abs(MENU_EXPLICATION_HEIGHT * reducFactor) + 'px';
    
    setTimeout('MoveMenuExplanation()',10);
}
function SetExplainFinalSize()
{
    if(finalTopExplain == -1 || finalLeftExplain == -1)
    {
        centreMenuX = BACKGROUND_LEFT + (GetSizeFromId('MainMenu')[0]/2);
        centreMenuY = BACKGROUND_TOP + (GetSizeFromId('MainMenu')[1]/2);
        
        finalLeftExplain = Math.round(centreMenuX - (MENU_EXPLICATION_WIDTH/2)) - MENU_EXPLICATION_PADDING_TOP;
        finalTopExplain = Math.round(centreMenuY - (MENU_EXPLICATION_HEIGHT/2)) - MENU_EXPLICATION_PADDING_LEFT;
    }
}
function PlaceTextInMenuExplain()
{
    if(menuItemHover == null || menuItemHover == undefined) return;
    var index = parseInt(myReplace(menuItemHover.id,'item',''));
    
    PopulateMenuExplain(MENU_PUBLIC[index].label, MENU_PUBLIC[index].text, MENU_PUBLIC[index].url);
}
function PopulateMenuExplain(title, text, url)
{

    var element = document.getElementById('MainMenuContent');
    element.style.height = MENU_EXPLICATION_HEIGHT + 'px';
    
    //Delete child nodes
    while(element.hasChildNodes())element.removeChild(element.firstChild);
    var p = element.appendChild(document.createElement('p'));
    p.className = "MainMenuExplainTitle";
    p.appendChild(document.createTextNode(title));
    element.appendChild(document.createTextNode(text));
    
    if(url != null && url != undefined)
    {
        var go = element.appendChild(document.createElement('p'));
        go.style.textAlign = 'right';
        go.style.verticalAlign = 'bottom';
        var link = go.appendChild(document.createElement('a'));
        link.setAttribute('href',url);
        link.appendChild(document.createTextNode('Pour en savoir plus...'));
    }

    
}

function PlaceBottomLine()
{
    var bottomline = document.getElementById('bottomline');
    var leftMarge = document.getElementById('leftMarge');
    var powered = document.getElementById('powered');
    
    backgroundBase = BACKGROUND_TOP + BACKGROUND_HEIGHT;
    margeBase = BACKGROUND_TOP + leftMarge.offsetHeight;
    
    bottomline.style.top = backgroundBase > margeBase ? backgroundBase + 'px':margeBase + 'px';
    powered.style.top = backgroundBase > margeBase ? backgroundBase + 5 + 'px':margeBase + 5 + 'px';
}

function ouvre_popup(page) {
       window.open(page,"nom_popup","menubar=no, status=no, scrollbars=yes");
   }