//--------------------------------------------------------------------------------
//GLOBAL
var err = 0.001;
var expanded = 0;
//construct and return control
function GetControl(strName_gridView, strName_control, rowIndex)
{
    var cont = document.getElementById(GetControlID(strName_gridView,strName_control,rowIndex));
    return cont
}

//Construct Control ClientID by self ControlID and rowIndex
function GetControlID(strName_gridView, strName_control, rowIndex)
{
    var controlID;
    if(rowIndex < 10)
    {
        controlID = strName_gridView + "_ctl0" + rowIndex + "_" + strName_control;
    }
    else
    {
        controlID = strName_gridView + "_ctl" + rowIndex + "_" + strName_control;
    }
    return controlID;    
}

//Get the number of the gridview row from the sender control clientId
function GetRowIndex(strName_gridView, senderID)
{
    var index = Math.abs(0);
    var str = senderID.replace(strName_gridView + "_ctl", "");
    var strInx = str.substr(0,2);   

    if(strInx.indexOf("0") == 0)
    {
        index = strInx.substr(1,2);
    } 
    else
    {
        index = strInx;
    }
    return Math.abs(index);
}

function GetControlValue(sender)
{
    if(sender.value == null)
    {   
        return sender.innerText;
    }    
    else
    {
        return sender.value;
    }
    return res;
}

function GetControlValueNumber(sender)
{
    var res = 0.00;
    if(sender.value == null)
    {   
        res = FromInnerText(sender);   
        return res;
    }    
    else
    {
        res = FromValue(sender);
        return res;
    }
    return res;
}
function SetControlValue(sender, val)
{
    if(sender.value == null)
    {
        sender.innerText = val;
    }
    else
    {
        sender.value = val;
    }
}

function GetControlValueAsString(sender)
{
    var res = 0.00;
    if(sender.value == null)
    {   
        res = sender.innerText;   
        return res;
    }    
    else
    {
        res = sender.value;
        return res;
    }
    return res;
}
//while taking some value if it is NaN - return zero
function RetZero(value)
{
    var res = "0.00";
    if(value == "")
    {
        return res
    }
    return value;
}

//return float value from the innerText property of sender
function FromInnerText(sender)
{
    var res = 0.00;
    var strVal = "";
    strVal = RetZero(sender.innerText);
    var str = "";
    str = strVal.replace(",", ".");
    res = parseFloat(str);    
    
    return res;
}

//return float value from the value property of sender
function FromValue(sender)
{
    var res = 0.00;
    var strVal = "";
    strVal = RetZero(sender.value);
    var str = strVal.replace(",", ".");
    res = parseFloat(str);    
    return res;
}

//return number value like string. The number is roundUp and fixed to 2 digits after comma
function ToInnerText(value)
{
    var tmpVal = 0.00;
    
    if(value == "")
    {
        value = tmpVal;
    }    
    tmpVal = parseFloat(value) + err;
    
    return tmpVal.toFixed(2).replace(".", ",");
}

//return number value like string. The number is roundUp and fixed to 1 digits after comma
function ToInnerTextFixedOne(value)
{
    var tmpVal = 0.00;
    tmpVal = parseFloat(value);
    
    return tmpVal.toFixed(1).replace(".", ",");
}

//return number value like string. The number is roundUp and fixed to 0 digits after comma
function ToInnerTextNonFixed(value)
{
    var tmpVal = 0;
    tmpVal = parseInt(value);
    
    return tmpVal;
}

function ToInnerTextWithOutFixing(value)
{   
    var tmpVal = 0;
    tmpVal = parseFloat(value);
    return tmpVal.toString().replace(".", ",");
}

//check if data in textbox is empty
//Return TRUE if the textbox is empty
function IsEmptyData(sender)
{
    if(sender == null || sender.value == "")
    { 
        return true; 
    }
    return false;
}
//return empty string if value is less than zero
function RetOnlyPositive(value)
{
    if(parseFloat(value) < 0) { return ""; }
    return value;
}

//calculates time HH:MM as decimal number
function CalcTime(hourVal, minuteVal)
{
    var result = 0;
    result = Math.abs(hourVal + (minuteVal / 60));
    return result;
}

//After OnFocusOut restore the border color. Used for date textboxes 
function Restore(sender)
{
    sender.style.borderColor = "#3f6498"; // If not empty
}

//After OnFocusOut restore the border color if the textbos is not empty. Used for date textboxes 
function RestoreIfNotEmpty(sender)
{
    if(sender.value == "")
    {
        sender.style.borderColor = "red"; // If empty
    }
    else
    {
        sender.style.borderColor = "#3f6498"; // If not empty
    }
}
//global

//Check if the start date is smaller then end date
function IsValidDateRange(start, end)
{
    var dateStart = new Date(start);
    var dateEnd = new Date(end);
    if(dateStart > dateEnd)
    {
        return false;
    }
    return true;
}


//check all validators in the page and return FALSE if at least one validator is false
//returns TRUE if there are not validators in the page
function CheckDocumentValidators()
{
    var validator;
    if(typeof(Page_Validators) == "undefined")
    {return true;}
    
    for (var i = 0; i < Page_Validators.length; i++)
    {
        validator = Page_Validators[i];
        ValidatorValidate(validator);

        // validation fails if at least one validator fails
        if (!validator.isvalid)
        {
            return false;
        }
    }
    return true;    
}

function CheckAllDocumentValidators()
{
    var res = true;
    var validator;
    if(typeof(Page_Validators) == "undefined")
    {return res;}
    
    for (var i = 0; i < Page_Validators.length; i++)
    {
        validator = Page_Validators[i];
        ValidatorValidate(validator);

        // validation fails if at least one validator fails
        if (!validator.isvalid)
        {
            res = false;
        }
    }
    return res;    
}


//--------------------------------------------------------------------------------
