 /* ---------------------------- */
/* XMLHTTPRequest Enable */
/* ---------------------------- */
function createObject() {
	var ajaxRequest;  // The variable that makes Ajax possible!
	
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
	return ajaxRequest;
}
/* -------------------------- */
/* BASE VARIABLES			  */
/* -------------------------- */
var url = 'process.php?'
var sendCat = createObject();
var receiveCat = createObject();
var sendCom = createObject();
var receiveCom = createObject();
var sendBlog = createObject();
var receiveBlog = createObject();
var whereTo = 'response';
/* -------------------------- */
/* BUILD QUERY STRING */
/* -------------------------- */
function buildQueryString(formId){
	var form = document.getElementById(formId);
	var output = '';
	for(i = 0; i < form.elements.length; i++){
		var name = encodeURI(form.elements[i].name);
		var value = encodeURI(form.elements[i].value);
		var type = form.elements[i].type;
		if(type != 'submit' && type != 'reset') {
			if(name != '' && value != ''){
				output += "&" + name + "=" + value;
			}
		}
	}
	return output;
}

//////////////////########################### CATEGORY SECTION

function insertCat(fieldId, selectId) {
	var catName = document.getElementById(fieldId).value;
	if(catName == '' || catName == ' '){
		alert('Category name cannot be empty, please enter a title');
	}else{
		document.getElementById('responsepic').innerHTML = "<img src=\"/images/loading.gif\" alt=\"Loading...\" />";
		document.getElementById(whereTo).innerHTML = "Sending category information...<br />";
		//build query
		var nocache = Math.random();
		var query = 'action=insert&into=categories&title=' + catName + '&nocache=' + nocache;
		//send request
		sendCat.open("POST", url, true);
		sendCat.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		sendCat.setRequestHeader("Content-length", query.length);
		sendCat.setRequestHeader("Connection", "close");
		//do stuff
		sendCat.onreadystatechange = getCats;
		sendCat.send(query);
	}
}

function getCats() {
	var readyness = sendCat.readyState;
	var response = sendCat.responseXML;
	document.getElementById(whereTo).innerHTML = "Retrieving category information...<br />"
	//build query
	var nocache = Math.random();
	var query = 'action=select&what=*&from=categories&nocache=' + nocache;
	//send request
	receiveCat.open("POST", url, true);
	receiveCat.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	receiveCat.setRequestHeader("Content-length", query.length);
	receiveCat.setRequestHeader("Connection", "close");
	//do stuff
	receiveCat.onreadystatechange = showCats;
	receiveCat.send(query);
	document.getElementById(whereTo).innerHTML = 'Loading category information...<br />';
}

function showCats() {
	var readyness = receiveCat.readyState;
	var response = receiveCat.responseXML;
	if(readyness == 4 || readyness == "complete"){
		//clear response
		document.getElementById(whereTo).innerHTML = '';
		//#### SELECT DROPDOWN ####//
		//store select
		var dropDown = document.getElementById('category_id');
		//loop through xml
		for (x = dropDown.length; x >= 0; x--) {
			dropDown[x] = null;
		}
		var items = response.getElementsByTagName('item');
		for(i = 0; i < items.length; i++){
			//store id & title
			var id = getNodeValue(items[i], "id");
			var title = getNodeValue(items[i], "title");
			//remove previous options
			//create new options
			dropDown.options[dropDown.length]=new Option(title, id);
		}
		//clear new cat container
		document.getElementById('newcat').innerHTML = '';
		//#### RIGHT LINKS LIST ####//
		var linkList = document.getElementById('catlist');
		linkList.innerHTML = '';
		for(i = 0; i < items.length; i++){
			var title = getNodeValue(items[i], "title");
			var count = getNodeValue(items[i], "blog_count");
			//create list element and link element
			//create li element
			var newListEle = document.createElement('li');
			//create the a element
			var newLink = document.createElement('a');
			//add a href
			var href = document.createAttribute('href');
			//set event value
			href.nodeValue = '/search/'+title;
			//set cliackable link text
			text = document.createTextNode(title+'('+ count +')');
			//add to link
			newLink.appendChild(text);
			//add href to a
			newLink.setAttributeNode(href);
			//insert the link into the li
			newListEle.appendChild(newLink);
			//add new list link to containging list
			linkList.appendChild(newListEle);
		}
		document.getElementById('responsepic').innerHTML = "";
	}else{
		document.getElementById(whereTo).innerHTML = 'Loading category information...<br />';
	}
}
//////////////////########################### BLOG SECTION

