function mootools$$() {
    var D = [];
    for (var C = 0, B = arguments.length; C < B; C++) {
        var A = arguments[C];
        switch ($type(A)) {
        case "element":
            D.push(A);
        case "boolean":
            break;
        case false:
            break;
        case "string":
            A = document.getElementsBySelector(A, true);
        default:
            D.extend(A);
        }
    }
    return mootools$$.unique(D);
}
mootools$$.unique = function(G) {
    var D = [];
    for (var C = 0, A = G.length; C < A; C++) {
        if (G[C].$included) {
            continue;
        }
        var B = $(G[C]);
        if (B && !B.$included) {
            B.$included = true;
            D.push(B);
        }
    }
    for (var F = 0, E = D.length; F < E; F++) {
        D[F].$included = null;
    }
    return new Elements(D);
};
mootools$$.shared = {
    regexp: /^(\w*|\*)(?:#([\w-]+)|\.([\w-]+))?(?:\[(\w+)(?:([!*^$]?=)["']?([^"'\]]*)["']?)?])?$/,
    xpath: {
        getParam: function(B, D, E, C) {
            var A = [D.namespaceURI ? "xhtml:": "", E[1]];
            if (E[2]) {
                A.push('[@id="', E[2], '"]');
            }
            if (E[3]) {
                A.push('[contains(concat(" ", @class, " "), " ', E[3], ' ")]');
            }
            if (E[4]) {
                if (E[5] && E[6]) {
                    switch (E[5]) {
                    case "*=":
                        A.push("[contains(@", E[4], ', "', E[6], '")]');
                        break;
                    case "^=":
                        A.push("[starts-with(@", E[4], ', "', E[6], '")]');
                        break;
                    case "$=":
                        A.push("[substring(@", E[4], ", string-length(@", E[4], ") - ", E[6].length, ' + 1) = "', E[6], '"]');
                        break;
                    case "=":
                        A.push("[@", E[4], '="', E[6], '"]');
                        break;
                    case "!=":
                        A.push("[@", E[4], '!="', E[6], '"]');
                    }
                } else {
                    A.push("[@", E[4], "]");
                }
            }
            B.push(A.join(""));
            return B;
        },
        getItems: function(B, E, G) {
            var F = [];
            var A = document.evaluate(".//" + B.join("//"), E, mootools$$.shared.resolver, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
            for (var D = 0, C = A.snapshotLength;
            D < C; D++) {
                F.push(A.snapshotItem(D));
            }
            return (G) ? F: new Elements(F.map($));
        }
    },
    normal: {
        getParam: function(A, C, E, B) {
            if (B == 0) {
                if (E[2]) {
                    var D = C.getElementById(E[2]);
                    if (!D || ((E[1] != "*") && (Element.getTag(D) != E[1]))) {
                        return false;
                    }
                    A = [D];
                } else {
                    A = $A(C.getElementsByTagName(E[1]));
                }
            } else {
                A = mootools$$.shared.getElementsByTagName(A, E[1]);
                if (E[2]) {
                    A = Elements.filterById(A, E[2], true);
                }
            }
            if (E[3]) {
                A = Elements.filterByClass(A, E[3], true);
            }
            if (E[4]) {
                A = Elements.filterByAttribute(A, E[4], E[5], E[6], true);
            }
            return A;
        },
        getItems: function(A, B, C) {
            return (C) ? A: mootools$$.unique(A);
        }
    },
    resolver: function(A) {
        return (A == "xhtml") ? "http://www.w3.org/1999/xhtml": false;
    },
    getElementsByTagName: function(D, C) {
        var E = [];
        for (var B = 0, A = D.length; B < A; B++) {
            E.extend(D[B].getElementsByTagName(C));
        }
        return E;
    }
};
mootools$$.shared.method = (window.xpath) ? "xpath": "normal";

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

	// Make navigation toggle-able
	mootools$$('#navigation li.toggleable').each(function(element) {
	
		// Hide list
		element.getLast().setStyle('display', 'none');

		// Add event to link
		element.getFirst().addEvent('click', function(e) {
			var evt = new Event(e);
			
			// Make sure we're clicking on a link
			target = evt.target;
			while( target.href == undefined ) {
				target = target.parentNode;
			}

			var el = new Element(target);		

			if( el.getNext().getStyle('display') == 'none' ) {
				el.getNext().setStyle('display', '');
				el.getParent().addClass( 'toggle-open' );
			} else {
				el.getNext().setStyle('display', 'none');
				el.getParent().removeClass( 'toggle-open' );
			}
			
			
			evt.stop();
		});
	});
	
	mootools$$('.placeholder').addEvent('focus', function(){
		if($(this).hasClass('placeholder')){
			$(this).value = '';
			$(this).removeClass('placeholder');
		}
	});
	
	// Open selected toggle-able nav items
	mootools$$('#navigation li.selected').each(function(element) {
		if( element.hasClass('toggleable') ) {
			element.setStyle('display', '');
			element.getParent().removeClass( 'toggle-open' );
		}
		// Run upwards through parents
		while( (element = element.getParent()) 
			&& element.getTag() != 'div' ) {
			if( element.hasClass && element.hasClass('toggleable') ) {
				element.getLast().setStyle( 'display', '');
				element.addClass( 'toggle-open' );
			}
		}
	});
	
	function apply_offensive_link_listeners(){
		mootools$$(".offensive_link").each(function(el){
			el.onclick = function(){
				var form = $E("#offensive_reason_form_" + el.id.replace(/offensive_link_/, ""));
				form.setStyle("display", form.getStyle("display") == "block" ? "none" : "block");
				return false;
			}
		});
		
		mootools$$(".offensive_reason").each(function(el){
			el.onfocus = function(){
				if(this.value == 'Reason you found this offensive'){
					this.value ='';
					el.setStyle("color", "#111111");
				}
			}
		});


		mootools$$(".offensive_reason_form").each(function(el){

			el.onsubmit = function(){
				formfield = this.getElement('.offensive_reason');
				if( formfield && (formfield.value == 'Reason you found this offensive' || formfield.value == '') ) {
					alert('You must enter your reason for reporting this comment as offensive');
					return false;
				}
				return true;
			}
		});
	}
	apply_offensive_link_listeners();
	
	function apply_reply_link_listeners(){
		mootools$$(".reply_link").each(function(el){
			el.onclick = function(){
				var form = $E("#comment_form_" + el.id.replace(/reply_link_/, ""));
				form.setStyle("display", form.getStyle("display") == "block" ? "none" : "block");
				return false;
			}
		});
	}
	apply_reply_link_listeners();
	
	
	
	
	function apply_all_answers_listener(){
		mootools$$('.thread-reply a').each(function(el){
			el.onclick = function(){
				var obj = el;
				el.setText('Fetching replies...');
				var container = el.getParent().getParent();
				
				var id = el.id.replace('reply-', '');
				url = '/mmlib/includes/ajax/extracomments.php?id=' + id;
				
				if(el.hasClass('answered-question')){
					url = url + '&sortby=votes';
				}

				var request = new Ajax(url, {
					method: 'get',
					onComplete: function(response){
						obj.getParent().remove();
						container.setHTML(container.innerHTML + response);
						//$E("#reply-" + id).getParent().remove();
						apply_reply_link_listeners();
						apply_offensive_link_listeners();
						apply_good_answer_listeners();
					}
				}).request();
				return false;
			}
		});
	}
	apply_all_answers_listener();
	
	function revealFullQuestionForm(){
		mootools$$("#ask-question-form form, #ask-question-form .extra-fields, #ask-question-form .submit").setStyle('display', 'block');
		mootools$$("#similar-questions, #ask-question-form .continue").setStyle('display', 'none');
		window.location = "#commentTabs";
	}
	
	mootools$$('#ask-question-form .continue').each(function(el){
		el.onclick = function(){
			var url = '/mmlib/includes/ajax/similarQuestions.php';
			var question = $$('#ask-question-form textarea');
			var request = new Ajax(url, {
				method: 'post',
				data: {'question': question[0].value},
				onComplete: function(response){
					if(response == ''){
						$E('#no-questions-found').setStyle('display', 'block');
						revealFullQuestionForm();
						return;
					}
					$E('#no-questions-found').setStyle('display', 'none');
					$E('#similar-questions').setHTML(response);
					mootools$$("#ask-question-form form").setStyle('display', 'none');
					
					apply_offensive_link_listeners();
					apply_all_answers_listener();
					
					$E('#post-original-question').onclick = function(){
						revealFullQuestionForm();
					}
				}
			}).request();
			return false;
		}
	});
	
	function apply_good_answer_listeners(){
		mootools$$('.goodanswer').each(function(el){
			el.onclick = function(){
				var obj = el;
				var id = el.id.replace('vote-', '');
				var url = '/mmlib/includes/ajax/commentVote.php';
				var request = new Ajax(url, {
					method: 'post',
					data: {'question-id': id},
					onComplete: function(response){
						obj.getParent().setHTML('<span class="vote-confirmation">Thank you for voting</span>');
					}
				}).request();
				return false;
			}
		});
	}
	apply_good_answer_listeners();
	
	function apply_show_more_listeners(){
		mootools$$('.show-more a').each(function(el){
				el.onclick = function(){
					var startAt = el.className.replace('start-at-', '');
					var url = '/mmlib/includes/ajax/extracomments.php';
					var container = el.getParent().getPrevious();
					var dataObj = {
						'search': $E('#search').value,
						'offset': startAt,
						'include_wrapper': true
					};
					var limit;
					if(el.id == 'more-comments'){
						dataObj['is_comment'] = 1;
						limit = 20;
					}else{
						dataObj['is_question'] = 1;
						limit = 10;
					}
					dataObj['limit'] = limit;
					el.className = 'start-at-' + (parseInt(startAt) + limit);
				
					var request = new Ajax(url,{
							method: 'get',
							data: dataObj,
							onComplete: function(response){
								container.setHTML(container.innerHTML + response);
								apply_reply_link_listeners();
								apply_offensive_link_listeners();
								apply_good_answer_listeners();
								apply_show_more_listeners();
								
								if(container.getChildren().length < parseInt(startAt) + limit){
									el.getParent().remove();
								}
							}
					}).request();
					return false;
				}
		});
	}
	apply_show_more_listeners();

	if($E("#send-to-friend") && $E("#send-to-friend-link")){
		var mySlider = new Fx.Slide($E("#send-to-friend"), {duration: 500});
		mySlider.hide();
		//Send to a friend
		$E("#send-to-friend-link").onclick = function(){
		    mySlider.toggle()
			return false;
		}
	}
	
	try{
		var extras = mootools$$("#extras");
		var content = mootools$$("#content");
		if(extras.length && content.length){
			extras = extras[0];
			content = content[0];
			if( extras.getStyle("height").toInt() > content.getStyle("height").toInt() ){
				if( navigator.userAgent.indexOf("MSIE 6") > 0 ){
					content.setStyle("height", extras.getStyle("height").toInt() + 30);
				}else{
					content.setStyle("min-height", extras.getStyle("height").toInt() + 30);				
				}
			}
		}		
	}catch(e){}
	
	/* Show/hide transcript for video player */
	if($E("#c4VideoTranscript") && $E("#transcript_link")){
		var transcriptSlider = new Fx.Slide($E("#c4VideoTranscript"), {duration: 500});
		transcriptSlider.hide();
		//Send to a friend
		$E("#transcript_link").onclick = function(){
			var text = this.innerHTML;
			this.innerHTML = (text == 'Read the video transcript')? 'Hide the video transcript' : 'Read the video transcript';
		    transcriptSlider.toggle()
			return false;
		}
	}
	
	
});