/*
AV Arcade Pro front-end javascript functions

Author: Andy Venus
Rating stars rollover by Addam M. Driver

*/

var sMax;   // Isthe maximum number of stars
var holder; // Is the holding pattern for clicked state
var preSet; // Is the PreSet value onces a selection has been made
var rated;

// AJAX for all browsers
function GetXmlHttpObject() {
    var xmlHttp = null;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp = new XMLHttpRequest();
    }
    catch(e) {
        //Internet Explorer
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(e) {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp;
}

// AJAX POST FUNCTION
function AjaxPost(url, param, success_function) {
    xmlHttp = GetXmlHttpObject();
    if (xmlHttp == null) {
        alert("Your browser doesn't support AJAX. You should upgrade it!")
        return
    }
    xmlHttp.onreadystatechange = success_function;
    xmlHttp.open("POST", url, true);
    xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlHttp.send(param);
}

function div(d) {
    return document.getElementById(d);
}

// Rollover for image Stars //
function rating(num){
    sMax = 0;   // Isthe maximum number of stars
    for(n=0; n<num.parentNode.childNodes.length; n++){
        if(num.parentNode.childNodes[n].nodeName == "A"){
            sMax++; 
        }
    }
    
    if(!rated){
        s = num.id.replace("_", ''); // Get the selected star
        a = 0;
        for(i=1; i<=sMax; i++){     
            if(i<=s){
                document.getElementById("_"+i).className = "on";
                holder = a+1;
                a++;
            }else{
                document.getElementById("_"+i).className = "";
            }
        }
    }
}

// For when you roll out of the the whole thing //
function off(me){
    if(!rated){
        if(!preSet){    
            for(i=1; i<=sMax; i++){     
                document.getElementById("_"+i).className = "";
            }
        }else{
            rating(preSet);
        }
    }
}

// When you actually rate something //
function rateIt(me, id){
    if(!rated){
        preSet = me;
        rated=1;
        sendRate(me, id);
        rating(me);
    }
}

// Send the rating information somewhere using Ajax or something like that
function sendRate(sel, id){
    AjaxPost("http://www.gustr.com/ajax/add_rating.php", "id=" + id + "&rating=" + sel.title, 
             function () {}
    )
}

// ADD/DELETE FAV GAME
function AddFav(id, typ, site_url, unfav, fav) {
    AjaxPost(site_url+"/includes/view_game/ajax/add_fav.php", "id=" + id, 
             function () {}
    )
    
    if (typ == 0) {
        div('favbutton').innerHTML = '<a href="#" onclick="AddFav('+id+', 1, \''+site_url+'\', \''+unfav+'\', \''+fav+'\'); return false">'+unfav+'</a>';
    }
    else {
        div('favbutton').innerHTML = '<a href="#" onclick="AddFav('+id+', 0, \''+site_url+'\', \''+unfav+'\', \''+fav+'\'); return false">'+fav+'</a>';
    }
}


// ADD COMMENT

function AddComment(id, site_url) {
    div('comment_submit').disabled=true;
    div('comment_submit').value="Adding comment...";
    
    thecomment = div('the_comment').value; 
    
    AjaxPost(site_url+"/includes/view_game/ajax/add_comment.php", "comment="+thecomment+"&id="+id, 
    function () {
        if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
            if (xmlHttp.responseText == '') {
                alert("An error occured in sending your message");
            }
            else {
                var container = document.getElementById('comment_list');
                var new_element = document.createElement('li');
                new_element.innerHTML = xmlHttp.responseText;
                container.insertBefore(new_element, container.firstChild);
                window.location.hash="1"; 
                div('comment_submit').value="Comment added!";
                setTimeout("EnableButton()",30000);
            }
        }
    }
    )
}

// Re-enable add-comment button

function EnableButton () {
    div('comment_submit').value="Add comment";
    div('comment_submit').disabled=false;
}

function clickclear(thisfield, defaulttext) {
    if (thisfield.value == defaulttext) {
        thisfield.value = "";
    }
}
    
function clickrecall(thisfield, defaulttext) {
    if (thisfield.value == "") {
        thisfield.value = defaulttext;
    }
}

// Ajax delete comment
function DeleteComment(id, site_url) {
    AjaxPost(site_url+"/admin/includes/delete_comment.php", "id=" + id, 
             function () {
                    div('comment-' + id).style.display = 'none';
            }
    )
}