function insertBlog(formId) {
	// Optional: Show a waiting message in the layer with ID login_response
	document.getElementById(whereTo).innerHTML = "Sending blog..."
	// Required: verify that all fileds is not empty. Use encodeURI() to solve some issues about character encoding.
	var nocache = Math.random();
	var query = 'action=insert&into=articles&type=blog'+ buildQueryString(formId) + '&nocache=' + nocache;
	sendBlog.open("POST", url, true);
	sendBlog.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	sendBlog.setRequestHeader("Content-length", query.length);
	sendBlog.setRequestHeader("Connection", "close");
	sendBlog.onreadystatechange = updatePage;
	sendBlog.send(query);
}

function getArticles() {
	var readyness = sendBlog.readyState;
	var response = sendBlog.responseXML;
	if(readyness == 4 || readyness == "complete"){
		document.getElementById(whereTo).innerHTML = "Retrieving blogs information...<br />"
		//build query
		var nocache = Math.random();
		var query = 'action=select&what=*&from=articles&other=ORDER BY date DESC LIMIT 5&nocache=' + nocache;
		//send request
		receiveBlog.open("POST", url, true);
		receiveBlog.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		receiveBlog.setRequestHeader("Content-length", query.length);
		receiveBlog.setRequestHeader("Connection", "close");
		//do stuff
		receiveBlog.onreadystatechange = showBlogs;
		receiveBlog.send(query);
	}else{
		document.getElementById(whereTo).innerHTML = 'Loading blogs information...<br />';
	}
}

function showBlogs() {
	var readyness = receiveBlog.readyState;
	var response = receiveBlog.responseXML;
	if(readyness == 4 || readyness == "complete"){
		//clear response
		document.getElementById(whereTo).innerHTML = '';
		var items = response.getElementsByTagName('item');
		//#### RIGHT LINKS LIST ####//
		var linkList = document.getElementById('bloglinklist');
		linkList.innerHTML = '';
		for(i = 0; i < items.length; i++){
			var title = getNodeValue(items[i], "title");
			var blogUrl = getNodeValue(items[i], "url");
			//create list element and link element
			//create li element
			var newListEle = document.createElement('li');
			//create the a element
			var newLink = document.createElement('a');
			//add a href
			var href = document.createAttribute('href');
			//set event value
			href.nodeValue = '/blog/'+blogUrl;
			//set cliackable link text
			text = document.createTextNode(title);
			//add to link
			newLink.appendChild(text);
			//add href to a
			newLink.setAttributeNode(href);
			//insert the link into the li
			newListEle.appendChild(newLink);
			//add new list link to containging list
			linkList.appendChild(newListEle);
		}
		document.getElementById('responsepic').innerHTML = "";
	}else{
		document.getElementById(whereTo).innerHTML = 'Loading blogs information...<br />';
	}
}
	
function insertReply() {
	var state = sendBlog.readyState;
	var response = sendBlog.responseText;
	if(state == 4){
		document.getElementById(whereTo).innerHTML = '';
	}else{
		document.getElementById(whereTo).innerHTML = 'Saving blog...';
	}
}

function updatePage() {
	insertReply();
	getCats();
	getArticles();
}

