﻿/* -------------------------------------------------------------
THE AJAX submit
adapted from The AJAX comment Written by Sean Fannan (sfannan@gmail.com.)
---------------------------------------------------------------*/
/* ------------------------------------------------------
Name:		ajax-submit.js
Description:	functions for ajax form submit 
Author:		Grita Fuerte - EA
Author URI:	http://www.gritafuerte.com
Date:			2008-03-12

Last Edit		Who	Description
-----------		---	---------------

------------------------------------------------------
*/

/* CONSTANTS */
var phpFileName = template_url()+'/ajax_form_submit.php';

// Key function to send Ajax packet to php file.
function sendPacket(fileName, strQuery, functionName) {
		var myConn = new XHConn();
		if (!myConn) 
			alert("XMLHTTP not available. Try a newer/better browser.");
		myConn.connect(fileName, "POST", strQuery, functionName);
}

/* PREPARE FUNCTIONS */
// sends the request for all the entries on a given page
function submit_rayate() {
	if ( validateFormOnSubmit() == true ) {
		document.getElementById('confirm').innerHTML = "<img src='/images/loading.gif' border='0'>";
		var formtype = document.getElementById('formtype');
		// make sure we have something
		if ( null != formtype ) {
			var userid = document.getElementById('userid');
			var username = document.getElementById('username');
			var email = document.getElementById('email');
			var name = document.getElementById('name');
			var codigo = document.getElementById('codigo');
			var phone = document.getElementById('phone');
			var message = document.getElementById('message');
			strQuery = 'formtype='+formtype.value+'&userid='+userid.value+'&username='+username.value+'&email='+email.value+'&name='+name.value+'&codigo='+codigo.value+'&phone='+phone.value+'&message='+message.value;
			var functionName = function(oXML) { display_response(oXML); };
			sendPacket(phpFileName, strQuery, functionName);
		}
	} 
}

function submit_publicidad() {
	if ( validateFormOnSubmit() == true ) {
		document.getElementById('confirm').innerHTML = "<img src='/images/loading.gif' border='0'>";
		var formtype = document.getElementById('formtype');
		// make sure we have something
		if ( null != formtype ) {
			var email = document.getElementById('email');
			var name = document.getElementById('name');
			var phone = document.getElementById('phone');
			var message = document.getElementById('message');
			strQuery = 'formtype='+formtype.value+'&email='+email.value+'&name='+name.value+'&phone='+phone.value+'&message='+message.value;
			var functionName = function(oXML) { display_response(oXML); };
			sendPacket(phpFileName, strQuery, functionName);
		}
	} 
}

// display the response
function display_response(oXML) {
	var response = oXML.responseText;
	document.getElementById('confirm').innerHTML = response;	// update the div
}


// rayate form validation
function validateFormOnSubmit() {
var reason = "";
var formtype = document.getElementById('formtype');
// quick hack to differentiate between rayaete and publicidad forms
// need to rewrite to be more generic

if (formtype == 'rayate') {
  reason += validateUsername(document.getElementById('username'));
  reason += validateCodigo(document.getElementById('codigo'));
}
  reason += validateEmail(document.getElementById('email'));
  reason += validateUsername(document.getElementById('name'));
  reason += validatePhone(document.getElementById('phone'));
	  
  if (reason != "") {
	alert("Debes corregir unos renglones:\n" + reason);
	return false;
  }

  //alert("All fields are filled correctly");
  return true;
}

function validateEmpty(fld) {
	var error = "";
 
	fld.style.background = 'White'; 

	if (fld.value.length == 0) {
		fld.style.background = 'LightPink'; 
		error = "Por favor, llene los renglones requeridos.\n"
	} else {
		fld.style.background = 'White';
	}
	return error;  
}
function validateUsername(fld) {
	var error = "";
	var illegalChars = /\W+\s\W+/; 	// allow letters,spaces (changed from \W+
 
	if (fld.value == "") {
		fld.style.background = 'LightPink'; 
		error = "No escribiste tu nombre.\n";
	} else if ((fld.value.length < 1) || (fld.value.length > 40)) {
		fld.style.background = 'LightPink'; 
		error = "El nombre de usuario es muy corto o largo.\n";
	} else if (illegalChars.test(fld.value)) {
		fld.style.background = 'LightPink'; 
		error = "El nombre tiene signos no aceptados.\n";
	} else {
		fld.style.background = 'White';
	}
	return error;
}
 
function trim(s)
{
  return s.replace(/^\s+|\s+$/, '');
}
function validateEmail(fld) {
	var error="";
	var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
	var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
	var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
	
	if (fld.value == "") {
		fld.style.background = 'LightPink';
		error = "No escribiste tu correo.\n";
	} else if (!emailFilter.test(tfld)) {              //test email for illegal characters
		fld.style.background = 'LightPink';
		error = "Por fa, introduzca un correo válido.\n";
	} else if (fld.value.match(illegalChars)) {
		fld.style.background = 'LightPink';
		error = "Por fa, introduzca un correo válido.\n";
	} else {
		fld.style.background = 'White';
	}
	return error;
}
function validatePhone(fld) {
	var error = "";
	var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, '');    

   if (fld.value == "") {
		error = "No pusiste tu tel.\n";
		fld.style.background = 'LightPink';
	} else if (isNaN(parseInt(stripped))) {
		error = "Tu tel tiene símbolos no válidos.\n";
		fld.style.background = 'LightPink';
	} else if (stripped.length < 9 || stripped.length > 13) {
		error = "Le faltan números a tu tel. Asegurate que tenga la clave de ciudad.\n";
		fld.style.background = 'LightPink';
	} else {
		fld.style.background = 'White';
	}
	return error;
}
function validateCodigo(fld) {
	var error = "";
	var codes = valid_codes();	// valid codes string based on current + last edition
	
   if (fld.value == "") {
		error = "Tu escribiste tu código.\n";
		fld.style.background = 'LightPink';
	} else if (isNaN(fld.value) || codes.indexOf(fld.value)==-1) {
		error = "Código no válido.\n";
		fld.style.background = 'LightPink';
	} else {
		fld.style.background = 'White';
	}
	return error;
}
