// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults


var dialogLoaded = false;

function createQuestionDialog(s,t) {
	searchAutoComplete.disable();

	if (!dialogLoaded) {
		dialogLoaded = true;
		Boxy.load('/q/new?s='+s, {unloadOnHide: true, modal: true, title: "Ask a Question", afterShow: afterDialogLoad, afterHide: afterDialogHide});
	}
}

function afterDialogHide() {
	dialogLoaded = false;
	searchAutoComplete.enable();
}

function afterDialogLoad() {
	addTopicInQuestionDialog();
	loadAutoCompleteInDialog();
}

function addTopicInQuestionDialog() {
	if (jQuery('#topicName').length != 0) {
		addTopic(jQuery('#topicName').html());
	}
}

function loadAutoCompleteInDialog() {
	new Ajax.Autocompleter('create_topicspopup', 'topic_name_auto_completepopup', '/topics/auto_complete_for_topic_name', {method:'get'});
	new Ajax.Autocompleter('ask_popup', 'user_name_auto_complete_popup', '/users/auto_complete_for_user_name', {method:'get'});
	
	jQuery('#create_topicspopup').placeholder();
	jQuery('#ask_popup').placeholder();
	
}


function hideNotices() { jQuery("#flash_notice").slideUp(); }
setTimeout(hideNotices, 5000);


// jQuery(document).ready(function(){
// 		
// 	jQuery('.tooltip').tooltip({ 
// 	    track: true, 
// 	    delay: 0, 
// 	    showURL: false, 
// 	    showBody: " - ", 
// 	    fade: 250 
// 	});
// });

var initMCEs = [];

function initMCEIfNotInit(element_id) {
	if (jQuery.inArray(element_id,initMCEs)) {
		initMCEs.push(element_id);
		initMCE(element_id);
	}
}

function setPlainText(element_id) {
    var ed = tinyMCE.get(element_id);
	if (!ed) { return; }
	
	
    ed.pasteAsPlainText = true;  

     //adding handlers crossbrowser
     if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) {
         ed.onKeyDown.add(function (ed, e) {
             if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45))
                 ed.pasteAsPlainText = true;
         });
     } else {            
         ed.onPaste.addToTop(function (ed, e) {
             ed.pasteAsPlainText = true;
         });
     }
}

function initMCE(element_id) {

	tinyMCE.init({
          theme : "advanced",
          mode : "exact",
          elements : element_id,

		  // oninit : "setPlainText",
          plugins : "paste,autoresize",
		  // plugins: "paste", 
          content_css : "/stylesheets/tinymce.css",
		
          theme_advanced_toolbar_location : "top",
          theme_advanced_toolbar_align : "left",
          theme_advanced_buttons1: "bold,italic,underline,|,blockquote,numlist,bullist",
          theme_advanced_buttons2: "",
          theme_advanced_buttons3 : "",
          paste_auto_cleanup_on_paste : true,
		 
		  paste_preprocess : function(pl, o) {
              // Content string containing the HTML from the clipboard
              // alert(o.content);
          },
          paste_postprocess : function(pl, o) {
              // Content DOM node containing the DOM structure of the clipboard
              // alert(o.node.innerHTML);
          }
  });

	// setPlainText(element_id);



}


jQuery.fn.tinymce = function(options){
   return this.each(function(){
      tinyMCE.execCommand("mceAddControl", true, this.id);
   });
}



// topics

function addTopic(tag) {
	
	if (typeof tag != 'undefined' && tag != "" && jQuery(".topics a[rel="+escape(tag)+"]").length <= 0) {
		jQuery(".topics").append("<a href=\"#\" class=\"topic remove\" rel=\""+tag+"\">"+tag+"</a>");
		jQuery(".topics_form_fields").append("<input type=\"hidden\" name=\"topics[]\" value=\""+tag+"\" />");

		var topicsDiv = jQuery(".topics");
		if (topicsDiv.css("float") == "left") {
			topicsDiv.css("float", "none");
		}
		
		if (jQuery('#giveButton').length) { jQuery('#giveButton').show() }
	}
}
function removeTag(tag) {
	if (typeof tag != 'undefined' && tag != "") {
		jQuery(".topics a[rel="+tag+"], .topics_form_fields input[value="+tag+"]").remove();
	}
}

// asks

