var offsetX, offsetY;

function toggleMenuDiv (divID, key, session_id) 
{
    var menuDiv    = document.getElementById('menu' + divID);
    var expandLink = document.getElementById('expand' + divID); 
    if (menuDiv)
    {
        if (menuDiv.style.display == 'none') 
        {
            if (key!='')
            {
                expandLink.innerHTML = '<a href="#" onClick="javascript:toggleMenuDiv(\'' + divID + '\',\'' + key + '\');'
                                     + 'javascript:getPage(\'./getPage.php5?' + key + '&session_id=' + session_id + '&menu_id=' + divID + '\');">'
                                     + '<img src="./img/collapse.gif" /></a>'; 
            }
            else
            {
                expandLink.innerHTML = '<a href="#" onClick="javascript:toggleMenuDiv(\'' + divID + '\',\'\');">'
                                     + '<img src="./img/collapse.gif" /></a>'; 
            }
            
            menuDiv.style.display = 'block';
        }
        else if (menuDiv.style.display == 'block') 
        {
            if (key!='')
            {
                expandLink.innerHTML = '<a href="#" onClick="javascript:toggleMenuDiv(\'' + divID + '\',\'' + key + '\');'
                                     + 'javascript:getPage(\'./getPage.php5?' + key + '&session_id=' + session_id + '&menu_id=' + divID + '\');">'
                                     + '<img src="./img/expand.gif" /></a>'; 
            }
            else
            {
                expandLink.innerHTML = '<a href="#" onClick="javascript:toggleMenuDiv(\'' + divID + '\',\'\');">'
                                     + '<img src="./img/expand.gif" /></a>'; 
            }
            menuDiv.style.display = 'none';
        }
    }
}

function getDate(lang)
{
    if (lang=='FR')
    {
        TJour = new Array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
        TMois = new Array('janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre');
    }
    else
    {
        TJour = new Array('Sunday', 'Monday', 'Tuesday', 'Wedesnay', 'Thursday', 'Friday', 'Saturday');
        TMois = new Array('january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'); 
    }
    
    var dt = new Date();
    DateJour = TJour[dt.getDay()] + ' ' + dt.getDate() + ' ' + TMois[dt.getMonth()] + ' '+ dt.getFullYear();
    
    return DateJour;
}

function getXMLHttpRequestObject()
{
    var xmlobj;
    
    // Check for existing objects
    if (xmlobj!=null && xmlobj.readyState!=0 && xmlobj.readyState!=4)
    {
        xmlobj.abort();
    }
    
    try
    {
        // Instantiate object for Mozilla, Netscape, ... 
        xmlobj = new XMLHttpRequest();
    }
    
    catch(e)
    {
        try
        {
            // Instantiate object for IE
            xmlobj = new ActiveXObject('Microsoft.XMLHTTP');
        }
        catch(e)
        {
            // Ajax is not supported by the browser
            xmlobj = null;
            return false;
        }
    }
    
    return xmlobj;
}

function getObject(type, name)
{
    var obj = null;
    if (type=='id')
    {
        obj = document.getElementById(name);
    }
    else
    {
        obj = document.getElementsByTagName(name);
    }
    
    return obj;
}

function getFormValues(obj)
{
    var str='';
    for (var i=0; i<obj.elements.length; i++)
    {
        if ((obj.elements[i].type=='checkbox' && obj.elements[i].checked) || obj.elements[i].type!='checkbox')
        {
            str += obj.elements[i].name + '=' + escape(obj.elements[i].value) + '&';
        }
    }
    return str.substr(0,(str.length-1));
}

function sendPostRequest(theXMLObj, type, name, targetURL, targetDiv)
{
    var obj = getObject(type,name);
    var str = getFormValues(obj);
   
    if (theXMLObj && obj)
    {
        var target = document.getElementById(targetDiv); 
                   
        theXMLObj.onreadystatechange = function()
        {      
            if (theXMLObj.readyState==4)
            {        
                if (theXMLObj.status==200)
                {   
                    target.innerHTML = theXMLObj.responseText;       
                }
            }
        }
        
        // Open socket connection
        theXMLObj.open('POST',targetURL,true);
        
        // Set form http header
        theXMLObj.setRequestHeader('Content-type','application/x-www-form-urlencoded');
        
        // Get form values and send http request
        theXMLObj.send(str);     
    }
}
                                     
