mambax7/publisher

View on GitHub
assets/js/rating.js

Summary

Maintainability
A
1 hr
Test Coverage
/*
 Page:           rating.js
 Created:        Aug 2006
 Last Mod:       Mar 11 2007
 Handles actions and requests for rating bars.
 ---------------------------------------------------------
 ryan masuga, masugadesign.com
 ryan@masugadesign.com
 Licensed under a Creative Commons Attribution 3.0 License.
 http://creativecommons.org/licenses/by/3.0/
 See readme.txt for full credit details.
 --------------------------------------------------------- */

var xmlhttp;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
 try {
 xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")
 } catch (e) {
 try {
 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
 } catch (E) {
 xmlhttp=false
 }
 }
 @else
 xmlhttp=false
 @end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
        xmlhttp = new XMLHttpRequest();
    } catch (e) {
        xmlhttp = false
    }
}
function myXMLHttpRequest() {
    var xmlhttplocal;
    try {
        xmlhttplocal = new ActiveXObject("Msxml2.XMLHTTP")
    } catch (e) {
        try {
            xmlhttplocal = new ActiveXObject("Microsoft.XMLHTTP")
        } catch (E) {
            xmlhttplocal = false;
        }
    }

    if (!xmlhttplocal && typeof XMLHttpRequest != 'undefined') {
        try {
            var xmlhttplocal = new XMLHttpRequest();
        } catch (e) {
            var xmlhttplocal = false;
            alert('couldn\'t create xmlhttp object');
        }
    }
    return (xmlhttplocal);
}

function sndReq(itemid, rating) {
    changeText('unit_long' + itemid, '<div class="publisher_loading"></div>');
    xmlhttp.open('get', 'include/ajax_rating.php?itemid=' + itemid + '&rating=' + rating);
    xmlhttp.onreadystatechange = handleResponse;
    xmlhttp.send(null);
}

function handleResponse() {
    if (xmlhttp.readyState == 4) {
        if (xmlhttp.status == 200) {

            var response = xmlhttp.responseText;
            var update = new Array();

            if (response.indexOf('|') != -1) {
                update = response.split('|');
                changeText(update[0], update[1]);
            }
        }
    }
}

function changeText(div2show, text) {
    // Detect Browser
    var IE = (document.all) ? 1 : 0;
    var DOM = 0;
    if (parseInt(navigator.appVersion) >= 5) {
        DOM = 1
    }

    // Grab the content from the requested "div" and show it in the "publisher_container"
    if (DOM) {
        var viewer = document.getElementById(div2show);
        viewer.innerHTML = text;
    } else if (IE) {
        document.all[div2show].innerHTML = text;
    }
}

/* =============================================================== */
var ratingAction = {
    'a.rater': function (element) {
        element.onclick = function () {

            var parameterString = this.href.replace(/.*\?(.*)/, "$1");
            var parameterTokens = parameterString.split("&");
            var parameterList = new Array();

            for (j = 0; j < parameterTokens.length; j++) {
                var parameterName = parameterTokens[j].replace(/(.*)=.*/, "$1");
                var parameterValue = parameterTokens[j].replace(/.*=(.*)/, "$1");
                parameterList[parameterName] = parameterValue;
            }
            var theItemid = parameterList['itemid'];
            var theRating = parameterList['rating'];

            sndReq(theItemid, theRating);
            return false;
        }
    }

};
Behaviour.register(ratingAction);