var appName = navigator.appName;

var g_isErrDisplay = true; // set true if you want to show the error
var g_isDescDisplay = false; // set true if you want to show the error no and description
var g_isMethodDisplay = false; // set true if you want to show the method from where error is arrised



function errorHandler(errorObject, method)
{
  if(!g_isErrDisplay) return;
  var errNo = -1;
  var errMsg = 'There is an error in the page ' + document.location.href  + '.\n\n';
  errMsg += 'Click OK to continue.\n\n';
  if(g_isDescDisplay && typeof(errorObject) == 'object')
  {
    errNo = (errorObject.number & 0xffff);
    errMsg += 'Error number : ' + errNo  + '\n';
    errMsg += 'Root Cause : ' + errorObject.description +   '\n';
  }
  if(g_isMethodDisplay && typeof(method) == 'function')
  {
    errMsg += 'Error comes from method below : -\n';    
    var body = method.toString().replace('try{', '');
    body = body.replace(body.substring(body.indexOf('catch')), '');
    errMsg +=  body.toString();
  }
  if(g_isErrDisplay) alert(errMsg);
}

function print()
{
  window.print();
}


function fillValueOnKeyPress(formElement, compareValue)
{
  /* On key press of space(32) or star(42) */
  try
  {
    if (event.keyCode == 32 || event.keyCode == 42)  
    {
    formElement.value = compareValue;
    event.keyCode = 0;
    }
  }
  catch(e)
  {
    errorHandler(e, fillValueOnKeyPress)
  }     
}

function compareFieldForLessthanEqual(formElement, compareValue, message)
{
  try
  {
    if (formElement.value.length > 0)
      f1 = parseFloat(formElement.value);
    else
      f1 =  0;
    if (f1 > compareValue)
    {
      alert(message);
      formElement.focus();
    }
  }
  catch(e)
  {
    errorHandler(e, compareFieldForLessthanEqual)
  }     
}

function compareFieldForLessthanEqualShowDifference(formElement, compareValue, message, differenceElement)
{
  try
  {
    if (formElement.value.length > 0)
      f1 = parseFloat(formElement.value);
    else
      f1 =  0;
    if (f1 > compareValue)
    {
      alert(message);
      formElement.focus();
    }
    f2 = compareValue - f1;
    strValue = f2.toString();
    diff = document.getElementById(differenceElement);
    diff.innerText = formatDecimal(strValue, 2);
    if (f2 < 0)
      diff.style.background = '#ff8c00';
    else
      diff.style.background = 'transparent';
  }
  catch(e)
  {
    errorHandler(e, compareFieldForLessthanEqualShowDifference)
  }     
}

function freezeField(formElement) 
{
  formElement.blur();
  return;
}

function changeBackColor(formElement, color)
{
  formElement.style.background = color;
}

function changeCssClass(formElement, className)
{
  formElement.className = className;
}

function calculateFieldValue(formElement, operandValue, operator, outputElement)
{
  try
  {
    output = document.getElementById(outputElement);
    if (formElement.value.length > 0)
    {
      strTemp = formElement.value + operator + operandValue;
      strValue = eval(strTemp).toString();
      output.value = formatDecimal(strValue, 2);
    }
    else
      output.value = '0';
  }
  catch(e)
  {
    errorHandler(e, calculateFieldValue)
  }     
}

function formatDecimal(strValue, NoOfDecimals)
{
  try
  {
    pos = strValue.indexOf('.');
    strResult = strValue;
    //alert(pos + NoOfDecimals + 1);
    //alert(strValue.length);
    if (pos > 0 && pos + NoOfDecimals + 1 < strValue.length)
    {
      strResult = strValue.substring(0, strValue.indexOf('.') + NoOfDecimals + 1 );
    }
    return strResult;
  }
  catch(e)
  {
    errorHandler(e, formatDecimal)
  }     
}

