    debuging = false;

    var urlAddress = location.href;
    var pageName = document.title;
    function addToFavorites() {
        if (window.sidebar) {
            window.sidebar.addPanel(pageName, urlAddress, "");
        } else if (window.opera && window.print) {
            var elem = document.createElement('a');
            elem.setAttribute('href', urlAddress);
            elem.setAttribute('title', pageName);
            elem.setAttribute('rel', 'sidebar');
            elem.click();
        } else if (window.external) {
            window.external.AddFavorite(urlAddress,pageName)
        } else {
            alert("Sorry! Your browser doesn't support this function.");
        }
    }
    function fetchXmlData (xmlUrl, xmlGet, xmlPost) {
        ajaxXmlUrl = xmlUrl;
        ajaxXmlGet = xmlGet;
        ajaxXmlPost = xmlPost;
        window.setTimeout("fetchXmlData2()",50);
    }

    function fetchXmlData2 () {
        updateDataContent(ajaxXmlUrl, ajaxXmlGet, ajaxXmlPost);
    }

    function addLog(text) {
        if(debuging)
            if(document.getElementById("internalTest"))
                document.getElementById("internalTest").value = text + "\r\n" + document.getElementById("internalTest").value
    }

    function clearLog() {
        if(debuging)
            if(document.getElementById("internalTest"))
                document.getElementById("internalTest").value = ""
    }

    function updateDataContent (sFromUrl, xmlGet, xmlPost/*, oTargetElement*/) {
        try
        {
            clearLog();

            url = sFromUrl;
            if(xmlGet != "") {
                url = url + "?" + xmlGet;
            }

            var xmlhttp = new XMLHttpRequest();
            xmlhttp.open("POST", url, true);
            addLog("posting data to : "+url);
            addLog("params : "+xmlPost);
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4) {
                    try {
                        if (xmlhttp.responseXML != null) {
                            addLog("Data received : "+xmlhttp.responseText);

                            doc = xmlhttp.responseXML.documentElement;
                            if(doc) {
                                try{
                                    targetNode = doc.getElementsByTagName("target").item(0);
                                    targetValue = targetNode.childNodes.item(0).nodeValue;
                                }catch(err){addLog("failed to get targetValue : "+err);}
                                try{
                                    contentNode = doc.getElementsByTagName("content").item(0);
                                    contentValue = contentNode.childNodes.item(0).nodeValue;
                                }catch(err){addLog("failed to get contentValue : "+err);}

                                try {
                                    addLog("Sending content to section : "+targetValue);
                                    UpdateContent(targetValue, contentValue);
                                }catch(err){addLog("Exception updating content : "+err);}

                            } else {
                                addLog("XML is invalid.");
                            }
                        } else {
                            addLog("Response is null. "+xmlhttp.responseText);
                        }
                    } catch(err) {
                        addLog("Exception caught : "+err);
                    }
                } else {
                    addLog("Connection state : "+xmlhttp.readyState);
                }
            };
            xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            xmlhttp.send(xmlPost);
        }
        catch(e) {
            addLog('exception catched : '+e);
        }
    }

    function UpdateContent(target, content) {
        oTargetElement = document.getElementById(target);
        oTargetElement.innerHTML="";
        oTargetElement.innerHTML = content;
    }

    function urlencode(str) {
        str = escape(str);
        str = str.replace(/\+/g, '%2B');
        str = str.replace(/%20/g, '+');
        str = str.replace(/\*/g, '%2A');
        str = str.replace(/\//g, '%2F');
        str = str.replace(/@/g, '%40');
        return str;
    }

    function urldecode(str) {
        str = str.replace(/\+/g, ' ');
        str = unescape(str);
        return str;
    }

    function vote(id, value) {
        fetchXmlData("/media-vote/"+id+"/", "vote="+value, "");
    }

    function good(id) {
        fetchXmlData("/vote/"+id+"/good/", "", "");
    }

    function bad(id) {
        fetchXmlData("/vote/"+id+"/bad/", "", "");
    }

    function share(form) {
        try {
            if(form.share_sender.value == ""){
                return false;
            }
            post = "sender="+urlencode(form.share_sender.value);
            post += "&url="+urlencode(location.href);
            post += "&title="+urlencode(document.title);
            objArray = document.getElementsByName("share_email[]");
            hasDest = false;
            for(i=0; i<objArray.length; i++) {
                if(objArray[i].value != "") {
                    //emails.push(objArray[i].value);
                    post += "&share_email[]="+urlencode(objArray[i].value);
                    hasDest = true;
                }
            }
            if(!hasDest) {
                return false;
            }

            //alert(post);
            fetchXmlData("/?m=share&method=ajax&target=share_result", "", post);
        } catch(ex) {
            alert(ex);
        }
        return false;
    }

    mediaRating = {};
    var ratingText;

    mediaRating.sel = function (num)
    {
        for(var i=1;i<=10;i++) {
            var el = document.getElementById('s' + i);
            if(el) {
                el.storedClassName = el.className;
                el.className = 'star null';
            }
        }

        for(var i=1;i<=num;i++) {
            var el = document.getElementById('s' + i);
            if(el) {
                el.className = 'star over';
            }
        }
    }

    mediaRating.restore = function ()
    {
        for(var i=1;i<=10;i++) {
            var el = document.getElementById('s' + i);
            if(el && el.storedClassName) {
                el.className = el.storedClassName;
            }
        }
    }

    mediaRating.disable = function ()
    {
        for(var i=1;i<=10;i++) {
            var el = document.getElementById('s' + i);
            if(el) {
                if(el.storedClassName) el.className = el.storedClassName;
                el.onmouseout = function(){};
                el.onmouseover = function(){};
                el.onclick = function(){};
            }
        }
    }
    voteIncrement = function()
    {
        var el = document.getElementById('voteNumber');
        var el2 = document.getElementById('thanks');
        if(el){
            var currentValue = parseInt( el.innerHTML );
            el.innerHTML = currentValue + 1 ;
        }
        if(el2){
            el2.style.display = "inline";
        }
    }

    mediaRating.vote = function (id, value)
    {
        fetchXmlData("/index.php", "m=tube-vote&id="+id+"&vote="+value+"&method=ajax", "");
        voteIncrement();
        for(var i=1;i<=10;i++) {
            var el = document.getElementById('s' + i);
            if(el) {
                el.onmouseout = function(){};
                el.onmouseover = function(){};
                el.onclick = function(){};
                mediaRating.sel = function(){};
                mediaRating.restore = function(){};
                voteIncrement = function(){};
                mediaRating.vote = function(){};
            }
        }
    }

    var changing_thumbs = new Array();
    function changeThumb(index, i, arr, path)
    {
        if (changing_thumbs[index]['running'])
        {
            hidden_image_id = (i + 1) % changing_thumbs[index]['list'].length;

            document.getElementById(index).src = changing_thumbs[index]['list'][i];//path + "/160x120-0" + i + ".jpg";
            document.getElementById("hidden_image").src = changing_thumbs[index]['list'][hidden_image_id];//path + "/160x120-0" + hidden_image_id + ".jpg";

            i = hidden_image_id;
            setTimeout("changeThumb('" + index + "'," + i + ")", 600);
        }
    }
    function startThumbChange(index, arr)
    {
        changing_thumbs[index] = {running: true, path: document.getElementById(index).src, list: arr};

        changeThumb(index, 1);
    }
    function endThumbChange(index, path)
    {
        changing_thumbs[index]['running'] = false;
        document.getElementById(index).src = changing_thumbs[index]['path'];
    }
