﻿
//Globální proměnné
var oEDDF_tables=new Object();
var oEDDF_tablesCount=0;







//Zinicializuje tabulku drop down funkce
function Initialize_oEDDF(inputID, tableID, CssClass, SelectedIndex, ShowHeader, ShowFooter)
{
    try
    {    
	    //Init	    
	    oEDDF_tables[oEDDF_tablesCount] = document.getElementById(tableID);
	    oEDDF_tables[oEDDF_tablesCount].ID = tableID;	
	    oEDDF_tables[oEDDF_tablesCount].inputID = inputID;
	    oEDDF_tables[oEDDF_tablesCount].CssClass = CssClass;
	    oEDDF_tables[oEDDF_tablesCount].SelectedIndex = SelectedIndex*1;
	    ShowHeader = ShowHeader*1;
	    ShowFooter = ShowFooter*1;
	    oEDDF_tables[oEDDF_tablesCount].ShowFooter = ShowFooter;
	    oEDDF_tables[oEDDF_tablesCount].ShowHeader = ShowHeader;
	    if(ShowHeader){oEDDF_tables[oEDDF_tablesCount].SelectedIndex = oEDDF_tables[oEDDF_tablesCount].SelectedIndex*1;}

	    oEDDF_tables[oEDDF_tablesCount].TRS = oEDDF_tables[oEDDF_tablesCount].getElementsByTagName("tr");
	    oEDDF_tables[oEDDF_tablesCount].Length = oEDDF_tables[oEDDF_tablesCount].TRS.length;		
	    oEDDF_tables[oEDDF_tablesCount].HLRow = -1;
	    oEDDF_tables[oEDDF_tablesCount].Index = oEDDF_tablesCount;


	    //Check rows count
	    if(oEDDF_tables[oEDDF_tablesCount].Length==0){return false;}
	    if((oEDDF_tables[oEDDF_tablesCount].Length==1)&&(ShowFooter||ShowHeader)){return false;}
	    if((oEDDF_tables[oEDDF_tablesCount].Length==2)&&(ShowFooter&&ShowHeader)){return false;}

    	
	    //Set events for rows
	    var len = oEDDF_tables[oEDDF_tablesCount].Length;
	    if(ShowFooter){len-=1;}
	    var i = 0;
	    if(ShowHeader){i+=1;}
	    var headOffset = 0;
	    if(ShowHeader){ headOffset = 1;}

	    for (i; i < len; i++)
	    {
		    oEDDF_tables[oEDDF_tablesCount].TRS[i].onmouseover = oEDDF_RowOn;
		    oEDDF_tables[oEDDF_tablesCount].TRS[i].onmouseout  = oEDDF_RowOff;
		    oEDDF_tables[oEDDF_tablesCount].TRS[i].onclick  = oEDDF_RowClick;
		    oEDDF_tables[oEDDF_tablesCount].TRS[i].tableIndex  = oEDDF_tables[oEDDF_tablesCount].Index;
		    oEDDF_tables[oEDDF_tablesCount].TRS[i].RIndex  = i-headOffset;

		    try{oEDDF_tables[oEDDF_tablesCount].TRS[i].ondblclick = oEDDF_tables[oEDDF_tablesCount].ondblclick;}catch(e){}

		    if((i-headOffset)%2==0)
		    {
			    oEDDF_tables[oEDDF_tablesCount].TRS[i].className = oEDDF_tables[oEDDF_tablesCount].CssClass+"-item-alt"; 
		    }
		    else
		    {
			    oEDDF_tables[oEDDF_tablesCount].TRS[i].className = oEDDF_tables[oEDDF_tablesCount].CssClass+"-item";   
		    } 
	    }

	    if(ShowHeader)
	    {		   
		    oEDDF_tables[oEDDF_tablesCount].TRS[0].tableIndex  = oEDDF_tables[oEDDF_tablesCount].Index;
		    oEDDF_tables[oEDDF_tablesCount].TRS[0].onclick  = oEDDF_NoRowClick;
	    }
	    if(ShowFooter)
	    {		   
		    oEDDF_tables[oEDDF_tablesCount].TRS[oEDDF_tables[oEDDF_tablesCount].Length-1].tableIndex  = oEDDF_tables[oEDDF_tablesCount].Index;
		    oEDDF_tables[oEDDF_tablesCount].TRS[oEDDF_tables[oEDDF_tablesCount].Length-1].onclick  = oEDDF_NoRowClick;
	    }	


	    //SelectedIndex
	    if(oEDDF_tables[oEDDF_tablesCount].SelectedIndex>=0)
	    {
		    
		    (oEDDF_tables[oEDDF_tablesCount].SelectedIndex,(oEDDF_tables[oEDDF_tablesCount].Index));	
	    }

    	
	    oEDDF_tablesCount+=1;	

	    return true;
    }
    catch(e)
    {
	    status="Cannot Initialize Table "+inputID+"! "+e ;
	    return false;
    }
}







