


//Inicializuje oEditBase (přidá události)
function oEditBase_Initialization(ID)
{
	var edit = document.getElementById(ID);	

    //IE/Gecko
    if(document.attachEvent)//IE
    {
        edit.attachEvent('onfocus',         function(ev) {try{ return oEditBase_FireGotFocusEvent(ID, ev);}     catch(ex){status = 'Při obsluhování události GotFocus nastala chyba: '+ex;       return false;}});
        edit.attachEvent('onblur',          function(ev) {try{ return oEditBase_FireLostFocusEvent(ID, ev);}    catch(ex){status = 'Při obsluhování události LostFocus nastala chyba: '+ex;      return false;}});
        edit.attachEvent('onkeydown',       function(ev) {try{ return oEditBase_FireKeyDownEvent(ID, ev);}      catch(ex){status = 'Při obsluhování události KeyDown nastala chyba: '+ex;        return false;}});
        edit.attachEvent('onkeyup',         function(ev) {try{ return oEditBase_FireKeyUpEvent(ID, ev);}        catch(ex){status = 'Při obsluhování události KeyUp nastala chyba: '+ex;          return false;}});
        edit.attachEvent('onkeypress',      function(ev) {try{ return oEditBase_FireKeyPressEvent(ID, ev);}     catch(ex){status = 'Při obsluhování události KeyPressEvent nastala chyba: '+ex;  return false;}});
        edit.attachEvent('ondblclick',      function(ev) {try{ return oEditBase_FireDoubleClickEvent(ID, ev);}  catch(ex){status = 'Při obsluhování události DoubleClick nastala chyba: '+ex;    return false;}});
        edit.attachEvent('onclick',         function(ev) {try{ return oEditBase_FireClickEvent(ID, ev);}        catch(ex){status = 'Při obsluhování události Click nastala chyba: '+ex;          return false;}});
        edit.attachEvent('onmouseover',     function(ev) {try{ return oEditBase_FireMouseOverEvent(ID, ev);}    catch(ex){status = 'Při obsluhování události MouseOver nastala chyba: '+ex;      return false;}});
        edit.attachEvent('onmouseout',      function(ev) {try{ return oEditBase_FireMouseOutEvent(ID, ev);}     catch(ex){status = 'Při obsluhování události MouseOut nastala chyba: '+ex;       return false;}});
        edit.attachEvent('onmousemove',     function(ev) {try{ return oEditBase_FireMouseMoveEvent(ID, ev);}    catch(ex){status = 'Při obsluhování události MouseMove nastala chyba: '+ex;      return false;}});
        edit.attachEvent('onmousedown',     function(ev) {try{ return oEditBase_FireMouseDownEvent(ID, ev);}    catch(ex){status = 'Při obsluhování události MouseDown nastala chyba: '+ex;      return false;}});
        edit.attachEvent('onmouseup',       function(ev) {try{ return oEditBase_FireMouseUpEvent(ID, ev);}      catch(ex){status = 'Při obsluhování události MouseUp nastala chyba: '+ex;        return false;}});
    }
    else//Gecko
    {
        edit.addEventListener('focus',      function(ev) {try{ return oEditBase_FireGotFocusEvent(ID, ev);}     catch(ex){status = 'Při obsluhování události GotFocus nastala chyba: '+ex;       return false;}}, false);
        edit.addEventListener('blur',       function(ev) {try{ return oEditBase_FireLostFocusEvent(ID, ev);}    catch(ex){status = 'Při obsluhování události LostFocus nastala chyba: '+ex;      return false;}}, false);
        edit.addEventListener('keydown',    function(ev) {try{ return oEditBase_FireKeyDownEvent(ID, ev);}      catch(ex){status = 'Při obsluhování události KeyDown nastala chyba: '+ex;        return false;}}, false);
        edit.addEventListener('keyup',      function(ev) {try{ return oEditBase_FireKeyUpEvent(ID, ev);}        catch(ex){status = 'Při obsluhování události KeyUp nastala chyba: '+ex;          return false;}}, false);
        edit.addEventListener('keypress',   function(ev) {try{ return oEditBase_FireKeyPressEvent(ID, ev);}     catch(ex){status = 'Při obsluhování události KeyPressEvent nastala chyba: '+ex;  return false;}}, false);
        edit.addEventListener('dblclick',   function(ev) {try{ return oEditBase_FireDoubleClickEvent(ID, ev);}  catch(ex){status = 'Při obsluhování události DoubleClick nastala chyba: '+ex;    return false;}}, false);
        edit.addEventListener('click',      function(ev) {try{ return oEditBase_FireClickEvent(ID, ev);}        catch(ex){status = 'Při obsluhování události Click nastala chyba: '+ex;          return false;}}, false);
        edit.addEventListener('mouseover',  function(ev) {try{ return oEditBase_FireMouseOverEvent(ID, ev);}    catch(ex){status = 'Při obsluhování události MouseOver nastala chyba: '+ex;      return false;}}, false);
        edit.addEventListener('mouseout',   function(ev) {try{ return oEditBase_FireMouseOutEvent(ID, ev);}     catch(ex){status = 'Při obsluhování události MouseOut nastala chyba: '+ex;       return false;}}, false);
        edit.addEventListener('mousemove',  function(ev) {try{ return oEditBase_FireMouseMoveEvent(ID, ev);}    catch(ex){status = 'Při obsluhování události MouseMove nastala chyba: '+ex;      return false;}}, false);
        edit.addEventListener('mousedown',  function(ev) {try{ return oEditBase_FireMouseDownEvent(ID, ev);}    catch(ex){status = 'Při obsluhování události MouseDown nastala chyba: '+ex;      return false;}}, false);
        edit.addEventListener('mouseup',    function(ev) {try{ return oEditBase_FireMouseUpEvent(ID, ev);}      catch(ex){status = 'Při obsluhování události MouseUp nastala chyba: '+ex;        return false;}}, false);
    }
    
    edit.setAttribute("joatt", "japos");
		
	//vytvoření objektů událostí
	var init = new Object();
	var gotFocus = new Object();	
	var lostFocus = new Object();
	var keyDown = new Object();
	var keyUp = new Object();
	var keyPress = new Object();
	var textChanged = new Object();
	var preValidate = new Object();
	var afterValidate = new Object();
	var valueChanged = new Object();	
	var doubleClick = new Object();
	var click = new Object();
	var mouseOver = new Object();
	var mouseOut = new Object();
	var mouseMove = new Object();
	var mouseDown = new Object();
	var mouseUp = new Object();
	var mouseWheel = new Object();		
    
	//navázání událostí na edit
	edit.Init = init;
	edit.GotFocus = gotFocus;
	edit.LostFocus = lostFocus;
	edit.KeyDown = keyDown;
	edit.KeyUp = keyUp;
	edit.KeyPress = keyPress;
	edit.TextChanged = textChanged;
	edit.PreValidate = preValidate;
	edit.AfterValidate = afterValidate;
	edit.ValueChanged = valueChanged;	
	edit.DoubleClick = doubleClick;	
	edit.Click = click;
	edit.MouseOver = mouseOver;
	edit.MouseOut = mouseOut;
	edit.MouseMove = mouseMove;
	edit.MouseDown = mouseDown;
	edit.MouseUp = mouseUp;
	edit.MouseWheel = mouseWheel;	

	//vytvoření handler listů	
	init.HandlerList = [];
	gotFocus.HandlerList = [];
	lostFocus.HandlerList = [];
	keyDown.HandlerList = [];
	keyUp.HandlerList = [];
	keyPress.HandlerList = [];
	textChanged.HandlerList = [];
	preValidate.HandlerList = [];
	afterValidate.HandlerList = [];
	valueChanged.HandlerList = [];		
	doubleClick.HandlerList = [];
	click.HandlerList = [];
	mouseOver.HandlerList = [];
	mouseOut.HandlerList = [];
	mouseMove.HandlerList = [];
	mouseDown.HandlerList = [];
	mouseUp.HandlerList = [];
	mouseWheel.HandlerList = [];	
	
	//navázání funkce AddHandler
	init.AddHandler = function(handler){return oEditBase_AddHandler(init.HandlerList, handler);};
	gotFocus.AddHandler = function(handler){return oEditBase_AddHandler(gotFocus.HandlerList, handler);};
	lostFocus.AddHandler = function(handler){return oEditBase_AddHandler(lostFocus.HandlerList, handler);};
	keyDown.AddHandler = function(handler){return oEditBase_AddHandler(keyDown.HandlerList, handler);};
	keyUp.AddHandler = function(handler){return oEditBase_AddHandler(keyUp.HandlerList, handler);};
	keyPress.AddHandler = function(handler){return oEditBase_AddHandler(keyPress.HandlerList, handler);};
	textChanged.AddHandler = function(handler){return oEditBase_AddHandler(textChanged.HandlerList, handler);};
	preValidate.AddHandler = function(handler){return oEditBase_AddHandler(preValidate.HandlerList, handler);};
	afterValidate.AddHandler = function(handler){return oEditBase_AddHandler(afterValidate.HandlerList, handler);};
	valueChanged.AddHandler = function(handler){ return oEditBase_AddHandler(valueChanged.HandlerList, handler);};	
	doubleClick.AddHandler = function(handler){return oEditBase_AddHandler(doubleClick.HandlerList, handler);};
	click.AddHandler = function(handler){return oEditBase_AddHandler(click.HandlerList, handler);};
	mouseOver.AddHandler = function(handler){return oEditBase_AddHandler(mouseOver.HandlerList, handler);};
	mouseOut.AddHandler = function(handler){return oEditBase_AddHandler(mouseOut.HandlerList, handler);};
	mouseMove.AddHandler = function(handler){return oEditBase_AddHandler(mouseMove.HandlerList, handler);};
	mouseDown.AddHandler = function(handler){return oEditBase_AddHandler(mouseDown.HandlerList, handler);};
	mouseUp.AddHandler = function(handler){return oEditBase_AddHandler(mouseUp.HandlerList, handler);};
	mouseWheel.AddHandler = function(handler){return oEditBase_AddHandler(mouseWheel.HandlerList, handler);};
	
	//navázání funkcí FireEvent
	edit.FireInitEvent = function(evt){ return oEditBase_FireInitEvent(ID, evt);};
	edit.FireGotFocusEvent = function(evt){ return oEditBase_FireGotFocusEvent(ID, evt);};
	edit.FireLostFocusEvent = function(evt){ return oEditBase_FireLostFocusEvent(ID, evt);};
	edit.FireKeyDownEvent = function(evt){ return oEditBase_FireKeyDownEvent(ID, evt);};
	edit.FireKeyUpEvent = function(evt){ return oEditBase_FireKeyUpEvent(ID, evt);};
	edit.FireKeyPressEvent = function(evt){ return oEditBase_FireKeyPressEvent(ID, evt);};
	edit.FireTextChangedEvent = function(evt){ return oEditBase_FireTextChangedEvent(ID, evt);};
	edit.FirePreValidateEvent = function(evt){ return oEditBase_FirePreValidateEvent(ID, evt);};
	edit.FireAfterValidateEvent = function(evt){ return oEditBase_FireAfterValidateEvent(ID, evt);};		
	edit.FireValueChangedEvent = function(evt){ return oEditBase_FireValueChangedEvent(ID, evt);};
	edit.FireDoubleClickEvent = function(evt){ return oEditBase_FireDoubleClickEvent(ID, evt);};
	edit.FireClickEvent = function(evt){ return oEditBase_FireClickEvent(ID, evt);};
	edit.FireMouseOverEvent = function(evt){ return oEditBase_FireMouseOverEvent(ID, evt);};
	edit.FireMouseOutEvent = function(evt){ return oEditBase_FireMouseOutEvent(ID, evt);};
	edit.FireMouseMoveEvent = function(evt){ return oEditBase_FireMouseMoveEvent(ID, evt);};
	edit.FireMouseDownEvent = function(evt){ return oEditBase_FireMouseDownEvent(ID, evt);};
	edit.FireMouseUpEvent = function(evt){ return oEditBase_FireMouseUpEvent(ID, evt);};
	edit.FireMouseWheelEvent = function(evt){ return oEditBase_FireMouseWheelEvent(ID, evt);};

	//navázání funkce IsEmpty
	init.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(init.HandlerList);};
	gotFocus.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(gotFocus.HandlerList);};
	lostFocus.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(lostFocus.HandlerList);};
	keyDown.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(keyDown.HandlerList);};
	keyUp.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(keyUp.HandlerList);};
	keyPress.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(keyPress.HandlerList);};
	textChanged.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(textChanged.HandlerList);};
	preValidate.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(preValidate.HandlerList);};
	afterValidate.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(afterValidate.HandlerList);};
	valueChanged.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(valueChanged.HandlerList);};	
	doubleClick.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(doubleClick.HandlerList);};
	click.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(click.HandlerList);};
	mouseOver.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(mouseOver.HandlerList);};
	mouseOut.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(mouseOut.HandlerList);};
	mouseMove.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(mouseMove.HandlerList);};
	mouseDown.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(mouseDown.HandlerList);};
	mouseUp.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(mouseUp.HandlerList);};
	mouseWheel.IsEmpty = function(){return oEditBase_IsEmptyHandlerList(mouseWheel.HandlerList);};

	//navázání funkce GetCount
	init.GetCount = function(){return oEditBase_GetCountHandlerList(init.HandlerList);};
	gotFocus.GetCount = function(){return oEditBase_GetCountHandlerList(gotFocus.HandlerList);};
	lostFocus.GetCount = function(){return oEditBase_GetCountHandlerList(lostFocus.HandlerList);};
	keyDown.GetCount = function(){return oEditBase_GetCountHandlerList(keyDown.HandlerList);};
	keyUp.GetCount = function(){return oEditBase_GetCountHandlerList(keyUp.HandlerList);};
	keyPress.GetCount = function(){return oEditBase_GetCountHandlerList(keyPress.HandlerList);};
	textChanged.GetCount = function(){return oEditBase_GetCountHandlerList(textChanged.HandlerList);};
	preValidate.GetCount = function(){return oEditBase_GetCountHandlerList(preValidate.HandlerList);};
	afterValidate.GetCount = function(){return oEditBase_GetCountHandlerList(afterValidate.HandlerList);};
	valueChanged.GetCount = function(){return oEditBase_GetCountHandlerList(valueChanged.HandlerList);};	
	doubleClick.GetCount = function(){return oEditBase_GetCountHandlerList(doubleClick.HandlerList);};
	click.GetCount = function(){return oEditBase_GetCountHandlerList(click.HandlerList);};
	mouseOver.GetCount = function(){return oEditBase_GetCountHandlerList(mouseOver.HandlerList);};
	mouseOut.GetCount = function(){return oEditBase_GetCountHandlerList(mouseOut.HandlerList);};
	mouseMove.GetCount = function(){return oEditBase_GetCountHandlerList(mouseMove.HandlerList);};
	mouseDown.GetCount = function(){return oEditBase_GetCountHandlerList(mouseDown.HandlerList);};
	mouseUp.GetCount = function(){return oEditBase_GetCountHandlerList(mouseUp.HandlerList);};
	mouseWheel.GetCount = function(){return oEditBase_GetCountHandlerList(mouseWheel.HandlerList);};
	
	
	//Text a Value
	var valID = ID+"_HFValue";	
	edit.GetText = function(){ return document.getElementById(ID).value; };
	edit.GetValue = function()
	{ 
	    var hedit = document.getElementById(valID);
	    if(hedit != undefined)
	    {
	        return hedit.value;
	    }
	    else
	    {
	        return "";
	    }
	}    
	edit.SetText = function(text){ document.getElementById(ID).value = text; edit.FireTextChangedEvent(null); return true; };	
	edit.SetValue = function(val)
	{ 
	    var hedit = document.getElementById(valID);
	    if(hedit != undefined)
	    {
	        hedit.value = val;
	    }
	    edit.FireValueChangedEvent(null);
	    edit.RefreshText();
	    return true;
	};		
	
	//Refresh
	edit.RefreshText = function(){return oEditBase_RefreshText(ID);};
	edit.RefreshValue = function(){return oEditBase_RefreshValue(ID);};
	edit.TextToValue = function(){return oEditBase_TextToValue(ID);}

	
	//Focus	
	edit.Focus = function(){ oEditBase_Focus(ID); };
	edit.FocusNoSelect = function(){ oEditBase_FocusNoSelect(ID); };
	
	
	//Validators
	edit.Validators = [];
	edit.Validators.AddValidator = function(ID, handler, errorMessagesBoxID, errorMessageID, recommendation, focusOnError, validateImmediately){ oEditBase_AddValidator(ID, edit.Validators, handler, errorMessagesBoxID, errorMessageID, recommendation, focusOnError, validateImmediately); };
	edit.Validate = function(value){ return oEditBase_Validate(ID,false,value);};
	edit.ValidateFinal = function(value){ return oEditBase_Validate(ID,true,value);};
	edit.ValidationStopped = false;
	edit.Validators.Hide = function(){return oEditBase_HideValidators(ID);};
}







