<!--

// ////////////////////////////////////

  agent = navigator.userAgent;
  browserVer = 2;
  if(agent.substring(0, 7) == "Mozilla")
     {
    if(parseInt(agent.substring(8, 9)) >= 3)
	{
		browserVer = 1;
	}
  }
  if(browserVer == 1)
	{
		articlesOn = new Image (144, 66);
		articlesOn.src = "/_img/kbase-articles-cvr.gif";
    	articlesOff = new Image (144, 66);
	    articlesOff.src = "/_img/kbase-articles-nrm.gif";
	    
   		glossaryOn = new Image (144, 66);
		glossaryOn.src = "/_img/kbase-glossary-cvr.gif";
    	glossaryOff = new Image (144, 66);
	    glossaryOff.src = "/_img/kbase-glossary-nrm.gif";
	    
   		calcOn = new Image (144, 66);
		calcOn.src = "/_img/kbase-calc-cvr.gif";
    	calcOff = new Image (144, 66);
	    calcOff.src = "/_img/kbase-calc-nrm.gif";
	}

	function menuSwitch(imgDocID, imgObjName)
	{
	    if(browserVer == 1)
		document.images[imgDocID].src = eval(imgObjName+".src");
	}

// //////////////// Update DB with Article Rating ////////////////////

	var xmlHttp = false
    var xmlHttpSet = false
    var xmlHttpGet = false
    var xmlHttpFB = false
    
    function GetXmlHttpObject(handler)
    { 
        var objXmlHttp=null
        if (navigator.userAgent.indexOf("Opera")>=0)
        {
            objXmlHttp=new XMLHttpRequest()
            objXmlHttp.onload=handler
            objXmlHttp.onerror=handler 
            return objXmlHttp
        }
        if (navigator.userAgent.indexOf("MSIE")>=0)
        { 
            var strName="Msxml2.XMLHTTP"
            if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
            {
                strName="Microsoft.XMLHTTP"
            } 
            try 
            { 
                    objXmlHttp=new ActiveXObject(strName)
                    objXmlHttp.onreadystatechange=handler 
                    return objXmlHttp
            } 
            catch(e)
            { 
                //document.getElementById('divScore').innerHTML = "Error. Scripting for ActiveX might be disabled"
                return 
            } 
        } 
        if (navigator.userAgent.indexOf("Mozilla")>=0)
        {
            objXmlHttp=new XMLHttpRequest()
            objXmlHttp.onload=handler
            objXmlHttp.onerror=handler 
            return objXmlHttp
        }
    } 
    
    // sets number of stars
    function setRT(rt, divName){
        var div = document.getElementById(divName)
        div.innerHTML = ""
        // rt = Math.round(rt)
        for (var i = 1; i<=5; i++){
        	var x_3 = i + 0.3
        	var x_7 = i + 0.7
            if (i <= rt){
                div.innerHTML = div.innerHTML + "<img src='/_img/icons/star-t.gif'>\n" 
                if (rt >= x_3 && rt <= x_7){
                	i = i + 1
                	div.innerHTML = div.innerHTML + "<img src='/_img/icons/star-tb.gif'>\n"
                }
            } else {
                div.innerHTML = div.innerHTML + "<img src='/_img/icons/star-b.gif'>\n"
            }
        }
    }
    
    // gets data from the server, shows information about average rating at the bottom of the page, gets last inserted id
    function stateChangedSet() 
    { 
        if (xmlHttpSet.readyState==4 || xmlHttpSet.readyState=="complete")
        { 
        	//results returned as a string 'average rating:number of users:last inserted id'
            var txt = xmlHttpSet.responseText
            var arr = new Array
            arr = txt.split(":")
            txt = "<b>Average rating: " + arr[0] + "</b> out of <b>5</b> (" + arr[1] +" users)"
            document.getElementById("divScore").innerHTML = txt

            //set last inserted id in a hidden field
            document.getElementById("hidID").value = arr[2]
        } 
    }
     
    // sets article rating into DB
    function setRating(id, rt)
    { 
        var url="article-rt-set.asp?id="+id+"&rt="+rt
        xmlHttpSet=GetXmlHttpObject(stateChangedSet)
        xmlHttpSet.open("GET", url , true) 
        xmlHttpSet.send(null)
    }
    
    // gets data from the server and shows information about average rating at the bottom of the page
    function stateChangedGet() 
    { 
        if (xmlHttpGet.readyState==4 || xmlHttpGet.readyState=="complete")
        { 
            var responseText = xmlHttpGet.responseText
            var avRT = responseText.substr(0, responseText.indexOf(":"))
            var numUsers = responseText.substr(avRT.length + 1)
            responseText = "<b>Average rating: " + avRT + "</b> out of <b>5</b> (" + numUsers +" users)"
            document.getElementById("divScore").innerHTML = responseText
        } 
    }
    
    // gets average rating value for the article and number of users
    function getRatingInfo(id)
    {
        var url="article-rt-get.asp?id="+id
        xmlHttpGet=GetXmlHttpObject(stateChangedGet)
        xmlHttpGet.open("GET", url , true) 
        xmlHttpGet.send(null)
    }
    
    //gets and sets info about article average rating
    function stateChangedArticle() 
    { 
        if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
        { 
            var responseText = xmlHttp.responseText
            var avRT = responseText.substr(0, responseText.indexOf(":"))
            var numUsers = responseText.substr(avRT.length + 1)
            //set number of stars
            setRT(avRT, "tdArticleRtStars")
			//set number of users
            if (avRT > 0){
                document.getElementById("tdArticleRtText").innerHTML = "" + numUsers +" users / " + avRT + " avg."
            } else {
                document.getElementById("tdArticleRtText").innerHTML = "Not yet rated"
            }    
        } 
    }
    // sets article average rating (number of stars) at the top of the page
    function setArticleRating(id)
    {
        var url="/knowledge-base/article/article-rt-get.asp?id="+id
        xmlHttp=GetXmlHttpObject(stateChangedArticle)
        xmlHttp.open("GET", url , true) 
        xmlHttp.send(null)
    }
    
    // sends a message to a user when request is complete
    function stateChangedFB() 
    { 
        if (xmlHttpFB.readyState==4 || xmlHttpFB.readyState=="complete")
        { 
            // get response code from the server
            var nCode =  xmlHttpFB.responseText
			
            switch(nCode)
			{
				case "1": // success
					document.getElementById("tdCommHdr").innerHTML = "<b>Thank you for your feedback!</b>"
					document.getElementById("txtComm").disabled = "disabled"
					document.getElementById("btnSubmit").disabled = "disabled"
					// remove onmouseover event
					document.getElementById("divUserRtStars").onmouseover = null
        			// hide feedback form
					var t = setTimeout("hideComments()", 2000)
				 	break    
				case "2": // generic error
				  	document.getElementById("tdCommHdr").innerHTML = "<span style='color:red'><b>Server error! Please try again later!</b></span>"
				  	document.getElementById("btnSubmit").disabled = ""
				  	var t = setTimeout("hideComments()", 3000)
				  	break
				case "3": // txt == "" or id == ""
					document.getElementById("tdCommHdr").innerHTML = "<span style='color:red'><b>Server error! Please try again later!</b></span>"
					document.getElementById("btnSubmit").disabled = ""
					var t = setTimeout("hideComments()", 3000)
					break
			}
        } 
    }
    
    // saves feedback into DB using POST method
    function saveFeedbackDB(ob_btn)
    {
        var txt = document.getElementById("txtComm").value
		if (txt == ""){
			alert("Feedback field is required.")
			return
		}        
        ob_btn.disabled = "disabled"
        var url="article-feedback-set.asp"
        var id = document.getElementById("hidID").value
        var params = "text=" + encodeURIComponent(txt) + "&id=" + encodeURI(id)
        
        xmlHttpFB=GetXmlHttpObject(stateChangedFB)
        xmlHttpFB.open("POST", url , true)
        xmlHttpFB.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
    	xmlHttpFB.setRequestHeader("Content-length", params.length)
	    xmlHttpFB.setRequestHeader("Connection", "close")
        xmlHttpFB.send(params)
    }
    
    //mouse over star event
    function rt_over(rt){
        for (var i = 1; i<=5; i++){
            if (i <= rt){
                document.getElementById("star"+i).src = "/_img/icons/star-t.gif"
            } else {
                document.getElementById("star"+i).src = "/_img/icons/star-b.gif"
            }
        }
        var hint = document.getElementById("divHint")
        switch (rt){
            case 1:
                hint.innerHTML = "Poor, I would not recommend this article"
                break
            case 2:
                hint.innerHTML = "Below Average"
                break
            case 3:
                hint.innerHTML = "Average"
                break
            case 4:
                hint.innerHTML = "Above Average"
                break
            case 5:
                hint.innerHTML = "Exellent, I would recommend this article"
                break        
        }
    }
    //mouse out star event
    function rt_out(){
        for (var i = 1; i<=5; i++){
                document.getElementById("star"+i).src = "/_img/icons/star-b.gif"
        }
        document.getElementById("divHint").innerHTML = ""
    }
  
    function getClientTop()
	{
	    if (document.documentElement && document.documentElement.scrollTop)
		    return document.documentElement.scrollTop;
	    else if (document.body)
		    return document.body.scrollTop
	}

    
    function showComments(ev)
    {
    	var divComm = document.getElementById("divComm")
    	
    	if (divComm.style.display == "block") return;
    	divComm.style.display = "block"
    	divComm.style.left = "225px"
    	divComm.style.top = getClientTop() + ev.clientY - 195 + "px"
    }
    
    function hideComments()
    {
    	var divComm = document.getElementById("divComm")
    	divComm.style.display = "none"
    }
// -->