window.onerror=function(msg, url, linenumber){
 alert('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber)
 return true
}    
    
function file_ext(name){
    var i = name.lastIndexOf('.');
    if (i==-1) return '';
    var e = name.substr(i+1).toLowerCase();
    return e;
}
function is_image_ext(name){
    var e = file_ext(name);
    if (e == 'jpg' || e == 'jpeg' || e == 'gif' || e == 'png'){
        return true;
    }else{
        return false;
    }
}

function fakeFileOnchange(){
   $(':file').live('change',function(){
      var fn = $(this).val();
      if (fn.lastIndexOf('/') != -1){
          fn = fn.substr(fn.lastIndexOf('/')+1);
      }
      if (fn.lastIndexOf('\\') != -1){
          fn = fn.substr(fn.lastIndexOf('\\')+1);
      }
      $(this).prev().find('.faketext').val(fn);
   }).live('mouseout',function(){
      var fn = $(this).val();
      if (fn.lastIndexOf('/') != -1){
          fn = fn.substr(fn.lastIndexOf('/')+1);
      }
      if (fn.lastIndexOf('\\') != -1){
          fn = fn.substr(fn.lastIndexOf('\\')+1);
      }
      $(this).prev().find('.faketext').val(fn);   
   });
}

//
if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length;

    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;

    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}
