/**
* Ablak kezel? rendszer
**/

function FindPosLeft(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 FindPosTop(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 windowsWidth(){ //ablakméret szélesség
    var w = 0;
    //IE
    if(!window.innerWidth)
    {
        //strict mode
        if(!(document.documentElement.clientWidth == 0))
        {
            w = document.documentElement.clientWidth;
        }
        //quirks mode
        else
        {
            w = document.body.clientWidth;
        }
    }
    //w3c
    else
    {
        w = window.innerWidth;
    }
    return w;
}

function windowsHeight(){ //ablakméret magasság
    var h = 0;
    //IE
    if(!window.innerWidth)
    {
        //strict mode
        if(!(document.documentElement.clientWidth == 0))
        {
            h = document.documentElement.clientHeight;
        }
        //quirks mode
        else
        {
            h = document.body.clientHeight;
        }
    }
    //w3c
    else
    {
        h = window.innerHeight;
    }
    return h;
}


function ScrollLeft(){ // x irányú scroll
    var offsetX = 0;

    //IE
    if(!window.pageYOffset)
    {
        //strict mode
        if(!(document.documentElement.scrollLeft == 0))
        {
            offsetX = document.documentElement.scrollLeft;
        }
        //quirks mode
        else
        {
            offsetX = document.body.scrollLeft;
        }
    }
    //w3c
    else
    {
        offsetX = window.pageXOffset;
    }
    return offsetX;
}

function ScrollTop(){ // y irányú scroll
    var offsetY = 0;

    //IE
    if(!window.pageYOffset)
    {
        //strict mode
        if(!(document.documentElement.scrollTop == 0))
        {
            offsetY = document.documentElement.scrollTop;
        }
        //quirks mode
        else
        {
            offsetY = document.body.scrollTop;
        }
    }
    //w3c
    else
    {
        offsetY = window.pageYOffset;
    }
    return offsetY;
}


function FullHeight(){ // ablak teljes m?rete
    if (windowsHeight() > document.documentElement.scrollHeight) {
        return  windowsHeight();
    }
    return document.documentElement.scrollHeight;
}

function FullWidth(){ // ablak teljes m?rete
    //return document.documentElement.clientWidth;
    return document.documentElement.scrollWidth;
    if (windowsWidth() > document.documentElement.scrollWidth) {
        return  windowsWidth();
    }
    return document.documentElement.scrollWidth;
}

  
function toggleObjects(action) {    
    var selects = document.getElementsByTagName('object');    
    if(action == 'hide') 
    {        
        for(i=0; i < selects.length; i++) 
        {            
            selects[i].style.visibility='hidden';        
        }    
    } 
    else if(action == 'show') 
    {        
        for(i=0; i < selects.length; i++) 
        {            
            selects[i].style.visibility='visible';        
        }    
    }
}

function toggleSelects(action) {    
    var selects = document.getElementsByTagName('select');    
    if(action == 'hide') 
    {        
        for(i=0; i < selects.length; i++) 
        {            
            selects[i].style.display='none';        
        }    
    } 
    else if(action == 'show') 
    {        
        for(i=0; i < selects.length; i++) 
        {            
            selects[i].style.display='';        
        }    
    }
}

function fadeIn(obj, level, speed, callback)
{
  if (level === undefined) var level = 100;
  if (speed === undefined) var speed = 70;

  ChangeOpacity(null,obj,0);
  for (var i=0; i<=level; i++)
  {
//    setTimeout(ChangeOpacity(i*10,obj), speed*i);
    setTimeout(bind(ChangeOpacity,  obj, i), speed*i);
  }
//  if (callback) setTimeout(callback, speed*(i+1));
}
function fadeOut(obj, speed, callback)
{
  if (speed === undefined) var speed = 70;

  //ChangeOpacity(null,obj,100);
  for (var i=1; i<=100; i++)
  {
//    setTimeout(ChangeOpacity(i*10,obj), speed*i);
    setTimeout(bind(ChangeOpacity,  obj, (100-i)), speed*i);
  }
//  if (callback) setTimeout(callback, speed*(i+1));
}

function bind(fn)
{
    var args = [];
    for (var n=1; n<arguments.length; n++) args.push(arguments[n]);
    return function(e) { return fn.apply(this, [e].concat(args)); };
}

    
function ChangeOpacity(e, id, opacity)
{
    var object = id.style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}

var wBoxer = 
{
    element: document.getElementById("wBoxDiv"),
    myimage: new Image(),
    img_url: "",
    img_array: new Array(),
    img_index: null,
    img_title: "",
    init: function()
    {
        document.onkeypress = wBoxer.checkPress;
        //wBoxer.element.onclick = wBoxer.hide;
    },
    checkPress: function(e)
    {
        
      var kC  = (window.event) ?    // MSIE or Firefox?
                 event.keyCode : e.keyCode;
      var Esc = (window.event) ?   
                27 : e.DOM_VK_ESCAPE // MSIE : Firefox
      if(kC==Esc) {
            document.onkeypress = "";
            wBoxerWindow.close();
      }
    },
    hide: function()
    {
        //ChangeOpacity(null,wBoxer.element,0)
        wBoxer.element.style.display = 'none';
        toggleSelects('show');
        toggleObjects('show');
    },
    show: function(winW,winHeight,title)
    {
        document.getElementById('AjaxLoader').style.display = "block";
        document.getElementById('wBoxTitle').innerHTML = title;
/*        
        wBoxer.element.style.width = FullWidth() + 'px';
        wBoxer.element.style.height = FullHeight() + 'px';
*/
        wBoxer.element.style.width = $(document).width() + 'px';
        wBoxer.element.style.height = $(document).height() + 'px';        

    
        //alert("windowsWidth:"+windowsWidth()+ " windowsHeight():"+windowsHeight()+" FullHeight():"+ FullHeight() + " FullWidth():" + FullWidth());
        wBoxer.init();
        toggleObjects('hide');
        toggleSelects('hide');
        
        //ChangeOpacity(null,wBoxer.element,80)
        wBoxer.element.style.display = 'block';

        //fadeIn(wBoxer.element, 70, 3, "callback");
         $("wBoxDiv").fadeIn(300);

        
        wBoxerWindow.winW = winW;
        wBoxerWindow.winH = winHeight;
        setTimeout("wBoxerWindow.show()",300);
        //SetTimeout("",1000);
        //wBoxerWindow.show();
        
    }
}

var wBoxerWindow = 
{
    
    element: document.getElementById("wBoxWin"),
    winW:0,
    winH:0,
    close: function()
    {
        document.getElementById('wBoxMain').innerHTML = "<p class=\"loading\">Loading...</p>";
        wBoxerWindow.element.style.display = 'none';
        wBoxer.hide();
    },
    hide: function()
    {
        //document.getElementById('wBoxMain').innerHTML = "";
        wBoxerWindow.element.style.display = 'none';
        wBoxer.hide();
    },
    show: function()
    {
        wBoxerWindow.element.style.width = wBoxerWindow.winW + 'px';
        //wBoxerWindow.element.style.height = wBoxerWindow.winH + 'px';

        var top  = Math.round(((windowsHeight()-wBoxerWindow.winH) /2)+ScrollTop());
        var left = Math.round(((windowsWidth()-wBoxerWindow.winW) /2)+ScrollLeft());

        wBoxerWindow.element.style.top = top + 'px';
        wBoxerWindow.element.style.left = left + 'px';
        
        //ChangeOpacity(null,wBoxerWindow.element,100)
        wBoxerWindow.element.style.display = 'block';
        $("wBoxWin").fadeIn(300);
        //fadeIn(wBoxerWindow.element, 100, 6, "callback");
    }
}

var wHelpBoxer = 
{
    element: document.getElementById("wHelpBox"),
    closeing: false,
    close_timer_1: false,
    close_timer_2: false,
    close: function()
    {
        
        if (! wHelpBoxer.closeing) 
        {
            
            wHelpBoxer.close_timer_1 = setTimeout(wHelpBoxer.hide,1500);
            wHelpBoxer.close_timer_2 = setTimeout(wHelpBoxer.dispOff,1700);
        }
        
        /*wHelpBoxer.dispOff();    */
        
    },
    hide: function()
    {
        fadeOut(wHelpBoxer.element, 2, "callback");
    },
    dispOff: function()
    {
        wHelpBoxer.element.style.display = 'none';
        wHelpBoxer.closeing = false;
    },
    clearClose: function()
    {
        wHelpBoxer.closeing = false;
        clearTimeout(wHelpBoxer.close_timer_1);
        clearTimeout(wHelpBoxer.close_timer_2);
    },
    show: function(help_gif,help_text,width,layout)
    {
        
        if (layout === undefined) var layout = "BR";

        if (! wHelpBoxer.closeing) 
        {
            wHelpBoxer.clearClose();
            document.getElementById('wHelpMain').innerHTML = "<p class=\"help_text\">"+help_text+"</p>";

            wHelpBoxer.element.style.width = width + 'px';
            //wBoxerWindow.element.style.height = wBoxerWindow.winH + 'px';
            ChangeOpacity(null, wHelpBoxer.element, 0);
            wHelpBoxer.element.style.display = 'block';
            
            var gifposTop  = FindPosTop(help_gif);
            var gifposLeft = FindPosLeft(help_gif);
            if (layout == "BR") // BottomRight
            {
              gifposTop  += 25;      
              gifposLeft += 15;      
            }
            if (layout == "BL") // BottomLeft
            {
              gifposTop  += 15;      
              gifposLeft -= (width);      
            }
            if (layout == "TR") // TopRight
            {
              gifposTop  -= wHelpBoxer.element.clientHeight+5;      
              gifposLeft += 15;      
            }
            if (layout == "TL") // TopLeft
            {
              gifposTop  -= wHelpBoxer.element.clientHeight+5;      
              gifposLeft -= (width);      
            }
            
            
            wHelpBoxer.element.style.top  = gifposTop + 'px';
            wHelpBoxer.element.style.left = gifposLeft + 'px';
            
            //alert(FindPosTop(help_gif));
            
            //ChangeOpacity(null,wBoxerWindow.element,100)
            fadeIn(wHelpBoxer.element, 100, 2, "callback");
            //alert(wHelpBoxer.element.clientHeight);
        }        
    }
}

var wLoader = 
{
    element: document.getElementById("wBoxLoader"),
    hide: function()
    {
        //ChangeOpacity(null,wBoxer.element,0)
        fadeOut(wLoader.element, 0, 3, "callback");
        wLoader.element.style.display = 'none';
        toggleSelects('show');
        toggleObjects('show');
        $("#wBoxBg").toggle();
    },
    show: function()
    {
        toggleObjects('hide');
        toggleSelects('hide');
        
        $("#wBoxBg").css('width',$(window).width() + 'px');
        $("#wBoxBg").css('height',$(window).height() + 'px');
        $("#wBoxBg").toggle();
        //$("#wBoxBg").css('display', 'block');
               
        var top  = Math.round(((windowsHeight()-200) /2)+ScrollTop());
        var left = Math.round(((windowsWidth()-200) /2)+ScrollLeft());

        wLoader.element.style.top = top + 'px';
        wLoader.element.style.left = left + 'px';
        
        wLoader.element.style.display = 'block';

        fadeIn(wLoader.element, 80, 3, "callback");
        //setTimeout("wBoxerWindow.show()",300);
        //SetTimeout("",1000);
        //wBoxerWindow.show();
        
    }
}

var WSelectWindow = 
{
    element: document.getElementById("WSelect"),
    init: function()
    {
       // alert(document.onkeypress);
        if (document.onkeypress == wBoxer.checkPress) {
            document.onkeypress = WSelectWindow.checkPress;
        }
        
        //wBoxer.element.onclick = wBoxer.hide;
    },
    checkPress: function(e)
    {
        
      var kC  = (window.event) ?    // MSIE or Firefox?
                 event.keyCode : e.keyCode;
      var Esc = (window.event) ?   
                27 : e.DOM_VK_ESCAPE // MSIE : Firefox
      if(kC==Esc) {
            document.onkeypress = wBoxer.checkPress;
            WSelectWindow.close();
      }
    },    
    close: function()
    {
        WSelectWindow.element.style.display = 'none';
        document.getElementById('WSelectContent').innerHTML = '';
        document.getElementById('WSelectLoading').style.display='block';
    },
    show: function(BoxW,BoxH,button)
    {
        var SLoader = document.getElementById('WSelectLoading');
        var loader_topM  = Math.round((BoxH-100) /2);
        var loader_leftM = Math.round((BoxW-100) /2);
        //alert(SLoader.style.marginTop);
        SLoader.style.marginTop = loader_topM + "px" ;
        SLoader.style.marginLeft = loader_leftM + "px" ;
        
        WSelectWindow.init();
        WSelectWindow.element.style.width = BoxW + 'px';
        WSelectWindow.element.style.height = BoxH + 'px';
        //wBoxerWindow.element.style.height = wBoxerWindow.winH + 'px';
/*
        var top  = Math.round(((windowsHeight()-BoxH) /2)+ScrollTop());
        var left = Math.round(((windowsWidth()-BoxW) /2)+ScrollLeft());
*/
        //alert(FindPosLeft(button) + " - ");
        var top  = FindPosTop(button) + 25;
        var left = FindPosLeft(button)-BoxW + button.offsetWidth;
        //var left = (FindPosLeft(button)- BoxH) + button.offsetWidth ;

        WSelectWindow.element.style.top = top + 'px';
        WSelectWindow.element.style.left = left + 'px';
        
        //ChangeOpacity(null,wBoxerWindow.element,100)
        WSelectWindow.element.style.display = 'block';
        //fadeIn(wBoxerWindow.element, 100, 6, "callback");
    }
}