getObj = function (name)
{
  if (document.all)
	return document.all[name];
	else if (document.getElementById)
  	return document.getElementById(name);
  else if (document.layers)
   	return this.getObjNN4(document,name);
}

function findPosX(obj)
{
  var curleft = 0;
  if (obj.offsetParent)
  {
  	while (obj.offsetParent)
    {
      curleft += obj.offsetLeft;
      obj = obj.offsetParent;
    }
  }
  else if (obj.x)
  
  curleft += obj.x;
 return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function GetSizeWindow() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return [myWidth , myHeight];
}

var lInDiv=false;
var objDiv;

function Info(mode,objettd,rowid,objectid,objectdiv)
{
  var object;
  var temp;
  object=getObj(objectdiv);
  
  if (mode && object.style.display == "") mode=false;
  if (object)
  {                 
    object.style.top  = findPosY(objettd)  + objettd.offsetHeight ;
    object.style.left = findPosX(objettd)  
                      //+ objettd.offsetWidth
                      ;          

    if (mode) // Trt AJAX uniquement si demande visu
    {      
      var objectInf=document.frm_global.fonction;
         
      if (objectInf)
      {
        objectInf.value="InfoDiv";
        document.frm_global.rPropTableBrwSiteProd_colinf.value   = escape(objectid);
        document.frm_global.rPropTdBrwSiteProd_cle.value    = escape(rowid);                        
        
        Traite(objectInf);
        
        objectInf.value="";
        document.frm_global.rPropTableBrwSiteProd_colinf.value   = "";
        document.frm_global.rPropTdBrwSiteProd_cle.value    = "";                            
      }         
    }

    object.style.display= (mode && object.innerHTML != "") ? '' : 'none';
    if (mode && object.innerHTML != "")
    {            
      var gwin = GetSizeWindow();

      var xtop = findPosX(objettd)  
               + objettd.offsetWidth 
               + object.offsetWidth
               ;
    
      if (xtop > gwin[0])
      {
        xtop = objettd.offsetWidth + objettd.style.width - object.style.width;
         
        object.style.left  = xtop ;
      }

      var ytop = findPosY(objettd)  + objettd.offsetHeight + object.offsetHeight;
    
      if (ytop > gwin[1])
      {
        ytop = gwin[1] - object.offsetHeight;
         
        object.style.top  = ytop ;
      }
    }
  }      
}

function RecupHttp(object,xmlhttp)
{  
       switch (xmlhttp.status)
       {
        case 200:
          try {
            //alert(xmlhttp.responseText);
            Function(xmlhttp.responseText)();
          }
          catch (e)
          {
            alert("Error = "+xmlhttp.responseText);
          }
          break;
        case 404:
          alert("page inconnu : ");
          if (object) TraiteUndo(object);
          break;
        default:
          alert("Status :"+xmlhttp.status);
          if (object) TraiteUndo(object);
          break;
       }
}
function PagTri(object,page,hidobj,tmode)
{
  var obj=getObj(object);  
  
  var objhidden=getObj(hidobj);

  var iForm=null;
  var data;

  if (tmode == "undefined" || !tmode)
  {
    tmode = "TRI";
  }   
   
  for (var icpt=0;icpt<document.forms.length;icpt++) 
    if (objhidden.form == document.forms[icpt]) 
    {
      iForm = icpt;
      eval("document.forms["+icpt+"]."+object+"_fct.value='"+tmode+"'");
      break;
    }
 
  data="THROUGH=TRUE&MODE="+object+"&"+object+"=TRUE";
  
  if (page != null )
    objhidden.value=page

  if (iForm != null) data += HttpSubmit(iForm);  

  var xmlhttp = getHTTPObject();

  setTimeout('winWait("wait")', 300);
  
  if (xmlhttp)
  {
    xmlhttp.open("POST", myprg,false);
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");     
    xmlhttp.send(data);    
    switch (xmlhttp.readyState)
    {
     case 4:
       RecupHttp(object,xmlhttp);       
       break;
     default:
      TraiteUndo(object);
      alert("readyState =" + xmlhttp.readyState);
      break;
    }
  } 
  eval("document.forms["+icpt+"]."+object+"_fct.value=''");
  setTimeout('winWait("auto")', 300);  
}

