/**************************************/
/********** jquery functions **********/
/**************************************/

$(document).ready(function() {

	// menu rollover 
	$(".menu").mouseover(function() {
		var image = $(this).attr("src").replace(".png", "");
		$(this).attr("src",image+"-on.png");
	});
	$(".menu").mouseout(function() {
		var image = $(this).attr("src").replace("-on.png", "");
		$(this).attr("src",image+".png");
	});
	
	// answers
	$('div.demo-show:eq(0)> div').hide();
	$('div.demo-show:eq(0)> h3').click(function() {
		$(this).next().slideToggle('fast');
  });
	$('div.demo-show> div:eq(0)').show();
	
	// toggle selected
	$('div.demo-show h3').click(function() {
		if($(this).attr("class")=="row1-opened") {
			$(this).removeClass("row1-opened");
			$(this).addClass("row1-closed");
		} else if($(this).attr("class")=="row1-closed") {
			$(this).removeClass("row1-closed");
			$(this).addClass("row1-opened");
		} else if($(this).attr("class")=="row2-opened") {
			$(this).removeClass("row2-opened");
			$(this).addClass("row2-closed");
		} else if($(this).attr("class")=="row2-closed") {
			$(this).removeClass("row2-closed");
			$(this).addClass("row2-opened");
		}
	});
	
	// years
	$('#years').change(function() {
		self.location.href = "/mantente-informado/" + $(this).val() + ".html";
	});
	
	// years
	$('#survey-years').change(function() {
		self.location.href = "/analiza/" + $(this).val() + ".html";
	});
	
});




/**************************************/
/********** common functions **********/
/**************************************/

/* remove trailing and leading blanks from a string */
function trim(s) {
	while (s.substring(0,1) == ' ') {
		s = s.substring(1,s.length);
	}
	while (s.substring(s.length-1,s.length) == ' ') {
		s = s.substring(0,s.length-1);
	}
	return s;
}

/* check if object is an array */
function isArray(obj){
	return(typeof(obj.length)=="undefined")?false:true;
}

/* basic form validation */
function check_form(poForm){
	for(i=0; i<poForm.elements.length; i++){
		if(poForm.elements[i].lang == "true"){
			//alert(poForm.elements[i].type); 
			switch (poForm.elements[i].type) {
				case "text":
				case "password":
				case "textarea":
				case "file":
					if(trim(poForm.elements[i].title)!=""){
						if(trim(poForm.elements[i].value) == ""){
							alert(poForm.elements[i].title);
							poForm.elements[i].value = "";
							poForm.elements[i].focus();
							return false;
						}
					}
					//custom validations
					if(poForm.elements[i].alt!=null){
						if(trim(poForm.elements[i].alt)!=''){
							//check email address
							if((trim(poForm.elements[i].value) != "")&&(poForm.elements[i].alt=="email")){
								if(!check_email(poForm.elements[i].value)){
									alert("Escriba una dirección de correo electrónico válida");
									poForm.elements[i].focus();
									return false;
								}
							}
							//check valid files
							if((trim(poForm.elements[i].value) != "")&&(poForm.elements[i].alt=="file")){
								var tmp_file_obj = poForm.elements[i];
								var tmp_file_name = trim(poForm.elements[i].value);
								var tmp_file_types = trim(poForm.elements[i].accept);
								if(!check_filename(tmp_file_name)){
									alert("The filename can not contain special characters");
									tmp_file_obj.focus();
									return false;
								}
								if(!check_filetype(tmp_file_name,tmp_file_types)){
									alert("Invalid file, check file type");
									tmp_file_obj.focus();
									return false;
								}
							}
						}
					}
					break;
				case "radio":
					elradio = eval("poForm."+poForm.elements[i].name);
					checado = false;
					if(isArray(elradio)){
						for(j=0; j<elradio.length; j++){
							if(elradio[j].checked)
								checado = true;
						}
					} else{
						if(elradio.checked)
							checado = true;
					}
					if(!checado){
						if(isArray(elradio)){
							alert(elradio[0].title);
							elradio[0].focus();
						} else{
							alert(elradio.title);
							elradio.focus();
						}
						return false;
					}
					break;
				case "select-one":
					if(poForm.elements[i].selectedIndex < 1){
						alert(poForm.elements[i].title);
						poForm.elements[i].focus();
						return false;
					}
					break;
				case "select-multiple":
					if(poForm.elements[i].selectedIndex < 1){
						alert(poForm.elements[i].title);
						poForm.elements[i].focus();
						return false;
					}
					break;
			}
		}
	}
	return true;
}
	