//Událost najetí myší na řádek tabulky
function oEDDF_RowOn()  
{ 

	//Nastaví index obarveného řádku

	oEDDF_tables[this.tableIndex].HLRow = this.RIndex;



	//Obarvení provede jen pokud řádek není vybraný (vybraný styl má přednost)

	if (this.RIndex!=oEDDF_tables[this.tableIndex].SelectedIndex)	   
	{
		//Barvu nastaví podle sudosti indexu řádku

		if(this.RIndex%2==0)
		{
			this.className = oEDDF_tables[this.tableIndex].CssClass+"-item-over-alt"; 
		}
		else
		{
			this.className = oEDDF_tables[this.tableIndex].CssClass+"-item-over";   
		} 
	}

}







//Událost opuštění myší řádku tabulky
function oEDDF_RowOff() 
{
	//Odnastaví index obarveného řádku

	oEDDF_tables[this.tableIndex].HLRow=-1;


	//Obarvení provede jen pokud řádek není vybraný (vybraný styl má přednost)
	if (this.RIndex!=oEDDF_tables[this.tableIndex].SelectedIndex)	    
	{
		//Barvu nastaví podle sudosti indexu řádku

		if(this.RIndex%2==0)
		{
			this.className = oEDDF_tables[this.tableIndex].CssClass+"-item-alt"; 
		}
		else
		{
			this.className = oEDDF_tables[this.tableIndex].CssClass+"-item";   
		} 
	}

}







//Vybere řadek tabulky (podle jejího ID) - označí ho jako vybraný a nastaví SelectedIndex
function oEDDF_SelRowByID(index,ID)
{
    var tableIndex = -1;
    
    for(var i = 0; i<oEDDF_tablesCount; i++)
    {
        if(oEDDF_tables[i].ID == ID)
        {
            tableIndex = i;
            break;
        }
    }
    
    return oEDDF_SelRow(index,tableIndex);
}







//Vybere řadek tabulky - označí ho jako vybraný a nastaví SelectedIndex
function oEDDF_SelRow(index,tableIndex)
{	    
    //Vytvoření offsetu řádku
    var headOffset = 0;
	if(oEDDF_tables[tableIndex].ShowHeader=="1"){headOffset = 1;}

	//Pokud je vybrán řádek, odznačí ho
	if(oEDDF_tables[tableIndex].SelectedIndex>=0)
	{
		//Pokud je řádek označený myší

		if(oEDDF_tables[tableIndex].SelectedIndex == oEDDF_tables[tableIndex].HLRow)
		{
			//Barvu nastaví podle sudosti indexu řádku

			if(oEDDF_tables[tableIndex].SelectedIndex%2==0)
			{
				oEDDF_tables[tableIndex].TRS[oEDDF_tables[tableIndex].SelectedIndex].className = oEDDF_tables[tableIndex].CssClass+"-item-over-alt";
			}
			else
			{
				oEDDF_tables[tableIndex].TRS[oEDDF_tables[tableIndex].SelectedIndex].className = oEDDF_tables[tableIndex].CssClass+"-item-over";
			}
		}

		//Pokud není řádek označený myší
		else
		{
			//Barvu nastaví podle sudosti indexu řádku

			if(oEDDF_tables[tableIndex].SelectedIndex%2==0)
			{ 
				oEDDF_tables[tableIndex].TRS[oEDDF_tables[tableIndex].SelectedIndex+headOffset].className = oEDDF_tables[tableIndex].CssClass+"-item-alt";
			}
			else
			{
				oEDDF_tables[tableIndex].TRS[oEDDF_tables[tableIndex].SelectedIndex+headOffset].className = oEDDF_tables[tableIndex].CssClass+"-item";
			}
		}		
	}


	//Označí nový řádek
	
	oEDDF_tables[tableIndex].SelectedIndex = index; 
	oEDDF_tables[tableIndex].TRS[index+headOffset].className = oEDDF_tables[tableIndex].CssClass+"-item-sel";


	//Nastaví hodnotu do hiddenu (value)	

	var s = oEDDF_tables[tableIndex].ID+"_Index";
	var val = index;	
	document.getElementById(s).value = val;	
	
	//Nastavení příznaku FocusIsLost na false
	var tableID = oEDDF_tables[tableIndex].ID;
	document.getElementById(tableID).FocusIsLost = false;
}







//Kliknutí na řádek tabulky
function oEDDF_RowClick()
{	
	oEDDF_SelRow(oEDDF_tables[this.tableIndex].HLRow,this.tableIndex);	

	//focusuje hidden input

	var hs = oEDDF_tables[this.tableIndex].ID+"_HINP";
	var boxID = oEDDF_tables[this.tableIndex].ID;
	document.getElementById(boxID).FocusIsLost = false;
	document.getElementById(hs).focus();
	
	this.ondblclick();
	return true;
}







