function getXmlHttpRequestObject() {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else if(window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        return null;
    }
}

/*	NOTE: vra6ta masiv ot vida arr[0]['name']='ivan',arr[0]['id']=5,...
*	ot xml ot vida <root><users><user><name>ivan</name><id>5</id></user></users></root>
*	ako xml e <root><bool>false</bool></root> - vra6ta false
*/
function getTagsAsArray(xml) {
    // alert(xml.childNodes.length);
    var root;
    if (xml == null || xml == undefined) {
        return false;
    }
    root=xml.getElementsByTagName('root')[0].childNodes[0];

    if (root.tagName=='bool' && root.firstChild.nodeValue=='false') {
        return false;
    }
    if (root.tagName=='bool' && root.firstChild.nodeValue=='true') {
        return true;
    }
    var arr=new Array();
    root=xml.getElementsByTagName('root')[0];
    if (root.childNodes.length > 1) {
        for (var k=0;k<root.childNodes.length;k++) {
            arr[k]=new Array();
            for (var i=0;i<root.childNodes[k].childNodes.length;i++) {
                arr[k][i]=new Object;
                var innerXml=root.childNodes[k].childNodes[i];
                for (var j=0;j<innerXml.childNodes.length;j++) {
                    if (innerXml.childNodes[j].firstChild!=undefined) {
                        arr[k][i][innerXml.childNodes[j].tagName]=innerXml.childNodes[j].firstChild.nodeValue;
                    } else {
                        arr[k][i][innerXml.childNodes[j].tagName]='';
                    }

                }
            }
        }
    } else {
        root=xml.getElementsByTagName('root')[0].childNodes[0];
        for (var i=0;i<root.childNodes.length;i++) {
            arr[i]=new Object;
            var innerXml=root.childNodes[i];
            for (var j=0;j<innerXml.childNodes.length;j++) {
                if (innerXml.childNodes[j].firstChild!=undefined) {
                    arr[i][innerXml.childNodes[j].tagName]=innerXml.childNodes[j].firstChild.nodeValue;
                } else {
                    arr[i][innerXml.childNodes[j].tagName]='';
                }
            }
        }
    }

    return arr;
}
function debug() {
    if (bDebug == "1") {
        var argv = debug.arguments;
        var argc = argv.length;
        for (var i = 0;i< argc;i++) {
            if (i != 0) {
                document.getElementById('jsDebug').innerHTML += ' -> ';
            }
            document.getElementById('jsDebug').innerHTML += argv[i] + '<br />';
        }
        if (document.getElementById('jsDebug').offsetHeight > 85) {
            document.getElementById('jsDebug').style.height = 85 + "px";
        }
        document.getElementById('jsDebug').scrollTop = document.getElementById('jsDebug').scrollHeight
    }
    // setTimeout(function() { throw new Error("[debug] " + aMsg); }, 0);
}

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: "OmniWeb",
            versionSearch: "OmniWeb/",
            identity: "OmniWeb"
        },
        {
            string: navigator.vendor,
            subString: "Apple",
            identity: "Safari"
        },
        {
            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.platform,
            subString: "Linux",
            identity: "Linux"
        }
    ]

};


function getNewMessages() {
    requestMsg=getXmlHttpRequestObject();
    var url = serverPath+'getNewMessages.php';
    requestMsg.onreadystatechange=newMessagesStateChanged;
    requestMsg.open("GET",url,true);
    requestMsg.setRequestHeader("Accept-Language", "bg, en");
    requestMsg.setRequestHeader("Accept-Charset", "utf8");
    requestMsg.send(null);

    return false;
}
function newMessagesStateChanged() {
    if (requestMsg.readyState==4 || requestMsg.readyState=="complete") {
        document.getElementById('cntMsgMenu').innerHTML = requestMsg.responseText;
    }
}

function getNewMessagesExtra() {
    getNewMessages();
    setTimeout('getNewMessagesExtra();',300000);
}


function escapeRegex(text) {
    if (!arguments.callee.sRE) {
        var specials = [
            '/', '.', '*', '+', '?', '|',
            '(', ')', '[', ']', '{', '}', '\\','^','$'
        ];
        arguments.callee.sRE = new RegExp(
            '(\\' + specials.join('|\\') + ')', 'g'
        );
    }
    return text.replace(arguments.callee.sRE, '\\$1');
}


function displayEmoticons(text) {
    for (key in emoticons) {
        for (var i = 0;i< emoticons[key].length;i++) {
            var regStr = emoticons[key][i];
            regStr = escapeRegex(regStr);
            var regex = new RegExp(regStr, "gi")
            text = text.replace(regex,' <img class="" src="' + emoticonPath + key + '.gif" />');
        }
    }
    return text;
}



function nl2br(text){
    text = escape(text);
    if(text.indexOf('%0D%0A') > -1){
        re_nlchar = /%0D%0A/g ;
    }else if(text.indexOf('%0A') > -1){
        re_nlchar = /%0A/g ;
    }else if(text.indexOf('%0D') > -1){
        re_nlchar = /%0D/g ;
    } else {
        re_nlchar = /%0D%0A/g ;
    }
    return unescape( text.replace(re_nlchar,'<br />') );
}


function bbcodeparser(text,pattern){
    for (var pat in pattern ) {
        var re = new RegExp(pat,"gi");
        text = text.replace(re, pattern[pat]);
    }
    return text;
}

function expandBanner(width,height) {
    // document.getElementById('flashjs').style.overflow = 'visible';
    // alert(height);
    document.getElementById('flashjs').style.height = height+'px';
    document.getElementById('flashjs').style.width = width+'px';
    document.getElementById('flashjs_frame').style.display = '';
    document.getElementById('flashjs_frame').style.background = 'white';
}
function collapseBanner() {
    // document.getElementById('flashjs').style.overflow = 'hidden';
    document.getElementById('flashjs').style.height = '90px';
    document.getElementById('flashjs_frame').style.display = 'none';
    document.getElementById('flashjs_frame').style.background = 'transparent';
}

