var nbsp = 160;
var node_text = 3;
var emptyString = /^\s*$/;
var glb_vfld;
var proceed = 2;

function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '');
}

function setFocusDelayed()
{
  glb_vfld.focus();
}

function setfocus(vfld)
{
  glb_vfld = vfld;
  setTimeout( 'setFocusDelayed()', 100 );
}

function msg(fld, msgtype, message)
{
  var dispmessage;
  if (emptyString.test(message))
	dispmessage = String.fromCharCode(nbsp);
  else
	dispmessage = message;

  var elem = document.getElementById(fld);
  elem.firstChild.nodeValue = dispmessage;

  elem.className = msgtype;
}

function commonCheck (vfld, ifld, reqd, fld_msg)
{
  if (!document.getElementById)
	return true;
  var elem = document.getElementById(ifld);
  if (!elem.firstChild)
	return true;
  if (elem.firstChild.nodeType != node_text)
	return true;

  if (emptyString.test(vfld.value)) {
	if (reqd) {
	  msg (ifld, "error", "ERROR: " + fld_msg + " field is required");
	  setfocus(vfld);
	  return false;
	}
	else {
	  msg (ifld, "warn", "");
	  return true;
	}
  }
  return proceed;
}

function validatePresent(vfld, ifld, fld_msg)
{
  var stat = commonCheck (vfld, ifld, true, fld_msg);
  if (stat != proceed) return stat;

  msg (ifld, "warn", "");
  return true;
}

function validateEqualPassword (vpass, vpass_confirm, ifld)
{
	fld_msg = 'Both password and password confirmation should be filled.';

	var stat = commonCheck (vpass, ifld, true, fld_msg);
	if (stat != proceed) return stat;

	var stat = commonCheck (vpass_confirm, ifld, true, fld_msg);
	if (stat != proceed) return stat;

	if (trim(vpass.value) != trim(vpass_confirm.value)) {
		msg (ifld, "error", "ERROR: Password and Password Confirmation are not equal");
		setfocus(vpass);
		return false;
	}

	msg (ifld, "warn", "");
	return true;
}

