var scrW = (screen.width) ? (screen.width) : 0;
var scrH = (screen.height) ? (screen.height) : 0;


//  Multi-browser function for listen onLoad event.
//  Sourse from http://xpoint.ru/know-how/JavaScript/PoleznyieFunktsii?29#UstanovkaObrabotchikaSobyitiya
//
function setGlobalOnLoad(f) {
   var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ?
 document : null
   if (root){
      if(root.addEventListener) root.addEventListener("load", f, false)
      else if(root.attachEvent) root.attachEvent("onload", f)
   } else {
      if(typeof window.onload == 'function') {
         var existing = window.onload
         window.onload = function() {
            existing()
            f()
         }
      } else {
         window.onload = f
      }
   }
}

//  Назначение нескольких обработчиков для одного события
//  Sourse from http://xpoint.ru/know-how/JavaScript/PoleznyieFunktsii?29#NaznachenieNeskol'kihObrabotch
//
function addHandler(object, event, handler)
{
  if (typeof object.addEventListener != 'undefined')
    object.addEventListener(event, handler, false);
  else if (typeof object.attachEvent != 'undefined')
    object.attachEvent('on' + event, handler);
  else
  {
    var handlersProp = '_handlerStack_' + event;
    var eventProp = 'on' + event;
    if (typeof object[handlersProp] == 'undefined')
    {
      object[handlersProp] = [];
      if (typeof object[eventProp] != 'undefined')
        object[handlersProp].push(object[eventProp]);
      object[eventProp] = function(e)
      {
        var ret = true;
        for (var i = 0; ret != false && i < object[handlersProp].length; i++)
          ret = object[handlersProp][i](e);
        return ret;
      }
    }
    object[handlersProp].push(handler);
  }
}

function removeHandler(object, event, handler)
{
  if (typeof object.removeEventListener != 'undefined')
    object.removeEventListener(event, handler, false);
  else if (typeof object.detachEvent != 'undefined')
    object.detachEvent('on' + event, handler);
  else
  {
    var handlersProp = '_handlerStack_' + event;
    if (typeof object[handlersProp] != 'undefined')
    {
      for (var i = 0; i < object[handlersProp].length; i++)
      {
        if (object[handlersProp][i] == handler)
        {
          object[handlersProp].splice(i, 1);
          return;
        }
      }
    }
  }
}

function set_cookie(name, value, expires)
{
	str = name + "=" + escape(value);
	if (expires != undefined) {
		str = str + "; expires=" + expires.toGMTString();
	}
	str = str + "; path=/";
	document.cookie = str
}

function _checkForm(rules, bg_error, bg_ok)
{
	if (bg_error == undefined) bg_error = "#66FF66";
	if (bg_ok == undefined) bg_ok = "";

	/*
	Rules example:
	var rules = [
		['name', /.+/, 'Incorrect name'],
		['nick', /^[a-z0-9\-_]+$/i, 'Incorrect nick'],
		['email', /.+@.+\.+/, 'Incorrect email']
	];
	*/
	if (rules.length == undefined || rules.length == 0) return false;

	var errors = "";

	for (var index in rules) {
		var field	= rules[index][0];
		var rx 		= rules[index][1];
		var msg		= rules[index][2];
		
		if (rx == "is_email") rx = /^[0-9a-z]([-.]?[_0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$/i;
		if (rx == "is_date") rx = /^\d{4}\-\d{2}\-\d{2}$/;

		el = document.getElementById(field)
		if (el) {
			var val = trim(el.value);
			if (!rx.test(val)) {		
				errors += msg + '\n';
				el.style.backgroundColor = bg_error;
			}
			else {
				el.style.backgroundColor = bg_ok;
			}
		}
	}
	if (errors == "") {
		return true;
	}
	else {
		alert("Please, fill this fields correctly: \n" + errors)
		return false;
	}
} // function _checkForm(...

function trim (str) {
	var s_spaces = /^\s*(.*)$/;
	var e_spaces = /(.*[^\s])(\s*)$/;
	str = str.replace(s_spaces,"$1");
	str = str.replace(e_spaces,"$1");
	return str;
}