﻿function padLeftHour(source, length, paddingChar)
{
	if((source != null) && (source.length >= length))
		return source;

	var padding = new Array((source == null) ? length : (length - source.length));
	for(var i = 0; i < padding.length; i++)
		padding[i] = paddingChar;
		
	return padding.join("") + source;
}

function padRightHour(source, length, paddingChar)
{
	if((source != null) && (source.length >= length))
		return source;

	var padding = new Array((source == null) ? length : (length - source.length));
	for(var i = 0; i < padding.length; i++)
		padding[i] = paddingChar;
		
	return source + padding.join("");
}

function trimHour(source)
{
   while (source.substring(0, 1) == ' ')
   {
      source = source.substring(1, source.length);
   }
   
   while (source.substring(source.length - 1, source.length) == ' ')
   {
      source = source.substring(0, source.length-1);
    } 
    
	return source;
}


function onParroHourTextBoxBlur(control)
{ 
  var formatted = control.value.replace(":", "");
  if(formatted.indexOf('.') >= 0 || formatted.indexOf(',') >= 0)
    return;
    
  switch(formatted.length)
  { 
    case 0: 
        control.value = ''; 
        return true; 
    case 1: 
        formatted = padLeftHour(padRightHour(formatted, 3, '0'), 4, '0'); 
        break; 
        
    case 2: 
        formatted = padRightHour(formatted, 4, '0'); 
        break; 
        
    case 4: 
        break; 
        
    default: 
        if(formatted.length < 4)
        { 
            formatted = padLeftHour(formatted, 4, '0');
        } 
        break;
  }
 
  control.value = formatted.substr(0, formatted.length - 2) + ':' + formatted.substr(formatted.length - 2, 2); 
  return true;
}

function setNowTime(control)
{
  if(control.value != '') 
    return false; 
    
  var now = new Date(); 
  control.value = padLeftHour(new String(now.getHours()), 2, '0') + ':' + padLeftHour(new String(now.getMinutes()), 2, '0');
}
        
function validateInputKey(control, allowNegativeTime, evt)
{
  var keyCode = evt.charCode ? evt.charCode : evt.keyCode;  
  if(keyCode == 13) 
  { 
    setNowTime(control); 
    event.returnValue = false; 
  } 
      
  return (((keyCode >= 48) && (keyCode <= 57)) || 
          ((allowNegativeTime == '1') && (keyCode == 189 || keyCode == 109)) ||
          ((keyCode >= 96) && (keyCode <= 105)) || 
          (keyCode == 8) || (keyCode == 9) || (keyCode == 186) || (keyCode == 110) || (keyCode == 190) || 
          (keyCode == 188) || (keyCode == 46) || (keyCode == 37) || (keyCode == 39));    
}


function validateHourJS(sender, args)  
{     
  var valueStr = trimHour(args.Value);
  var negative = valueStr.indexOf('-');  
  if (negative >= 0)
  {
    negative = valueStr.indexOf('-', negative + 1);    
    if (negative > 0)
    {
      args.IsValid = false;
      return;
    }
  }
  
  valueStr = valueStr.replace('-', '').replace(',', '.');
  
  if(valueStr.length == 0)
  {
    args.IsValid = true;
    return;
  }
  
  if(valueStr.indexOf('.') >= 0 || valueStr.indexOf(':') == -1)
  {
    var num = new Number(valueStr);
    if(isNaN(num))
    {
      args.IsValid = false;
      return;
    }
    if(num >= 24)
    {
      args.IsValid = false;
      return;
    }
    
    args.IsValid = true;
    return;
  }
  
  valueStr = valueStr.replace(':', '');
  
  switch(valueStr.length)
  {     
    case 1: 
        valueStr = padLeftHour(padRightHour(valueStr, 3, '0'), 4, '0'); 
        break; 
        
    case 2: 
        valueStr = padRightHour(valueStr, 4, '0'); 
        break; 
        
    case 4: 
        break; 
        
    default: 
        if(valueStr.length < 4)
        { 
            valueStr = padLeftHour(valueStr, 4, '0');
        } 
        break;
  }
  
  if(valueStr.length > 4)
  {
    args.IsValid = false;
    return;
  }
  
  if(valueStr.substring(0,2) > '23')
  {
    args.IsValid = false;
    return;
  }    
  if(valueStr.substring(2) > '59')
  {
    args.IsValid = false;
    return;
  }
        
  args.IsValid = true;
} 


function validateQuantityHourJS(sender, args)  
{     
  var valueStr = trimHour(args.Value);
  var negative = valueStr.indexOf('-');  
  if (negative >= 0)
  {
    negative = valueStr.indexOf('-', negative + 1);    
    if (negative > 0)
    {
      args.IsValid = false;
      return;
    }
  }
  
  valueStr = valueStr.replace('-', '').replace(',', '.');
    
  if(valueStr.length == 0)
  {
    args.IsValid = true;
    return;
  }
  
  if(valueStr.indexOf('.') >= 0 || valueStr.indexOf(':') == -1)
  {
    var num = new Number(valueStr);
    if(isNaN(num))
    {
      args.IsValid = false;
      return;
    }
        
    args.IsValid = true;
    return;
  }
  
  valueStr = valueStr.replace(':', '');
  
  switch(valueStr.length)
  {     
    case 1: 
        valueStr = padLeftHour(padRightHour(valueStr, 3, '0'), 4, '0'); 
        break; 
        
    case 2: 
        valueStr = padRightHour(valueStr, 4, '0'); 
        break; 
        
    case 4: 
        break; 
        
    default: 
        if(valueStr.length < 4)
        { 
            valueStr = padLeftHour(valueStr, 4, '0');
        } 
        break;
  }       
  
  if(valueStr.substring(valueStr.length - 2) > '59')
  {
    args.IsValid = false;
    return;
  }
        
  args.IsValid = true;
} 

function convertToDecimalHours(srcHours)  
{     
  var valueStr = trimHour(srcHours).replace(',', '.');      
  
  if(valueStr.length == 0)  
    return 0;  
  
  if(valueStr.indexOf('.') >= 0 || valueStr.indexOf(':') == -1)
  {
    var num = new Number(valueStr);
    if(isNaN(num))    
      return 0;
    return num;
  }
  
  valueStr = valueStr.replace(':', '');
  
  switch(valueStr.length)
  {     
    case 1: 
        valueStr = padLeftHour(padRightHour(valueStr, 3, '0'), 4, '0'); 
        break; 
        
    case 2: 
        valueStr = padRightHour(valueStr, 4, '0'); 
        break; 
        
    case 4: 
        break; 
        
    default: 
        if(valueStr.length < 4)
        { 
            valueStr = padLeftHour(valueStr, 4, '0');
        } 
        break;
  }
      
  var minutes = new Number(valueStr.substring(valueStr.length - 2, valueStr.length)) / 60.0;
  var hours = new Number(valueStr.substring(0, valueStr.length - 2));
  hours = hours + minutes;  
  return hours;
} 
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();