function sendGetRequest(theXMLObj, type, targetURL, targetDiv, sourceWindow)
{
    var target = null;
    
    // Open socket connection
    theXMLObj.open('GET',targetURL,true);
    
    // Get form values and send http request
    theXMLObj.send(null);
    
    if (type=='id')
    {
        target = sourceWindow.document.getElementById(targetDiv); 
    }
    else
    {
        target = sourceWindow.document.getElementsByTagName(targetDiv);
    }
    
    if (target==null)
    {
        return;
    }
    
    theXMLObj.onreadystatechange = function()
    {
        if (theXMLObj.readyState==4)
        {
            if (theXMLObj.status==200)
            {
                response = theXMLObj.responseText;
                if (response.indexOf('Contains no data.')<=0)
                {
                    target.innerHTML = response;
                }      
            }
        }
        else if (targetURL.indexOf('TYPE')>0)
        {
            target.innerHTML = '<p align="center"><img src="./img/working.gif"></p>';
        }
    }
}

function getFormPage(targetURL,formId)
{
    var obj = getObject('id',formId);
    if (obj)
    {
        getPage(targetURL + '?' + getFormValues(obj));
    }
}

function getPage(targetURL)
{
  //alert(targetURL);
    if (targetURL!='')
    {
        var theXMLObj = getXMLHttpRequestObject();
        sendGetRequest(theXMLObj, 'id', targetURL, 'content', self);
    }
}

function getPageParent(targetURL)
{
    if (targetURL!='')
    {
        var theXMLObj = getXMLHttpRequestObject();
        
        // Open socket connection
        theXMLObj.open('GET',targetURL,true);
    
        // Get form values and send http request
        theXMLObj.send(null);
    
        target = window.opener.document.getElementById('content'); 
    
        if (target==null)
        {
            return;
        }
    
        theXMLObj.onreadystatechange = function()
        {
            if (theXMLObj.readyState==4)
            {
                if (theXMLObj.status==200)
                {
                    response = theXMLObj.responseText;
                    if (response.indexOf('Contains no data.')<=0)
                    {
                        target.innerHTML = response;
                    }      
                }
            }
            else if (targetURL.indexOf('TYPE')>0)
            {
                target.innerHTML = '<p align="center"><img src="./img/working.gif"></p>';
            }
        }
    }
} 

function closeAfterDelay(timeout)
{
    setTimeout("window.close()",timeout);
}

function refreshPhoneBook(timeout)
{
    if (window.opener)
    {
        setTimeout("getPageParent('./getPage.php5?PAGE=PHONE_BOOK&TYPE=LIST')",timeout);
    }
}

function refreshPaymentList(timeout)
{    
    if (window.opener)
    {
        setTimeout("getPageParent('./getPage.php5?PAGE=PAYMENT&TYPE=ADMIN')",timeout);
    }
}

function getContact(targetURL)
{
    if (targetURL!='')
    {
        var theXMLObj = getXMLHttpRequestObject();
        sendGetRequest(theXMLObj, 'id', targetURL, 'contact', self);
    }
}

function displayDate(day, mon, yr, session)
{
    var theXMLObj = getXMLHttpRequestObject();
    var targetURL = './getPage.php5?PAGE=CALENDAR&TYPE=DATE&DAY=' + day + '&MON=' + mon + '&YR=' + yr + '&SAVE=NO&PHPSESSID=' + session;
    sendGetRequest(theXMLObj, 'id', targetURL, 'calendar', self);
}

function showEvent(date, session)
{
    var theXMLObj = getXMLHttpRequestObject();
    var targetURL = './getPage.php5?PAGE=CALENDAR&TYPE=EVENT&DATE=' + date + '&SAVE=NO&PHPSESSID=' + session;
    sendGetRequest(theXMLObj, 'id', targetURL, 'eventContent', self); 
    document.getElementById('eventDiv').style.visibility='';  
}

function postPage(formSource)
{
    var theXMLObj = getXMLHttpRequestObject();
    if (theXMLObj)
    {
        sendPostRequest(theXMLObj,'id',formSource,'./postPage.php5','content');
    }
}

function postContact(formSource, targetDiv)
{
    var theXMLObj = getXMLHttpRequestObject();
    if (theXMLObj)
    {
        sendPostRequest(theXMLObj,'id',formSource,'./postPage.php5',targetDiv);
    }
}

function modifyContact(formSource, target)
{
    var theXMLObj = getXMLHttpRequestObject();
    if (theXMLObj)
    {
        sendPostRequest(theXMLObj,'id',formSource,'./postPage.php5',target);
    }
}

