var Envia = {}
Envia.contactSearch = function(options) {
	var options = options || { }
	var page = options.page || 1
	var sort_column = options.sort_column || 'nombre'
	var sort_order = options.sort_order || 'ASC'
	var mode = options.mode || ''
	
	var container = $("search_results_container")	
	var height = Element.getHeight(container)
	$(container).style.position = "relative"
	new Insertion.Bottom(container, "<div id='loading_' class='w100 c' style='height: "+ height +"px'><p><img src='/img/spinner_large.gif' align='absmiddle' width='100' height='100' /></p/><p>"+I18N._('loading')+"...</p></div>")
	
	var ajax_options = { method: 'post', parameters: Form.serialize($("query"))+"&page="+page +"&sort_column="+sort_column +"&sort_order="+sort_order }
	new Ajax.Updater("search_results_container", "_ajax_contacts.php", ajax_options)
	return false;
}
Envia.toggleAllVisibleContacts = function(chk) {
	chks = (chk.form['contact_ids[]'].length) ? $A(chk.form['contact_ids[]']) : [chk.form['contact_ids[]']]
	chks.each(function(c) {
		c.checked = chk.checked
	})
}
Envia.toggleAllContacts = function(chk, total) {
	var table = getAncestorByTagName(chk, "table")
	var tr = getAncestorByTagName(chk, "tr")
	
	var offsets = Position.positionedOffset(table)
	var top     = offsets[1]
	var left    = offsets[0]
	var width   = table.clientWidth
	var height  = table.clientHeight
	
	var container = $("search_results_container")	
	//var height = Element.getHeight(container)
	//$(container).style.position = "relative"
	if (mask = $('contacts_mask_')) {
		chk.checked ? Element.show(mask) : Element.hide(mask)
	} else {
		new Insertion.Bottom(container, "<div id='contacts_mask_' class='w100 c'><p><img src='/img/contacts_large.png' align='absmiddle' /> "+total+" "+I18N._('contactos_seleccionados')+"</p></div>")
		mask = $('contacts_mask_')
		mask.style.position = 'absolute';
		mask.style.top    = top + 'px'
		mask.style.left   = left + 'px'
		mask.style.width  = width + 'px'
		mask.style.height = (height - 21) + 'px'
	}
}
Envia.valContactForm = function(f) {
	val = new Validator()

	if (f.all_contacts.checked || val.val_at_least_one_checked(f["contact_ids[]"], I18N._('ElegirUnContacto'))) {
		if (f.add_id.value == '' && val.val_at_least_one_checked(f.contacts_option, I18N._('ElegirUnaOpcion'))) {
			if (f.contacts_option[1].checked)
				val.val_length(f.add_to_new_name, 1, null, I18N._('EntrarUnNombre'))
		}
	}
	return val.validate()
}
Envia.init_configuration = function(status, delimiter) {
	if (status == 'UploadOk') {
		Element.show('step_configure')
		$('formImportContacts')['delimiter'].value = (delimiter || ';')
		Envia.draw_csv_table()
		$('submit_button').style.visibility = 'visible'
		$('formImportContacts').target = ''
		$('formImportContacts').action = 'contact_import_2.php'
	} else {
		alert(I18N._('ElFichero'))
	}
}	
Envia.draw_csv_table = function() {
	form = $("formImportContacts")
	valid_delimiters = [',', ';']
	valid_qualifiers = ['"', "'"]
	if (!valid_delimiters.include(form.delimiter.value)) {
		Element.addClassName(form.delimiter, 'invalid__')
		return false;
	}
	if (!valid_qualifiers.include(form.qualifier.value)) {
		Element.addClassName(form.qualifier, 'invalid__')
		return false;
	}
	Element.removeClassName(form.delimiter, 'invalid__')
	Element.removeClassName(form.qualifier, 'invalid__')

	var options = {
		parameters: Form.serialize(form),
		method: 'post',
		onComplete: function() { Element.hide('step_upload') }
	}
	if (form.delimiter.value != last_delimiter || form.qualifier.value != last_qualifier || form.ignore_first.checked != last_ignore_first) {
		$('preview_container').innerHTML = "<p class='c'>"+I18N._('CargandoVistaPrevia')+"</p>"
		new Ajax.Updater("preview_container", 'upload_csv.php', options)
		Element.show("header_check_div")
		last_delimiter = form.delimiter.value
		last_qualifier = form.qualifier.value
		last_ignore_first = form.ignore_first.checked
	}
}