function validateEmail  (vfld, ifld, reqd, fld_msg)
{
  var stat = commonCheck (vfld, ifld, reqd, fld_msg);
  if (stat != proceed) return stat;

  var tfld = trim(vfld.value);
  var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/
  if (!email.test(tfld)) {
	msg (ifld, "error", "ERROR: " + fld_msg + " is not a valid e-mail address");
	setfocus(vfld);
	return false;
  }

  var email2 = /^[A-Za-z][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/
  if (!email2.test(tfld))
	msg (ifld, "warn", "Unusual e-mail address - check if correct");
  else
	msg (ifld, "warn", "");
  return true;
}

function validateTelnr  (vfld, ifld, reqd, fld_msg)
{
  var stat = commonCheck (vfld, ifld, reqd, fld_msg);
  if (stat != proceed) return stat;

  var tfld = trim(vfld.value);
  var telnr = /^\+?[0-9 ()-]+[0-9]$/
  if (!telnr.test(tfld)) {
	msg (ifld, "error", "ERROR: " + fld_msg + " is not a valid telephone number. Characters permitted are digits, space ()- and leading +");
	setfocus(vfld);
	return false;
  }

  var numdigits = 0;
  for (var j=0; j<tfld.length; j++)
	if (tfld.charAt(j)>='0' && tfld.charAt(j)<='9') numdigits++;

  if (numdigits<6) {
	msg (ifld, "error", "ERROR: " + fld_msg + " has " + numdigits + " digits - too short");
	setfocus(vfld);
	return false;
  }

  if (numdigits>14)
	msg (ifld, "warn", fld_msg + " has " + numdigits + " digits - check if correct");
  else {
	if (numdigits<10)
	  msg (ifld, "warn", fld_msg + " has only " + numdigits + " digits - check if correct");
	else
	  msg (ifld, "warn", "");
  }
  return true;
}

function validateAge    (vfld, ifld, reqd, fld_msg)
{
  var stat = commonCheck (vfld, ifld, reqd, fld_msg);
  if (stat != proceed) return stat;

  var tfld = trim(vfld.value);
  var ageRE = /^[0-9]{1,3}$/;
  if (!ageRE.test(tfld)) {
	msg (ifld, "error", "ERROR: " + fld_msg + " doesn't have a valid age");
	setfocus(vfld);
	return false;
  }

  if (tfld>=200) {
	msg (ifld, "error", "ERROR: " + fld_msg + " doesn't have a valid age");
	setfocus(vfld);
	return false;
  }

  if (tfld>110) msg (ifld, "warn", fld_msg + " is older than 110: check correct");
  else {
	if (tfld<7) msg (ifld, "warn", "Bit young for this, aren't you?");
	else        msg (ifld, "warn", "");
  }
  return true;
}

function validateCreditCard(vfld, ifld, reqd, fld_msg)
{
	var stat = commonCheck (vfld, ifld, reqd, fld_msg);
	if (stat != proceed) return stat;

	var tfld = trim(vfld.value);
	var v = "0123456789";
	var w = "";
	for (var i=0; i < tfld.length; i++) {
		x = tfld.charAt(i);
		if (v.indexOf(x,0) != -1)
			w += x;
	}
	var j = w.length / 2;
	if (j < 6.5 || j > 8 || j == 7) {
		msg (ifld, "error", "ERROR: " + fld_msg + " is not a valid Credit Card Number");
		setfocus(vfld);
		return false;
	}
	var k = Math.floor(j);
	var m = Math.ceil(j) - k;
	var c = 0;
	for (var i=0; i<k; i++) {
		a = w.charAt(i*2+m) * 2;
		c += a > 9 ? Math.floor(a/10 + a%10) : a;
	}
	for (var i=0; i<k+m; i++) c += w.charAt(i*2+1-m) * 1;
	if (c%10 == 0) {
		return true;
	} else {
		msg (ifld, "error", "ERROR: " + fld_msg + " is not a valid Credit Card Number");
		setfocus(vfld);
		return false;
	}
}

function validateIsInteger    (vfld, ifld, reqd, fld_msg)
{
  var stat = commonCheck (vfld, ifld, reqd, fld_msg);
  if (stat != proceed) return stat;

  var tfld = trim(vfld.value);

  if (!isInteger(tfld)) {
	msg (ifld, "error", "ERROR: " + fld_msg + " have an invalid number");
	setfocus(vfld);
	return false;
  }
  return true;
}

function unHider(fld)
{
	fld.style.display = 'block';
}
function hider(fld)
{
	fld.style.display = 'none';
}

function checkPw(form) {
	pw1 = form.BOX_Password.value;
	pw2 = form.BOX_Confirm_Password.value;

	if (pw1 != pw2) {
		var msgErr = "ERROR: Password and Confirmation do not match.";
		document.getElementById('frm_error').innerHTML = msgErr;
		document.getElementById('BOX_Confirm_Password').focus();
		return false;
	} else return true;
}

function Go(form_id, section, action)
{
	document.myForm =  eval('document.getElementById("'+form_id+'")');
	document.myForm.section.value = section;
	document.myForm.action.value = action;
	document.myForm.section.value = section;
	document.myForm.submit();
}

function GoBack()
{
	document.form.action.value = '';
	document.form.submit();
}

function Next_Form(current)
{
	document.form.HID_CurrentPage.value = current + 1;
	document.form.submit();
}

function Prev_Form(current)
{
	document.form.HID_CurrentPage.value = current - 1;
	document.form.submit();
}

// Para paginar
function Next_Page(current,form_name)
{
	var change_value = 'document.'+form_name+'.HID_CurrentPage.value = current + 1;';
	var submit_form = 'document.'+form_name+'.submit();';
	eval(change_value);
	eval(submit_form);
}
function Prev_Page(current,form_name)
{
	var change_value = 'document.'+form_name+'.HID_CurrentPage.value = current - 1;';
	var submit_form = 'document.'+form_name+'.submit();';
	eval(change_value);
	eval(submit_form);
}

function isInteger(s){
	var i;
	for (i = 0; i < s.length; i++){
		var c = s.charAt(i);
		if (((c < "0") || (c > "9"))) return false;
	}
	return true;
}

function stripCharsInBag(s, bag){
	var i;
	var returnString = "";

	for (i = 0; i < s.length; i++){
		var c = s.charAt(i);
		if (bag.indexOf(c) == -1) returnString += c;
	}
	return returnString;
}

function daysInFebruary (year){
	return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31;
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30;}
		if (i==2) {this[i] = 29;}
   }
   return this;
}