//////////////////########################### COMMENTS SECTION
function insertCom(formId) {
	//build query
	var nocache = Math.random();
	var query = 'action=insert&type=comment&into=comments' + buildQueryString(formId) + '&nocache=' + nocache;
	//send request
	//alert(query);
	sendCom.open("POST", '/admin/'+url, true);
	sendCom.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	sendCom.setRequestHeader("Content-length", query.length);
	sendCom.setRequestHeader("Connection", "close");
	//do stuff
	sendCom.onreadystatechange = getComs;
	sendCom.send(query);
	document.getElementById('commentform').innerHTML = "Sending comment information...<img src=\"/images/loading.gif\" alt=\"Loading...\" /><br />";
}

function getComs() {
	whereTo = 'commentblock';
	var readyness = sendCom.readyState;
	var response = sendCom.responseText;
	if(readyness == 4 || readyness == "complete"){
		document.getElementById('commentform').innerHTML = response;
		document.getElementById(whereTo).innerHTML = "Retrieving comment information...<img src=\"/images/loading.gif\" alt=\"Loading...\" /><br />"
		//build query
		var nocache = Math.random();
		var blogId = document.getElementById('blog_id').value;
		//alert(blogId);
		var query = 'action=select&what=*&from=comments&where=blog_id=\''+blogId+'\'&nocache=' + nocache;
		//send request
		//alert(query);
		receiveCom.open("POST", '/admin/'+url, true);
		receiveCom.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		receiveCom.setRequestHeader("Content-length", query.length);
		receiveCom.setRequestHeader("Connection", "close");
		//do stuff
		receiveCom.onreadystatechange = showComs;
		receiveCom.send(query);
	}else{
		document.getElementById(whereTo).innerHTML = 'Loading comment information...<img src=\"/images/loading.gif\" alt=\"Loading...\" /><br />';
	}
}

function showComs() {
	whereTo = 'commentblock';
	var readyness = receiveCom.readyState;
	var response = receiveCom.responseXML;
	if(readyness == 4 || readyness == "complete"){
		//clear response
		document.getElementById(whereTo).innerHTML = '';
		//#### commentblock ####//
		var items = response.getElementsByTagName('item');
		var linkList = document.getElementById(whereTo);
		linkList.innerHTML = '';
		for(i = 0; i < items.length; i++){
			var name = getNodeValue(items[i], "name");
			var comment = getNodeValue(items[i], "comment");
			var date = getNodeValue(items[i], "date");
			
			var newHeading = document.createElement('h3');
			var newPara1 = document.createElement('p');
			var newPara2 = document.createElement('p');
			var newHr = document.createElement('hr');
			//create list element and link element
			//create li element
			var newListEle = document.createElement('li');
			//create the a element
			var newLink = document.createElement('a');
			//add a href
			var href = document.createAttribute('href');
			//set event value
			href.nodeValue = '/search/'+title;
			//set cliackable link text
			text = document.createTextNode(title+'('+ count +')');
			//add to link
			newLink.appendChild(text);
			//add href to a
			newLink.setAttributeNode(href);
			//insert the link into the li
			newListEle.appendChild(newLink);
			//add new list link to containging list
			linkList.appendChild(newListEle);
		}
	}else{
		document.getElementById(whereTo).innerHTML = 'Loading comment information...<img src=\"/images/loading.gif\" alt=\"Loading...\" /><br />';
	}
}

//////////////////########################### CONTACT FORM SECTION
function sendEmail(formId) {
	//build query
	var nocache = Math.random();
	var query = 'action=email&' + buildQueryString(formId) + '&nocache=' + nocache;
	//send request
	//alert(query);
	sendCom.open("POST", '/admin/'+url, true);
	sendCom.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	sendCom.setRequestHeader("Content-length", query.length);
	sendCom.setRequestHeader("Connection", "close");
	//do stuff
	sendCom.onreadystatechange = insertEmailReply;
	sendCom.send(query);
}