function addAsk(tag) {
	
	if (typeof tag != 'undefined' && tag != "" && jQuery(".asks a[rel="+escape(tag)+"]").length <= 0) {
		jQuery(".asks_list").append("<a href=\"#\" class=\"ask remove\" rel=\""+tag+"\">"+tag+"</a>");
		jQuery(".asks_form_fields").append("<input type=\"hidden\" name=\"asks[]\" value=\""+tag+"\" />");

		var topicsDiv = jQuery(".asks_list");
		if (topicsDiv.css("float") == "left") {
			topicsDiv.css("float", "none");
		}
	}
}
function removeAsk(tag) {
	if (typeof tag != 'undefined' && tag != "") {
		jQuery(".asks_list a[rel="+tag+"], .asks_form_fields input[value="+tag+"]").remove();
	}
}



// function validateForm() {
// 	if (jQuery("#question_question").val() == "" || jQuery("#question_question").val() == "") {
// 		alert("Please submit an inquiry");
// 		return false;
// 	} else if (jQuery(".topics_form_fields input").size() <= 0) {
// 		alert("Please tag your inquiry");
// 		return false;
// 	}
// 	return true;
// }

function evalResponse(responseText, statusText) {
  eval(responseText);
}


jQuery(document).ajaxSend(function(event, request, settings) {
  if (typeof(AUTH_TOKEN) == "undefined") return;
  // settings.data is a serialized string like "foo=bar&baz=boink" (or null)
  settings.data = settings.data || "";
  settings.data += (settings.data ? "&" : "") + "authenticity_token=" + encodeURIComponent(AUTH_TOKEN);
});


// Assign handlers

jQuery(function () {
	
	jQuery("#add_topic").live('click', function () {
		var inp = jQuery("#create_topicspopup");
		addTopic(inp.val());
		inp.val("");
		return false;
	});
	
	jQuery("#create_topics").bind('keypress', function (event) {
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		event.stopPropagation();
		if (keyCode == 13) {
			addTopic($(this).val());
			$(this).val("");
			return false;
		} else {
			return true;
		}
	});
	
	jQuery("#create_topicspopup").live('keypress', function (event) {
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		
		if (keyCode == 13) {
			var inp = jQuery("#create_topicspopup");
			addTopic(inp.val());
			inp.val("");
			event.preventDefault();	
			return false;
		} else {
			return true;
		}
	});
	
	
	jQuery(".topic.remove").live('click', function () {
		removeTag(jQuery(this).text());
		return false;
	});
	jQuery(".topic.add").live('click', function () {
		addTopic(jQuery(this).text());
		return false;
	});
	
	
	// Asks
	
	jQuery("#ask_popup").live('keypress', function (event) {
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		event.stopPropagation();
		if (keyCode == 13) {
			
			var inp = jQuery("#ask_popup");
			addAsk(inp.val());
			inp.val("");
			event.preventDefault();
			
			return false;
		} else {
			return true;
		}
	});
	
	jQuery("#add_ask").live('click', function () {
		var inp = jQuery("#ask_popup");
		addAsk(inp.val());
		inp.val("");
		return false;
	});
	
	jQuery(".ask.remove").live('click', function () {
		removeAsk(jQuery(this).text());
		return false;
	});
	
	
	jQuery("#new_question").submit(function() {
	  var words = /\w+/g;
	  if (jQuery("#search").val().match(words).length < 3) {
      jQuery.jGrowl("Questions must have more than two words");
	    return false;
	  }
	});
	
	// Modal dialog
	
	// jQuery("#search_button").live('click', function () {
	// 	var inp = jQuery("#search");
	// 	createQuestionDialog(inp.val());
	// 	return false;
	// });
	// jQuery("#search").bind('keypress', function (event) {
	// 	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	// 	event.stopPropagation();
	// 	if (keyCode == 13) {
	// 		createQuestionDialog(jQuery("#search").val());
	// 		return false;
	// 	} else {
	// 		return true;
	// 	}
	// });
	
	// Misc
	
	jQuery("#markNotificationsRead").live('click', function() {
		jQuery("unreadNotificationsBox").hide();	    
	});
	
	jQuery(".activityMoreLink").live('click', function () {
		jQuery("#"+jQuery(this).attr('id')+"Snippet").hide();
		jQuery("#"+jQuery(this).attr('id')+"Content").show();
	});
	
	
	// jQuery("form#new_question").bind('submit', validateForm);
});



jQuery('input, textarea').placeholder();
