﻿
function _ISD_UI_EnsureObject(obj)
{
	var ret = null; 
	
	if(typeof(obj) == 'object')
		ret = obj;
	
	if(null == ret)
		ret = eval('window.document.forms[0].' + obj);
	
	if(null == ret)
		ret = window.document.getElementById(obj);
	
	return ret;
}
function _ISD_UI_EnsureValue(val)
{
	var ret = val;
	try // try to handle val as object property
	{
	  var ret2 = eval(val);
	  if(typeof(ret2) != 'undefined')
	    ret = ret2;
	}
	catch(e){;}
	
	return ret;
}	
function _ISD_UI_getFirstParent(obj, tagName)
{
	var ret = obj;
	if ('' == tagName)
		tagName = 'TR';
	if (ret)
	{
		while (ret.tagName != tagName)
		{
			ret = ret.parentElement;
		}
	}	
	return ret;
}
function _ISD_UI_evalExp(val)
{
	return eval(val);
}
function _ISD_UI_getIndex(what) 
{
	for (var i=0; i < what.form.elements.length; i++)
	{
		if (what == what.form.elements[i])
			return i;
  }
  return -1;
}
function _ISD_UI_getSelectedIndex(slct, val) 
{
	for (var i=0; i < slct.options.length; i++)
	{
		if (val == slct.options[i].value)
			return i;
  }
  return -1;
}
function _ISD_UI_checkToSubmit(ctrl)
{
	var ret = true;
	if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13))
	{	
		ctrl.click();	
		ret = false;	
	}
	return ret;
}
function _ISD_UI_getDateByID(what, controltovalidate) 
{
	var ret = null;
	var arrdate = new Array();
	for (var i=0; i < what.form.elements.length; i++)
	{
		var field = what.form.elements[i];
		if (field)
		{
			if (_ISD_UI_EnsureValue(field.datatype) && _ISD_UI_EnsureValue(field.errormessage))
			{
				if ('Datetime' == field.datatype)
				{
					if (-1 != field.name.indexOf(controltovalidate))	
					{
						if (-1 != field.name.indexOf("Day"))
							arrdate[0] = field.value;
						if (-1 != field.name.indexOf("Month"))
							arrdate[1] = field.value;
						if (-1 != field.name.indexOf("Year"))
							arrdate[2] = field.value;
					}
					if (null != arrdate[0] && null != arrdate[1] && null != arrdate[2])
						ret = new Date(arrdate[2], arrdate[1] ,arrdate[0]);
				}
			}
		}
	}
	return ret;
}
function _ISD_UI_getDateDiff(start, end, interval, rounding) 
{
  var iOut = 0;
  // Create 2 error messages, 1 for each argument. 
  var startMsg = "check end date !" ;
  var bufferA = Date.parse( start );
  var bufferB = Date.parse( end ) ;
  // check that the start parameter is a valid Date. 
  if ( isNaN (bufferA) || isNaN (bufferB) ) 
  {
//    alert( startMsg ) ;
      return null ;
  }
// check that an interval parameter was not numeric. 
  if ( interval.charAt == 'undefined' ) 
  {
      // the user specified an incorrect interval, handle the error. 
//    alert( intervalMsg ) ;
      return null ;
  }
  var number = bufferB-bufferA ;
  // what kind of add to do? 
  switch (interval.charAt(0))
  {
      case 'd': case 'D': 
      {
          iOut = parseInt(number / 86400000) ;
          if(rounding) iOut += parseInt((number % 86400000)/43200001) ;
          break ;
      }    
      case 'h': case 'H':
      {
          iOut = parseInt(number / 3600000 ) ;
          if(rounding) iOut += parseInt((number % 3600000)/1800001) ;
          break ;
      }    
      case 'm': case 'M':
      {
          iOut = parseInt(number / 60000 ) ;
          if(rounding) iOut += parseInt((number % 60000)/30001) ;
          break ;
      }   
      case 's': case 'S':
      {
          iOut = parseInt(number / 1000 ) ;
          if(rounding) iOut += parseInt((number % 1000)/501) ;
          break ;
      }    
      default:
      {
				return null; 
				break;
			}
  }
  return iOut;
}