function Pagine(object,page,hidobj)
{  
  var obj=getObj(object);
  
  var objhidden=getObj(hidobj);

  var iForm=null;
  var data;
   
  for (var icpt=0;icpt<document.forms.length;icpt++) 
    if (objhidden.form == document.forms[icpt]) iForm = icpt;
  
  data="THROUGH=TRUE&FCTMODE=PAGINE&MODE="+object+"&"+hidobj+"="+page+"&"+object+"=TRUE";
  
  if (iForm != null)
  {
    if (page !=null ) objhidden.value=page;
     data += HttpSubmit(iForm);
  }
  
  var xmlhttp = getHTTPObject();

  if (xmlhttp)
  {    
    xmlhttp.open("POST", myprg,false);
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");     
    xmlhttp.send(data);
    switch (xmlhttp.readyState)
    {
     case 4:       
       RecupHttp(object,xmlhttp);
       break;
     default:
      TraiteUndo(object);
      alert("readyState =" + xmlhttp.readyState);
      break;
    }
  } 
}
function TraiteUndo(object)
{
  switch (object.type)
  {
    case "checkbox":
      object.checked = ! object.checked;
      break;
    default:
      break;
  }
}
function Traite(object)
{   
  var iForm=null;
  var data;
      
  for (var icpt=0;icpt<document.forms.length;icpt++) 
    if (object.form == document.forms[icpt]) iForm = icpt;
  
  switch (object.type)
  {
    case "checkbox":
      data="THROUGH=TRUE&MODE=httpreq&OBJECT="+object.name+"&val="+object.checked+"&formjs="+iForm;
      break;
    case "select-one":
      data="THROUGH=TRUE&MODE=httpreq&OBJECT="+object.name+"&val="+escape(object.value)+"&formjs="+iForm;    
      break;
    default:            
      data="THROUGH=TRUE&MODE=httpreq&OBJECT="+object.name+"&val="+escape(object.value)+"&formjs="+iForm;
      break;
    
  }
  var xmlhttp = getHTTPObject();

  if (xmlhttp)
  {
    data += HttpSubmit(iForm);
    xmlhttp.open("POST", myprg,false);
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");     
    xmlhttp.send(data);
    
    switch (xmlhttp.readyState)
    {
     case 4:
       RecupHttp(object,xmlhttp);
       break;
     default:
      TraiteUndo(object);
      alert("readyState =" + xmlhttp.readyState);
      break;
    }
  }
  else
    TraiteUndo(object);    
}

function CallUrl(url,data)
{

  var sCurseurSav = document.body.style.cursor; 
	document.body.style.cursor = "wait";
		
  var xmlhttp = getHTTPObject();

  if (xmlhttp)
  {      
    xmlhttp.open("POST", url,false);
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");     
    xmlhttp.send(data);
        
    switch (xmlhttp.readyState)
    {
     case 4:
       RecupHttp(null,xmlhttp);
       break;
     default:      
      alert("readyState =" + xmlhttp.readyState);
      break;
    }
  }
  document.body.style.cursor = sCurseurSav;
}

function getHTTPObject()
{ 
  var xmlRequest = null;
 
  try
  {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
  }
  catch (e)
    { /**/ }
    
  try 
  {
    //Mozilla Browsers
    xmlRequest = new XMLHttpRequest();
  } 
  catch (e) 
  {
    try 
    {
      //Internet Explorer
      xmlRequest = new ActiveXObject("MSXML2.XMLHTTP");
    } 
    catch (e) 
    {
      try
      {
       xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e)
      {
       xmlRequest = null;
       return;
      }
    }
  }  
  
  return xmlRequest;
} 

var NUM_CENTYEAR = 30;
var BUL_TIMECOMPONENT = false;
var BUL_YEARSCROLL = true;
var calendars = [];
var RE_NUM = /^\-?\d+$/;