/* validates an email address */
function check_email(emailStr) {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	if (user.match(userPat)==null) {
	    return false
	}
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				return false
			}
		}
		return true
	}
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		return false
	}
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) {
		return false
	}
	if (len<2) {
		alert(errStr)
		return false
	}
	return true;
}

/* validates a number */	
function check_number(num){
	var x = num;
	var anum = /(^\d+$)|(^\d+\.\d+$)/;
	if (anum.test(x))
		testresult=true;
	else
		testresult=false;

	return (testresult);
}

/* format number */
function format_number(amount) {
	var minus = '';
	var i = parseFloat(amount);
	
	if(isNaN(i)) 
		i = 0.00; 
	if(i < 0) 
		minus = '-';
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) 
		s += '.00';
	if(s.indexOf('.') == (s.length - 2)) 
		s += '0';
		
	s = minus + s;
	return s;
}

/* re-format number */
function re_format_number(amount) {
	var minus = '';
	var delimiter = ","; 
	var a = amount.split('.',2)
	var d = a[1];
	var i = parseInt(a[0]);
	
	if(isNaN(i)) 
		return '';
	if(i < 0) 
		minus = '-';
	i = Math.abs(i);
	var n = new String(i);
	var a = [];
	while(n.length > 3) {
		var nn = n.substr(n.length-3);
		a.unshift(nn);
		n = n.substr(0,n.length-3);
	}
	if(n.length > 0) 
		a.unshift(n); 
	n = a.join(delimiter);
	if(d.length < 1) 
		amount = n;
	else 
		amount = n + '.' + d;

	amount = minus + amount;
	return amount;
}

/* replace all ocurrences of char */
function replace_all(str, from, to) {
	var idx = str.indexOf(from);
	while (idx > -1) {
		str = str.replace(from,to);
		idx = str.indexOf(from);
	}
	return str;
}

/* format as quantity (int) */
function quantity_format(el) {
	var output = '0';
	var num = el.value;
	var regexnum = /(^\d+$)/;
	var intpart;
	
	num = replace_all(num,",","");
	
	if (regexnum.test(num)){
		output = format_number(num);
		output = re_format_number(output);
		intpart = output.split('.');
		output = intpart[0];
	}
	el.value = output;
}

/* format as numeric (double) */
function numeric_format(el) {
	var output = '0.00';
	var num = el.value;
	var regexnum = /(^\d+$)|(^\d+\.\d+$)/;
	
	num = replace_all(num,",","");
	
	if (regexnum.test(num)){
		output = format_number(num);
		output = re_format_number(output);
	}
	el.value = output;
}

/* format as currency $(double) */
function currency_format(el) {
	var output = '0.00';
	var num = el.value;
	var regexnum = /(^\d+$)|(^\d+\.\d+$)/;
	var minus = '';
	
	if(num.substring(0,1)=='-') {
		num = replace_all(num,"-","");
		minus = '-';
	}
	
	num = replace_all(num,"$","");
	num = replace_all(num,",","");
	
	if (regexnum.test(num)){
		output = format_number(num);
		output = re_format_number(output);
	}
	el.value = minus+'$'+output;
}

/* format as percent %(double) */
function percent_format(el) {
	var output = '0.00';
	var num = el.value;
	var regexnum = /(^\d+$)|(^\d+\.\d+$)/;
	
	num = num.replace("%","");
	num = replace_all(num,",","");
	
	if (regexnum.test(num)){
		output = format_number(num);
		output = re_format_number(output);
	}
	el.value = output+'%';
}

/* sets a safe number */
function clean_currency(val) {
	var num = val;
	
	num = num.replace("$","");
	num = num.replace("%","");
	num = replace_all(num,",","");
	
	return num;
}


/* fill select with ajax */
function fillSelect(elem, action, params) {
	clear_select(elem);
	document.getElementById(elem).options[0] = new Option('Cargando datos...','0');
	make_logic_request('GET','/admin/index.php?action='+action, params);
}

/* clear options for select control */
function clear_select(el) {
	for(i=document.getElementById(el).options.length; i>0; i--) {
		if(document.getElementById(el).options[i] != null) 
			document.getElementById(el).options[i] = null;
	}
}

/* get data returned by ajax */
function get_data() {
	if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200))
		document.getElementById('main_data').innerHTML = xmlhttp.responseText;
}

/* get logic returned by ajax */
function get_logic() {
	if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200))
		eval(xmlhttp.responseText);
}