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

Effect.BlindLeftIntoView = function(element) {
  element = $(element);
  var elementDimensions = element.getDimensions();
  return new Effect.Scale(element, 100, Object.extend({ 
    scaleContent: false, 
    scaleX: true,
	scaleY: false,
    scaleFrom: 0,
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
    restoreAfterFinish: true,
    afterSetup: function(effect) {
      effect.element.makeClipping().setStyle({width: '0px'}).show(); 
    },  
    afterFinishInternal: function(effect) {
      effect.element.undoClipping();
    }
  }, arguments[1] || {}));
}

ABOUT_PANEL = 'about_panel_body'
ABOUT_PANEL_IMAGE = 'about_folding_button'

function toggle_div (div) {
	if(div.style.display == "none"){
		new Effect.Appear(div)
	} else {
		new Effect.Fade(div)
	}
}

function toggle_about_panel() {
	button = document.getElementById(ABOUT_PANEL_IMAGE)
	if(document.getElementById(ABOUT_PANEL).style.display == "none"){
		open_about_panel()
		button.src = button.src.replace("unfold","collapse")
	} else {
		close_about_panel()
		button.src = button.src.replace("collapse","unfold")
	}
}

function open_about_panel() {
	new Effect.BlindLeftIntoView(ABOUT_PANEL)
}

function close_about_panel() {
	new Effect.BlindUp(ABOUT_PANEL,{scaleX:true,scaleY:false})
}

function send_div_through_input(event){
	input.value = div.innerHTML;
	return false;
}

function toggle_edit_mode(element_id){
	if($(element_id).type == "input"){
		var content = $(element_id+"_wysiwyg").innerHTML;
		var name = $(element_id).name;
		$(element_id).replace("<textarea name=\""+name+"\" id=\""+element_id+"\">"+content+"</textarea>");
	} else {
		var content = $(element_id+"_wysiwyg").innerHTML;
		var name = $(element_id).name;
		$(element_id).replace("<input type=\"hidden\" name=\""+name+"\" id=\""+element_id+"\" value=\""+content.escapeHTML()+"\"/>");
	}	
	$(element_id+'_wysiwyg').toggle();
}

function collapse_body(blog_entry_id){
	var body_id = "post_"+blog_entry_id+"_body";
	var continue_reading_id = "post_"+blog_entry_id+"_body_continue_reading";
	new Effect.toggle(body_id,'blind');
	new Effect.toggle(continue_reading_id,'blind');
	$("post_"+blog_entry_id).removeClassName('post_body_selected');
}

function init_fck_textareas(){
	// Checking if fck_editor is loaded (if not, we shouldn't try to transform the textareas)
	if(typeof(FCKeditor) != "undefined"){
		// Transforming every textarea of class wysiwyg into a fck_editor
		$$("textarea.wysiwyg").each(function(textarea){
			var editor = new FCKeditor(textarea.id);
			editor.BasePath = "/javascripts/fckeditor/";
			editor.ReplaceTextarea();
		});
	}
}

DEFAULT_LOCALE = "fr-FR";
SUPPORTED_LOCALES = ["fr-FR","en-US"];

// TODO : Form controller
function init_globalized_forms(){
	if ($$(".language_switch").size() > 0){
		show_language(DEFAULT_LOCALE);
		SUPPORTED_LOCALES.each(function(locale){
			$(locale+"_switch").observe("click",show_language.curry(locale));
		})
	}
}

function show_language(langcode){
	$$(".language_switch").invoke('removeClassName','selected');
	$(langcode+"_switch").addClassName("selected");
	$$("div.globalized > div").invoke('hide');
	$$("div.globalized > div."+langcode).invoke('slideDown');
}

function warnIEUsers(){
  if ( $$("#iewarning").size() > 0 ){
    Modalbox.show($("iewarning"))
  }
}

function initTabs(){
  var link = function(e){
    var link = e.element().select("a").first();
    if (link == undefined) {
      var menu = e.findElement("li.menu");
      if (menu != undefined)
        link = menu.select("a").first();
    }
    if (link != undefined) {
      location.href = link.href;
    }
  };
  $$(".navtab").invoke("observe","click", link);
  $$("li.menu").invoke("observe","click", link);
  $$(".linkbox").invoke("observe","click", link);
}

document.observe("dom:loaded",init_fck_textareas);
document.observe("dom:loaded",init_globalized_forms);
document.observe("dom:loaded",warnIEUsers);
document.observe("dom:loaded",initTabs);