function openPopUp(MyFile,MyWindow,MyWidth,MyHeight,MyTitle,MyText)
{    
    var ns4 = (document.layers)? true:false;            // NS 4 
    var ie4 = (document.all)? true:false;               // IE 4 
    var dom = (document.getElementById)? true:false;    // DOM 
    var xMax, yMax, xOffset, yOffset;;    

    if (ie4 || dom)
    {
        xMax = screen.width;
        yMax = screen.height;
    }
    else if (ns4)
    {
        xMax = window.outerWidth;
        yMax = window.outerHeight;
    }
    else
    {
        xMax = 800;
        yMax = 600;
    }
    xOffset = (xMax - MyWidth)/2;
    yOffset = (yMax - MyHeight)/2;
    popup = window.open(MyFile,MyWindow,'width=' + MyWidth
                                                 + ',height='   + MyHeight
                                                 + ',screenX='  + xOffset
                                                 + ',screenY='  + yOffset
                                                 + ',top='      + yOffset
                                                 + ',left='     + xOffset
                                                 + ',directories=no,location=no,menubar=no,resizable=no,status=no,toolbar=no,scrollbars=yes');
   
    var sHTML = '<html><head><title>' + MyTitle + '</title></head>';
    sHTML += '<body bgcolor="#ffffff" marginheight="0" marginwidth="0" leftmargin="0" topmargin="0">';
    sHTML += '<table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0">';
    sHTML += '<tr><td align="center"><h1>' + MyTitle + '</h1></td></tr>';
    sHTML += '<tr><td align="center"><div id=' + MyTitle + '>' + MyText + '</div></td></tr>';
    sHTML += '</table></body></html>';
    popup.document.write(sHTML);
    
    if (popup.window.focus)
    {
        popup.window.focus();
    }                                                 
}

function confirmGetPage(targetURL,msgConfirm)
{
    if (confirm(msgConfirm))
    {
        getPage(targetURL);
    }
}

function changeBgColor(obj, bgColor)
{
    obj.style.backgroundColor = bgColor;
}

function changeLang(session_id, lang)
{
    document.location.href('index.php5?PHPSESSID=' + session_id + '&lang=' + lang);
}

function loadMenus(session_id)
{
    // Reload menu
    var theXMLObjMenus = getXMLHttpRequestObject();
    sendGetRequest(theXMLObjMenus, 'id', './getPage.php5?PAGE=RELOAD&TYPE=MENU&PHPSESSID=' + session_id, 'menu_left', self); 
    window.location.reload();
}

function logUser(session_id)
{
    theXMLObj = getXMLHttpRequestObject();
    if (theXMLObj)
    {
        var obj = getObject('id','form_login');
        var str = getFormValues(obj);
    
        if (theXMLObj && obj)
        {
            var target = document.getElementById('login'); 
                     
            theXMLObj.onreadystatechange = function()
            {
                if (theXMLObj.readyState==4)
                {
                    if (theXMLObj.status==200)
                    {
                        target.innerHTML = theXMLObj.responseText;
                        loadMenus(session_id);       
                    }
                }
            }
        
            // Open socket connection
            theXMLObj.open('POST','./postPage.php5',true);
        
            // Set form http header
            theXMLObj.setRequestHeader('Content-type','application/x-www-form-urlencoded');
        
            // Get form values and send http request
            theXMLObj.send(str);     
        }
    }
}

function sendPass(targetURL)
{
    var formLogin = document.getElementById('form_login');
    if (formLogin)
    {
        if (formLogin.login.value!='')
        {
            theXMLObj = getXMLHttpRequestObject();
            theXMLObj.open('GET',targetURL + '&LOGIN=' + formLogin.login.value,true);
        
            // Get form values and send http request
            theXMLObj.send(null);
            theXMLObj.onreadystatechange = function()
            {
                if (theXMLObj.readyState==4 && theXMLObj.status==200)
                {
                    alert(theXMLObj.responseText);      
                }
            }
        }
        else
        {
            alert('Entrez d\'abord votre login !');
        }
    }
}

function MouseEvent(e)
{
    if (e)
    {
        this.e = e;
    }
    else
    {
        this.e = window.event;
    }
    
    if (e.pageX)
    {
        this.x = e.pageX;
    }
    else
    {
        this.x = e.clientX;
    }
    
    if (e.pageY)
    {
        this.y = e.pageY;
    }
    else
    {
        this.y = e.clientY;
    }
    
    if (e.target)
    {
        this.target = e.target;
    }
    else
    {
        this.target = e.srcElement;
    }
}

function handleDown(obj, e)
{
    var e = new MouseEvent(e);
    addListener("mousemove", handleMove);
    addListener("mouseup", handleUp);
    offsetX = e.x - parseInt(obj.style.left);
    offsetY = e.y - parseInt(obj.style.top);
}