function loadOtherFieldValueOnKeyPress(formElement, inputElement)
{
  /* On key press of space(32) or star(42) */
  try
  {
    if (event.keyCode == 32 || event.keyCode == 42)  
    {
      input = document.getElementById(inputElement);
      formElement.value = input.value;
      event.keyCode = 0;
    }
  }
  catch(e)
  {
    errorHandler(e, loadOtherFieldValueOnKeyPress)
  }     
}

function CheckAll(A_strGridContrilName, A_strControlName, formElement, A_iCount) 
{
  iCount = 3;
  while ( iCount < (A_iCount + 3)) 
  { 
    document.getElementById(A_strGridContrilName + '__ctl' + iCount + '_' + A_strControlName).checked = formElement.checked;
    iCount = iCount + 1;  
  } 
}

function TextBoxValidkeyForUpDown() 
{     
  if ((event.keyCode >= 48 && event.keyCode <= 57) ||
   (event.keyCode >= 96 && event.keyCode <= 105) ||
   event.keyCode == 8 || event.keyCode == 9  ) 
  {       
    event.returnValue = true;     
  }
  else     
  {        
    event.returnValue = false;     
  } 
} 
  
function TextBoxKeyDownForUpDownControl(formElement) 
{ 
  event.returnValue = true;     
  var iCount = parseInt(formElement.value, 10);  
  if(event.keyCode == 38)
  {
    if(isNaN(iCount))    
      formElement.value = 1;  
    else
      formElement.value = iCount + 1;   
  }
  else if(event.keyCode == 40)  
  {
    if(isNaN(iCount))    
      formElement.value = -1;  
    else
      formElement.value = iCount - 1;   
  }
} 

function TextBoxKeyUpForMultiLine(formElement, labelId, MaxLength) 
{ 
  if (formElement.value.length > MaxLength)
    formElement.value = formElement.value.substring(0, MaxLength);
  label = document.getElementById(labelId);
  if(label.innerHTML)
    label.innerHTML = (MaxLength - formElement.value.length) + '&nbsp;chars&nbsp;left';
  else
    label.textContent = (MaxLength - formElement.value.length) + '&nbsp;chars&nbsp;left';
} 

function AssignImage(formElement, ImageElement)
{
  try
  {
    output = document.getElementById(ImageElement);
    output.src = formElement.value;
  }
  catch(e)
  {
    errorHandler(e, AssignImage)
  }     
}

function AddListItems(strFromId, strToId, HiddenFieldId, SelectedListId, MoveAll)
{
  try
  {
    fromObject = document.getElementById(strFromId);
    toObject = document.getElementById(strToId);
    i = 0;
    while(i < fromObject.length)
    { 
      if ((fromObject.options[i].selected) || (MoveAll == "true"))
      {
        var Opt = new Option(fromObject.options[i].text, fromObject.options[i].value);
        toObject.options.add(Opt);
        fromObject.options[i] = null;
      }
      else
        i++;
    }
    GetSelectedItems(HiddenFieldId, SelectedListId);
  }
  catch(e)
  {
    errorHandler(e, AddListItems)
  }     
}

function GetSelectedItems(HiddenFieldId, SelectedListId)
{
  try
  {
    HiddenObj = document.getElementById(HiddenFieldId);
    selectedObject = document.getElementById(SelectedListId);
    HiddenObj.value = "";
    for (i=0; i < selectedObject.length; i++)
    { 
      if (HiddenObj.value.length < 1) 
        HiddenObj.value = "{" + selectedObject.options[i].value + "}";
      else 
        HiddenObj.value = HiddenObj.value + ", {" + selectedObject.options[i].value + "}";
    }
  }
  catch(e)
  {
    errorHandler(e, GetSelectedItems)
  }     
}

var F_strCalenderCtrlId = "";
var F_strPickerCtrlId = "";
function onPickerChange(picker)
{
  try
  {
    var calenderObj = eval(F_strCalenderCtrlId);
    if (calenderObj != null)
      calenderObj.SetSelectedDate(picker.GetSelectedDate());
  }
  catch(e)
  {
    errorHandler(e, onPickerChange)
  }     
}

