﻿// JScript File
    function changeMenuBarText(coming)
    {
        coming.style.color='yellow';
    }
    function returnChangeMenuBarText(coming)
    {
        coming.style.color='white';
    }
  function changeBackColor(coming){
//burada 'coming' bir <tr>,bunun ordadaki elemanının rengini değiştirdigim için childNodes[1]

        //if(!coming.childNodes[1])return;
//        coming.style.backgroundColor='#008349';
        coming.style.color='#E8E65A';
//        //C:/Documents and Settings/client02/Desktop/menuTables/imgs/sag_yan_select.png
//        coming.nextSibling.style.backgroundImage='url(imgs/sag_yan_select.png)';
//        coming.previousSibling.style.backgroundImage='url(imgs/sol_yan_select.png)';
    }
    function returnBackColor(coming){
        //if(!coming.childNodes[1])return;
//        coming.style.backgroundColor='#019855';
        coming.style.color='white';
//        coming.nextSibling.style.backgroundImage='url(imgs/sag_yan.png)';
//        coming.previousSibling.style.backgroundImage='url(imgs/sol_yan.png)';
    }
   
////////////////////////////////////////////////////
var t;//timer degiskeni                           //
                                                  //
function timedCount(menuId){                      //
    t=setTimeout("resetMenu('"+menuId+"')",1000); //
}                                                 //
////////////////////////////////////////////////////

function resetMenu(menuId){//acık olan butun menu elemanlarını kapatır
////////////////////////////////////////////////////////////////////////////////////////////
    clearTimeout(t);
    var tableSX=new Array();//table start
    var tableSY=new Array();
    var tableFX=new Array();//table finish
    var tableFY=new Array();
    var menuBarSX =findPosX(document.getElementById(menuId+'_'+'menuBarTable').childNodes[0].childNodes[0].firstChild);
    var menuBarSY =findPosY(document.getElementById(menuId+'_'+'menuBarTable').childNodes[0].childNodes[0].firstChild);
    var menuBarFX = findPosX(document.getElementById(menuId+'_'+'menuBarTable').childNodes[0].childNodes[0].lastChild);
    var menuBarFY = findPosY(document.getElementById(menuId+'_'+'menuBarTable').childNodes[0].childNodes[0].lastChild);
    
    var comingValue = document.getElementById('visibleTracker').value
    if(comingValue=='')return;
    var comingSplited= comingValue.split('_');
    var comingLength = comingSplited.length;
    var sVal= comingSplited[0];
    var splitedVal= comingSplited[0];
    var j=0;
    
      for(i=1;i<comingLength+1;i++){ 
        tableSX[i]=findPosX(document.getElementById(menuId+'_'+sVal));
        tableSY[i]=findPosY(document.getElementById(menuId+'_'+sVal));
        while(document.getElementById(menuId+'_'+sVal).childNodes[0].childNodes[j]){
               tableFX[i]=findPosX(document.getElementById(menuId+'_'+sVal).childNodes[0].childNodes[j].childNodes[2]);
               tableFY[i]=findPosY(document.getElementById(menuId+'_'+sVal).childNodes[0].childNodes[j].childNodes[2]);
               j++;
           }
           j=0;
         sVal+='_'+comingSplited[i];
    }
    var a,s;
    var closeAll=new Array();    
    var closeMe = 1;//1 kapat demek
    var hdnXvalue=parseInt(document.getElementById('hdnX').value);
    var hdnYvalue=parseInt(document.getElementById('hdnY').value);
    
    for(a=0;a<tableFX.length;a++){

        if(hdnXvalue>(tableSX[a]) && hdnXvalue<tableFX[a] && hdnYvalue>tableSY[a] && hdnYvalue<tableFY[a]) closeAll[a]=0;
        else closeAll[a]=1;
    }
    
    for(s=0;a>s;s++){
        if(closeAll[s]==0)closeMe=0;
    }
//mouse menu barın uzerinde bir yerlerdeyse kapatma işlemini iptal etmesi icin    
//asagi satirdaki menuBarHeight=35 "menuBarSY+menuBarHeight".menu bar tek satir oldugu icin "Y" degerini böyle hesaplayabiliym
//alert('mouseX :'+hdnXvalue+' mouseY'+hdnYvalue+'\n menuStartX'+menuBarSX+' menuStartY'+menuBarSY +'\n menuFinishX'+menuBarFX+' menuFinishY'+(menuBarFY+10) );
  if(hdnXvalue>menuBarSX && hdnXvalue<menuBarFX && hdnYvalue>(menuBarSY) && hdnYvalue<menuBarSY+25){
        closeMe=0;
        //alert('ILK \n mouseX :'+hdnXvalue+' mouseY'+hdnYvalue+'\n menuStartX'+menuBarSX+' menuStartY'+menuBarSY +'\n menuFinishX'+menuBarFX+' menuFinishY'+(menuBarFY+10) );
  }

   if(closeMe==0)return;
////////////////////////////////////////////////////////////////////////////////////////////
    var comingValue = document.getElementById('visibleTracker').value
    if(comingValue=='')return;
    var comingSplited= comingValue.split('_');
    var comingLength = comingSplited.length;
    var splitedVal= comingSplited[0];

    for(i=1;i<comingLength+1;i++){ 
           document.getElementById(menuId+'_'+splitedVal).style.visibility='hidden';
           splitedVal+='_'+comingSplited[i];
    }
   document.getElementById('visibleTracker').value='';
    return;
}
    
