/*
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 
--------------------------------------------------------- */

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(vote, id_num, ip_num, units) {
    var theUL = document.getElementById('unit_ul' + id_num); // the UL

    // switch UL with a loading div
    theUL.innerHTML = '<div class="loading"></div>';

    xmlhttp.open('get', 'rpc.php?j=' + vote + '&q=' + id_num + '&t=' + ip_num + '&c=' + units);
    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 "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"); // onclick="sndReq('j=1&q=2&t=127.0.0.1&c=5');
            var parameterTokens = parameterString.split("&"); // onclick="sndReq('j=1,q=2,t=127.0.0.1,c=5');
            var parameterList = new Array();

            for (j = 0; j < parameterTokens.length; j++) {
                var parameterName = parameterTokens[j].replace(/(.*)=.*/, "$1"); // j
                var parameterValue = parameterTokens[j].replace(/.*=(.*)/, "$1"); // 1
                parameterList[parameterName] = parameterValue;
            }
            var theratingID = parameterList['q'];
            var theVote = parameterList['j'];
            var theuserIP = parameterList['t'];
            var theunits = parameterList['c'];

            //for testing	alert('sndReq('+theVote+','+theratingID+','+theuserIP+','+theunits+')'); return false;
            sndReq(theVote, theratingID, theuserIP, theunits);
            return false;
        }
    }

};
Behaviour.register(ratingAction);