function onCalendarChange(calendar)
{
  try
  {
    eval(F_strPickerCtrlId).SetSelectedDate(calendar.GetSelectedDate());
  }
  catch(e)
  {
    errorHandler(e, onCalendarChange)
  }     
}

function ShowCalender(imageCalender, pickerCtrlId, calendarCtrlId)
{
    // Get the coordinates of the image button
    
  var x = findPosition(imageCalender, 0);
  var y = findPosition(imageCalender, 1) + imageCalender.offsetHeight;
  // Pass the coordinates to the Calendar's Show method
  F_strPickerCtrlId = pickerCtrlId;
  F_strCalenderCtrlId = calendarCtrlId;
  try
  {
    obj1 = eval(F_strCalenderCtrlId);
    obj2 = eval(F_strPickerCtrlId);
    if (!obj1.PopUpObjectShowing)
    {
      obj1.SetSelectedDate(obj2.GetSelectedDate());
      obj1.Show(x - 75, y);
    }
  }
  catch(e)
  {
    errorHandler(e, ShowCalender);
  }     
}

function findPosition(Obj, xyCoord) 
{
  var result = 0;
  if (Obj.offsetParent) 
  {
    while(Obj.offsetParent) 
    {
      result += xyCoord ? Obj.offsetTop : Obj.offsetLeft;
      Obj = Obj.offsetParent;
    }
  }
  return result;
}

function CompareDates(FromDate,ToDate)
{
  //for ExDateControl DateFromate yyyy.MM.dd,yyyy.M.d,..  Example: 2006.10.23
  var FromMonth;
  var FromYear;
  var ToMonth;
  var ToYear;
  FromYear = FromDate.substring(0,4);
  ToYear = ToDate.substring(0,4);
  if((parseInt(FromYear)) > (parseInt(ToYear)))
   return false;
   
  FromDate = FromDate.replace(FromYear + '.','');
  FromMonth = FromDate.substring(0,FromDate.indexOf("."));
  ToDate = ToDate.replace(ToYear + '.','');
  ToMonth = ToDate.substring(0,ToDate.indexOf("."));
  if(FromYear == ToYear)
  { 
    if((parseInt(FromMonth)) > (parseInt(ToMonth)))
      return false;
    else if(FromMonth == ToMonth)
    { 
      FromDate = FromDate.replace(FromMonth + '.','');
      ToDate = ToDate.replace(ToMonth + '.','');
       if((parseInt(FromDate))> (parseInt(ToDate)))
         return false;
     }  
  }
  return true;
}

function SetCalenderDate(CalenderObject)
{
  CalenderButtonObject = CalenderObject._button;
  var strPrefix = CalenderButtonObject.id.replace("ImageButtonDown", '');
  ObjectDay = document.getElementById( strPrefix + 'TextBoxDay');
  ObjectMonth = document.getElementById(strPrefix + 'TextBoxMonth');
  ObjectYear = document.getElementById(strPrefix + 'TextBoxYear');
  var SelectedDate = new Date(CalenderObject.get_selectedDate().format("MM/dd/yyyy"));
  ObjectDay.value = SelectedDate.getDate();
  if (ObjectDay.value.length < 2)
    ObjectDay.value = "0" + ObjectDay.value;
  ObjectMonth.value = SelectedDate.getMonth() +1;
  if (ObjectMonth.value.length < 2)
    ObjectMonth.value = "0" + ObjectMonth.value;
  ObjectYear.value = SelectedDate.getUTCFullYear();
}     

function CheckForFutureDate(day1, month1, year1)
{
  var date1 = new Date(year1, month1 - 1, day1);
  var dateCurrent = new Date();
  if (dateCurrent < date1)
    return true
  else  
    return false;
}

function encryptData(passwordControl, statusControl,keyControl)
{
  var c1 = document.getElementById(passwordControl);
  try
  { 
    var temp = hex_md5(c1.value);
    c1.value = temp;
  }
  catch(e)
  {
    errorHandler(e, encryptData);
  }     
  return false;
}

