
var browser = {};
var isie=0;
var oldIE = false;

if (typeof(console)=="undefined")
{
	console = { 'log': function() { } }
}



function nastya() { alert ("Настя Корнилова — лучше всех!"); }

function $(id)	{ return document.getElementById(id); }
function $$(we) { if(typeof(we)=="string") { return $(we); } else { return we; } }

function mask(id)  { if(typeof(id)=="string") $(id).style.visibility="hidden"; else id.style.visibility="hidden"; }
function unmask(id){ if(typeof(id)=="string") $(id).style.visibility="visible"; else id.style.visibility="visible"; }

function hide(id)		{ $$(id).style.display="none"; }
function show(id,how)	{ if (how==undefined) how="block"; try { $$(id).style.display=how; } catch(e) { $$(id).style.display="block"; } } // IE!!! GODDAMN

function reveal(id,how)
{
	if (how==undefined) how="block";
	obj = $$(id);
	if (obj.style.display=="none" || obj.style.display=="") show(obj,how); else hide(obj);
}

function detectBrowser()
{
	var ua = navigator.userAgent;
	var dm;
	browser.n = "other";
	browser.mobile = false;
	var bs = ["MSIE", "Firefox", "Minefield", "Opera", "Chrome", "Chromium", "Safari", "WebKit", "KHTML"];
	for (i in bs)
	{
		if ((io = navigator.userAgent.indexOf(bs[i])) != -1)
		{
			browser.n = bs[i];
			break;
		}
	}
	
	var mbc = ['Maemo', 'iPhone', 'iPad', 'S60'];
	for (i in mbc)	{ if (navigator.userAgent.indexOf(bs[i]) != -1) { browser.mobile = "clever";	break; } }
	
	var mbs = ['S40'];
	for (i in mbs)	{ if (navigator.userAgent.indexOf(bs[i]) != -1) { browser.mobile = "stupid";	break; } }
	
	for (i in bs)
	{
		if ((io = navigator.userAgent.indexOf(bs[i])) != -1)
		{
			browser.n = bs[i];
			break;
		}
	}

	browser.toString = function() { return browser.n; }	
	if (browser.n == "other") return;

	if (browser.n == "MSIE") dm = " "; else dm = "/";
	browser.version = ua.substr(io,100).replace(browser + dm,"").split(" ")[0];
	browser.v = parseInt(browser.version.split(".")[0]);
	
	if (browser.n == "Minefield") browser.n = "Firefox";
	if (browser.n == "Chromium") browser.n = "Chrome";
	if (browser.n == "Chrome" || browser.n == "WebKit" || browser.n == "Safari" || browser.n == "KHTML") browser.type = "WebKit";
}

detectBrowser();

//if (browser != 'msie') document.onkeydown = naviCtrl;

/*

function naviCtrl(event) {
        switch (event.keyCode ? event.keyCode : event.which ? event.which : null)
        {
                case 0x27:
                        showNext();
                        break;
                case 0x25:
                        showPrev();
                        break;
        }
}

*/

