//////////////////////////////////////////////////////////////////////////
//WINDOW
//////////////////////////////////////////////////////////////////////////
var g_IdWindow = 0;
var g_IdPrevisouWindow = 0;
var g_WindowArray = new Array;
var cur_id_win;
var resise_origin;
//////////////////////////////////////////////////////////////////////////
//FUNCTION
//////////////////////////////////////////////////////////////////////////
function AddWindow( WindowURL , PostData)
{
    return AddWindowByPosition(WindowURL ,40,40, PostData);
}
//////////////////////////////////////////////////////////////////////////
function AddWindowToCenter( WindowURL , SizeX )
{
    var ie 	= document.all?1:0
    var plok=0;
    if (ie)
    {
        plok = (document.body.clientWidth - SizeX ) /2;
    }else
    {
        plok = ( window.innerWidth - SizeX ) /2;
    }
            
    AddWindowByPosition(WindowURL,plok,50);
}
//////////////////////////////////////////////////////////////////////////
function AddWindowByPosition( WindowURL , PosX , PosY ,PostData)
{
    //TODO CHACK AFTER A FREE WINDOW SLOT 
    g_WindowArray.push( new CWindow( g_IdWindow ) );
    g_ZIndex ++ ;
    
    //alert('before dom mod');
    MetaData = '<span ID="META_WINDOW_'+g_IdWindow+'_ID">'+g_IdWindow+'<span>';
    MetaData += '<span ID="META_WINDOW_'+g_IdWindow+'_URL">'+WindowURL+'</span>';
    
    //document.getElementById("WINDOW_LIST").innerHTML+='<div ID="MAIN_FRAME_WINDOW_'+g_IdWindow+'" style="top:'+PosY+'px;left:'+PosX+'px;position:absolute;"><div ID="MAIN_FRAME_WINDOW_METADATA_'+g_IdWindow+'" style="display:none">'+MetaData+'</div><div ID="MAIN_FRAME_WINDOW_CONTENT_'+g_IdWindow+'">Chargement de l\'application...</div></div>';
    
    /*document.getElementById("WINDOW_LIST").innerHTML+='
    <div ID="MAIN_FRAME_WINDOW_'+g_IdWindow+'" style="top:'+PosY+'px;left:'+PosX+'px;position:absolute;">
    <div ID="MAIN_FRAME_WINDOW_METADATA_'+g_IdWindow+'" style="display:none">'+MetaData+'</div>
    <div ID="MAIN_FRAME_WINDOW_CONTENT_'+g_IdWindow+'">Chargement de l\'application...</div>
    </div>';*/    
    document.getElementById('MAIN_FRAME_WINDOW_'+g_IdWindow).style.top=PosY+'px';
    document.getElementById('MAIN_FRAME_WINDOW_'+g_IdWindow).style.left=PosX+'px';
    document.getElementById('MAIN_FRAME_WINDOW_CONTENT_'+g_IdWindow).innerHTML= "<div>Chargement de l\'application... patientez</div>" ;
    document.getElementById('MAIN_FRAME_WINDOW_METADATA_'+g_IdWindow).innerHTML= MetaData ;
    
    //alert('after dom mod');
    RequestPost = new CHttpRequest();
    RequestPost.SetURLTarget( WindowURL+'&ID_WINDOW='+g_IdWindow );
    RequestPost.SetMethod( 'POST' );
    if(PostData)
    {
        RequestPost.m_Data=PostData;
    }
    
    RequestPost.Open();
    RequestPost.m_OnComplete = EndAddWindow;
    
    g_IdWindow ++ ;
    return g_IdWindow-1;
}
//////////////////////////////////////////////////////////////////////////
function ReloadWindow( IdWindow )
{
    document.getElementById("TEMP_DATA").innerHTML=IdWindow+" "+document.getElementById( "WINDOW_"+IdWindow ).style.top+" "+document.getElementById( "WINDOW_"+IdWindow ).style.left; 

    WindowURL = document.getElementById('META_WINDOW_'+IdWindow+'_URL').innerHTML;
    RequestPost = new CHttpRequest();
    
    var reg=new RegExp("(amp;)", "g");
    WindowURL= WindowURL.replace(reg,"");
    
    RequestPost.SetURLTarget( WindowURL+'&ID_WINDOW='+IdWindow );
    RequestPost.SetMethod( 'POST' );
    RequestPost.Open();
    document.getElementById('MAIN_FRAME_WINDOW_CONTENT_'+IdWindow).innerHTML= "<div>Rechargement de l\'application... patientez</div>" ;
    RequestPost.m_OnComplete = EndReloadWindow;
}
//////////////////////////////////////////////////////////////////////////
function EndReloadWindow( WindowContent )
{
    var tmp_data = new String( document.getElementById("TEMP_DATA").innerHTML );
    var array_data = tmp_data.split(" "); 
    var PositionY = new String(parseInt(array_data[1])+'px') ;
    var PositionX = new String(parseInt(array_data[2])+'px') ;
    var id_win =  array_data[0] ;
    
    //var PositionY = 100-array_data[2];
    //var PositionX = 300 ;
    document.getElementById("TEMP_DATA").innerHTML=""; 
    document.getElementById('MAIN_FRAME_WINDOW_CONTENT_'+id_win).innerHTML= WindowContent ;
    g_WindowArray[id_win].BringToTop();

    if(document.getElementById( "WINDOW_"+id_win ).style.top != "")
    {
        document.getElementById( "WINDOW_"+id_win ).style.top = PositionY;
        document.getElementById( "WINDOW_"+id_win ).style.left = PositionX;
        }
    
    //alert('ID:'+id_win+" X:"+PositionX+" Y:"+PositionY+" X:"+array_data[1]+" Y:"+array_data[2]);
    
}
//////////////////////////////////////////////////////////////////////////
function EndAddWindow( WindowContent )
{
//<div id="META_ID_WINDOW" style="display:none">'.$this->m_IdWindow.'</div>
    
    var id_win = g_IdWindow-1;
    var ExtractID=-1;
    
    var BufferString = WindowContent; 
    
    var StartIndex = BufferString.indexOf('<div id="META_ID_WINDOW" style="display:none">');
    var EndIndex = BufferString.indexOf('</div>');
    StartIndex+=46;
    ExtractID = BufferString.substr(StartIndex,EndIndex-StartIndex);
    //alert('ID:'+id_win+'Extract:'+ExtractID+':'+StartIndex+':'+EndIndex);
    id_win = ExtractID;
    if(document.getElementById('MAIN_FRAME_WINDOW_CONTENT_'+id_win) != null)
    {
        document.getElementById('MAIN_FRAME_WINDOW_CONTENT_'+id_win).innerHTML= WindowContent ;
        g_WindowArray[ id_win ].BringToTop();
    }
    
}
//////////////////////////////////////////////////////////////////////////
function ChangeAllWindowTheme( ThemePath )
{
    for( var index = 0; index < g_WindowArray.length ; index++ )
    {
        if( g_WindowArray[index] != null )
        {
            if( g_WindowArray[index].CheckIfExist() )
            {
                g_WindowArray[index].SetTheme( ThemePath );
            }
        }
    }
    RequestPost = new CHttpRequest();
    RequestPost.SetURLTarget( g_WebSiteUrl+'/index.php?FUNCTION=1');
    RequestPost.SetMethod( 'POST' );
    RequestPost.m_Data="THEME="+ThemePath;
    RequestPost.Open();
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//CLASS CWindow
//////////////////////////////////////////////////////////////////////////
function CWindow( ID_Window )
{
    this.m_IdWindow = ID_Window;
    this.m_OldTheme = "";
}
//////////////////////////////////////////////////////////////////////////
CWindow.prototype.CheckIfExist = function()
{
    if(document.getElementById( "WINDOW_"+this.m_IdWindow ))
    {
        return true;
    }else
    {
        return false;
        alert("WINDOW_"+this.m_IdWindow );
    }
}
//////////////////////////////////////////////////////////////////////////
CWindow.prototype.Destroy = function()
{
    document.getElementById( "MAIN_FRAME_WINDOW_"+this.m_IdWindow ).innerHTML='';
    
    lowler_z_index =0;
    lowler_id_index = 0;

    for( var index = 0; index < g_WindowArray.length ; index++ )
    {
        if(document.getElementById( "MAIN_FRAME_WINDOW_"+g_WindowArray[index].m_IdWindow ).innerHTML=='')
            continue;
        if( document.getElementById( "WINDOW_"+g_WindowArray[index].m_IdWindow ) != null )
        {
            if(document.getElementById( "WINDOW_"+g_WindowArray[index].m_IdWindow ).style.zIndex >= lowler_z_index)
            {
                lowler_id_index = index;
                lowler_z_index = document.getElementById( "WINDOW_"+g_WindowArray[index].m_IdWindow ).style.zIndex;
            }
        }
    }
    
    if(document.getElementById( "WINDOW_"+g_WindowArray[lowler_id_index].m_IdWindow))
    {
        g_WindowArray[lowler_id_index].BringToTop();
    }
}
//////////////////////////////////////////////////////////////////////////
CWindow.prototype.BringToTop = function()
{
    if( !this.CheckIfExist() ) return;
    g_ZIndex++;
    document.getElementById( "WINDOW_"+this.m_IdWindow ).style.zIndex = g_ZIndex;
   
    for( var index = 0; index < g_WindowArray.length ; index++ )
    {
    //    alert(g_WindowArray.length +" "+ index +" "+g_WindowArray[index] );
    //    alert("WINDOW_"+g_WindowArray[index]+"_FILTER");
        if( index == this.m_IdWindow )
        {
            document.getElementById( "WINDOW_"+this.m_IdWindow+"_FILTER" ).style.display = "none";
            document.getElementById( "WINDOW_"+this.m_IdWindow+"_GLOW" ).style.display = "block";
           // g_WindowArray[index].Enable();
        }else
        {
            if(document.getElementById( "WINDOW_"+g_WindowArray[index].m_IdWindow))
            {
                g_IdPrevisouWindow = g_WindowArray[index].m_IdWindow;
                document.getElementById( "WINDOW_"+g_WindowArray[index].m_IdWindow+"_FILTER" ).style.display = "block";
                document.getElementById( "WINDOW_"+g_WindowArray[index].m_IdWindow+"_GLOW" ).style.display = "none";
                //g_WindowArray[index].Disable();
            }
        }
    }
}
//////////////////////////////////////////////////////////////////////////
CWindow.prototype.Minimise = function()
{
    document.getElementById( "MAIN_FRAME_WINDOW_"+this.m_IdWindow ).style.display='none';
    HttpPostRequest( g_WebSiteUrlFunction+'2001' , "ID_WINDOW="+this.m_IdWindow, UpdateMinimizeWindow );
}
//////////////////////////////////////////////////////////////////////////
function UpdateMinimizeWindow(Result)
{
    document.getElementById( "TASK_BAR_LEFT" ).innerHTML+=Result;
}
//////////////////////////////////////////////////////////////////////////
CWindow.prototype.Disable = function( )
{
    if( !this.CheckIfExist() ) return;
    this.SetTheme(g_WebSiteUrl+"/RESSOURCE/WINDOW/THEME/DISABLE/");
}
//////////////////////////////////////////////////////////////////////////
CWindow.prototype.Enable = function( )
{
    if( !this.CheckIfExist() ) return;
    this.SetTheme(g_WebSiteUrl+"/RESSOURCE/WINDOW/THEME/YELLOW/");
}
//////////////////////////////////////////////////////////////////////////
CWindow.prototype.SetTheme = function( ThemePath )
{
    if( !this.CheckIfExist() ) return;
    document.getElementById( "WINDOW_TOP_CENTER_"+this.m_IdWindow ).style.backgroundImage = "url("+ThemePath+"window_top_middle.png)";
    document.getElementById( "WINDOW_TOP_RIGHT_"+this.m_IdWindow ).style.backgroundImage = "url("+ThemePath+"window_top_right.png)";
    document.getElementById( "WINDOW_TOP_LEFT_"+this.m_IdWindow ).style.backgroundImage = "url("+ThemePath+"window_top_left.png)";
    
    document.getElementById( "WINDOW_MIDDEL_LEFT_"+this.m_IdWindow ).style.backgroundImage = "url("+ThemePath+"window_middel_left.png)";
    document.getElementById( "WINDOW_MIDDEL_RIGHT_"+this.m_IdWindow ).style.backgroundImage = "url("+ThemePath+"window_middel_right.png)";
    
    document.getElementById( "WINDOW_BOTTOM_LEFT_"+this.m_IdWindow ).style.backgroundImage = "url("+ThemePath+"window_bottom_left.png)";
    document.getElementById( "WINDOW_BOTTOM_CENTER_"+this.m_IdWindow ).style.backgroundImage = "url("+ThemePath+"window_bottom_middle.png)";
    document.getElementById( "WINDOW_BOTTOM_RIGHT_"+this.m_IdWindow ).style.backgroundImage = "url("+ThemePath+"window_bottom_right.png)";    
}
//////////////////////////////////////////////////////////////////////////
CWindow.prototype.SetSize = function( Width , Height )
{
    if( !this.CheckIfExist() ) return;
    var window_base_height = Height;
    var window_base_width = Width;
    
    if(window_base_height<100)window_base_height = 100;
    if(window_base_width<100)window_base_width = 100;
    
    var window_height = window_base_height - 72;
    var window_width= window_base_width -64 ;
    var window_width2 = window_base_width - 32;
    var window_height2 = window_base_height-52;
    
    document.getElementById( "WINDOW_"+this.m_IdWindow ).style.width = window_base_width+"px";
    document.getElementById( "WINDOW_"+this.m_IdWindow ).style.height = window_base_height+"px";
    
    document.getElementById( "WINDOW_CONTENT_"+this.m_IdWindow ).style.width = window_width2+"px";
    document.getElementById( "WINDOW_CONTENT_"+this.m_IdWindow ).style.height = window_height2+"px";
    
    document.getElementById( "WINDOW_TOP_CENTER_"+this.m_IdWindow ).style.width = window_width+"px";
    document.getElementById( "WINDOW_BOTTOM_CENTER_"+this.m_IdWindow ).style.width = window_width+"px";
    
    document.getElementById( "WINDOW_MIDDEL_LEFT_"+this.m_IdWindow ).style.height = window_height+"px";
    document.getElementById( "WINDOW_MIDDEL_RIGHT_"+this.m_IdWindow ).style.height = window_height+"px";
    
    document.getElementById( "WINDOW_TOP_CENTER_"+this.m_IdWindow+"_GLOW" ).style.width = window_width+"px";
    document.getElementById( "WINDOW_BOTTOM_CENTER_"+this.m_IdWindow+"_GLOW" ).style.width = window_width+"px";
    
    document.getElementById( "WINDOW_MIDDEL_LEFT_"+this.m_IdWindow+"_GLOW" ).style.height = window_height+"px";
    document.getElementById( "WINDOW_MIDDEL_RIGHT_"+this.m_IdWindow+"_GLOW" ).style.height = window_height+"px";
}
//////////////////////////////////////////////////////////////////////////
CWindow.prototype.Center = function ()
{
    if( !this.CheckIfExist() ) return;
    window_base_width = RemovePxFromStyle( document.getElementById( "WINDOW_"+this.m_IdWindow ).style.width );
    window_base_height = RemovePxFromStyle( document.getElementById( "WINDOW_"+this.m_IdWindow ).style.height );
    
    

    var larg = (window.innerWidth);
    var haut = (window.innerHeight);

    positionY = ( haut / 2 ) - ( window_base_height );
    positionX = ( larg / 2 ) - ( window_base_width *0.8);
    
    //alert(larg+":"+haut+"\n"+window_base_width+":"+window_base_height+"\n"+positionX+":"+positionY);

    this.SetPosition( positionX , positionY );
}
//////////////////////////////////////////////////////////////////////////
CWindow.prototype.SetPosition = function ( PositionX , PositionY )
{
    if( !this.CheckIfExist() ) return;
    
    if(PositionY<20)
        PositionY = 20;
    
    document.getElementById( "WINDOW_"+this.m_IdWindow ).style.top = PositionY+'px';
    document.getElementById( "WINDOW_"+this.m_IdWindow ).style.left = PositionX+'px';
    
    alert(document.getElementById( "WINDOW_"+this.m_IdWindow ).style.top);
   // UpdateWindowInfo( this.m_IdWindow );
}
//////////////////////////////////////////////////////////////////////////
function StartResizeWindow( ID_Window ,Origin )
{
    resise_win = true;
    cur_id_win = ID_Window;
    
    ResizeMouseClickPositionX = g_MouseInformation.GetMousePosition().GetX() - RemovePxFromStyle( document.getElementById( "WINDOW_"+ID_Window ).style.left );
    ResizeMouseClickPositionY = g_MouseInformation.GetMousePosition().GetY() - RemovePxFromStyle( document.getElementById( "WINDOW_"+ID_Window ).style.top );
    
    resise_origin = Origin;
    //UpdateWindowInfo( ID_Window );
}
//////////////////////////////////////////////////////////////////////////
function StopResizeWindow( ID_Window )
{
    resise_origin = -1;
    resise_win = false;
}
//////////////////////////////////////////////////////////////////////////
function ResizeWindow( ID_Window )
{
    
    var window_mod_width =g_MouseInformation.GetMousePosition().GetX()-RemovePxFromStyle(document.getElementById( "WINDOW_"+ID_Window ).style.left);
    var window_mod_height = g_MouseInformation.GetMousePosition().GetY()-RemovePxFromStyle(document.getElementById( "WINDOW_"+ID_Window ).style.top);
    
    var window_base_width = RemovePxFromStyle( document.getElementById( "WINDOW_"+ID_Window ).style.width);
    var window_base_height = RemovePxFromStyle( document.getElementById( "WINDOW_"+ID_Window ).style.height);
    
    switch(resise_origin)
    {
        case 1://BOTTOM LEFT
            break;
        case 2://BOTTOM_CENTER
            window_base_height = window_mod_height;
            break;
        case 3://BOTTOM_RIGHT
            window_base_height = window_mod_height;
            window_base_width = window_mod_width;
            break;
        case 4://TOP_RIGHT
            window_base_width = window_mod_width;
            break;
        case 5://TOP_CENTER
            window_base_width = window_mod_width;
            break;
        case 6://TOP_LEFT
            break;
        case 7: //MIDDEL_LEFT
            break;
        case 8: //MIDDEL_RIGHT
        window_base_width = window_mod_width;
            break;
    }
    
    g_WindowArray[ ID_Window ].SetSize( window_base_width, window_base_height);
    
    //UpdateWindowInfo( ID_Window );
    //document.getElementById("INFO_WINDOW").innerHTML+="<br/>Mouse X:"+g_MouseInformation.GetMousePosition().GetX()+" Y:"+g_MouseInformation.GetMousePosition().GetY();
    //document.getElementById("INFO_WINDOW").innerHTML+="<br/>ResizeClick X:"+ResizeMouseClickPositionX+" ResizeClick Y:"+ResizeMouseClickPositionY;
    //document.getElementById("INFO_WINDOW").innerHTML+="<br/>Width:"+RemovePxFromStyle( document.getElementById( "WINDOW_"+ID_Window ).style.width)+" Height:"+RemovePxFromStyle( document.getElementById( "WINDOW_"+ID_Window ).style.width);

}
//////////////////////////////////////////////////////////////////////////
function UpdateWindowInfo( ID_Window )
{
    if(document.getElementById("INFO_WINDOW"))
    {
        alert("ici");
    
        document.getElementById("INFO_WINDOW").innerHTML="Information sur la fenetre";
        document.getElementById("INFO_WINDOW").innerHTML+="<br/>PosX:"+RemovePxFromStyle( document.getElementById( "WINDOW_"+ID_Window ).style.left );
        document.getElementById("INFO_WINDOW").innerHTML+="<br/>PosY:"+RemovePxFromStyle( document.getElementById( "WINDOW_"+ID_Window ).style.top );
        document.getElementById("INFO_WINDOW").innerHTML+="<br/>SizeX:"+RemovePxFromStyle( document.getElementById( "WINDOW_"+ID_Window ).style.width );
        document.getElementById("INFO_WINDOW").innerHTML+="<br/>SizeY:"+RemovePxFromStyle( document.getElementById( "WINDOW_"+ID_Window ).style.height );
    }
}