//Přidá k editu validátor
function oEditBase_AddValidator(ID, validators, handler, errorMessageBoxID, errorMessageID, recommendation, focusOnError, validateImmediately)
{    
    var errorMessage = document.getElementById(errorMessageID);        
    errorMessage.Hide = function(){errorMessage.style.display = "";};
    
    if(window.navigator.appName=="Opera")
    {
        errorMessage.Show = function()
        {
            var code="if(!document.getElementById('"+ID+"').ValidationStopped)" + 
            "{document.getElementById('"+errorMessageID+"').style.display = \"table-cell\";" +
            "document.getElementById('"+ID+"_ValidatorsWrapper').style.display=\"table\";}";
            setTimeout(code,100);
        };
    }
    if(window.navigator.appName=="Netscape")
    {
        errorMessage.Show = function()
        {
            var code="if(!document.getElementById('"+ID+"').ValidationStopped)" + 
            "{document.getElementById('"+errorMessageID+"').style.display = \"table-cell\";" +
            "document.getElementById('"+ID+"_ValidatorsWrapper').style.display=\"table\";}";
            setTimeout(code,100);
        };
    }
    if(window.navigator.appName=="Microsoft Internet Explorer")
    {
        errorMessage.Show = function()
        {
            var code="if(!document.getElementById('"+ID+"').ValidationStopped)" + 
            "{document.getElementById('"+errorMessageID+"').style.display = \"block\";" +
            "document.getElementById('"+ID+"_ValidatorsWrapper').style.display=\"block\";}";
            setTimeout(code,100);
        };
    }
    
    handler.ErrorMessage = errorMessage;
    
    
    var errorMessageBox = document.getElementById(errorMessageBoxID);        
    var errorMessageBoxWrapper = document.getElementById(ID + "_ValidatorsWrapper");
    errorMessageBox.Hide = function(){errorMessageBox.style.display = ""; errorMessageBoxWrapper.style.display = "none";};
    
    if(window.navigator.appName=="Opera")
    {
        errorMessageBox.Show = function(){var code="if(!document.getElementById('"+ID+"').ValidationStopped){document.getElementById('"+errorMessageBoxID+"').style.display = \"table\";}"; setTimeout(code,100);};        
    }
    if(window.navigator.appName=="Netscape")
    {
        errorMessageBox.Show = function(){var code="if(!document.getElementById('"+ID+"').ValidationStopped){document.getElementById('"+errorMessageBoxID+"').style.display = \"table\";}"; setTimeout(code,100);};
    }
    if(window.navigator.appName=="Microsoft Internet Explorer")
    {
        errorMessageBox.Show = function(){var code="if(!document.getElementById('"+ID+"').ValidationStopped){document.getElementById('"+errorMessageBoxID+"').style.display = \"block\";}"; setTimeout(code,100);};
    }
   
    handler.ErrorMessageBox = errorMessageBox;
        
    handler.Recommendation = recommendation;
    handler.FocusOnError = focusOnError;
    handler.ValidateImmediately = validateImmediately;
    validators.push(handler);    
}