function isDate(dtStr, field){
	var dtCh= "/";
	var minYear=1900;
	var maxYear=2100;
	var daysInMonth = DaysArray(12);
	var pos1=dtStr.indexOf(dtCh);
	var pos2=dtStr.indexOf(dtCh,pos1+1);
	var strMonth=dtStr.substring(0,pos1);
	var strDay=dtStr.substring(pos1+1,pos2);
	var strYear=dtStr.substring(pos2+1);
	var strYr=strYear;
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1);
	}
	var month=parseInt(strMonth);
	var day=parseInt(strDay);
	var year=parseInt(strYr);
	if (pos1==-1 || pos2==-1){
		alert("The date format should be : mm dd yyyy");
		return false;
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please enter a valid month for "+field);
		return false;
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid day for "+field);
		return false;
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear+" for "+field);
		return false;
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date for ");
		return false;
	}
	return true;
}

function ValidateDate(prefijo, field){
	var dt = "";
	var str_month = 'BOX_' + prefijo + 'Month';
	var str_day = 'BOX_' + prefijo + 'Day';
	var str_year = 'BOX_' + prefijo + 'Year';

	dt+= eval ('document.form.'+str_month+'.value')+ '/' +
			 eval('document.form.'+str_day+'.value') + '/' +
			 eval('document.form.'+str_year+'.value');

	return isDate(dt, field);
}

function DateComparison(prefijo1, operator, prefijo2 ){
	var str_month1 = 'BOX_' + prefijo1 + 'Month';
	var str_day1 = 'BOX_' + prefijo1 + 'Day';
	var str_year1 = 'BOX_' + prefijo1 + 'Year';
	var str_month2 = 'BOX_' + prefijo2 + 'Month';
	var str_day2 = 'BOX_' + prefijo2 + 'Day';
	var str_year2 = 'BOX_' + prefijo2 + 'Year';

	var month1 = eval ('document.form.'+str_month1+'.value');
	var day1 = eval ('document.form.'+str_day1+'.value');
	var year1 = eval ('document.form.'+str_year1+'.value');
	var month2 = eval ('document.form.'+str_month2+'.value');
	var day2 = eval ('document.form.'+str_day2+'.value');
	var year2 = eval ('document.form.'+str_year2+'.value');

	switch(operator){
		case '=':
			if(day1 == day2 && month1 == month2 && year1 == year2)
				 return true;
			else
				return false;
			break;
		case '<':
			if(year1 < year2 ||
				year1 == year2 && month1 < month2 ||
				year1 == year2 && month1 == month2 && day1 < day2)
				return true;
			else
				return false;
			break;
		case '>':
			if(year1 > year2 ||
				year1 == year2 && month1 > month2 ||
				year1 == year2 && month1 == month2 && day1 > day2)
				return true;
			else
				return false;
			break;
		case '=<':
		case '<=':
			if( DateComparison(prefijo1,'<', prefijo2) ||
				DateComparison(prefijo1,'=',prefijo2) )
				return true;
			 else
				return false;
			 break;
		case '=>':
		case '>=':
			if( DateComparison(prefijo1,'>', prefijo2) ||
				DateComparison(prefijo1,'=',prefijo2) )
				return true;
			 else
				return false;
			 break;
		default:
			alert('Invalid Comparison Operator');
			return false;
		break;

	}
	return false;
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr;
  for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++)
	  x.src=x.oSrc;
}

function MM_preloadImages()
{
	var d=document;
	if(d.images)
	{
		if(!d.MM_p) d.MM_p=new Array();
		var i,j=d.MM_p.length,a=MM_preloadImages.arguments;
		for(i=0; i<a.length; i++) {
			if (a[i].indexOf("#")!=0){
				d.MM_p[j]=new Image;
				d.MM_p[j++].src=a[i];
			}
		}
	}
}

