/*
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(vote,id_num,ip_num,units,units_detail,rating_image_width) {
        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', 'rating_new.php?j='+vote+'&q='+id_num+'&p='+ip_num+'&c='+units+'&cd='+units_detail+'&w='+rating_image_width);
    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 disp_notice(text)
{
    elid = 'ratingResults';
    changeText( elid, text );
    el = document.getElementById(elid);
    var theTop = 30;
    if (window.innerHeight)
          {
                    pos = window.pageYOffset
          }
          else if (document.documentElement && document.documentElement.scrollTop)
          {
                  pos = document.documentElement.scrollTop
          }
          else if (document.body)
          {
                    pos = document.body.scrollTop
          }
          if (pos < theTop) pos = theTop;
          else pos += 30;
                  el.style.top = pos +'px';
          new Effect.Appear(elid, {from: 0.0, to: 0.8});
          setTimeout('new Effect.Fade("ratingResults")', 4000);
}

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['p'];
                        var theunits = parameterList['c'];
                        var theunits_detail = parameterList['cd'];
                        var therating_image_width = parameterList['w'];
                        //for testing        alert('sndReq('+theVote+','+theratingID+','+theuserIP+','+theunits+')'); return false;
                        sndReq(theVote,theratingID,theuserIP,theunits,theunits_detail,therating_image_width); return false;
                        }
                }

        };
Behaviour.register(ratingAction);
