
var boxes = {};

function changetype() {
	
	var type = $('type').value;
	
	if(type == 'search') {
		$('page_term').style.display = 'none';
		$('search_term').style.display = 'block';
		$('label_term').innerHTML = 'Search Term:';
	} else {
		$('page_term').style.display = 'block';
		$('search_term').style.display = 'none';
		$('label_term').innerHTML = 'Pages:';
	}
	
}

function setInnerHTML(id, val) {
	$(id).innerHTML = val;
}

function rate(e, id) {
	
	var posx = 0;
	var posy = 0;
	
	if (e.pageX || e.pageY) {
		posx = e.pageX;
		posy = e.pageY;
	} else if (e.clientX || e.clientY) {
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	
	for (var x in boxes) {
		boxes[x].style.display = "none";
	}
	
	if (typeof boxes[id] == 'undefined') {
		var rateBox = document.createElement('DIV');
		
		rateBox.className = 'rateBox';
		rateBox.style.position = 'absolute';
		rateBox.style.backgroundColor = '#fff';
		rateBox.style.display = 'block';
		rateBox.style.width = '200px';
		rateBox.style.padding = '5px';
		rateBox.style.textAlign = 'left';

		var hideBox = document.createElement('DIV');
		hideBox.style.padding = '0 0 4px 0';

		hideBox.addEvent("click", function() {
			rateBox.style.display = "none";
		});

		hideBox.style.textAlign = "right";
		hideBox.style.color = "#ff812d";
		hideBox.style.cursor = "pointer";
		hideBox.style.fontSize = "0.8em";
		hideBox.innerHTML = 'Close';

		rateBox.appendChild(hideBox);

		var textBox = document.createElement('DIV');
		textBox.innerHTML = 'What do you think of this website?<br/>';
		
		textBox.innerHTML += '<table style="margin: 0 0 0 10px"><tr><td>Excellent</td><td style="padding: 0 0 0 5px; font-weight: bold"><a href="#" onclick="ratesite(' + id + ', 2); return false;">+2</a></td></tr><tr><td>Good</td><td style="padding: 0 0 0 5px; font-weight: bold"><a href="#" onclick="ratesite(' + id + ', 1); return false;">+1</a></td></tr><tr><td>Alright</td><td style="padding: 0 0 0 5px; font-weight: bold"><a href="#" onclick="ratesite(' + id + ', -1); return false;">-1</a></td></tr><tr><td>Rubbish</td><td style="padding: 0 0 0 5px; font-weight: bold"><a href="#" onclick="ratesite(' + id + ', -2); return false;">-2</a></td></tr></table>';

		rateBox.appendChild(textBox);

		$('body').appendChild(rateBox);
		
		boxes[id] = rateBox;
	} else {
		rateBox = boxes[id];
	}
	
	rateBox.style.display = 'block';
	rateBox.style.left = posx+'px';
	rateBox.style.top = posy+'px';
	
}


function ratesite(id, rating) {
	
	var cf = function (data) {
		if (typeof boxes[id] != 'undefined') {
			boxes[id].style.display = 'none';
		}
		
		if (data != 'ok') {
			alert('You are not able to rate this website, you may have rated it before.');
		} else {
			
			// now we need to get rid of all the "rate this site" links for
			// this website from the page
			var elements = getElementsByStyleClass('small', "rate-" + id);
			
			for(var x = 0; x < elements.length; x++) {
				elements[x].style.display = 'none';
			}
			
		}
	};
	
	var ff = function() {
		if (typeof boxes[id] != 'undefined') {
			boxes[id].style.display = 'none';
		}
		
		alert('There was a problem rating this website, please try again later.');
	}
	
	var rateSite = new Ajax('/rate/?id=' + id + '&rating=' + rating, {method: 'get', onComplete: cf, onFailure: ff});
	rateSite.request();
	
}

function getElementsByStyleClass (tags, className) {
  var all = document.all ? document.all :
    document.getElementsByTagName(tags);

  var elements = new Array();
  for (var e = 0; e < all.length; e++)
    if (all[e].className == className)
      elements[elements.length] = all[e];
  return elements;
}

function tagschanged() {
	
	var tags = $('tags').value.split(' ');
	
	for(var tag in user_tags) {
		user_tags[tag] = false;
	}
	
	for(var i = 0; i < tags.length; i++) {
		if (typeof user_tags[tags[i]] != 'undefined') {
			if (user_tags[tags[i]] == false) {
				user_tags[tags[i]] = true;
				addClassName($('tag_' + tags[i]), "selected");
			}
		}
	}
	
	refresh_tags();
		
}

function toggletag(tag) {
	
	if (typeof user_tags[tag] != 'undefined') {
		user_tags[tag] = !user_tags[tag];
	}
	
	if (user_tags[tag]) {
		addClassName($('tag_' + tag), "selected");
	} else {
		removeClassName($('tag_' + tag), "selected");
	}
	
	var tags = $('tags').value.split(' ');
	var new_tags = [];
	var done_tag = false;
	
	for(var i = 0; i < tags.length; i++) {
		
		if (tags[i] == '') continue;
		
		if (typeof user_tags[tags[i]] != 'undefined') {
			if (user_tags[tags[i]] == true) {
				new_tags[new_tags.length] = tags[i];
			}
			
			if (tags[i] == tag) {
				done_tag = true;
			}
		} else {
			new_tags[new_tags.length] = tags[i];
		}
	}
	
	if (!done_tag) {
		new_tags[new_tags.length] = tag;
	}
	
	$('tags').value = new_tags.join(' ');
	
}

function refresh_tags() {
	
	var y = '';
	
	for (var x in user_tags) {
		if (user_tags[x]) {
			addClassName($('tag_' + x), "selected");
		} else {
			removeClassName($('tag_' + x), "selected");
		}
	}
	
}

function addClassName(obj, classn) {
	
	var classes = obj.className.split(" ");
	var newClassString = '';
	var added = false;
	
	for (var i = 0; i < classes.length; i++) {
		newClassString += classes[i] + ' ';
		
		if (classes[i] == classn) {
			added = true;
		}
	}
	
	if (!added) {
		newClassString += classn;
	}
	
	obj.className = newClassString;
	
}

function removeClassName(obj, classn) {
	
	var classes = obj.className.split(" ");
	var newClassString = '';
	var removed = false;
	
	for (var i = 0; i < classes.length; i++) {
		if (classes[i] == classn) {
			continue;
		}
		
		newClassString += classes[i] + ' ';
	}
	
	obj.className = newClassString;
	
}
