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 tiny_fraction = ( original_number < 0.0 ) ? -0.000000000001 : 0.000000000001;
    
    var result1 = (original_number * Math.pow(10, decimals)) + tiny_fraction;
    
    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;
}

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;
    }
}

function urldecode( str ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Philip Peterson
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: AJ
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // %          note: info on what encoding functions to use from: http://xkr.us/articles/javascript/encode-compare/
    // *     example 1: urldecode('Kevin+van+Zonneveld%21');
    // *     returns 1: 'Kevin van Zonneveld!'
    // *     example 2: urldecode('http%3A%2F%2Fkevin.vanzonneveld.net%2F');
    // *     returns 2: 'http://kevin.vanzonneveld.net/'
    // *     example 3: urldecode('http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a');
    // *     returns 3: 'http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a'
    
    var histogram = {}, histogram_r = {}, code = 0, str_tmp = [];
    var ret = str.toString();
    
    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };
    
    // The histogram is identical to the one in urlencode.
    histogram['!']   = '%21';
    histogram['%20'] = '+';
    
    for (replace in histogram) {
        search = histogram[replace]; // Switch order when decoding
        ret = replacer(search, replace, ret) // Custom replace. No regexing   
    }
    
    // End with decodeURIComponent, which most resembles PHP's encoding functions
    ret = decodeURIComponent(ret);
 
    return ret;
}

function urlencode( str ) 
{ 
    // http://kevin.vanzonneveld.net 
    // +   original by: Philip Peterson  (URLDecode) 
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) 
    // +      input by: AJ 
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) 
    // +   converted to URLEncode by Paul KH Kim (http://www.onlinesolution.co.nz) 
    // %          note: info on what encoding functions to use from: http://xkr.us/articles/javascript/encode-compare/ 
    // *     example 1: urldecode('Kevin+van+Zonneveld%21'); 
    // *     returns 1: 'Kevin van Zonneveld!' 
    // *     example 2: urldecode('http%3A%2F%2Fkevin.vanzonneveld.net%2F'); 
    // *     returns 2: 'http://kevin.vanzonneveld.net/' 
    // *     example 3: urldecode('http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'); 
    // *     returns 3: 'http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a' 
    
    var histogram = {}, histogram_r = {}, code = 0, str_tmp = []; 
    var ret = str.toString(); 
    
    var replacer = function(search, replace, str) { 
        var tmp_arr = []; 
        tmp_arr = str.split(search); 
        return tmp_arr.join(replace); 
    }; 
    
    // The histogram is identical to the one in urlencode. 
    histogram['%21']   = '!'; 
    histogram['+'] = '%20'; 
    
    // Start with encodeURIComponent, which most resembles PHP's encoding functions 
    ret = encodeURIComponent(ret); 
    
    for (replace in histogram) { 
        search = histogram[replace]; // Switch order when decoding 
        ret = replacer(search, replace, ret) // Custom replace. No regexing    
    } 
  
    return ret; 
}

function include(inc_file) 
{ 
  //document.write(inc_file);
  document.write("<script language='javascript' src='"+inc_file+"'></script>"); 
}

function show_swf(file_name,width,height) 
{
    var id = file_name.split(".");
    id = file_name[0];
    
    if( file_name.substr(0,5) == "https" )
    {
        var innerHTML = ""; 
        innerHTML += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="'+width+'" height="'+height+'" id="'+id+'" align="middle">'; 
        innerHTML += '<param name="allowScriptAccess" value="sameDomain" />'; 
        innerHTML += '<param name="movie" value="'+file_name+'" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="'+file_name+'" quality="high" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+id+'" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="https://www.macromedia.com/go/getflashplayer" />'; 
        innerHTML += '</object>'; 
    }
    else
    {   
        var innerHTML = ""; 
        innerHTML += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="'+width+'" height="'+height+'" id="'+id+'" align="middle">'; 
        innerHTML += '<param name="allowScriptAccess" value="sameDomain" />'; 
        innerHTML += '<param name="movie" value="'+file_name+'" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="'+file_name+'" quality="high" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+id+'" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />'; 
        innerHTML += '</object>'; 
    }

    document.write(innerHTML); 
}

function show_swf_by_id(elem_id,file_name,width,height) 
{
    var id = file_name.split(".");
    id = file_name[0];
    
    var innerHTML = ""; 
    innerHTML += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="'+width+'" height="'+height+'" id="'+id+'" align="middle">'; 
    innerHTML += '<param name="allowScriptAccess" value="sameDomain" />'; 
    innerHTML += '<param name="movie" value="'+file_name+'" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="'+file_name+'" quality="high" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+id+'" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />'; 
    innerHTML += '</object>'; 
    
    xGetElementById(elem_id).innerHTML = innerHTML;
}

function display_processing(elem_id,width,height)
{
    var innerHTML = "<div align='center' style='width:"+width+"px;height:"+height+"px;' valign='middle'><br/><br/><br/><b>Loading...</b><br/><img src='"+xGetElementById('server-path').value+"/images/loading.gif'></div>"; 
    
    xGetElementById(elem_id).innerHTML = innerHTML;
}

function display_swfs(index,max_index)
{                    
    var new_index = 0;
    
    if( index < max_index -1 )
    {
        new_index = index+1;
    }
    
    setTimeout("display_processing('swfdiv',files["+new_index+"]['width'],files["+new_index+"]['height']);",12000);
    setTimeout("display_swfs("+new_index+","+max_index+");",13000);
    setTimeout("show_swf_by_id('swfdiv',files["+new_index+"]['file'],files["+new_index+"]['width'],files["+new_index+"]['height'])",13000);
}

function addslashes(str) 
{
    str=str.replace(/\\/g,'\\\\');
    str=str.replace(/\'/g,'\\\'');
    str=str.replace(/\"/g,'\\"');
    str=str.replace(/\0/g,'\\0');
    return str;
}
function stripslashes(str) 
{
    str=str.replace(/\\'/g,'\'');
    str=str.replace(/\\"/g,'"');
    str=str.replace(/\\0/g,'\0');
    str=str.replace(/\\\\/g,'\\');
    return str;
}

function in_array (needle, haystack, argStrict) 
{
    // Checks if the given value exists in the array  
    // 
    // version: 1004.2314
    // discuss at: http://phpjs.org/functions/in_array    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: vlado houba
    // +   input by: Billy
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);    // *     returns 1: true
    // *     example 2: in_array('vlado', {0: 'Kevin', vlado: 'van', 1: 'Zonneveld'});
    // *     returns 2: false
    // *     example 3: in_array(1, ['1', '2', '3']);
    // *     returns 3: true    // *     example 3: in_array(1, ['1', '2', '3'], false);
    // *     returns 3: true
    // *     example 4: in_array(1, ['1', '2', '3'], true);
    // *     returns 4: false
    var key = '', strict = !!argStrict; 
    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;            
            }
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {                
                return true;
            }
        }
    }
     return false;
}
