// $Id: form_b.js,v 1.3 2006/12/13 13:48:13 julio Exp $

// WATCH OUT: Ensure that cat_checks_b.js is included before form_b.js

var avg_kbytes_per_image = 700;

var shownTrValue = "block"; //"table-row";
var shownDivValue = "block";
var shownSpanValue = "inline";

function show_table_row(element) {
	document.getElementById(element).style.display = shownTrValue;
}

function hide(element) {
	document.getElementById(element).style.display = 'none';
}

function update_controls() {
	var category = document.getElementById('category').value;
	var old_category = document.getElementById('old_category').value;

	// Don't let the user select a category group
	
	if(category >= 100) {
		alert("No se puede poner anuncios en los grupos de categorías.\nPor favor, pon tu anuncio en una categoría específica.\nMuchas gracias.");
		if(old_category>0) {
			document.getElementById('category').value = old_category;
		}
		else {
			document.getElementById('category').selectedIndex = 0;
		}
		return;
	}
	
	// Show/hide zones
	
	if(HAS_ZONES(category)) {
		show_table_row('zones_row');
	}
	else {
		hide('zones_row');
	}
	
	// Show/hide price
	
	if(IS_PRICELESS_CATEGORY(category) || (!document.getElementById('type_s').checked && !document.getElementById('type_u').checked)) {
		hide('price_row');
	}
	else {
		show_table_row('price_row');
	}
	
	// Show/hide pro/individual choice
	
	if(DISTINGUISH_INDIVIDUALS_OR_PROS(category)) {
		show_table_row('professionals_row');
	}
	else {
		hide('professionals_row');
	}
	
	// Show/hide employment subcategories

	if(IS_EMPLOYMENT(category)) {
		show_table_row('employment_row');
	}
	else {
		hide('employment_row');
	}

	// Adapt sell/buy labels and apparition
	
	if(ESTATE_CAN_BE_SOLD(category)) { // This meaning can be sold *or* rented
		document.getElementById('sell_label').innerHTML = "Se vende";
		document.getElementById('buy_label').innerHTML = "Se compra";
		document.getElementById('sell_box').style.display = "inline";
		document.getElementById('buy_box').style.display = "inline";
		document.getElementById('rentsell_box').style.display = "inline";
		document.getElementById('rentbuy_box').style.display = "inline";
	} else if(ESTATE_CAN_BE_RENTED(category)) { // This meaning can *only* be rented
		document.getElementById('sell_label').innerHTML = "Se vende";
		document.getElementById('buy_label').innerHTML = "Se compra";
		document.getElementById('sell_box').style.display = "none";
		document.getElementById('buy_box').style.display = "none";
		document.getElementById('rentsell_box').style.display = "inline";
		document.getElementById('rentbuy_box').style.display = "inline";
		// I'm hiding sell & buy - forward selection to rent boxes
		if(document.getElementById('type_s').checked) {
			document.getElementById('type_s').checked = false;
			document.getElementById('type_u').checked = true;
		}
		else if (document.getElementById('type_k').checked) {
			document.getElementById('type_k').checked = false;
			document.getElementById('type_h').checked = true;
		}
	} else if(IS_EMPLOYMENT(category)) {
		document.getElementById('sell_label').innerHTML = "Ofrezco trabajo";
		document.getElementById('buy_label').innerHTML = "Busco trabajo";
		document.getElementById('sell_box').style.display = "inline";
		document.getElementById('buy_box').style.display = "inline";
		document.getElementById('rentsell_box').style.display = "none";
		document.getElementById('rentbuy_box').style.display = "none";
		// I'm hiding rentsell & rentbuy - forward selection to sell & buy
		if(document.getElementById('type_u').checked) {
			document.getElementById('type_u').checked = false;
			document.getElementById('type_s').checked = true;
		}
		else if (document.getElementById('type_h').checked) {
			document.getElementById('type_h').checked = false;
			document.getElementById('type_k').checked = true;
		}
	} else {
		document.getElementById('sell_label').innerHTML = "Se vende";
		document.getElementById('buy_label').innerHTML = "Se compra";
		document.getElementById('sell_box').style.display = "inline";
		document.getElementById('buy_box').style.display = "inline";
		document.getElementById('rentsell_box').style.display = "none";
		document.getElementById('rentbuy_box').style.display = "none";
		// I'm hiding rentsell & rentbuy - forward selection to sell & buy
		if(document.getElementById('type_u').checked) {
			document.getElementById('type_u').checked = false;
			document.getElementById('type_s').checked = true;
		}
		else if (document.getElementById('type_h').checked) {
			document.getElementById('type_h').checked = false;
			document.getElementById('type_k').checked = true;
		}
	}
	
	// Show/hide catalan animal dealer license number
	
	if(IS_ANIMALS(category) && document.getElementById('is_pro').checked && /(pbr)|(pli)|(pge)|(pta)/.test(document.getElementById('place').value)) {
		show_table_row('animal_dealer_row');
	}
	else {
		hide('animal_dealer_row');
	}
	
	// Show/hide vehicles characteristics
	
	if(IS_CARS(category) && document.getElementById('type_s').checked) {
		show_table_row('car_features_row');
	}
	else {
		hide('car_features_row');
	}
	
	if(HAS_REAL_ESTATE_FEATURES(category) && (document.getElementById('type_s').checked || document.getElementById('type_u').checked || document.getElementById('type_b').checked)) {
		if(HAS_BEDROOMS(category)) {
			show_table_row('bedrooms_row');
		}
		else {
			hide('bedrooms_row');
		}
		if(HAS_SURFACE_MEASURE(category)) {
			show_table_row('surface_row');
		}
		else {
			hide('surface_row');
		}
		if(HAS_TERRAIN_MEASURE(category)) {
			show_table_row('terrain_row');
		}
		else {
			hide('terrain_row');
		}
	}
	else {
			hide('bedrooms_row');
			hide('surface_row');
			hide('terrain_row');
	}
	
	document.getElementById('old_category').value = category;
	return;
}

