function isEmail(str) {
  var iChars = "~`!#$%^&()=[]\\;,/{}|\":<>?";

  for (var i = 0; i < str.length; i++) {
      if (iChars.indexOf(str.charAt(i)) != -1) {
          return false; //Found illegal special character
      }
  }

  str = str=str.split("<");

  if( str[1] )
  {
    str = str[1].split(">");
    str = str[0];
  }

  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported)
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,6}|[0-9]{1,3})(\\]?)$"); 
   
  return (!r1.test(str) && r2.test(str));
}

function check_special_chars(strWord)
{
    var myReturn = true;
    var iChars = "~`!@#$%^&*()+=-[]\\\';,./{}|\":<>?";

    for (var i = 0; i < strWord.length; i++) {
        if (iChars.indexOf(strWord.charAt(i)) != -1) {
            myReturn = false;
        }
    }

    return myReturn;
}

function check_altn_special_chars(strWord)
{
    var myReturn = true;
    var iChars = "&<>";

    for (var i = 0; i < strWord.length; i++) {
        if (iChars.indexOf(strWord.charAt(i)) != -1) {
            myReturn = false;
        }
    }

    return myReturn;
}

function number_format(original_number, decimals)
{
    if( isNaN(original_number) || original_number == '' )
    {
        return 0;
    }

    var result1 = original_number * Math.pow(10, decimals);
    if( result1 < 0 )
    {
        var result2 = -1 * Math.round(-1*result1);
    }
    else
    {
        var result2 = Math.round(result1);
    }
    var result3 = result2 / Math.pow(10, decimals);
        
    return pad_with_zeros(result3, decimals)
}

function pad_with_zeros(rounded_value, decimal_places)
{
    var value_string = rounded_value.toString();
    var decimal_location = value_string.indexOf(".");

    if (decimal_location == -1)
    {
        decimal_part_length = 0;
        value_string += decimal_places > 0 ? "." : "";
    }
    else
    {
        decimal_part_length = value_string.length - decimal_location - 1;
    }

    var pad_total = decimal_places - decimal_part_length;

    if (pad_total > 0)
    {
        for (var counter = 1; counter <= pad_total; counter++)
        {
            value_string += "0";
        }
    }
    return value_string
}


function object_dump(object,simple)
{
    var string = '';

    for( var prop in object )
    {
        if( simple == "true" )
        {
            string += prop+':'+object[prop]+'|';
        }
        else
        {
            string += prop+':'+object[prop]+'\n';
        }
    }
    alert(string);
}

var IE = document.all?true:false
if( !IE )
{
    //document.captureEvents(Event.MOUSEMOVE)
    //document.onmousemove = getMouseXY;
}
var tempX = 0;
var tempY = 0;

function getMouseXY(e) {
    tempX = e.pageX;
    tempY = e.pageY;
}

var moveObj = new Object();
moveObj.zIndex = 0;

function dragWindow(path,e)
{
    var event = new xEvent(e);

    moveObj.elem = xGetElementById(path);
    moveObj.elem.path = path;

    if (IE) {
        x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
        y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
    }
    else {
        x = e.clientX + window.scrollX;
        y = e.clientY + window.scrollY;
    }

    moveObj.mouseStartX = x;
    moveObj.mouseStartY = y;
    moveObj.elemStartLeft  = parseInt(moveObj.elem.style.left, 10);
    moveObj.elemStartTop   = parseInt(moveObj.elem.style.top,  10);

    if (isNaN(moveObj.elemStartLeft)) moveObj.elemStartLeft = 0;
    if (isNaN(moveObj.elemStartTop))  moveObj.elemStartTop  = 0;

    moveObj.elem.style.zIndex = ++moveObj.zIndex;

    xAddEventListener(document,'mousemove',moveWindow,false);
    xAddEventListener(document,'mouseup',stopDragWindow,false);
}