function openSubMenu(coming,menuId){
    var nodeType=coming.nodeName;//<TR> yada <TD> gibi
    var comingName = "";
    var tmpValue;//hidden inputtaki verinin yedeklendigi degişken
    var _left = 0;
    var _top = 0;
    var comingSplited;
    var comingLength;
    var splitedVal;
    var i;
    var willChange;
   
    tmpValue = document.getElementById("visibleTracker").value;
     
    closeSubMenu(tmpValue,nodeType,menuId);
    if(nodeType == 'TD'){//ana menudeyim demek
        comingName = coming.getAttribute("name");
        _left =findPosX(coming);
        _top = findPosY(coming);
//menü bir user kontrol oldugu için .NET kendisi id'leri degistiriyo,bunun icin user kontrolun id'sini menu elenamlarının basına koymak gerekiyo
        document.getElementById(menuId+'_'+comingName).style.visibility="visible";
        document.getElementById(menuId+'_'+comingName).style.top=_top+24;
        document.getElementById(menuId+'_'+comingName).style.left=_left-12;
        document.getElementById("visibleTracker").value=comingName;
        
        closeSubMenu(tmpValue,nodeType,menuId);
    }else if(nodeType == 'TR'){//
 //<tr>lerin 'name'leri o <tr> nin uzerinde gelindiginde acilacak pencerenin id'si ile aynı
        comingName = coming.getAttribute("name");
        _left =findPosX(coming.childNodes[2]);//bir <tr> nin içinde 3 tane <td> var,bunun en sonundakinin pozisyonunu buluyor
        _top = findPosY(coming.childNodes[2]);
        
        if(!document.getElementById(menuId+'_'+comingName)){
            comingSplited= comingName.split('_');
            comingLength = comingSplited.length;
            splitedVal= comingSplited[0];
            
            for(i=1;i<comingLength-1;i++){//2_2_1 den sadece 2_2 alınıyor,'1' olan kısım donguyle hide edilecek
                splitedVal +='_'+comingSplited[i];
            }
            for(i=1;i<10;i++){//2_2_1 den sadece 2_2 alınıyor,'1' olan kısım donguyle hide edilecek
               willChange = splitedVal+'_'+i;//splitedVal=2_2,bu döngude splitedVal'in sonuna rakamlar eklenerek diştaki table hide ediliyor('2_2_1' , '2_2_2')
               if(!document.getElementById(menuId+'_'+willChange))break;
               document.getElementById(menuId+'_'+willChange).style.visibility='hidden';
            }
            document.getElementById("visibleTracker").value=splitedVal;
            return;
         }
        
        if(document.getElementById(menuId+'_'+comingName).style.visibility == 'visible')return;
        document.getElementById(menuId+'_'+comingName).style.visibility="visible";
        document.getElementById(menuId+'_'+comingName).style.left=_left;
        document.getElementById(menuId+'_'+comingName).style.top=_top;
        document.getElementById("visibleTracker").value=comingName;
        
        closeSubMenu(tmpValue,nodeType,menuId);//yeni acılan menu elemanlarından sona kapatılması gereken elemanları kapatıyor
    }
}
 