//Převezme hodnotu editačního pole, přeformátuje ji a zobrazí jako text
function oEditBase_RefreshText(ID)
{
    var edit = document.getElementById(ID);
    
	//Přeformátování
	var val = edit.GetValue();

	var text = val+"";
	if(text=="undefined" || text=="null")
	{
		text = "";
	}	

	//Zapsání hodnoty a zobrazení
	edit.SetText(text);	
}



//Zkusí převést text v editu na hodnotu a vrátit ji jako výsledek. Při neúspěchu vyvolá výjimku.
function oEditBase_TextToValue(ID)
{
    var edit = document.getElementById(ID);   
	var text = edit.GetText();
	var val = text+"";	
	if(val=="undefined" || val=="null")
	{
		val = "";
	}
	return val;
}



//Převezme textovou hodnotu z editačního pole, přeformátuje ji a uloží ji jako hodnotu. Přitom provádí
//validaci a v případě neúspěchu může zfocusovat edit
function oEditBase_RefreshValue(ID)
{  
    var edit = document.getElementById(ID);
    
    //Převedení textu na hodnotu
    var val = null;    
    try
    {    
        val = edit.TextToValue();
    }
    catch(e)
    {
        //Nelze převést text na hodnotu
        edit.IsValid = false;
        edit.Focus();
        return;
    }
    
    //Validace validátorami    
    var writeValue = edit.Validate(val);
   
	//Zapsání hodnoty a zobrazení
	if(writeValue)
	{	    
	    edit.SetValue(val);	    
	}
}






