/*
    // dimaninc general js functions

    // 2006/12/15
        * check_correct_email() added

    // 2006/03/28
        * getHTTPRequestObject() added
        * diXMLRequest.get() and .post() added

    // 2006/02/28
        * standard escape() rewritten

    // 2006/02/20
        * is_ie added

    // 2006/02/11
        * getLeft(), getTop() added
        * _px() improved

    // 2006/02/08
        * addEvent() added
        * _px() added

    // 2006/02/06
        * the first version of this shit
*/

var is_ie = (document.all) ? true : false;

var agt = navigator.userAgent.toLowerCase();
var is_major = parseInt(navigator.appVersion);
var is_minor = parseFloat(navigator.appVersion);
var is_gecko = (agt.indexOf('gecko') != -1);
var is_ie4up = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1) && (is_major >= 4));
var is_opera = (agt.indexOf("opera") != -1);

if (is_ie4up)
{
  document.execCommand("BackgroundImageCache",false,true);
}

function isEmpty(str)
{
  if (str == null || str == "" || isNaN(str))
    return true;
  else
    return false;
}

function _ge(eid)
{
  return document.getElementById(eid);
}

function addEvent(elem, evname, func)
{
  if (elem.attachEvent)
  {
    //elem.attachEvent("on" + evname, func);
    //alert("elem.on"+evname+"=func;");
    eval("elem.on"+evname+"=func;");
  }
  else
    elem.addEventListener(evname, func, false); //true
}

function delEvent(elem, evname, func)
{
  if (elem.attachEvent)
  {
    eval("elem.on"+evname+"=null;");
  }
  else
    elem.removeEventListener(evname, func, false); //true
}

function _px(px)
{
  var x = parseInt(px, 10);

  if (isNaN(x)) x = 0;

  return x;
}

function getLeft(o)
{
  var x = o.offsetLeft;
  while (o = o.offsetParent) x += o.offsetLeft;
  return x;
}

function getTop(o)
{
  var y = o.offsetTop;
  while (o = o.offsetParent) y += o.offsetTop;
  return y;
}

function getWidth(o)
{
  var x = o.offsetWidth;
  //while (o = o.offsetParent) x += o.offsetLeft;
  return x;
}

/*
function getTop(o) {
   var y = o.offsetTop;
   while (o.offsetParent)
    {
      y += o.offsetTop;
      o = o.offsetParent;
    }
   return y
}
*/

// escape function
var escape_trans = [];
for (var i = 0x410; i <= 0x44F; i++) escape_trans[i] = i - 0x350; // À-ßà-ÿ
escape_trans[0x401] = 0xA8;    // ¨
escape_trans[0x451] = 0xB8;    // ¸

var escapeOrig = window.escape;

window.escape = function(str)
{
  var ret = [];
  var str1 = str.toString();

  for (var i = 0; i < str1.length; i++)
  {
    var n = str1.charCodeAt(i);
    if (typeof escape_trans[n] != 'undefined') n = escape_trans[n];
    if (n <= 0xFF) ret.push(n);
  }
  return escapeOrig(String.fromCharCode.apply(null, ret)).replace('+','%2B');
}

function getHTTPRequestObject()
{
  var xmlHttpRequest = false;

  if (typeof ActiveXObject != 'undefined')
  {
    try {
      xmlHttpRequest = new ActiveXObject('Microsoft.XMLHTTP');
    } catch(e) {}

    if (!xmlHttpRequest) try {
      xmlHttpRequest = new ActiveXObject('Msxml2.XMLHTTP');
    } catch(e) {}
  }
  else if (typeof XMLHttpRequest != 'undefined')
  {
    xmlHttpRequest = new XMLHttpRequest();
  } else
  {
    xmlHttpRequest = false;
  }

  return xmlHttpRequest;
}

var diXMLRequest =
{
  get : function (url, callback)
  {
    var _getter = getHTTPRequestObject();
    _getter.open("GET", url, true);

    _getter.onreadystatechange = function() {
      if (_getter.readyState == 4)
      {
        callback(_getter.responseXML);
      }
    }

    _getter.send(null)
  },

  post : function (url, form, callback)
  {
    var _poster = getHTTPRequestObject();

    _poster.open("POST", url, true);
    _poster.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    _poster.setRequestHeader('Connection', 'close');
    _poster.send(form);

    _poster.onreadystatechange = function() {
      if (_poster.readyState == 4)
      {
        callback(_poster.responseXML);
      }
    };

    //if (!is_ie) _poster.send(null);
  }
}

function MM_preloadImages() {
 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
   var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
   if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}}

var __correct_latin_symbols_regexp = new RegExp("^[a-z0-9-_.]+$", "i");
var __correct_digits_regexp = new RegExp("^[0-9.,]+$", "i");
var __correct_email_regexp = new RegExp('^[0-9a-z]([-_.]*[0-9a-z])*@[0-9a-z]([-._]*[0-9a-z])*[.]{1}[a-z]{2,4}$', 'i');

function check_correct_latin_symbols(s)
{
  return __correct_latin_symbols_regexp.test(s);
}

function check_correct_digits(s)
{
  return __correct_digits_regexp.test(s);
}

function check_correct_email(s)
{
  return __correct_email_regexp.test(s);
}

Array.prototype.in_array = function(search_term)
{
  var i = this.length;

  if (i > 0)
  {
     do
     {
       if (this[i] === search_term)
       {
         return true;
       }
     } while (i--);
  }

  return false;
}

function mysprintf(num, afterdot)
{
  var d = Math.pow(10, afterdot);
  num = Math.round(num * d) / d;

  var a = num.toString().split('.');
  if (!a[1]) a[1] = '';

  while (a[1].length < afterdot) a[1] += '0';

  return a[0]+'.'+a[1];
}

function str_cut_end(s, max_len)
{
  var trailer = arguments[2] || '...';

  if (s.length > max_len)
    s = s.substr(0, max_len - trailer.length)+trailer;

  return s;
}

function in_array(search_term, ar)
{
  var i = ar.length;

  if (i > 0)
  {
     do
     {
       if (ar[i] == search_term)
       {
         return true;
       }
     } while (i--);
  }

  return false;
}