function closeSubMenu(comingValue,nodeType,menuId){
        var hiddenValue= document.getElementById('visibleTracker').value; 
        var comingArray ;
        var hiddenArray;
        var hArrayVal;
        var hComingVal;
        var turnNumber;
        var i;
        var currentOpenMenus='';
          
        if(nodeType=='TD'){
           if(comingValue=='')return;
           var comingSplited= comingValue.split('_');
           var comingLength = comingSplited.length;
           var splitedVal= comingSplited[0];
           for(i=1;i<comingLength+1;i++){ 
               if(splitedVal==hiddenValue){//olusan id ile gizli alandaki id aynıys silme
                    splitedVal+='_'+comingSplited[i];
                    continue;}
               document.getElementById(menuId+'_'+splitedVal).style.visibility='hidden';
               splitedVal+='_'+comingSplited[i];
            }
           return;
        }else if(nodeType == 'TR'){
            
            hiddenValue= document.getElementById('visibleTracker').value;
            comingArray = comingValue.split("_")
            hiddenArray= hiddenValue.split("_");
            
            hArrayVal=hiddenArray[0];
            hComingVal=comingArray[0];
            if(comingArray.length>hiddenArray.length){
                for(i=1;i<hiddenArray.length+1;i++){  
                    if(hArrayVal == hComingVal){ 
//tablo isimleri '1','1_2','1_2_1' şeklinde ayarlandıgı için aşagıdaki şekilde adım adım bir alt seviyedeki taboya uulaşılıyor                   
                        hArrayVal +='_'+hiddenArray[i];
                        hComingVal +='_'+comingArray[i];
                        continue;
                    }
                    document.getElementById(menuId+'_'+hComingVal).style.visibility='hidden';
                    hArrayVal +='_'+hiddenArray[i];
                    hComingVal +='_'+comingArray[i];
                }
                for(;i<comingArray.length+1;i++){//yukrarıdaki i'den dvm ediyo
                    hArrayVal +='_'+hiddenArray[i];
                    document.getElementById(menuId+'_'+hComingVal).style.visibility='hidden';
                    hComingVal +='_'+comingArray[i];
                }
            }else if(hiddenArray.length>=comingArray.length){
                for(i=1;i<comingArray.length+1;i++){
                    if(hArrayVal == hComingVal){ 
                        hArrayVal +='_'+hiddenArray[i];
                        hComingVal +='_'+comingArray[i];
                        continue;
                    }
                    document.getElementById(menuId+'_'+hComingVal).style.visibility='hidden';
                    hArrayVal +='_'+hiddenArray[i];
                    hComingVal +='_'+comingArray[i];
                }
            }
        }//end of if(nodeType == 'TR')
}//end of closeSubMenu(comingValue,nodeType)
 
function findPosX(obj){
    var curleft = 0;
    if(obj.offsetParent)
        while(1){
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
}//end of findPosX(obj)

function findPosY(obj){
    var curtop = 0;
    if(obj.offsetParent)
        while(1){
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
}//end of findPosY(obj)

///////////////mouse pozisyonunu al///////////////
document.onmousemove=mousePos;
function mousePos(e){
    document.getElementById('hdnX').value=event.x;
    document.getElementById('hdnY').value=event.y;}
///////////////////////////////////////////////////////////////