/**
 * @author JRG Productions
 */
function stop_server(sid, session){
    var ajax_handle = grab_ajax_handle();
    var url = 'index.php?action=server_control&sid=' + sid + '&sa=stop&token=' + session;
    
    ajax_handle.onreadystatechange = function(){
        if (ajax_handle.readyState == 4 && ajax_handle.status == 200) {
            if (ajax_handle.responseText == 'stopped') 
                show_start_button(sid, session);
            else 
                show_error(ajax_handle.responseText);
	show_system(sid, session);
	}
        else {
            show_loading();
        }
    }
    
    ajax_handle.open('GET', url, true);
    ajax_handle.send(null);
}

function start_server(sid, session){
    var ajax_handle = grab_ajax_handle();
    var url = 'index.php?action=server_control&sid=' + sid + '&sa=start&token=' + session;
    
    ajax_handle.onreadystatechange = function(){
        if (ajax_handle.readyState == 4 && ajax_handle.status == 200) {
            if (ajax_handle.responseText == 'started') 
                show_stop_button(sid, session);
            else 
                show_error(ajax_handle.responseText);
	show_system(sid, session);
        }
        else {
            show_loading();
        }
    }
    
    ajax_handle.open('GET', url, true);
    ajax_handle.send(null);
}

function get_status(sid, session){
    var ajax_handle = grab_ajax_handle();
    var url = 'index.php?action=server_control&sid=' + sid + '&sa=status&token=' + session + '&r=' + Math.random();
    
    ajax_handle.onreadystatechange = function(){
        if (ajax_handle.readyState == 4 && ajax_handle.status == 200) {
            if (ajax_handle.responseText == 'running') {
                show_stop_button(sid, session);
            }
            else 
                if (ajax_handle.responseText == 'down') {
                    show_start_button(sid, session);
                }
                else 
                    if (ajax_handle.responseText == 'no ID') {
                        show_error(ajax_handle.responseText);
                    }
        }
    }
    
    state = 'loading';
    
    ajax_handle.open('GET', url, true);
    ajax_handle.send(null);
    
}

function set_status_buttons(sid, session, style){
    var ajax_handle = grab_ajax_handle();
    var url = 'index.php?action=server_control&sid=' + sid + '&sa=status&token=' + session + '&r=' + Math.random();
    
    
    ajax_handle.onreadystatechange = function(){
        if (ajax_handle.readyState == 4 && ajax_handle.status == 200) {
            if (ajax_handle.responseText == 'running') {
                document.getElementById('s_' + sid).innerHTML = '<img src="/cpgui/img/server_' + style + '_on_small.png" alt="Online" />';
            }
            else 
                if (ajax_handle.responseText == 'down') {
                    document.getElementById('s_' + sid).innerHTML = '<img src="/cpgui/img/server_' + style + '_off_small.png" alt="Online" />';
                }
                else 
                    if (ajax_handle.responseText == 'no ID') {
                    
                    }
        }
    }
    
    
    ajax_handle.open('GET', url, true);
    ajax_handle.send(null);
    
}

function set_status_class(sid, session, style){
    var ajax_handle = grab_ajax_handle();
    var url = 'index.php?action=server_control&sid=' + sid + '&sa=status&token=' + session + '&r=' + Math.random();
    
    
    ajax_handle.onreadystatechange = function(){
        if (ajax_handle.readyState == 4 && ajax_handle.status == 200) {
            if (ajax_handle.responseText == 'running') {
                document.getElementById('s_' + sid).setAttribute("class", style + " content_box_content vitals_server_status online");
                document.getElementById('s_' + sid).className = style + " content_box_content vitals_server_status online";
                document.getElementById('s_' + sid + '_status').innerHTML = "Online";
            }
            else 
                if (ajax_handle.responseText == 'down') {
                    document.getElementById('s_' + sid).setAttribute("class", style + " content_box_content vitals_server_status offline");
                    document.getElementById('s_' + sid).className = style + " content_box_content vitals_server_status offline";
                    document.getElementById('s_' + sid + '_status').innerHTML = "Offline";
                }
                else 
                    if (ajax_handle.responseText == 'no ID') {
                    
                    }
        }
    }
    
    
    ajax_handle.open('GET', url, true);
    ajax_handle.send(null);
    
}