DOM = {}
DOM.createElement = function(name, opts) {
	element = document.createElement(name)
	for (opt in opts) {
		if (opt == 'text')
			element.appendChild(document.createTextNode(opts[opt]))
		else
			element[opt] = opts[opt]
	}
	return element
}
Envia.initMailingLists = function() {
	var sel = $('ml_select')
	sel.appendChild(DOM.createElement('option', { value: '', text: I18N._('SeleccioneUnaLista') }))
	var optgroup_new = DOM.createElement('optgroup', { label: I18N._('NuevaLista')})
	optgroup_new.appendChild(DOM.createElement('option', { value: 'new', text: I18N._('CrearNuevaLista') }))
	sel.appendChild(optgroup_new)
		
	var optgroup = DOM.createElement('optgroup', { label: I18N._('ListasExistentes'), id: 'ml_optgroup' })
	mailing_lists.each(function(ml) {
		if (assigned_ids.include(ml.id)) {
			Envia.addMailingList(ml)
		} else {
			opt = document.createElement('option')
			opt.value = ml.id
			opt.appendChild(document.createTextNode(ml.name))
			optgroup.appendChild(DOM.createElement('option', { value: ml.id, text: ml.name }))
		}
	})
	sel.appendChild(optgroup)

	input = $('new_name_input')

	add_function = function() {
		Envia.addMailingList({ id: '_'+(new Date).getTime(), name: input.value })
		input.value = ''
		Element.hide($('new_controls_container'))
		sel.selectedIndex = 0
		Envia.handleMailingListsSelect(sel)
		return false
	}
	Event.observe(input, 'keypress', function(evt) {
		if (evt.keyCode == Event.KEY_RETURN ) {
			add_function()
			Event.stop(evt)
			return false
		}
	}, false)
	Event.observe($('new_mailing_list_button'), 'click', function(evt) { add_function(); return false; }, false)
	Event.observe($('add_mailing_list_button'), 'click', function(evt) { Event.stop(evt); Envia.addMailingList(); return false; }, false)
	
	Envia.handleMailingListsSelect(sel)
}
Envia.addMailingList = function(mailing_list) {
	var sel = $('ml_select')
	if (!mailing_list && !sel.length)
		return false
	var ml = mailing_list || { id: sel[sel.selectedIndex].value, name: sel[sel.selectedIndex].text }
	var id = ml.id
	var name = ml.name
	var tr = document.createElement("tr")
	var td1 = document.createElement("td")
	var td2 = document.createElement("td")
	var td3 = document.createElement("td")
	var icon = document.createElement('img')
	var input = document.createElement('input')
	var a = document.createElement("a")
	var x = document.createElement('img')
	
	if (!assigned_ids.include(id))
		Element.addClassName(tr, 'new')
	icon.src = "/img/mailing_list_icon_small.png"
	x.src = "/img/icon_remove.png"
	input.type = 'hidden'
	input.name = 'mailing_lists[]'
	input.value = ml.id
	if (input.value.indexOf("_") === 0)
		td1.appendChild(DOM.createElement('input', {type: 'hidden', name: 'mailing_list_names['+ml.id+']', value: ml.name }))
	a.appendChild(x)
	a.href = '#'
	a.title = 'Quitar'
	a.onclick = function() {
		tr.parentNode.removeChild(tr)
		if (input.value.indexOf("_") != 0)
			$('ml_optgroup').appendChild(DOM.createElement('option', {text: name, value: id}))
		return false
	}
	
	td1.appendChild(icon)
	td1.appendChild(input)
	td2.appendChild(document.createTextNode(ml.name))
	td3.appendChild(a)
	
	tr.appendChild(td1);
	tr.appendChild(td2);
	tr.appendChild(td3);
	$('ml_container').appendChild(tr)
	if (!mailing_list) {
		$('ml_optgroup').removeChild(sel[sel.selectedIndex])
		Element.hide($('add_controls_container'), $('new_controls_container'))
	}
}
Envia.addNewMailingList = function(name) {
	mailing_lists.push()
}
Envia.handleMailingListsSelect = function(sel) {
	var val = $F(sel)
	add_container = $('add_controls_container')
	new_container = $('new_controls_container')
	input = $('new_name_input')

	Element.hide(add_container, new_container)
	if (val == '')
		return
	if (val == 'new') {
		Element.show(new_container)
		input.focus()
		return
	}
	Element.show(add_container)
}
Envia.viewList = function(id, message_id) {
	var sel = null
	var form = $('newMessageSelectDistrList')
	var radios = $A(form.idLista)
	radios.each(function(radio) { 
		if (radio.checked)
			sel = $F(radio)
	})
	location.href = "contacts.php?mailing_list_id="+ id +"&action=return_to_message&message_id="+ message_id + (sel ? "&selected_list="+ sel : '')
}