function handleMove(e)
{
    var e = new MouseEvent(e);
    var x = e.x - offsetX;
    e.target.style.left = x + "px";
    var y = e.y - offsetY;
    e.target.style.top = y + "px";
}

function handleUp(e)
{
    var e = new MouseEvent(e);
    removeListener("mousemove", handleMove);
    removeListener("mouseup", handleUp);
}

function addListener(type, callback)
{
    if (document.addEventListener)
    {
        document.addEventListener(type, callback, false);
    }
    else if (document.attachEvent)
    {
        document.attachEvent("on" + type, callback, false);
    }
}

function removeListener(type, callback)
{
    if (document.removeEventListener)
    {
        document.removeEventListener(type, callback, false);
    }
    else if (document.detachEvent)
    {
        document.detachEvent("on" + type, callback, false);
    }
}

function changeTotal(value, checked)
{
    var total = parseInt(document.getElementById('TOTAL').value);
    
    if (checked)
    {
        total = total + parseInt(value);
    }
    else
    {
        total = total - parseInt(value);       
    }   
    document.getElementById('TOTAL').value = total;                                              
}

function validationZoneDate(zone, sav_zone, videAutorise, lang) 
{                                             
    // depuis les onchange en général, la variable zone peut-être un string. sinon c'est un objet input du dom
    if(typeof zone == 'string')
    {
        zone = document.getElementById(zone);          
    }
    if (!videAutorise && isallspace(zone.value))
    {  
        var j$msg0002="";
        if (lang=='FR')
        { 
            j$msg0002="Date non renseign"+"\u00E9"+"e non autoris"+"\u00E9"+"e";
        }
        else
        {      
            j$msg0002="Date not informed not authorized";
        }
        alert(j$msg0002);
        zone.value=sav_zone;
        zone.focus();
        return false;
    }
    else
    {         
        if(!isallspace(zone.value) && verifZoneDate(zone, lang)!="")
        {      
            alert(verifZoneDate(zone, lang));
            //zone.value=sav_zone;
            zone.focus();
            return false;
        }
    }    
    return true;
}

function isallspace(chaine)
{
  for (i=0 ; i<chaine.length ; i++) 
  {
    if (chaine.charAt(i)!=" ") 
      return(false);
  }
  return(true);
}

function verifZoneDate(zdate, lang)
{     
    var resultat="";
    try{     
        if (lang=='FR')
        {            
            if((zdate.value.charAt(1)!="/" && zdate.value.charAt(2)!="/") ||
            (zdate.value.charAt(3)!="/" && zdate.value.charAt(4)!="/" && zdate.value.charAt(5)!="/") ||
            (zdate.value.charAt(6)=="/" || zdate.value.charAt(7)=="/")) {
                return "Format de date : JJ/MM/AAAA";
              }    
              mdy = zdate.value.split("/");
             
              var jj     = mdy[0];  
              var mm    = mdy[1];                  
              if (mdy[2].length!=2 && mdy[2].length!=4)
              {  
                 return "Format de date : JJ/MM/AAAA";
              }
              var aa     = mdy[2];    
            if (!isdigit(jj,"1234567890") || !isdigit(mm,"1234567890") || !isdigit(aa,"1234567890") || jj<1 || jj>31 || mm<1 || mm>12 || aa<1){
                resultat="Date invalide";   
            }
             if(zdate.value.length>10){  
                resultat="Format de date : JJ/MM/AAAA";
            }
        }
        else
        {
            var mm   = zdate.value.substring(0,2);
            var jj   = zdate.value.substring(3,5);
            var aa   = zdate.value.substring(6);
              
            if(zdate.value.charAt(2)!="/" || zdate.value.charAt(5)!="/") {
                resultat="Date Format : MM/DD/YYYY";
              }
            if (!isdigit(jj,"1234567890") || !isdigit(mm,"1234567890") || !isdigit(aa,"1234567890") || jj<01 || jj>31 || mm<01 || mm>12){
                resultat="Invalid Date";
            }
             if(zdate.value.length!=8 && zdate.value.length!=10){
                resultat="Date Format : MM/DD/YYYY";
            }
        }
        
    } 
    catch(erreur) {
        resultat="Date invalide : " + erreur.description;
    }
    return resultat; 
}

// controle si chaine numerique
function isdigit(chaine,charactere) {
    for (var i=0 ; i<chaine.length ; i++) {
      c = chaine.charAt(i);
      if (charactere.indexOf(c) < 0)return(false);
    }
    return(true);
}

function verifmail(mail)
{       
    var reg = new RegExp('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$', 'i');

    if(reg.test(mail))
    {                 
        return(true);
    }
    else
    {
        return(false);
    }
}