function MM_findObj(n, d) {
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() {
  var i,j=0,x,a=MM_swapImage.arguments;
  document.MM_sr=new Array;
  for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}



function Signin_Focus(){
	document.signin.BOX_UserName.focus();
	return true;
}



function showhide_div(div) {
	document.poppedLayer = eval('document.getElementById("'+div+'")');
	if(document.poppedLayer.style.display == "block"){
		document.poppedLayer.style.display = "none";
	} else {
		document.poppedLayer.style.display = "block";
	}
}


function hide_div(div) {

	document.poppedLayer = eval('document.getElementById("'+div+'")');
	if(document.poppedLayer){
		document.poppedLayer.style.display = "none";
	}
}

function show_div(div) {

	document.poppedLayer = eval('document.getElementById("'+div+'")');
	if(document.poppedLayer){
		document.poppedLayer.style.display = "block";
	}
}


function hide_multiple_divs(divs) {
	var array_divs = divs.split(",");
	//alert("lengyh"+array_divs.length);
	var quantity = array_divs.length;
	var i=0;
	for(i; i<quantity; i++){
		//alert(array_divs[i]);
		hide_div(array_divs[i]);
	}
}

function show_multiple_divs(divs) {
	//alert(divs);
	var array_divs = divs.split(",");
	//alert("length"+array_divs.length);
	var quantity = array_divs.length;
	var i=0;
	for(i; i<quantity; i++){
		//alert(array_divs[i]);
		show_div(array_divs[i]);
	}
}

function openPopup(width, height, file, query){
	var top = (screen.height - height) /2;
	var left = (screen.width - width) /2;
	window.open(file+"?"+query,"newsletter","resizable=yes,scrollbars=yes, width="+width+",height="+height+",top="+top +",left="+left);
}


/*******************************************************************************
 * Busqueda avanzada
 ******************************************************************************/
 function showAdvancedSearch()
 {
	 document.FormSearch.reset();

	 hide_div('AdvancedSearch');
	 hide_div('normal_search');
	 show_div('advanced_search');
	 show_div('NormalSearch');

	 var search_type = document.getElementById('search_type');
	 if(search_type) search_type.value = "advanced";

	 return true;
 }


 function hideAdvancedSearch()
 {
	 document.FormSearch.reset();

	 show_div('AdvancedSearch');
	 show_div('normal_search');
	 hide_div('advanced_search');
	 hide_div('NormalSearch');

	 var search_type = document.getElementById('search_type');
	 if(search_type) search_type.value = "normal";

	 return true;
 }

 function loadData(form_name, id_name, _url)
 {

		if(_url=="undefined"){
			var _url = "secure_page_low.php";
		}

		//alert(id_name+"::"+dojo.byId(id_name));
		//document.getElementById(id_name).innerHTML = "Cargando ... ";
		var kw = {
			url: _url,
			sync: true,
			load: function(data){
					//alert("LOAD "+id_name+" :: "+data);
					if(trim(data)!=""){
						document.getElementById(id_name).innerHTML = data;
						//alert("contenido:"+document.getElementById(id_name).innerHTML);
					}
			},
			error: function(data){
					console.debug("A ocurrido un error: ", data);
			},
			timeout: 3000,
			form: form_name
		};
		dojo.xhrPost(kw);
		
	}

/*****************************************************************************/

var id_data ="";
function loadData2(form_name, id_name, _url)
{

	if(_url=="undefined"){
		var _url = "secure_page_low.php";
	}

	//alert(id_name+"::"+dojo.byId(id_name));
	//document.getElementById(id_name).innerHTML = "Cargando ... ";
	var kw = {
		url: _url,
		sync: true,
		load: function(data){
				//alert("LOAD "+id_name+" :: "+data);
				if(trim(data)!=""){
					document.getElementById(id_name).innerHTML = data;
					//alert("contenido:"+document.getElementById(id_name).innerHTML);
				}
		},
		error: function(data){
				console.debug("A ocurrido un error: ", data);
		},
		timeout: 3000,
		form: form_name
	};
	dojo.xhrPost(kw);
	
}

function loadValue2(form_name, id_name, _url)
 {
		if(_url=="undefined"){
			var _url = "secure_page_low.php";
		}

		//alert(id_name+"::"+dojo.byId(id_name));
		//document.getElementById(id_name).innerHTML = "cargando ... ";
		var kw = {
			url: _url,
			sync: true,
			load: function(data){
					//alert("LOAD "+id_name+" :: "+data);
					if(trim(data)!=""){
						document.getElementById(id_name).value = data;
						//alert("contenido:"+document.getElementById(id_name).innerHTML);
					}
			},
			error: function(data){
					console.debug("A ocurrido un error: ", data);
			},
			timeout: 2500,
			form: form_name
		};
		dojo.xhrGet(kw);
	} 


function loadValue(form_name, id_name, _url)
{
		if(_url=="undefined"){
			var _url = "secure_page_low.php";
		}

		//alert(id_name+"::"+dojo.byId(id_name));
		//document.getElementById(id_name).innerHTML = "cargando ... ";
		var kw = {
			url: _url,
			sync: true,
			load: function(data){
					//alert("LOAD "+id_name+" :: "+data);
					if(trim(data)!=""){
						document.getElementById(id_name).value = data;
						//alert("contenido:"+document.getElementById(id_name).innerHTML);
					}
			},
			error: function(data){
					console.debug("A ocurrido un error: ", data);
			},
			timeout: 2500,
			form: form_name
		};
		dojo.xhrGet(kw);
	} 