function insertEmailReply() {
	var state = sendCom.readyState;
	var response = sendCom.responseText;
	if(state == 4){
		document.getElementById(whereTo).innerHTML = response;
	}else{
		document.getElementById(whereTo).innerHTML = "Sending E-Mail...<img src=\"/images/loading.gif\" alt=\"Loading...\" /><br />";
	}
}

//////////////////########################### EDIT ALBUMS SECTION
function listImages() {
	//build query
	var album = document.getElementById('albumsel').value;
	var nocache = Math.random();
	var query = "action=select&what=*&from=image&where=album_id="+album+"&nocache=" + nocache;
	//send request
	//alert(query);
	sendCom.open("POST", '/admin/'+url, true);
	sendCom.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	sendCom.setRequestHeader("Content-length", query.length);
	sendCom.setRequestHeader("Connection", "close");
	//do stuff
	sendCom.onreadystatechange = displayImages;
	sendCom.send(query);
}

function displayImages() {
	whereTo = 'images';
	var readyness = sendCom.readyState;
	var response = sendCom.responseXML;
	if(readyness == 4 || readyness == "complete"){
		//clear response
		//#### commentblock ####//
		var items = response.getElementsByTagName('item');
		var linkList = document.getElementById(whereTo);
		linkList.innerHTML = 'Total of '+items.length+' images';
		for(i = 0; i < items.length; i++){
			var newImage = new Image();
			newImage.src = '/images/gallery/thumbs/'+getNodeValue(items[i], "image");
			newImage.alt = getNodeValue(items[i], "title");
			
			var imageDiv = document.createElement('div');
			imageDiv.className='imagecontdiv';

			var inputDiv = document.createElement('div');
			inputDiv.className='inputdiv';
			var hidden = document.createElement('input');
			hidden.setAttribute('type', 'hidden');
			hidden.setAttribute('name', 'id[]');
			hidden.setAttribute('value', getNodeValue(items[i], "id"));
			var altInput = document.createElement('input');
			altInput.setAttribute('type', 'text');
			altInput.setAttribute('name', 'title[]');
			altInput.setAttribute('value', getNodeValue(items[i], "title"));
			altInput.className = 'imageinput';
			inputDiv.appendChild(altInput);
			inputDiv.appendChild(hidden);
			
			var newDiv = document.createElement('div');
			newDiv.className='imagediv';
			
			imageDiv.appendChild(newImage);
			newDiv.appendChild(imageDiv);
			newDiv.appendChild(inputDiv);
			linkList.appendChild(newDiv);
		}
		var clearDiv = document.createElement('div');
		clearDiv.setAttribute('class','cfix');
		linkList.appendChild(clearDiv);
	}else{
		document.getElementById(whereTo).innerHTML = 'Loading images please wait...<img src=\"/images/loading.gif\" alt=\"Loading...\" /><br />';
	}
}

//////////////////########################### EDIT ALBUMS SECTION

function insertAlbum(fieldId, selectId) {
	var catName = document.getElementById(fieldId).value;
	if(catName == '' || catName == ' '){
		alert('Album name cannot be empty, please enter a name');
	}else{
		document.getElementById('responsepic').innerHTML = "<img src=\"/images/loading.gif\" alt=\"Loading...\" />";
		document.getElementById(whereTo).innerHTML = "Sending album information...<br />";
		//build query
		var nocache = Math.random();
		var query = 'action=insert&into=album&name=' + catName + '&nocache=' + nocache;
		//send request
		sendCat.open("POST", url, true);
		sendCat.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		sendCat.setRequestHeader("Content-length", query.length);
		sendCat.setRequestHeader("Connection", "close");
		//do stuff
		sendCat.onreadystatechange = getAlbums;
		sendCat.send(query);
	}
}

