window.addEvent('domready', function(){

	// confirm deletions
	$$('.delete_post, .del_resp, .del_comm').addEvent('click', function(ev){
		if(!confirm("Are you sure you want to delete this?")) {
			new Event(ev).stop();
			return;
		} 
	});

	// determine status of top boxes
	latest_hidden = ($('latest')) ? false : true;
	help_hidden = ($('help_box')) ? false : true;

	// tooltips 
	var Tips1 = new mooTips($$('.Tips1'), {
		showDelay: 50,
		hideDelay: 350,
		fixed: true
	});		
	
	// profile slider
	if($('profile_stuff')) {
		var profSl = new Fx.Slide('profile_stuff');	
		$('profToggle').addEvent('click', function(e){
			e = new Event(e);
			profSl.toggle();
			e.stop();
		});
		profSl.hide();
	}

	// RESPONSES
	var sliders = $$(".r_forms_box");
	var triggers = $$(".r_trigger");
	var addresp = $$(".add_resp");	
	var hiders = $$(".r_hider");
	var forms = $$(".r_forms");
	var fresh = $$(".new_response");
	var tb = $$(".response_textarea");
	triggers.each(function(o,x) {
		var sl = new Fx.Slide(sliders[x]);	
		$(triggers[x]).addEvent('click',function(e){
			e = new Event(e);
			sl.toggle();
			triggers[x].setText('');
			addresp.setStyle('visibility', 'hidden');
			tb[x].focus();
			e.stop(); 
		});
		$(hiders[x]).addEvent('click',function(e){
			e = new Event(e);
			sl.toggle();
			triggers[x].setText('Attempt Translation');
			addresp.setStyle('visibility', 'visible');			
			tb[x].blur();
			e.stop(); 
		});	
		$(forms[x]).addEvent('submit',function(e){
			e = new Event(e);
			e.stop(); 
			this.send({
				update: fresh[x],
				onComplete: function() {
					sl.toggle();
					triggers[x].setText('Submit Another Translation');
					hidden = true;
				}
			});
		});		
		sl.hide();
	});	
	
	// COMMENTS
	var deslizadores = $$(".c_forms_box");
	var gatillos = $$(".c_trigger");
	var addcomm = $$(".add_comm");	
	var escondedores = $$(".c_hider");
	var formularios = $$(".c_forms");
	var fresca = $$(".new_comment");
	var cb = $$(".comment_textarea");
	gatillos.each(function(o,x) {
		var sl = new Fx.Slide(deslizadores[x]);	
		var hidden = true;
		$(gatillos[x]).addEvent('click',function(e){
			e = new Event(e);
			sl.toggle();
			gatillos[x].setText('');
			addcomm.setStyle('visibility', 'hidden');			
			cb[x].focus();
			e.stop(); 
		});	
		$(escondedores[x]).addEvent('click',function(e){
			e = new Event(e);
			sl.toggle();
			gatillos[x].setText('Add Comment');
			addcomm.setStyle('visibility', 'visible');			
			cb[x].blur();				
			e.stop(); 
		});	
		$(formularios[x]).addEvent('submit',function(e){
			e = new Event(e);
			e.stop(); 
			this.send({
				update: fresca[x],
				onComplete: function() {
					sl.toggle();
					gatillos[x].setText('Comment Again');
					hidden = true;
				}
			});
		});	
		sl.hide();
	});	
	
	if($('limited_box')) {
		new Countable('limited_box',600);
	}
});

function vote_up(p_id, r_id, count, lang) {
 
	var url = "/takevote.php?up=" + r_id + "&post=" + p_id + "&lang=" + lang;
	
	var vote_count = $('vote_count' + r_id);
	
	var fx = new Fx.Styles(vote_count, {
		duration: 2000,
		wait: false,
		transition: Fx.Transitions.Quad.easeOut
	});
	fx.start({
		'background-color': ['#4FFF68', '#E8E8E8']
	})

	var newHTML = 	"<ul class=\"arrows\">" + "<li class=\"up_pressed\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>" + "<li class=\"static_down\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li></ul>";

	new Ajax(url, {
		method: 'get',
		onComplete: function() {
			vote_count.setText('+' + (count+1));
			$('vote_arrows' + r_id).setHTML(newHTML);
		}
	}).request();
}

function vote_down(p_id, r_id, count, lang) {
 
	var url = "/takevote.php?down=" + r_id + "&post=" + p_id + "&lang=" + lang;
	
	var vote_count = $('vote_count' + r_id);
	
	var fx = new Fx.Styles(vote_count, {
		duration: 2000,
		wait: false,
		transition: Fx.Transitions.Quad.easeOut
	});
	fx.start({
		'background-color': ['#FF604F', '#E8E8E8']
	})
	 
	var newHTML = "<ul class=\"arrows\">" + "<li class=\"static_up\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>" + "<li class=\"down_pressed\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li></ul>";

	new Ajax(url, {
		method: 'get',
		onComplete: function() {
			$('vote_count' + r_id).setHTML(count-1);
			$('vote_arrows' + r_id).setHTML(newHTML);
		}
	}).request();
}

function del_post(p_id, lang) {
 
	var url = "/del.php?post=" + p_id + "&lang=" + lang;

	new Ajax(url, {
		method: 'get',
		onComplete: function() {
			$('post_' + p_id).remove();
		}
	}).request();
}