function createXMLHttpRequest() {
        var xmlHttp=null;
        try
        {
                // Firefox, Opera 8.0+, Safari
                xmlHttp=new XMLHttpRequest();
        }
        catch (e)
        {
                // Internet Explorer
                try
                {
                        xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch (e)
                {
                        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                }
        }
        return xmlHttp;


}

function setCookie (name, value, expires, path, domain, secure)
{
	document.cookie = name + "=" + escape(value) +
	((expires) ? "; expires=" + expires : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");
}

function getCookie(name) {
        var cookie = " " + document.cookie;
        var search = " " + name + "=";
        var setStr = null;
        var offset = 0;
        var end = 0;
        if (cookie.length > 0) {
                offset = cookie.indexOf(search);
                if (offset != -1) {
                        offset += search.length;
                        end = cookie.indexOf(";", offset)
                        if (end == -1) {
                                end = cookie.length;
                        }
                        setStr = unescape(cookie.substring(offset, end));
                }
        }
        return(setStr);
}

function expandRecursive(obj)
{
	show(obj.parentNode.childNodes[3]);
	obj.src="srv/minus.gif";
	
	try
	{
		expandRecursive(obj.parentNode.parentNode.parentNode.childNodes[0]);
	} catch(e) {}
}

function expand(obj) // v1.1 Made recursive
{
	if (obj.parentNode.childNodes[3].style.display!="block")
	{
		show(obj.parentNode.childNodes[3]);
		obj.src="srv/i/minus.gif";
	} else {
		hide(obj.parentNode.childNodes[3]);  obj.src="srv/i/plus.gif";
	}
}
/*
String.prototype.replaceAll = function (one,two) 
{ 
	var sour = this;
	var dest;

	dest = sour.replace(one,two);

	while (dest!=sour)
	{
		sour = dest;
		dest = sour.replace(one,two);

		return sour;
	}
}

Array.prototype.push=function(){
        for(var i=0; i<arguments.length; i++){
                this[this.length]=arguments[i];
        }
}
*/
function makeRequest(url, type, req, callback, failure)
{
	if (typeof(callback)=="undefined") async = false; else async = true;
	console.log("Async is " + async);
	if (typeof(req) == "undefined") req = null;
	
	var http_request = createXMLHttpRequest();
	http_request.open(type,url,async);
	
	if (type=="POST") http_request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
//	if (type=="POST") http_request.setRequestHeader('Content-length', req.length);
	
	http_request.send(req);
	
	if (!async)
	{
		return http_request.responseText;
	} else {
		http_request.onreadystatechange = function()
		{
			console.log(http_request.readyState);
			if ( http_request.readyState == 4 )
			{
				if ( http_request.status == 200 )
				{
					callback(http_request.responseText);
		        } else {
					if (typeof(failure)!="undefined") { failure(http_request.status); } else
					{
						console.log("Error with request, URL "+url);
						alert("Возникла проблема при загрузке. Проверьте ваше подключение к интернету. "+http_request.status );
					}
				}
			http_request = null;
			}
		};
	}
}

var pluginInfoLoaded = false;

function pluginInfo()
{
	if (pluginInfoLoaded) return;
	makeRequest('srv/plugins.php', 'GET', null, function(r)
	{
		$('plugin_info').innerHTML+=r;
		$('plugin_info').removeChild($('plugin_info').getElementsByTagName("P")[1]);
		pluginInfoLoaded = true;
	});
}

function getClientWidth()
{
	return window.innerWidth ? window.innerWidth : document.documentElement.clientWidth;
//  if (browser == "Opera") return window.innerWidth;
//  return document.compatMode=='CSS1Compat' && !(browser == "Opera")?document.documentElement.clientWidth:document.body.clientWidth;
}

function getClientHeight()
{
	return window.innerHeight ? window.innerHeight : document.documentElement.clientHeight;
//	if (browser == "Opera") return window.innerHeight;
//  return document.compatMode=='CSS1Compat' && !(browser == "Opera")?document.documentElement.clientHeight:document.body.clientHeight;
}

function jsonParseIt(json)
{
//	alert(JSON.parse);
	if (typeof(JSON)!="undefined")
	{
		return JSON.parse(json);
	} else {
		return null; // jsonParse(json);
	}
}

function Dump(d,l,c) {
    if (l == null) l = 1;
	if (c == null) c = '<br />';
    var s = '';
    if (typeof(d) == "object")
	{
        s += typeof(d) + " {\n";
        for (var k in d)
		{
            for (var i=0; i<l; i++) s += "&nbsp;&nbsp;";
            s +=  k+ ": " + Dump(d[k],l+1,c);
        }
        for (var i=0; i<l-1; i++) s += "&nbsp;&nbsp;";
        s += "}" + c;
		document.write(s);
		s = "";
    } else {
        s += "" + d + c;
		document.write(s);
		s = "";
    }
    return s;
}

function findPosX(obj) {
    var curleft = 0;
    if (obj.offsetParent) {
        while (1) {
            curleft+=obj.offsetLeft;
            if (!obj.offsetParent) {
                break;
            }
            obj=obj.offsetParent;
        }
    } else if (obj.x) {
        curleft+=obj.x;
    }
    return curleft;
}

function findPosY(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        while (1) {
            curtop+=obj.offsetTop;
            if (!obj.offsetParent) {
                break;
            }
            obj=obj.offsetParent;
        }
    } else if (obj.y) {
        curtop+=obj.y;
    }
    return curtop;
}

/*Array.prototype.toString = 
Object.prototype.toString = function() {
  var cont = [];
  var addslashes = function(s) {
    // Использовать replace НЕЛЬЗЯ - в Опере
    // происходит зацикливание, т.к. из replace
    // зачем-то вызывается Object.toString().
    return 
      s.split('\\').join('\\\\').split('"').join('\\"');
  }
  for (var k in this) {
    if (cont.length) cont[cont.length-1] += ",";
    var v = this[k];
    var vs = '';
    if (v.constructor == String) 
      vs = '"' + addslashes(v) + '"';
    else 
      vs = v.toString();
        if (this.constructor == Array)
      cont[cont.length]
        else 
      cont[cont.length] = k + ": " + vs;
  }
  // Здесь тоже нельзя делать replace()! 
  cont = "  " + cont.join("\n").split("\n").join("\n  ");
  var s = cont;
  if (this.constructor == Object) {
    s = "{\n"+cont+"\n}";
  } else if (this.constructor == Array) {
    s = "[\n"+cont+"\n]";
  }
  return s;
}*/

function trim (str) {
	var	str = str.replace(/^\s\s/, ''), 
	ws = /\s/,
	i = str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
}
	
function array_unique(ar) {
	if (ar.length && typeof ar !== 'string') {
		var sorter = {};
		var out = [];
    	for (var i=0, j=ar.length; i<j; i++) {
			if(!sorter[ar[i]+typeof ar[i]]) {
		    	out.push(ar[i]);
				sorter[ar[i]+typeof ar[i]]=true;
			}
		}
	}
	return out || ar;
}

function testBrowser()
{
	browserOk = true;
	if (browser == "MSIE" && browser.v < 7) browserOk = false;
	if (browser == "Firefox" && browser.v < 3) browserOk = false;
	if (browser == "Opera" && browser.v < 9) browserOk = false;
	if (browser == "Safari" && browser.v < 4) browserOk = false;
	
	if (!browserOk) document.location.href="/oldbrowser/";
}