//Přidá handler do handler listu
function oEditBase_AddHandler(handlerList, handler)
{
	handlerList.push(handler);	
}








//Vrací true, pokud je daný handler list prázdný, tj. na událost není navěšený žádný handler
function oEditBase_IsEmptyHandlerList(handlerList)
{
	return handlerList.length==0;
}








//Vrací počet prvků v handler listu
function oEditBase_GetCountHandlerList(handlerList)
{
    return handlerList.length;
}








//Provede všechny handlery navěšené na událost
function oEditBase_FireEvent(ID, evt, handlerList)
{
    var res = true;
	for(var i = 0; i<handlerList.length; i++)
	{
		var hlres = handlerList[i](evt, ID);		
		hlres = hlres + "";
		
		if((hlres==null)||(hlres=="")||(hlres=="null")||(hlres=="undefined")||(hlres==true)||(hlres=="true")||(hlres=="1"))
		{
		    //hlres = true;
		}
		else
		{
		    //hlres = false;		  
		    res = false;
		}
					
	}	
	return res;
}


//Vyvolá událost Init
function oEditBase_FireInitEvent(ID, evt)
{
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).Init.HandlerList);
}

//Vyvolá událost GotFocus
function oEditBase_FireGotFocusEvent(ID, evt)
{   
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).GotFocus.HandlerList);
}