function getAlbums() {
	var readyness = sendCat.readyState;
	var response = sendCat.responseXML;
	document.getElementById(whereTo).innerHTML = "Retrieving album information...<br />"
	//build query
	var nocache = Math.random();
	var query = 'action=select&what=*&from=album&nocache=' + nocache;
	//send request
	receiveCat.open("POST", url, true);
	receiveCat.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	receiveCat.setRequestHeader("Content-length", query.length);
	receiveCat.setRequestHeader("Connection", "close");
	//do stuff
	receiveCat.onreadystatechange = showAlbums;
	receiveCat.send(query);
	document.getElementById(whereTo).innerHTML = 'Loading album information...<br />';
}

function showAlbums() {
	var readyness = receiveCat.readyState;
	var response = receiveCat.responseXML;
	if(readyness == 4 || readyness == "complete"){
		//clear response
		document.getElementById(whereTo).innerHTML = '';
		//#### SELECT DROPDOWN ####//
		//store select
		var dropDown = document.getElementById('album_id');
		//loop through xml
		for (x = dropDown.length; x >= 0; x--) {
			dropDown[x] = null;
		}
		var items = response.getElementsByTagName('item');
		for(i = 0; i < items.length; i++){
			//store id & title
			var id = getNodeValue(items[i], "id");
			var title = getNodeValue(items[i], "name");
			//remove previous options
			//create new options
			dropDown.options[dropDown.length]=new Option(title, id);
		}
		//clear new cat container
		document.getElementById('newalbum').innerHTML = '';
		//#### RIGHT LINKS LIST ####//
		var linkList = document.getElementById('albumlist');
		linkList.innerHTML = '';
		for(i = 0; i < items.length; i++){
			var title = getNodeValue(items[i], "name");
			var id = getNodeValue(items[i], "id");
			//create list element and link element
			//create li element
			var newListEle = document.createElement('li');
			//create the a element
			var newLink = document.createElement('a');
			//add a href
			var href = document.createAttribute('href');
			//set event value
			href.nodeValue = '/gallery/'+id;
			//set cliackable link text
			text = document.createTextNode(title);
			//add to link
			newLink.appendChild(text);
			//add href to a
			newLink.setAttributeNode(href);
			//insert the link into the li
			newListEle.appendChild(newLink);
			//add new list link to containging list
			linkList.appendChild(newListEle);
		}
		document.getElementById('responsepic').innerHTML = "";
	}else{
		document.getElementById(whereTo).innerHTML = 'Loading category information...<br />';
	}
}


























/* -------------------------- */
/* INSERT */
/* -------------------------- */
/* Required: var nocache is a random number to add to request. This value solve an Internet Explorer cache issue */
var nocache = 0;
function insert(formId, method) {
	// Optional: Show a waiting message in the layer with ID login_response
	document.getElementById('insert_response').innerHTML = "Just a second..."
	// Required: verify that all fileds is not empty. Use encodeURI() to solve some issues about character encoding.
	nocache = Math.random();
	var url = 'admin.php?';
	var query = 'proc=' + method + buildQueryString(formId) + '&nocache=' + nocache;
	send.open("POST", url, true);
	send.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	send.setRequestHeader("Content-length", query.length);
	send.setRequestHeader("Connection", "close");
	send.onreadystatechange = insertReply('insert_response');
	send.send(query);
}
	
function insertRefffply(whereTo) {
	var state = send.readyState;
	var response = send.responseText;
	if(state == 4){
		document.getElementById(whereTo).innerHTML = response;
	}else{
		document.getElementById(whereTo).innerHTML = 'Working...';
	}
}

function retrieveData(action, whereTo) {
	var insert = whereTo;
	document.getElementById(insert).innerHTML = "Loading...";
	var url = 'admin.php?';
	nocache = Math.random();
	var query = 'retrieve=retrieve&action='+action+ '&nocache=' + nocache;
	http.open("POST", url, true);
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http.setRequestHeader("Content-length", query.length);
	http.setRequestHeader("Connection", "close");
	//alert(whereTo);
	http.onreadystatechange = insertReply(insert);
	http.send(query);
	
}