Envia.confirmRequestActivation = function(id, email) {
	if (confirm(I18N._('se_enviara')+"'"+email+"' "+I18N._('pedir_confirmacion')+""))
		window.location = "contact_request_activation_action.php?id="+id
	return false
}

Envia.confirmDeactivation = function(id, email) {
	if (confirm(""+I18N._('dar_de_baja')+" '"+email+"'?\n\n"+I18N._('no_se_puede')+"."))
		window.location = "contact_deactivate_action.php?id="+id
	return false
}

Envia.randomPassword = function(length) {
  chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
  pass = "";
  for(x=0;x<length;x++)
  {
    i = Math.floor(Math.random() * 62);
    pass += chars.charAt(i);
  }
  return pass;
}

Envia.trackingReadStats = function(id_message) {
	var options = { }	
	
	var container = $("search_results_container")	
	var height = Element.getHeight(container)
	$(container).style.position = "relative"
	new Insertion.Bottom(container, "<div id='loading_' class='w100 c' style='height: "+ height +"px'><p><img src='/img/spinner_large.gif' align='absmiddle' width='100' height='100' /></p/><p>"+I18N._('loading')+"...</p></div>")
	
	var ajax_options = { method: 'post'}
	new Ajax.Updater("search_results_container", "_ajax_trackingReadStats.php?id="+id_message, ajax_options)
	return false;
}

Envia.trackingReadDaysStats = function(id_message, week) {
	var options = { }	
	
	var container = $("search_results_container")	
	var height = Element.getHeight(container)
	$(container).style.position = "relative"
	new Insertion.Bottom(container, "<div id='loading_' class='w100 c' style='height: "+ height +"px'><p><img src='/img/spinner_large.gif' align='absmiddle' width='100' height='100' /></p/><p>"+I18N._('loading')+"...</p></div>")
	
	var ajax_options = { method: 'post'}
	new Ajax.Updater("search_results_container", "_ajax_trackingReadDaysStats.php?id="+id_message+"&week="+week, ajax_options)
	return false;
}

Envia.trackingReadHoursStats = function(id_message, week, day) {
	var options = { }	
	
	var container = $("search_results_container")	
	var height = Element.getHeight(container)
	$(container).style.position = "relative"
	new Insertion.Bottom(container, "<div id='loading_' class='w100 c' style='height: "+ height +"px'><p><img src='/img/spinner_large.gif' align='absmiddle' width='100' height='100' /></p/><p>"+I18N._('loading')+"...</p></div>")
	
	var ajax_options = { method: 'post'}
	new Ajax.Updater("search_results_container", "_ajax_trackingReadHoursStats.php?id="+id_message+"&week="+week+"&day="+day, ajax_options)
	return false;
}

Envia.trackingStats = function(id_message) {
	var options = { }	
	
	var container = $("search_results_container")	
	var height = Element.getHeight(container)
	$(container).style.position = "relative"
	new Insertion.Bottom(container, "<div id='loading_' class='w100 c' style='height: "+ height +"px'><p><img src='/img/spinner_large.gif' align='absmiddle' width='100' height='100' /></p/><p>"+I18N._('loading')+"...</p></div>")
	
	var ajax_options = { method: 'post'}
	new Ajax.Updater("search_results_container", "_ajax_trackingStats.php?id="+id_message, ajax_options)
	return false;
}