//Vyvolá událost LostFocus
function oEditBase_FireLostFocusEvent(ID, evt)
{
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).LostFocus.HandlerList);
}

//Vyvolá událost KeyDown
function oEditBase_FireKeyDownEvent(ID, evt)
{
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).KeyDown.HandlerList);
}

//Vyvolá událost KeyUp
function oEditBase_FireKeyUpEvent(ID, evt)
{
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).KeyUp.HandlerList);
}

//Vyvolá událost KeyPress
function oEditBase_FireKeyPressEvent(ID, evt)
{
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).KeyPress.HandlerList);
}

//Vyvolá událost TextChanged
function oEditBase_FireTextChangedEvent(ID, evt)
{
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).TextChanged.HandlerList);
}

//Vyvolá událost PreValidate
function oEditBase_FirePreValidateEvent(ID, evt)
{
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).PreValidate.HandlerList);
}

//Vyvolá událost AfterValidate
function oEditBase_FireAfterValidateEvent(ID, evt)
{
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).AfterValidate.HandlerList);
}

//Vyvolá událost ValueChanged
function oEditBase_FireValueChangedEvent(ID, evt)
{ 
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).ValueChanged.HandlerList);
}

//Vyvolá událost DoubleClick
function oEditBase_FireDoubleClickEvent(ID, evt)
{
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).DoubleClick.HandlerList);
}