function del_resp(r_id, lang) {
 
	var url = "/del.php?resp=" + r_id + "&lang=" + lang;

	new Ajax(url, {
		method: 'get',
		onComplete: function() {
			$('resp_' + r_id).remove();
		}
	}).request();
}

function del_comm(c_id, lang) {
 
	var url = "/del.php?comm=" + c_id + "&lang=" + lang;

	new Ajax(url, {
		method: 'get',
		onComplete: function() {
			$('comm_' + c_id).remove();
		}
	}).request();
}
	
function open_help() {
	if(!help_hidden) {
		var help_box = $('help_box');
		var fx = new Fx.Styles(help_box, {
			duration: 2000,
			wait: false,
			transition: Fx.Transitions.Quad.easeOut
		});
		fx.start({
			'background-color': ['#E7FA4A', '#FFFFFF']
		})
	}
	else {
		$('help_loading').setStyle('display', 'inline');
		var url = "/include/help_box.php";

		new Ajax(url, {
			method: 'get',
			update: $('help_wrap')
		}).request();
		help_hidden = false;
	}
}

function open_latest(num) {
	if(!latest_hidden) {
		$('latest_loading').setStyle('display', 'inline');
		$('latest').setText('');
	}
	else {
		$('latest_box_loading').setStyle('display', 'inline');
	}
	var url = "/include/latest_box.php?num=" + num;

	new Ajax(url, {
		method: 'get',
		update: $('latest_wrap')
	}).request();
	latest_hidden = false;
}

function open_search(num, tot, word) {
	var url = "/include/search_box.php?num=" + num + "&tot=" + tot + "&word=" + word;
	
	new Ajax(url, {
		method: 'get',
		update: $('search_wrap')
	}).request();
}		

function hide_latest() { 
	$('latest_box').setHTML('<a href=\"javascript:open_latest();\">View Latest Entries</a><div class=\"image_box\"><img src=\'images/spinner.gif\' alt=\'LOADING\' id=\'latest_box_loading\' /></div>');
	$('latest_box').setStyles({
		padding: '0 0 0 10px'
	});	
	latest_hidden = true;
}

function hide_help() { 
	$('help_box').setHTML('<a href=\"javascript:open_help();\">View Help</a><div class=\"image_box\"><img src=\'images/spinner.gif\' alt=\'LOADING\' id=\'help_loading\' /></div>');
	$('help_box').setStyles({
		padding: '0 0 0 10px'
	});	
	help_hidden = true;
}	

function focusLogin() {
	$('user').focus();
	var login_box = $('login_box');
	var fx = new Fx.Styles(login_box, {
		duration: 2000,
		wait: false,
		transition: Fx.Transitions.Quad.easeOut
	});
	fx.start({
		'background-color': ['#E7FA4A', '#FFFFFF']
	})
}


function doHighlight(bodyText, searchTerm) {
  highlightStartTag = "<span class='highlight'>";
  highlightEndTag = "</span>";
  
  var newText = "";
  var i = -1;
  var lcSearchTerm = searchTerm.toLowerCase();
  var lcBodyText = bodyText.toLowerCase();
	
  while (bodyText.length > 0) {
	i = lcBodyText.indexOf(lcSearchTerm, i+1);
	if (i < 0) {
	  newText += bodyText;
	  bodyText = "";
	} else {
	  // skip anything inside an HTML tag
	  if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
		// skip anything inside a <script> block
		if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<script", i)) {
		  newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
		  bodyText = bodyText.substr(i + searchTerm.length);
		  lcBodyText = bodyText.toLowerCase();
		  i = -1;
		}
	  }
	}
  }
  
  return newText;
}

function highlightSearchTerms(searchText, treatAsPhrase) {
  treatAsPhrase = true;
  if (treatAsPhrase) {
	searchArray = [searchText];
  } else {
	searchArray = searchText.split(" ");
  }
  
  var bodyText = $E('body').innerHTML;
  for (var i = 0; i < searchArray.length; i++) {
	bodyText = doHighlight(bodyText, searchArray[i]);
  }
  
  $E('body').innerHTML = bodyText;
}	
	
var Countable = new Class({
 
  initialize: function(inputId, max, className, errorClass) {
 
    this.input = $(inputId);
 	this.max = max;
 	this.className = className ? className : "counter_count";
 	this.errorClass = errorClass ? errorClass : "counter_error";
 
    this.handle = new Element("div", {class: this.className});
    this.handle.setHTML('&nbsp;').injectAfter(this.input);
    this.input.addEvent('keydown', this.onKeyPress.bindWithEvent(this));
    this.input.addEvent('keyup', this.onKeyPress.bindWithEvent(this));
    this.update();
 
  },
 
  onKeyPress: function(event) {
    event = new Event(event);
    if(!event.shift && !event.control && !event.alt && !event.meta) this.update();
  },
 
  update: function() {
 
    if (this.input.value.length > this.max)
      this.input.value = this.input.value.substring(0, this.max);
 
      var count = this.max - this.input.value.length;
 
      if (count == 0) {
        var string = "<span class=\""+this.errorClass+"\">No characters remaining!</span>";
      } else if (count == 1) {
        var string = "1 character remaining";
      } else {
        var string = count + " characters remaining";
      }
      this.handle.setHTML(string);
  }
 
});