function calendar1(obj_target) {
this.gen_date = cal_gen_date1;
this.gen_time = cal_gen_time1;
this.gen_tsmp = cal_gen_tsmp1;
this.prs_date = cal_prs_date1;
this.prs_time = cal_prs_time1;
this.prs_tsmp = cal_prs_tsmp1;
this.popup    = cal_popup1;
if (!obj_target)
return cal_error("Erreur d'appel du calendrier : aucun 'target' spécifié");
if (obj_target.value == null)
return cal_error("Erreur d'appel du calendrier : le paramètre spécifié n'est pas un 'target' valide");
this.target = obj_target;
this.time_comp = BUL_TIMECOMPONENT;
this.year_scroll = BUL_YEARSCROLL;
this.id = calendars.length;
calendars[this.id] = this;
}
function cal_popup1 (str_datetime) {

this.dt_current = this.prs_tsmp(str_datetime ? str_datetime : this.target.value);
if (!this.dt_current) return;
var obj_calwindow = window.open(
'calendar.htm?datetime=' + this.dt_current.valueOf()+ '&id=' + this.id,
'Calendar', 'width=200,height='+(this.time_comp ? 215 : 190)+
',status=no,resizable=no,top=200,left=200,dependent=yes,alwaysRaised=yes'
);
obj_calwindow.opener = window;
obj_calwindow.focus();
}
function cal_gen_tsmp1 (dt_datetime) {
return(this.gen_date(dt_datetime) + ' ' + this.gen_time(dt_datetime));
}
function cal_gen_date1 (dt_datetime) {
return (
(dt_datetime.getDate() < 10 ? '0' : '') + dt_datetime.getDate() + "/"
+ (dt_datetime.getMonth() < 9 ? '0' : '') + (dt_datetime.getMonth() + 1) + "/"
+ dt_datetime.getFullYear()
);
}
function cal_gen_time1 (dt_datetime) {
return (
(dt_datetime.getHours() < 10 ? '0' : '') + dt_datetime.getHours() + ":"
+ (dt_datetime.getMinutes() < 10 ? '0' : '') + (dt_datetime.getMinutes()) + ":"
+ (dt_datetime.getSeconds() < 10 ? '0' : '') + (dt_datetime.getSeconds())
);
}
function cal_prs_tsmp1 (str_datetime) {
str_datetime = str_datetime.replace(/(^\s*)|(\s*$)/g,'');
if (!str_datetime)return (new Date());
if (RE_NUM.exec(str_datetime))
return new Date(str_datetime);
var arr_datetime = str_datetime.split(' ');
return this.prs_time(arr_datetime[1], this.prs_date(arr_datetime[0]));
}
function cal_prs_date1 (str_date) {

//var arr_date = str_date.split('-');
var arr_date = str_date.split(/(\-|\.|\/|:)/);
if (arr_date.length != 3) 
{
  if (arr_date.length == 2)
  {
    var dt_datetime = new Date();
    arr_date[2] = dt_datetime.getFullYear();
  }
  else
    return cal_error ("Format de date non valide : '" + str_date + "'.\nFormat accepté : jj-mm-aaaa.");
}
if (!arr_date[0]) return cal_error ("Format de date non valide : '" + str_date + "'.\nAucune valeur de jour du mois n'a pu être trouvée.");
if (!RE_NUM.exec(arr_date[0])) return cal_error ("Valeur de jour du mois non valide : '" + arr_date[0] + "'.\nValeurs autorisées sous forme integer.");
if (!arr_date[1]) return cal_error ("Format de date non valide : '" + str_date + "'.\nAucune valeur de mois n'a pu être trouvée.");
if (!RE_NUM.exec(arr_date[1])) return cal_error ("Valeur de mois non valide : '" + arr_date[1] + "'.\nValeurs autorisées sous forme integer.");
if (!arr_date[2]) return cal_error ("Format de date non valide : '" + str_date + "'.\nAucune valeur d'année n'a pu être trouvée.");
if (!RE_NUM.exec(arr_date[2])) return cal_error ("Valeur d'année non valide : '" + arr_date[2] + "'.\nValeurs autorisées sous forme integer.");
var dt_date = new Date();
dt_date.setDate(1);
if (arr_date[1] < 1 || arr_date[1] > 12) return cal_error ("Valeur de mois non valide : '" + arr_date[1] + "'.\nValeurs autorisées de 01-12.");
dt_date.setMonth(arr_date[1]-1);
if (arr_date[2] < 100) arr_date[2] = Number(arr_date[2]) + (arr_date[2] < NUM_CENTYEAR ? 2000 : 1900);
dt_date.setFullYear(arr_date[2]);
var dt_numdays = new Date(arr_date[2], arr_date[1], 0);
dt_date.setDate(arr_date[0]);
if (dt_date.getMonth() != (arr_date[1]-1)) return cal_error ("Valeur de jour du mois non valide : '" + arr_date[0] + "'.\nValeurs autorisées de 01-"+dt_numdays.getDate()+".");
return (dt_date)
}
function cal_prs_time1 (str_time, dt_date) {
if (!dt_date) return null;
var arr_time = String(str_time ? str_time : '').split(':');
if (!arr_time[0]) dt_date.setHours(0);
else if (RE_NUM.exec(arr_time[0]))
if (arr_time[0] < 24) dt_date.setHours(arr_time[0]);
else return cal_error ("Valeur d'heure non valide : '" + arr_time[0] + "'.\nValeurs autorisées de 00-23.");
else return cal_error ("Valeur d'heure non valide : '" + arr_time[0] + "'.\nValeurs autorisées sous forme integer.");
if (!arr_time[1]) dt_date.setMinutes(0);
else if (RE_NUM.exec(arr_time[1]))
if (arr_time[1] < 60) dt_date.setMinutes(arr_time[1]);
else return cal_error ("Valeur de minutes non valide : '" + arr_time[1] + "'.\nValeurs autorisées de 00-59.");
else return cal_error ("Valeur de minutes non valide : '" + arr_time[1] + "'.\nValeurs autorisées sous forme integer.");
if (!arr_time[2]) dt_date.setSeconds(0);
else if (RE_NUM.exec(arr_time[2]))
if (arr_time[2] < 60) dt_date.setSeconds(arr_time[2]);
else return cal_error ("Valeur de secondes non valide : '" + arr_time[2] + "'.\nValeurs autorisées de 00-59.");
else return cal_error ("Valeur de secondes non valide : '" + arr_time[2] + "'.\nValeurs autorisées sous forme integer.");
dt_date.setMilliseconds(0);
return dt_date;
}
function cal_error (str_message) {
alert (str_message);
return null;
}