//Vyvolá událost Click
function oEditBase_FireClickEvent(ID, evt)
{
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).Click.HandlerList);
}

//Vyvolá událost MouseOver
function oEditBase_FireMouseOverEvent(ID, evt)
{
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).MouseOver.HandlerList);
}

//Vyvolá událost MouseOut
function oEditBase_FireMouseOutEvent(ID, evt)
{
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).MouseOut.HandlerList);
}

//Vyvolá událost MouseMove
function oEditBase_FireMouseMoveEvent(ID, evt)
{
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).MouseMove.HandlerList);
}

//Vyvolá událost MouseDown
function oEditBase_FireMouseDownEvent(ID, evt)
{
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).MouseDown.HandlerList);
}

//Vyvolá událost MouseUp
function oEditBase_FireMouseUpEvent(ID, evt)
{
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).MouseUp.HandlerList);
}

//Vyvolá událost MouseWheel
function oEditBase_FireMouseWheelEvent(ID, evt)
{
    return oEditBase_FireEvent(ID, evt, document.getElementById(ID).MouseWheel.HandlerList);
}









//Skryje všechny validátory
function oEditBase_HideValidators(ID)
{
    var edit = document.getElementById(ID);
    
    for(var i = 0; i<edit.Validators.length; i++)
    {
        var validator = edit.Validators[i];
        validator.ErrorMessage.Hide();
        validator.ErrorMessageBox.Hide(); 
    }       
}










