function $(id) {
  return document.getElementById(id);
}

function Hide(id) {
  if ($(id)) $(id).style.display='none';
}

function Show(id) {
  if ($(id)) $(id).style.display='';
}

String.prototype.trim = new Function("return this.replace(/^\\s+|\\s+$/g,'')");


function setCookie (name, value, path) {
  if (path == undefined) path=""; else path="; path="+path;
  var expDate=new Date();
  expDate.setTime(expDate.getTime()+7776000000); //3 month
  document.cookie=name+"="+escape(value)+"; expires="+expDate.toGMTString()+path;
}

function getCookie(name) {
  var cList = document.cookie.split("; ");
  for (var i=0; i<cList.length; i++) {
    var val = cList[i].split("=");
    if (val[0] == name)
      return unescape(val[1]);
  }
  return '';
}


//is string empty?
function testS(obj, err) {
  obj.value.trim();
  if (obj.value.length == 0) {
    alert(err);
    obj.focus();
    return false;
  } else
    return true;
}


//is string email?
function is_email(str) {
  return str.match(/^[a-z-_0-9\.]+@[a-z-_=>0-9\.]+\.[a-z]{2,4}$/i);
}


//is keypressed integer?
function testN(event) {
  if (((event.keyCode<48) || (event.keyCode>57)) && event.keyCode!=13 && event.keyCode!=8 && event.keyCode!=37 && event.keyCode!=39 && event.keyCode!=46 && event.keyCode!=36 && event.keyCode!=35)
    event.returnValue=false;
}


//AJAX
function loadDoc(url) {
  req = false;
  try {
    req=new ActiveXObject('Msxml2.XMLHTTP');
  } catch (e) {
    try {
      req=new ActiveXObject('Microsoft.XMLHTTP'); //Internet Explorer
    } catch (e) {
      if(window.XMLHttpRequest) //Mozilla & Safari
        req=new XMLHttpRequest();
    }
  }

  if (req) {
    req.onreadystatechange = processReq;
    req.open('GET', url, true);
    req.send(null);
    return true;
  }
  return false;
}

//AJAX POST Method
function loadPOSTDoc(url, uri) {
  req = false;
  try {
    req=new ActiveXObject('Msxml2.XMLHTTP');
  } catch (e) {
    try {
      req=new ActiveXObject('Microsoft.XMLHTTP'); //Internet Explorer
    } catch (e) {
      if(window.XMLHttpRequest) //Mozilla & Safari
        req=new XMLHttpRequest();
    }
  }

  if (req) {
    req.open('POST', url, true);
    req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    req.onreadystatechange = processReq;
    req.send(uri);
    return true;
  }
  return false;
}


function SearchSbm() {
  if (document.SForm && document.SForm.part) {
    document.SForm.part.value = document.SForm.part.value.trim();
    if (document.SForm.part.value.length < 4) {
      alert('Строка поиска должна содержать минимум 4 символа');
      return false;
    }
  }
  return true;
}


function getPos(elem) {
  var l = 0;
  var t = 0;

  while (elem) {
    l += elem.offsetLeft;
    t += elem.offsetTop;
    elem = elem.offsetParent;
  }

  return [l, t];
}


//Add/Remove event crossbrowser
function addEvent(obj,evt,fn) {
	if (obj.addEventListener) obj.addEventListener(evt,fn,false);
	else if (obj.attachEvent) obj.attachEvent('on'+evt,fn);
}

function removeEvent(obj,evt,fn) {
	if (obj.removeEventListener) obj.removeEventListener(evt,fn,false);
	else if (obj.detachEvent)	obj.detachEvent('on'+evt,fn);
}

//Упрощенный кейхук для всех страниц
function SimpleInitPages() {
  document.onkeydown = SimpleKeyHook;
}

function SimpleKeyHook(e) {
  var code;
  if (!e) var e = window.event;
  if (e.keyCode) code = e.keyCode;
    else if (e.which) code = e.which;

  if ((code == 37) && (e.ctrlKey == true)) {
    var dest = document.getElementById('prev');
    if (dest) location.href = dest.href;
  } else if ((code == 39) && (e.ctrlKey == true)) {
    var dest = document.getElementById('next');
    if (dest) location.href = dest.href;
  }
}

function addBookmark() {
  var title = 'ChipFind - поисковая система';
  var url = 'http://www.chipfind.ru';

  if(window.sidebar) // Firefox
    window.sidebar.addPanel(title, url,'');
  else if(window.opera){ //Opera
    var a = document.createElement("A");
    a.rel = "sidebar";
    a.target = "_search";
    a.title = title;
    a.href = url;
    a.click();
  } else if(document.all) //IE
    window.external.AddFavorite(url, title);
  else
    alert('Извините, Ваш браузер не поддерживает функцию добавления закладок.');
}

function ssubm(obj, n, e) {
  var e = e || window.event;
  var x = getPos(obj);
  $('topline'+n).style.left = (x[0]-11)+'px';
  $('topline'+n).style.top = (x[1]-5)+'px';
  Show('topline'+n);
  addEvent(document.body, 'click', ssubm_click);
  if (e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true; //Stop this click event
  return false;
}

function ssubm_click() {
  Hide('topline1');
  Hide('topline2');
  removeEvent(document.body, 'click', ssubm_click);
}

