// Create AJAX request object
function createRequestObject() {
	try {
	    // Moz supports XMLHttpRequest. IE uses ActiveX.
	    // browser detction is bad. object detection works for any browser
	    xmlhttp = window.XMLHttpRequest?new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");
	    return xmlhttp;
	} catch (e) {
	    // browser doesn?t support ajax. handle however you want
	}
}
var http = createRequestObject();

var requests = new Array();

function makeRequest(file, responseArea) {
	// Get area to put the response
	responseArea = document.getElementById(responseArea);
	// Append the area to the requests list
	requests = new Array();
	requests.push(responseArea);
	// Open request and make it
	ajaxRequest('get',file,handleResponse);
}

function ajaxRequest(method, file, response) {
	try {
		http.open(method, file);
		http.onreadystatechange = response;
    	http.send(null);
	} catch(e) {
		// nothing happened...
	}
}

function handleResponse() {
	if(http.readyState == 4){
		// Get request info
		var req = requests.shift();
		// Get response
		var resp = getResponse();
		if(resp) {
			req.innerHTML = resp;
		}
    }
}

function getResponse() {
	// Get text in return
	var response = http.responseText;
	// Read response header
	var header = response.split("\r\n\r\n");
	response = header[1];
	var codes = header[0].split(" ");
	
	if(codes[0] == 'OK') {
		// Returned ok
		try {
			return response;
		} catch(e) {
			// Don't really care...
		}
	} else if(codes[0] == 'ERR') {
		// Return was bad, get message
		var msg = response;
		// Was it fatal?
		var fatal = codes[1];
		
		alert(msg);
		return false;
	} else {
		if(DEBUG)
			alert("Unknown error:\n\n"+header)
		return false;
	}
}

/**
 **
 **
 **/

function tab_featured() {
	makeRequest('ajax/getmedia.php?macro=featured&limit=7&type=videos&template=ajax/feature.tpl&tplvar=featured', 'topcontent');
	focusTab('tab_featured');
}
function tab_upload() {
	makeRequest('upload.php?action=form', 'topcontent');
	focusTab('tab_upload');
}
function tab_search() {
	makeRequest('ajax/search.php?action=form', 'topcontent');
	focusTab('tab_search');
}
function tab_stats() {
	makeRequest('ajax/userstats.php', 'topcontent');
	focusTab('tab_stats');
}

function get_media_random() {
	makeRequest('ajax/getmedia.php?macro=random&limit=5&type=all&template=mediarandrow.tpl', 'random-vids');
}
function get_media_pictures() {
	makeRequest('ajax/getmedia.php?macro=random&limit=5&type=images&template=mediarandrow.tpl', 'picstxt');
}
function get_media_viewed() {
	makeRequest('ajax/getmedia.php?macro=viewed&limit=5&type=videos', 'viewed-vids');
}
function get_media_added() {
	makeRequest('ajax/getmedia.php?macro=added&limit=4&type=videos', 'added-vids');
}
function get_media_votes(mid) {
	makeRequest('ajax/getvotes.php?mid='+mid, 'mediaratingBox');
}

/**
 **
 **
 **/

function setSafeMode(on) {
	if(on)
		pass = 1;
	else
		pass = 0;
	//makeRequest('ajax/setting.php?action=safemode&value='+pass, null);
	ajaxRequest('get','ajax/setting.php?action=safemode&value='+pass,safeModeResult);
}
function safeModeResult() {
	if(http.readyState == 4){
		var resp = getResponse();
		if(resp) {
			if(resp == 'on') {
				var area = document.getElementById('safemodeon');
				var other = document.getElementById('safemodeoff');
			} else {
				var area = document.getElementById('safemodeoff');
				var other = document.getElementById('safemodeon');
			}
			area.className = 'active';
			other.className = '';
			window.location.reload( false );
		} else {
			window.location = 'register.php?err=login';
		}
	}
}

function showComment(mid) {
	makeRequest('ajax/actmedia.php?action=commentform&mid='+mid, 'comment');
}
function postComment() {
	
	var txt = document.commentform.commtext;
	var mid = document.commentform.MID;
	var btn = document.commentform.submit;
	
	if(isEmpty(txt,'Please provide a comment') || isEmpty(mid,'Invalid MID')) {
		return false;
	}
	
	txt.disabled = true;
	btn.disabled = true;
	
	makeRequest('ajax/actmedia.php?action=comment&mid='+mid.value+'&txt='+escape(txt.value),'comment');
	
	return false;
}

function flagMedia(mid) {
	makeRequest('ajax/actmedia.php?action=flag&mid='+mid,null);
}

function reqFeatured(mid) {
	makeRequest('ajax/actmedia.php?action=feature&mid='+mid,null);
}

function saveMedia(mid) {
	makeRequest('ajax/actmedia.php?action=save&mid='+mid,null);
}

function voteMedia(mid, vote_value) {
	makeRequest('ajax/actmedia.php?action=vote&mid='+mid+'&vote_value='+vote_value,null);
	setTimeout( "get_media_votes(" + mid + ")", 300 );
	document.getElementById('mediaratingBox').style.display = 'none';
	document.getElementById('mediaratingBox').style.height = '20px';
	Effect.toggle('mediaratingBox','appear');
}