//Zvaliduje edit, nastaví příznak IsValid, zobrazí/skryje chybová hlášení a vrátí,
//zda se má předaná hodnota zaznamenat (podle focusů)
function oEditBase_Validate(ID, finalValidation, value)
{
    var edit = document.getElementById(ID);
      
    var valid = true;
    var errorFocus = false;
    var showErrorBox = false;
    
    //Událost před validaci
    edit.FirePreValidateEvent(null);
    
        
    //Projede všechny validátory a zvaliduje
    for(var i = 0; i<edit.Validators.length; i++)
    {        
        var ret = true;
        var validator = edit.Validators[i];
        
        //Validuj
        if(finalValidation||validator.ValidateImmediately)
        {
            val = validator(value);            
        }     
                
        if(!val)
        {
            //Osetreni nacitani dialogu pri chybe
            if (document.getElementById('MyDialog').style.display == 'none') {
                document.getElementById('loading').style.display = 'none';
                document.getElementById('MyDialog').style.display = '';
            }
         
            //zobrazit box s chybovými zprávami
            showErrorBox = true;
            
            //nevalidní, zobrazit error
            validator.ErrorMessage.Show();
            
            //není to jen doporučení, takže nastav nevalidnost
            if(!validator.Recommendation)
            {
                valid = false;
            }
            
            //nastavení příznaku focusu
            if(validator.FocusOnError)
            {
                errorFocus = true;
            }
        }
        else
        {
            //validní, schovat error
            validator.ErrorMessage.Hide();           
        }
        
    }//for    
    
    
    //Nastav příznak validnosti
    edit.IsValid = valid;        
    
    //Nastavení viditelnosti ErrorBoxu
    if(showErrorBox)
    {   
        if((!document.LockFocus)||(document.LockFocusID==ID))
        {        
            if(edit.Validators.length>0)
            {        
                edit.Validators[0].ErrorMessageBox.Show();
            }
        }
    }
    else
    {
        if(edit.Validators.length>0)
        {
            edit.Validators[0].ErrorMessageBox.Hide();
        }
    }
    
    
    //Focusování    
    if(errorFocus)
    { 
        if(!edit.ValidationStopped)
        {     
            edit.Focus();
        }
    }
    
    //Událost po validaci
    edit.FireAfterValidateEvent(null);    

    return (!errorFocus);    
    
}