//Kliknutí na neaktivní část boxu
function oEDDF_NoRowClick()
{		
	//focusuje hidden input

	var hs = oEDDF_tables[this.tableIndex].ID+"_HINP";
	var boxID = oEDDF_tables[this.tableIndex].ID;
	document.getElementById(boxID).FocusIsLost = false;
	document.getElementById(hs).focus();
	
	return true;
}







//Obslouží událost stisku klávesy
function oEDDF_KeyDown(inputID, ID, e)
{
    var k = (document.all)?e.keyCode:e.which;
    var o = document.getElementById(ID);

    if( (!e.ctrlKey)&&(!e.altKey)&&(!e.shiftKey) )
    {

	    if (k==38)
	    {			
		    var i = o.SelectedIndex - 1;		
		    if(i<0)
		    {		      
		        var footOffset = 1; if(o.ShowFooter){footOffset+=1;}
	            if(o.ShowHeader){footOffset+=1;}
        	    
		        var last = o.Length-footOffset;		
		        
		        i = last;
		    }				
		    oEDDF_SelRow(i,o.Index);
		    return false;
	    }

	    if (k==40)
	    {				
		    var i = o.SelectedIndex + 1;
    				
		    var footOffset = 1; if(o.ShowFooter){footOffset+=1;}
	        if(o.ShowHeader){footOffset+=1;}
    	    
		    var last = o.Length-footOffset;		
		    if(i>last)
		    {
		        i = 0;		    
		    }
    						
		    oEDDF_SelRow(i,o.Index);
		    return false;
	    }

	    if (k==36)
	    {	
		    var first = 0;
		    oEDDF_SelRow(first,o.Index);
		    return false;
	    }

	    if (k==35)
	    {		
		    var footOffset = 1; if(o.ShowFooter){footOffset+=1;}
	        if(o.ShowHeader){footOffset+=1;}
		    var last = o.Length-footOffset;
		    oEDDF_SelRow(last,o.Index);

		    return false;
	    }    	

	    if(k==13)
	    {
		    try
		    {
			    o.ondblclick();
		    }
		    catch(e)
		    {
		    }
		    return false;
	    }
    	
	    if (k==27)
	    {
            oEDDF_Hide(inputID, ID);        
            document.getElementById(inputID).Focus();
		    return false;
	    }    	
    }
}







//Vrací index vybraného řádku
function oEDDF_GetSelectedIndex(ID)
{
	var s = ID+"_Index";
	return document.getElementById(s).value;
}







//Vrací hodnotu sloupce primárního klíče vybraného řádku tabulky
function oEDDF_GetSelectedRowPK(ID)
{
	var s = ID+"_Index";
	var index = document.getElementById(s).value;
	var hid = ID+"_Row"+index+"_PK";
	return document.getElementById(hid).value;
}







//Vrací hodnotu textového sloupce vybraného řádku tabulky
function oEDDF_GetSelectedRowText(ID)
{
	var s = ID+"_Index";
	var index = document.getElementById(s).value;
	var hid = ID+"_Row"+index+"_Text";
	return document.getElementById(hid).value;
}







//Vrací vybrané hodnoty do inputu
function oEDDF_ReturnValue(inputID, ID)
{  
    document.getElementById(inputID).SetValue(oEDDF_GetSelectedRowPK(ID));
    document.getElementById(inputID).SetText(oEDDF_GetSelectedRowText(ID));
    oEDDF_Hide(inputID, ID);
    document.getElementById(inputID).Validate(document.getElementById(inputID).GetValue());  
    document.getElementById(inputID).Focus();
}







//Obslouží událost při opuštění objektu zachytávajícího klávesový vstup
function oEDDF_HINPBlur(inputID, ID)
{ 
    if(!document.LockFocus)
    {
        document.getElementById(ID).FocusIsLost = true;
        var code="oEDDF_HINP_BlurDelayed('"+inputID+"','"+ID+"');";
        setTimeout(code,100);   
    }
}







//Provedení zpožděného testu na odskočení z objektu zachytávajícího klávesový vstup
function oEDDF_HINP_BlurDelayed(inputID, ID)
{   
    if(document.getElementById(ID).FocusIsLost)
    {       
        var box = document.getElementById(ID);
        if(document.getElementById(ID).style.display != "")
        {            
            oEDDF_Hide(inputID, ID);              
            document.getElementById(inputID).Focus();
        }        
    }      
}