function CheckForm( form )
{
	var message = '';
	
	if ( form.zone.selectedIndex == "0" && HAS_ZONES(form.category.value) )
	{
		message = message + "Tienes que elegir una zona.\n"; /* TR: Zone missing */
	}

	if ( form.name.value == "" )
	{
		message = message + "Falta el nombre.\n"; /* TR: Name missing */
	}

	if ( form.email.value == "" )
	{
		message = message + "Falta el correo electrónico.\n"; /* TR: e-mail missing */
	}

	if ( form.tfn.value == "" )
	{
		message = message + "Falta el número de teléfono.\n"; /* TR: telephone missing */
	}
	
	if(form.fk_id[0]) {
		if ( !form.fk_id[0].checked && !form.fk_id[1].checked ) {
			message = message + "Falta indicar si es un anuncio de particular o de profesional/empresa.\n"; /* TR: individual/professional missing */
		}
	}

	if ( form.category.value == "none" )
	{
		message = message + "Falta la categoría.\n"; /* TR: Category missing */
	}
	
	if ( form.place.value == "none" )
	{
		message = message + "Falta la provincia.\n"; /* TR: Province missing */
	}
	
	if ( IS_EMPLOYMENT(form.category.value) ) { /* Employment */
		var something_checked = false;
		for ( i = 0; i < 29; i++ ) {
			something_checked |= form.subcategory[i].checked;
		}
		if(!something_checked) {
			message += "Tienes que elegir al menos un sector de empleo.\n"; /* TR: You must choose at least an employment sector */
		}
	}
	
	if( ( ( form.place.value == "pbr" ) || ( form.place.value == "pge" ) || ( form.place.value == "pli" ) || ( form.place.value == "pta" ) )
	&& ( IS_ANIMALS(form.category.value) && (form.fk_id[1] && form.fk_id[1].checked ) ) && ( form.digest.value == "" ) ) {
		message += "Falta el número de núcleo zoológico.\n";
	}
	
	var tmp = form.subject.value.toLowerCase();

	if ( IS_CARS(form.category.value) && form.type[0].checked) {
		if (form.year.value == "none") {
			message = message + "Tienes que incluir el año de matriculación del coche.\n"; /* TR: you must include the car model year */
		} else {
			var the_year = form.year.value.substring(2,4);
			if (tmp.indexOf("- " + the_year) != -1 || tmp.indexOf("-" + the_year) != -1 || tmp.indexOf(" " + form.year.value) != -1) {
				message = message + "No pongas el año de matriculación en el título.\n"; /* TR: Don't indicate the model year in the title */
			}
		}
		if (form.mileage.value == "0") {
			message = message + "Tienes que incluir el kilometraje del coche.\n"; /* TR: you must include the car model year */
		}
	}

	if ( IS_REAL_ESTATE(form.category.value) && (form.type[0].checked || form.type[1].checked) ) { // Real estate sales
		if (HAS_BEDROOMS(form.category.value) && form.bedrooms.value == "none") {
			message = message + "Tienes que incluir el número de dormitorios.\n"; /* TR: you must include the number of bedrooms */
		}
		if ( HAS_SURFACE_MEASURE(form.category.value) && (( !form.surface.value ) || ( parseInt( form.surface.value, 10 ) == 0 ) ) ) {
			message = message + "Tienes que incluir la superficie.\n"; /* TR: you must include the square meters */
		}
		if ( HAS_TERRAIN_MEASURE(form.category.value) && (( !form.miscNumber4.value ) || ( parseInt( form.miscNumber4.value, 10 ) == 0 ) ) ) {
			message = message + "Tienes que incluir la superficie del solar.\n"; /* TR: you must include the terrain square meters */
		}
	}

	if ( form.type[0].checked == false && form.type[1].checked == false && form.type[2].checked == false && form.type[3].checked == false && form.type[4].checked == false)
	{
		message = message + "No has elegido el tipo de anuncio.\n"; /* TR: You haven't chosen the ad type */
	}
	else
	{
		if ( form.subject.value != "")
		{
			var ventaRE = /(([^a-z]v)|(^v))(ende|enta)([^a-z]|$)/gi;
			if (ventaRE.test(tmp)) { /* For sale, sale */
				message = message + "No escribas se compra, se vende o se busca en el título,\nel anuncio se insertará en la sección que has elegido.\n"; /* Don't write for sale or wanted or for rent in the title, your ad will be placed in the section you've chosen */
			}
			if (tmp.indexOf("ocasión") != -1 || tmp.indexOf("ocasion") != -1 || tmp.indexOf("ganga") != -1 || tmp.indexOf("chollo") != -1 || tmp.indexOf("oportunidad") != -1 || tmp.indexOf("oferta") != -1 || tmp.indexOf("ofertón") != -1 || tmp.indexOf("oferton") != -1) {
				message = message + "No incluyas en el título palabras genéricas del tipo 'oferta', 'ganga', 'chollo', etc.";
			}
			if (form.type[1].checked == true && tmp.indexOf("compra") != -1) /* buy */
			{
				message = message + "No escribas 'se compra' en el título.\n"; /* Don't write 'buy' in the title */
			}
			else
			{
				if (form.type[0].checked == true && ventaRE.test(tmp) )
				{
					message = message + "No escribas 'se vende' en el título.\n";
				}
			}
		}
	}
	
	if ( form.subject.value == "" )
	{
		message = message + "Falta el título.\n"; /* TR: Title missing */
	}
	else
	{
		if (tmp.indexOf("barato") != -1) /* TR: Cheap */
		{
			message = message + "No escribas 'barato' en el título.\n"; /* TR: Don't write 'barato' in the title */
		}
	}
	
	if ( form.body.value == "" )
	{
		message = message + "Falta el texto del anuncio.\n"; /* TR: Ad text missing */
	}

	if ( form.body.value.length > 1999 )
	{
		message = message + "Sólo se permiten 2000 caracteres para el texto del anuncio. Por favor, intenta acortarlo y vuelve a pinchar en Enviar.\n"; /* TR: Max. characters allowed in an ad is 2000. Please shorten your ad and click Send again */
	}

	if (form.sida.value.length > 255)
	{
		message = message + "Tu enlace es demasiado largo para poder ser publicado. Sólo puede contener 255 caracteres.\n"; /* TR: Your link is too long to publish. It can be 255 characters at most */
	}

	if ( (form.sida.value != "" && form.sida.value != "http://") && form.sida_title.value == "")
	{
		message = message + "Si insertas un enlace, hay que poner también un título del enlace.\n"; /* TR: If you add a link you must also add a title for it */
	}
	
	var validExtensionsRE = /\.(gif|jpg|jpeg|png|bmp|pdf|tif)$/i;
	var hasExtensionsRE = /\....?.?/i;
	
	if(hasExtensionsRE.test(form.imgfile.value) && !validExtensionsRE.test(form.imgfile.value)) {
		message = message + "La imagen del primer campo (\""+form.imgfile.value+"\") no parece tener una extensión válida. Debe ser JPG, GIF o PNG.\n";
	}

	if(hasExtensionsRE.test(form.img2file.value) && !validExtensionsRE.test(form.img2file.value)) {
		message = message + "La imagen del segundo campo (\""+form.img2file.value+"\") no parece tener una extensión válida. Debe ser JPG, GIF o PNG.\n";
	}

	if(hasExtensionsRE.test(form.img3file.value) && !validExtensionsRE.test(form.img3file.value)) {
		message = message + "La imagen del tercer campo (\""+form.img3file.value+"\") no parece tener una extensión válida. Debe ser JPG, GIF o PNG.\n";
	}

	if(hasExtensionsRE.test(form.img4file.value) && !validExtensionsRE.test(form.img4file.value)) {
		message = message + "La imagen del cuarto campo (\""+form.img4file.value+"\") no parece tener una extensión válida. Debe ser JPG, GIF o PNG.\n";
	}
	
	if ( ( form.imgfile.value && form.img2file.value && ( form.imgfile.value == form.img2file.value ) ) ||
		( form.imgfile.value && form.img3file.value && ( form.imgfile.value == form.img3file.value ) ) ||
		( form.imgfile.value && form.img4file.value && ( form.imgfile.value == form.img4file.value ) ) ||
		( form.img2file.value && form.img3file.value && ( form.img2file.value == form.img3file.value ) ) ||
		( form.img2file.value && form.img4file.value && ( form.img2file.value == form.img4file.value ) ) ||
		( form.img3file.value && form.img4file.value && ( form.img3file.value == form.img4file.value ) ) ) {
		message = message + "La misma imagen está repetida en dos campos.\n";
	}

	// Were there any errors?	
	if (message != '')
	{
		alert("Se han detectado los siguientes errores:\n\n" + message); /* TR: The following errors have been detected */
		return false;
	}
	
	var n_images = (form.imgfile.value?1:0) + (form.img2file.value?1:0) + (form.img3file.value?1:0) + (form.img4file.value?1:0);
	if(n_images > 0) {
		document.getElementById('n_images_uploaded').value = n_images;
		var dwn_Kbps = document.getElementById('timetext').value;
		var n_images_text = "las "+(n_images) + " imágenes"; if (n_images == 1) { n_images_text = "la imagen"; };
		var time_text = "8888 minutos.";
		var seconds_per_image = 0;
		var up_Kbps = 0;
		if(dwn_Kbps < 64) up_Kbps = dwn_Kbps; /* Modem */
		else if(dwn_Kbps < 256) up_Kbps = 128;
		else if(dwn_Kbps < 512) up_Kbps = 128;
		else if(dwn_Kbps < 1024) up_Kbps = 300;
		else if(dwn_Kbps < 2048) up_Kbps = 300;
		else if(dwn_Kbps < 4096) up_Kbps = 512;
		else up_Kbps = 512;
		seconds_per_image = avg_kbytes_per_image * 8 /* bits / byte */ / up_Kbps; // Upload correspondence
		time_text = Math.round(seconds_per_image * n_images);
		var minutes = Math.floor(time_text/60);
		var seconds = time_text-(minutes*60);
		time_text = minutes + " minuto" + (minutes==1?"":"s") + " " + seconds + " segundo" + (seconds==1?"":"s") + ".";
		document.getElementById('timetext').value = "Según tu conexión, la transferencia de "+n_images_text+" puede tardar hasta "+ time_text;
		document.getElementById('imgtime').style.display = "block";
	}
	window.location.href = "#warning";
	return true;
}

// One day people will stop using IE or IE will try to be standards-compliant
// Till then, I'll have to do this (minimal - hopefully safe) abilities detection
//
// This code is repeated at reload_searchbox.js

function init_adform_reload() {
	shownTrValue = "block";
	try {
		document.getElementById('price_row').style.display="table-row";
		shownTrValue = "table-row";
	}
	catch(e) {
		shownTrValue = "block";
	}
}