function show_system(sid, session){
    var ajax_handle = grab_ajax_handle();
    var url = 'index.php?action=server_control&sid=' + sid + '&sa=system&token=' + session + '&r=' + Math.random();
    
    ajax_handle.onreadystatechange = function(){
        if (ajax_handle.readyState == 4 && ajax_handle.status == 200) {
            document.getElementById('system_box').innerHTML = ajax_handle.responseText;
        }
    }
    
    ajax_handle.open('GET', url, true);
    ajax_handle.send(null);
    
}

function valid_ipv4_ip(ip){
    ip = ip.trim(); // trim padding whitespace. uber important.
    if (ip.match(/^\d+\.\d+\.\d+\.\d+$/)) 
        return true;
    else 
        return false;
}

// firstly validate ip, then add it realitime, and then allow form to continue
// which saves it to the file
function admin_ip_live(sid, session, ip){
    var ajax_handle = grab_ajax_handle();
    var url = 'index.php?action=server_control&sid=' + sid + '&sa=add_remote&ip=' + ip + '&token=' + session + '&r=' + Math.random();
    var result;
    
    
    // kill whitespace
    ip = ip.trim();
    
    // make sure ip is valid. 
    if (!valid_ipv4_ip(ip)) {
        messages.create_message('Admin Add IP', 'That is not a valid ipv4 address!', []);
        return false;
    }
    
    // make sure we don't already have it
    if (admin_autos) {
        if (ip in admin_autos) {
            alert('Already got it');
            return false;
        }
    }
    
    ajax_handle.onreadystatechange = function(){
        if (ajax_handle.readyState == 4 && ajax_handle.status == 200) {
            result = ajax_handle.responseText.trim();
            if (result == 'ok') {
                messages.create_message('Admin Add IP', 'IP added in real time.', []);
                window.location = 'index.php?action=settings&id=' + sid + '&manage=yes&rentals=' + session;
                return false;
            }
            else {
                // something came up. w/e php can deal with it
                alert(result);
                return false;
            }
        }
    }
    
    ajax_handle.open('GET', url, true);
    ajax_handle.send(null);
    
    return false;
    
}

function show_error(e){
    document.getElementById('control_box').innerHTML = e;
}

function show_controls(sid, session){
    show_loading();
    get_status(sid, session);
}

function show_loading(){
    document.getElementById('control_box').innerHTML = '<div title="Loading.." id="server_loading">loading</div>';
}

function show_start_button(sid, session){
    document.getElementById('control_box').innerHTML = '<div title="Click to start" onclick="start_server(\'' + sid + '\', \'' + session + '\');" id="start_server">Start Server</div>';
}

function prompt_stop_server(sid, session){
    /*if (!confirm('Are you sure you wish to stop your server?'))
     {
     return;
     }
     else{
     stop_server(sid, session);
     return;
     }*/
    var btns = [];
    
    btns.push({
        msg: 'No',
        action: function(){
        }
    });
    
    btns.push({
        msg: 'Yes',
        action: function(){
            stop_server(sid, session);
        }
    });
    
    messages.create_message('Stop Server', 'Are you sure you wish to stop your server?', btns);
}

function show_stop_button(sid, session){
    document.getElementById('control_box').innerHTML = '<div title="Click to stop" onclick="prompt_stop_server(\'' + sid + '\', \'' + session + '\');" id="stop_server">Stop Server</div>';
}


// regularly update the 'Live' box in the settings page
function be_a_persistent_cunt(sid, first) {

	var 
		time_frame = 300000;
		//time_frame = 5000; // debug

	// be recursive each 5 minutes
	setTimeout('be_a_persistent_cunt(\''+sid+'\', false);', time_frame);

	if (first != true) {
		show_controls(sid, my_sess_id);
		show_system(sid, my_sess_id);
	}

}



