var bFF = false;
var bIE = false;
var bOpera = false;
var bChrome = false;

var BrowserDetect = {
    init: function () {
        this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
        this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
        this.OS = this.searchString(this.dataOS) || "an unknown OS";
    },
    searchString: function (data) {
        for (var i = 0; i < data.length; i++) {
            var dataString = data[i].string;
            var dataProp = data[i].prop;
            this.versionSearchString = data[i].versionSearch || data[i].identity;
            if (dataString) {
                if (dataString.indexOf(data[i].subString) != -1)
                    return data[i].identity;
            }
            else if (dataProp)
                return data[i].identity;
        }
    },
    searchVersion: function (dataString) {
        var index = dataString.indexOf(this.versionSearchString);
        if (index == -1) return;
        return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
    },
    dataBrowser: [
		{
		    string: navigator.userAgent,
		    subString: "Chrome",
		    identity: "Chrome"
		},
		{ string: navigator.userAgent,
		    subString: "OmniWeb",
		    versionSearch: "OmniWeb/",
		    identity: "OmniWeb"
		},
		{
		    string: navigator.vendor,
		    subString: "Apple",
		    identity: "Safari",
		    versionSearch: "Version"
		},
		{
		    prop: window.opera,
		    identity: "Opera"
		},
		{
		    string: navigator.vendor,
		    subString: "iCab",
		    identity: "iCab"
		},
		{
		    string: navigator.vendor,
		    subString: "KDE",
		    identity: "Konqueror"
		},
		{
		    string: navigator.userAgent,
		    subString: "Firefox",
		    identity: "Firefox"
		},
		{
		    string: navigator.vendor,
		    subString: "Camino",
		    identity: "Camino"
		},
		{		// for newer Netscapes (6+)
		    string: navigator.userAgent,
		    subString: "Netscape",
		    identity: "Netscape"
		},
		{
		    string: navigator.userAgent,
		    subString: "MSIE",
		    identity: "Explorer",
		    versionSearch: "MSIE"
		},
		{
		    string: navigator.userAgent,
		    subString: "Gecko",
		    identity: "Mozilla",
		    versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
		    string: navigator.userAgent,
		    subString: "Mozilla",
		    identity: "Netscape",
		    versionSearch: "Mozilla"
		}
	],
    dataOS: [
		{
		    string: navigator.platform,
		    subString: "Win",
		    identity: "Windows"
		},
		{
		    string: navigator.platform,
		    subString: "Mac",
		    identity: "Mac"
		},
		{
		    string: navigator.userAgent,
		    subString: "iPhone",
		    identity: "iPhone/iPod"
		},
		{
		    string: navigator.platform,
		    subString: "Linux",
		    identity: "Linux"
		}
	]

};

BrowserDetect.init();
if (BrowserDetect.browser == "Explorer") {
    bIE = true;
} else if (BrowserDetect.browser == "Chrome") {
    bChrome = true;
} else if (BrowserDetect.browser == "Firefox") {
    bFF = true;
} else if (BrowserDetect.browser == "Opera") {
    bOpera = true;
}


//-----------------------------------------------------------------------------------------------------------------------
//  getElement
//-----------------------------------------------------------------------------------------------------------------------

function getElement(name) {
    if (bIE) {
        return document.all[name];
    } else {
        return document.getElementById(name);
    }
}

//-----------------------------------------------------------------------------------------------------------------------
//  addEvent
//-----------------------------------------------------------------------------------------------------------------------

function addEvent(element, name, fun, capture) {
    if (typeof element == 'string') {
        element = getElement(element);
    }
    if (element != null) {
        if (element.addEventListener) {
            element.addEventListener(name, fun, capture);
        } else if (element.attachEvent) {
            element.attachEvent('on' + name, fun);
        }
    }
}

//-----------------------------------------------------------------------------------------------------------------------
//  getPageSize
//-----------------------------------------------------------------------------------------------------------------------

function getPageSize() {
    if (document.body.scrollHeight > document.body.clientHeight) {
        yWithScroll = document.body.scrollHeight;
    } else {
        yWithScroll = document.body.clientHeight;
    }
    if (document.body.scrollWidth > document.body.clientWidth) {
        xWithScroll = document.body.scrollWidth;
    } else {
        xWithScroll = document.body.clientWidth;
    }
    arrayPageSize = new Array(xWithScroll, yWithScroll);
    return arrayPageSize;
}

//-----------------------------------------------------------------------------------------------------------------------
//  getElementsByClassName
//-----------------------------------------------------------------------------------------------------------------------

document.getElementsByClassName = function(parent, value) {
	var nodes = [];
	var cls = new RegExp('\\b'+value+'\\b');
	var items = parent.getElementsByTagName('*');
	for (var i = 0; i < items.length; i++) {
		var clsName = items[i].className;
		if (cls.test(clsName)){
			 nodes.push(items[i]);
		}	 
	}
	return nodes;
};