function moveWindow(e)
{
    var event = new xEvent(e);

    if (IE) {
        x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
        y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
    }
    else {
        x = e.clientX + window.scrollX;
        y = e.clientY + window.scrollY;
    }

    xPos = moveObj.elemStartLeft + x - moveObj.mouseStartX;
    yPos = moveObj.elemStartTop  + y - moveObj.mouseStartY;

    xTop(moveObj.elem,yPos);
    xLeft(moveObj.elem,xPos);
}

function stopDragWindow(e)
{
    xRemoveEventListener(document,'mousemove',moveWindow,false);
    xRemoveEventListener(document,'mouseup',stopDragWindow,false);

    moveObj.elem = null;
}

function remove_array(data,field)
{
    data[field] = "";

    var tmp_data = new Array();
    var index = 0;

    for( var prop in data )
    {
        if( data[prop] != "" )
        {
            tmp_data[index] = data[prop];
            index = index+1;
        }
    }

    return tmp_data;
}

function is_number(text)
{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

   for (i = 0; i < text.length && IsNumber == true; i++)
   {
      Char = text.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
      {
         IsNumber = false;
      }
   }
   return IsNumber;
}

function is_numeric(text)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

   for (i = 0; i < text.length && IsNumber == true; i++)
   {
      Char = text.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
      {
         IsNumber = false;
      }
   }
   return IsNumber;
}

function is_currency(text)
{
   var ValidChars = "0123456789.-";
   var IsNumber=true;
   var Char;

   for (i = 0; i < text.length && IsNumber == true; i++)
   {
      Char = text.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
      {
         IsNumber = false;
      }
   }
   return IsNumber;
}

function convert_altn_date(date_string)
{
    new_date_string = "";

    if( date_string != null )
    {
        if( date_string.split("/") )
        {
            date_arr = date_string.split("/");

            if( date_arr[0] < 10 )
            {
                date_arr[0] = "0"+date_arr[0];
            }

            if( date_arr[1] < 10 )
            {
                date_arr[1] = "0"+date_arr[1];
            }

            new_date_string = date_arr[2]+"-"+date_arr[0]+"-"+date_arr[1];
        }
        else
        if( date_string.split("-") )
        {
            date_arr = date_string.split("-");

            if( !is_numeric(date_arr[1]) )
            {
                switch(strtolower(date_arr[1]))
                {
                    case "jan":
                    case "january":
                        date_arr[1] = "01";
                        break;
                    case "feb":
                    case "feburary":
                        date_arr[1] = "02";
                        break;
                    case "mar":
                    case "march":
                        date_arr[1] = "03";
                        break;
                    case "apr":
                    case "april":
                        date_arr[1] = "04";
                        break;
                    case "may":
                        date_arr[1] = "05";
                        break;
                    case "jun":
                    case "june":
                        date_arr[1] = "06";
                        break;
                    case "jul":
                    case "july":
                        date_arr[1] = "07";
                        break;
                    case "aug":
                    case "august":
                        date_arr[1] = "08";
                        break;
                    case "sep":
                    case "september":
                        date_arr[1] = "09";
                        break;
                    case "oct":
                    case "october":
                        date_arr[1] = "10";
                        break;
                    case "nov":
                    case "november":
                        date_arr[1] = "11";
                        break;
                    case "dec":
                    case "december":
                        date_arr[1] = "12";
                        break;
                }
            }

            if( date_arr[0] < 10 )
            {
                date_arr[0] = "0"+date_arr[0];
            }

            new_date_string = date_arr[2]+"-"+date_arr[1]+"-"+date_arr[0];
        }
    }

    return new_date_string;
}

function check_bank_account_format(bank_account_number)
{
    var account = bank_account_number.split("-");

    if( account.length == 4 )
    {
        if( account[0].length != 2 )
        {
            return false;
        }

        if( account[1].length != 4 )
        {
            return false;
        }

        if( account[2].length != 7 )
        {
            return false;
        }

        if( account[3].length != 3 )
        {
            return false;
        }

        return true;
    }
    else
    {
        return false;
    }
}