//Skryje drop down box
/*
function oEDDF_Hide(inputID, ID)
{   
	var box = document.getElementById(ID);        

	if(box.style.display != "")
	{
	    box.style.display = "";	 
	    var wrapperID = ID+"Wrapper";
        //document.getElementById(wrapperID).style.visibility = "hidden";      
        document.getElementById(wrapperID).style.display = "none";      
     
	    document.getElementById(inputID).FunctionsOpened = (document.getElementById(inputID).FunctionsOpened*1) - 1;
	    if(document.getElementById(inputID).FunctionsOpened==0)
	    {
	        document.getElementById(inputID).ValidationStopped = false;
	    }
	}		
}
*/

function oEDDF_Hide(inputID, ID)
{   
	var box = document.getElementById(ID);        

	if(box.style.display != "")
	{
	    box.style.display = "";	   
	         
	    var wrapperID = ID+"Wrapper";
        var wrapper = document.getElementById(wrapperID); 
        wrapper.style.border = "0";           
        wrapper.style.visibility = "hidden";          
     
	    document.getElementById(inputID).FunctionsOpened = (document.getElementById(inputID).FunctionsOpened*1) - 1;
	    if(document.getElementById(inputID).FunctionsOpened==0)
	    {
	        document.getElementById(inputID).ValidationStopped = false;
	    }
	}		
}




/*
function oEDDF_Show(inputID, ID)
{ 
	var box = document.getElementById(ID); 

	if(box==null)
	{	    
	    return;
	}

    var hinpID = ID+"_HINP";
    		
    if((!document.LockFocus)||(document.LockFocusID==inputID))
    {        
        if(((document.getElementById(inputID).FunctionsOpened+"")=="")||
	    ((document.getElementById(inputID).FunctionsOpened+"")=="null")||
	    ((document.getElementById(inputID).FunctionsOpened+"")=="undefined")||
	    (document.getElementById(inputID).FunctionsOpened==null))
	    {
	        document.getElementById(inputID).FunctionsOpened = 1;
	    }
	    else
	    {
	        document.getElementById(inputID).FunctionsOpened = (document.getElementById(inputID).FunctionsOpened*1) + 1;
	    }
        
        document.getElementById(inputID).ValidationStopped = true;
        document.getElementById(inputID).Validators.Hide();
        
        oEDDF_SelRowByID(0,ID);  
          
        var wrapperID = ID+"Wrapper";
        
        if(window.navigator.appName=="Opera")
        {
            box.style.display = "table-cell";
            document.getElementById(wrapperID).style.display = "table";            
        }
        if(window.navigator.appName=="Netscape")
        {
            box.style.display = "table-cell";
            document.getElementById(wrapperID).style.display = "table";            
        }
        if(window.navigator.appName=="Microsoft Internet Explorer")
        {
            box.style.display = "block";
            document.getElementById(wrapperID).style.display = "block";            
        }     

        //document.getElementById(wrapperID).style.visibility = "visible";            
       
	    document.getElementById(hinpID).focus();
	}	
}

*/

//Zobrazí drop down box
function oEDDF_Show(inputID, ID)
{ 

	var box = document.getElementById(ID); 
	if(box==null)
	{	    
	    return;
	}
	
    var hinpID = ID+"_HINP";
    		
    if((!document.LockFocus)||(document.LockFocusID==inputID))
    {        
        if(((document.getElementById(inputID).FunctionsOpened+"")=="")||
	    ((document.getElementById(inputID).FunctionsOpened+"")=="null")||
	    ((document.getElementById(inputID).FunctionsOpened+"")=="undefined")||
	    (document.getElementById(inputID).FunctionsOpened==null))
	    {
	        document.getElementById(inputID).FunctionsOpened = 1;
	    }
	    else
	    {
	        document.getElementById(inputID).FunctionsOpened = (document.getElementById(inputID).FunctionsOpened*1) + 1;
	    }
        
        document.getElementById(inputID).ValidationStopped = true;
        document.getElementById(inputID).Validators.Hide();
        

        oEDDF_SelRowByID(0,ID);   
        
        if(window.navigator.appName=="Opera")
        {
            box.style.display = "table-cell";
        }
        if(window.navigator.appName=="Netscape")
        {
            box.style.display = "table-cell";
        }
        if(window.navigator.appName=="Microsoft Internet Explorer")
        {
            box.style.display = "block";
        }           
        
        var wrapperID = ID+"Wrapper";
        var wrapper = document.getElementById(wrapperID); 
        //wrapper.style.border = "1px solid gray";  
        wrapper.style.visibility = "visible";     
       
        if(window.navigator.appName=="Opera")
        {
            document.getElementById(wrapperID).style.display = "table";            
        }
        if(window.navigator.appName=="Netscape")
        {
            document.getElementById(wrapperID).style.display = "table";            
        }
        if(window.navigator.appName=="Microsoft Internet Explorer")
        {
            document.getElementById(wrapperID).style.display = "block";            
        }    
       
       
       
	    document.getElementById(hinpID).focus();

	}	
}	
	
	

