/* -*- coding: utf-8 -*-
 * Copyright (C) 2008 PowerSellers, all rights reserved.
 *
 * Support functions for the enormail template/mail editor.
 */

function send_test_mail_cb(data, textStatus) {			
	$('#send_test_mail_loading_icon').hide();
	$('#send_test_mail').attr('disabled', false);
	alert(data.status_message)
}

function send_test_mail() {			
	subject = $('#id_subject').val();			
	target_address = $('#id_email_address').val();	
	content_type = $('#id_send_text_mail').is(':checked') ? 'text/plain' : 'text/html';			
	if(content_type == 'text/html') {
		FCKeditorAPI.GetInstance('id_html_message').UpdateLinkedField();
	}
	message_id = (content_type == 'text/html') ? '#id_html_message': '#id_text_message'
	
	message = $(message_id).val();
	
	if(subject.length < 1 || target_address.length < 1 || message.length < 1) {
		alert("Vul zowel een onderwerp als een bericht in " +
			  "om een test mail te verzenden");	
		return;
	}
	
	$('#send_test_mail').attr('disabled', true);
	$('#send_test_mail_loading_icon').show();
	
	
	data = {'subject': subject,
			'message': message,
			'target_address': target_address,
			'content_type': content_type}
	url = "/mail/directmail/send_test_mail/";	
	$.post(url, data, send_test_mail_cb, "json");
}

function update_message_field() {
 	if($('#id_send_text_mail').is(':checked')) {
 		$('#id_html_message_div').hide()
 		$('#id_text_message_div').show()
 		$('#id_wrap').attr('disabled', false)
 	} else {
 		$('#id_html_message_div').show()
 		$('#id_text_message_div').hide()
 		$('#id_wrap').attr('disabled', true)
 	}
}

function load_template(data, textStatus) {
	$('#id_subject').attr('value', data['subject']);
	$('#id_text_message').attr('value', data['text_message']);
	$('#id_send_text_mail').attr('checked', data['send_text_mail']);			
	FCKeditorAPI.GetInstance('id_html_message').SetHTML(data['html_message']);
	update_message_field() // changing checked manually does not fire onchange			
}

function request_load_template() {
	template_id = $(this).find(':selected').get(0).value;
	if (template_id) {
		data = {'template_id': template_id};
		url = "/mail/directmail/load_template/";
		$.post(url, data, load_template, 'json')
	}
}

function wrap_textarea(element, wrap_at_column) {
	var orig_content = element.value;
				
	var new_content = new Array();
	
	var base_ix = 0;
	var last_space_ix = 0;
	
	// Off-by-one error somewhere below, needs rewrite but works ok for now
	var ix;
	for(ix = 0; ix < orig_content.length; ix++) {
		if(orig_content.charAt(ix) == '\n') {
			new_content.push(orig_content.substring(base_ix, ix));
			base_ix = ix;
			last_space_ix = ix;
		}
		
		if(orig_content.charAt(ix) == ' ') {
			if((ix - base_ix) > wrap_at_column && last_space_ix > base_ix) {
				new_content.push(orig_content.substring(base_ix, last_space_ix) + '\n');						
				ix = last_space_ix + 1; // skip the trailing space
				last_space_ix = ix;
				base_ix = ix;
								
			} else {
				last_space_ix = ix;
			}
		}
	}
	new_content.push(orig_content.substring(base_ix, ix));
	
	element.value = new_content.join('')
	//document.getElementById("0580684").disabled = true;
}
		
function wrap_text_message() {			
	wrap_textarea(document.getElementById('id_text_message'), 60)
}

function insert_tag() {
	tag = $(this).find(':selected').get(0).value;
	if($('#id_send_text_mail').attr('checked')) {
		//#id_text_message
	} else {				
		FCKeditorAPI.GetInstance('id_html_message').InsertHtml(tag);
	}
	$(this).attr('selectedIndex', 0)
}

function email_add_cb(data, textStatus) {	
	var email_input = $('#send_test_mail_add_email');
	var name_input = $('#send_test_mail_add_name');
	
	email_input.css('background-color', (data.errors.email) ? '#ffe1e1' : 'white')
	name_input.css('background-color', (data.errors.name) ? '#ffe1e1' : 'white')
	
	if(data.valid) {
		$('#id_email_address').append(
				'<option value="' + data.new_value_id + '">' + data.new_value + '</option>');
		$('#id_email_address option:last').attr('selected', true);		
		$('#send_test_mail_add_row').hide();
		email_input.attr('value', '')
		name_input.attr('value', '')
	}
}

$('document').ready(function() {
	$('#send_test_mail').click(send_test_mail);
	$('#id_send_text_mail').click(update_message_field);
	$('#id_template').change(request_load_template);
	$('#id_tag').change(insert_tag);
	$('#id_wrap').click(wrap_text_message)
	
	$("#send_test_mail_extend").click(function() {
		$("#send_test_mail_add_row").toggle();
		return false;
	});
	
	$("#send_test_mail_add_button").click(function() {		
		data = {'name': $('#send_test_mail_add_name').attr('value'),
				'email': $('#send_test_mail_add_email').attr('value')}
		$.post('/mail/add_test_email_address/', data, email_add_cb, 'json')
	});
	
	fck = new FCKeditor('id_html_message');	
	fck.BasePath = "/site_media/js/fckeditor/";
	fck.ToolbarSet = "Default";
	fck.Height = "400";
	fck.Width = "650";
	fck.ReplaceTextarea();

	update_message_field();	
})