﻿function createRequest() {
  try {
      request = new XMLHttpRequest();
  } catch (trymicrosoft) {
      try {
          request = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (othermicrosoft) {
          try {
              request = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (failed) {
              request = false;
          }
      }
  }

  if (!request) {
      // TODO возможно отправлять через хидден поле флаг об этом
  }

  return request;
}

var clickRequest = createRequest();

function SendClickInfo(revId) {
if (clickCounterServiceUrl != null) {
    request.open("GET", clickCounterServiceUrl + "?revId=" + revId, true);
    request.send(null);
}

return true;
}

function SetDisplay(id, display) {
var el = document.getElementById(id);
if (el) {
	el.style.display = display;
}
}

function GetElementPosition(elem) {
var w = elem.offsetWidth;
var h = elem.offsetHeight;
var l = 0;
var t = 0;
while (elem) {
l += elem.offsetLeft;
t += elem.offsetTop;
elem = elem.offsetParent;
}
return { "left": parseInt(l, 10), "top": parseInt(t, 10), "width": parseInt(w, 10), "height": parseInt(h, 10) };
}

function GetClientWidth() {
return document.compatMode == 'CSS1Compat' && !window.opera ? document.documentElement.clientWidth : document.body.clientWidth;
}

function GetClientHeight() {
return document.compatMode == 'CSS1Compat' && !window.opera ? document.documentElement.clientHeight : document.body.clientHeight;
}

/* http://www.dynamic-tools.net/toolbox/crossBrowserEvents/ */
function addEvent(elem, eventType, handler) { if (!elem.eventHandlers) elem.eventHandlers = []; if (!elem.eventHandlers[eventType]) { elem.eventHandlers[eventType] = []; if (elem['on' + eventType]) elem.eventHandlers[eventType].push(elem['on' + eventType]); elem['on' + eventType] = handleEvent; } elem.eventHandlers[eventType].push(handler); }
function removeEvent(elem, eventType, handler) { if (elem.eventHandlers) { var handlers = elem.eventHandlers[eventType]; for (var i in handlers) if (handlers[i] == handler) delete handlers[i]; } }
function handleEvent(e) { var returnValue = true; if (!e) e = fixEvent(event); var handlers = this.eventHandlers[e.type]; for (var i in handlers) { this.$$handleEvent = handlers[i]; returnValue = !((returnValue && this.$$handleEvent(e)) === false); } return returnValue; }
function fixEvent(event) { /* add W3C standard event methods */event.preventDefault = fixEvent.preventDefault; event.stopPropagation = fixEvent.stopPropagation; return event; }; fixEvent.preventDefault = function() { this.returnValue = false; }; fixEvent.stopPropagation = function() { this.cancelBubble = true; };