//Zfocusuje edit, zajišťuje ochranu proti zacyklení validátorů
function oEditBase_Focus(ID)
{ 
    var edit = document.getElementById(ID); 
      
    if(!document.LockFocus)
    {  
        document.LockFocus = true;                
        document.LockFocusID = ID;        
        var code = "var edit = document.getElementById('"+ID+"'); if(!edit.ValidationStopped){ edit.FireGotFocusEvent(null); edit.focus(); edit.select();}";
        var codeUnlock = "document.LockFocus = false;";
        setTimeout(code,1);
        setTimeout(codeUnlock,200);
    }
}








//Zfocusuje edit, zajišťuje ochranu proti zacyklení validátorů
function oEditBase_FocusNoSelect(ID)
{ 
    var edit = document.getElementById(ID); 
      
    if(!document.LockFocus)
    {
        document.LockFocus = true;                
        document.LockFocusID = ID;
        var code = "var edit = document.getElementById('"+ID+"'); if(!edit.ValidationStopped){edit.FireGotFocusEvent(null); edit.focus();}";
        var codeUnlock = "document.LockFocus = false;";
        setTimeout(code,1);
        setTimeout(codeUnlock,200);
    }
}







//Přeskočí tlačítka
function oEditBase_SkipButtons(e, ID)
{ 
    if((e.keyCode==13)&&(e.altKey==false)&&(e.ctrlKey==false)&&(e.shiftKey==false))
	{ 
	    var inputs = document.getElementsByTagName("input");
	    var inx = -1;
	    var focInx = -1;
	    
	    //Nalezení indexu současného inputu
	    for(var i = 0; i<inputs.length; i++)
	    {
	        if(inputs[i].id == ID)
	        {
	            inx = i;
	            break;
	        }
	    }	   
	    
	  
	    //Průchod do konce pole
	    for(var i = (inx+1); i<inputs.length; i++)
	    {
	        var inpType = inputs[i].getAttribute("type");
	        if((inpType==null)||(inpType=="")||(inpType=="undefined")||(inpType=="null")||(inpType=="text"))
	        {
	            if(inputs[i].getAttribute("joatt") == "japos")
                {
                    focInx = i;
                    break;
                }
	        }
	    }
	    
	    
	    //Případné přetečení na začátek pole
	    if(focInx == -1)
	    {	        
	        for(var i = 0; i<inputs.length; i++)
	        {
	            var inpType = inputs[i].getAttribute("type");
	            if((inpType==null)||(inpType=="")||(inpType=="undefined")||(inpType=="null")||(inpType=="text"))
	            {
	                if(inputs[i].getAttribute("joatt") == "japos")
	                {
	                    focInx = i;
	                    break;
	                }
	            }
	        }	     
	    }	    
	    
	    
	    //Opuštění původního inputu
	    try
	    {
	        inputs[inx].RefreshValue();	        
	    }
	    catch(e)
	    {
	    }
	    
	    //V případě, že je původní input validní, tak se přeskočí do dalšího inputu
	    if(inputs[inx].IsValid)
	    {
	        try
	        {
	            inputs[focInx].FocusNoSelect();	               	        
	        }
	        catch(e)
	        {	      
	            inputs[focInx].FocusNoSelect();
	        }
	    }		
	}
}
