
function dShow(a) {jQuery(a).show();}

function dHide(a) {jQuery(a).hide();}

function dShow_n(a,n) {
    for(var i=0;i<n;i++) dShow("#"+a+i.toString());
}

function dHide_n(a,n) {
    for(var i=0;i<n;i++) dHide("#"+a+i.toString());
}

function dOpacity(a,b,d){
    jQuery(a).css(b,d);
}

function selectWait (a){
	dShow("#"+a+" .frUpdt"); dissField (a+" option:selected");
}
function selectOn (a){
	dHide("#"+a+" .frUpdt"); ennField (a+" option:selected");
}
function dissField (a){
    dOpacity("#"+a, "opacity", .5);
    jQuery("#"+a).attr('disabled', true)
}
function ennField (a){
    dOpacity("#"+a, "opacity", 1);
    jQuery("#"+a).removeAttr('disabled')
}

function expVis (a) {
	jQuery("#"+a).fadeIn("fast");
	jQuery("#"+a+"Ac").hide();
	jQuery("#"+a+"In").show();
}
function expHid (a) {
	jQuery("#"+a).fadeOut("fast");
	jQuery("#"+a+"In").hide();
	jQuery("#"+a+"Ac").show();
}

function expVisHid (a,b) {
   if (jQuery("#"+a).is(':checked')) {
        //jQuery("#"+b).show();
		jQuery("#"+b).fadeIn("fast");
		//jQuery("#"+b).removeAttr('disabled');
   }else{
   		//jQuery("#"+b).hide();
		jQuery("#"+b).fadeOut("fast");
		//jQuery("#"+b).attr('disabled', true); //el explorer no detecta bien el visible pero sí el disabled
   }
}

function movTop() {
    jQuery('html').animate({scrollTop:0}, 'fast');
}

function pagtrSubmt(a) {
    jQuery('#'+a+' .pages').animate({opacity:.5}, 'fast');
    jQuery('#'+a+' .refresh').show();
}
function pagtComplt(a) {
    jQuery('#'+a+' .pages').animate({opacity:1}, 'fast');
    jQuery('#'+a+' .refresh').hide();
    movTop();
}

function zFOvOff() {
    //jQuery("#zOverlay").css("display", "none");
	jQuery("#zCenter").hide();
	jQuery("#zLdng").show();
	jQuery("#zOverlay").fadeIn(250);
}

function trim(a) {
	return a.replace(/^\s+|\s+$/g,"");
}

function chgAccents (a) {
	var b='ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž',
	    c='AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz';
	for (var e=0;e<b.length;e++) {a=a.replace(b.charAt(e), c.charAt(e));}
	return a;
}

function cmpStr (a) {
	a=chgAccents(a.replace(/^\s+?/, "").replace(/\s+?$/, "").toLowerCase());
	//alert("1 - '"+a+"'");
	if (a.length>3) {
    	a=a.replace(/^(.{1,3}[\s|\'|´]+)/, " ").replace(/(\s+.{1,3})$/, " ").replace(/(\s+.{1,3}[\s|\'|´]+)+/, " ");
    	a=a.replace(/[\s-·]/g, "").replace(/ll/g, "l").replace(/ss/g, "s").replace(/rr/g, "r").replace(/ny/g, "n");
    	//alert("2 - '"+a+"'");
	}
	return a;
}

function compareNames (a, b) {
    if (a.length && b.length) {
		var c, f=0; d=0, e=0, a=cmpStr(a); b=cmpStr(b);// var x="";
		if (a.length>b.length) {c=a; a=b; b=c;}
		for (c=0; c<a.length; c++) {//x+=a.charAt(c)+","+b.charAt(e)+"|";
			if (a.charAt(c)==b.charAt(e)) {d++;e++;f=0}
			else if (b.indexOf(a.charAt(c))) {d=d+.5;if(f){f=0;if(e<=b.length){e++;if(c)c--}}else f=1}
		}
		var e=(d) ? (d*100)/a.length : 0;
		//alert (x+" :: "+a+" vs. "+b+" : "+(a.length)+"/"+d+" = "+e);
		return e;
	} else return 0;
}
	
/*
 * cacheImage: a jQuery plugin
 *
 * For usage and examples, visit:
 * http://github.com/alexrabarts/jquery-cacheimage
 *
 * Licensed under the MIT:
 * http://www.opensource.org/licenses/mit-license.php
 *
 * Copyright (c) 2008 Stateless Systems (http://statelesssystems.com)
 *
 * @author   Alex Rabarts (alexrabarts -at- gmail -dawt- com)
 * @requires jQuery v1.2 or later
 * @version  0.2.1
 */
eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(2($){1.g($,{5:2(3,0){8(7 3===\'k\'){1.a(3,2(){1.5(d(6),0)});9}c 4=i h();0=0||{};1.a([\'j\',\'n\',\'l\'],2(){c e=d(6);8(7 0[e]===\'2\'){1(4).b(e,0[e])}8(7 0.f===\'2\'){1(4).b(e,0.f)}});4.3=3;9 4}});1.g(1.m,{5:2(0){9 6.a(2(){1.5(6.3,0)})}})})(o);',25,25,'options|jQuery|function|src|image|cacheImage|this|typeof|if|return|each|bind|var|String||complete|extend|Image|new|load|object|abort|fn|error|jQuery'.split('|'),0,{}));

jQuery(document).ready(function() {

    // caja mensajes
    jQuery("body").append('<div id="zOverlay"><div id="zBack" onClick="jQuery(\'#zOverlay\').hide()"/><div id="zCenter"><div id="zClose" onClick="jQuery(\'#zOverlay\').hide()"/><div id="zContnt"/></div><div id="zLdng"/></div>');
    jQuery("#zOverlay").css("display", "none");

    // chackboxes personalizados
    try {
	    if (jQuery('input:checkbox:not([safari])').checkbox()) {
			jQuery('input[safari]:checkbox').checkbox({cls:'jquery-safari-checkbox'});
			jQuery('input:radio').checkbox();
		}
	} catch (err) {}

	// tips
	try {
		if (jQuery(".tptp").tipsy()) $('.tptp').tipsy({gravity: $.fn.tipsy.autoNS, fade: true});
	} catch (err) {}

	// submits

	jQuery.cacheImage(jQuery("base").attr("href")+'/img/loader.gif');

	jQuery("form").submit(function(){

		jQuery("#zCenter").hide();
		jQuery("#zLdng").show();
		jQuery("#zOverlay").fadeIn(250);

	});

});

function nombresEquivalentes(n1, n2, tolerancia)
{
    if (levenshtein(n1,n2)<=tolerancia) return true;
    else if (levenshtein(limpiarNom(n1),limpiarNom(n2))<=tolerancia) return true;
    else return false; 
}

function limpiarNom(n)
{
    // doble denominació, separada por / o por - deixa només primera part (castellà):
    //return trim(n.replace(/\s*?\(.*?\)\s*?/i, "").replace(/\/.*?$/i, ""));
    return trim(n.replace(/\s*?\(.*?\)\s*?/i, "").replace(/\/.*?$/i, "").replace(/\-.*?$/i, ""));
}

function levenshtein (s1, s2) 
{
	// Calculate Levenshtein distance between two strings  
	// 
	// version: 1009.2513
    // discuss at: http://phpjs.org/functions/levenshtein      
    // +            original by: Carlos R. L. Rodrigues (http://www.jsfromhell.com)
    // +            bugfixed by: Onno Marsman
    // +             revised by: Andrea Giammarchi (http://webreflection.blogspot.com)
    // + reimplemented by: Brett Zamir (http://brett-zamir.me)
    // + reimplemented by: Alexander M Beedie      
    // *                example 1: levenshtein('Kevin van Zonneveld', 'Kevin van Sommeveld');
    // *                returns 1: 3
    if (s1 == s2) {
        return 0;
    } 
    var s1_len = s1.length;
    var s2_len = s2.length;
    if (s1_len === 0) {
        return s2_len;    }
    if (s2_len === 0) {
        return s1_len;
    }
     // BEGIN STATIC
    var split = false;
    try{
        split=!('0')[0];
    } catch (e){        split=true; // Earlier IE may not support access by string index
    }
    // END STATIC
    if (split){
        s1 = s1.split('');        s2 = s2.split('');
    }
 
    var v0 = new Array(s1_len+1);
    var v1 = new Array(s1_len+1); 
    var s1_idx=0, s2_idx=0, cost=0;
    for (s1_idx=0; s1_idx<s1_len+1; s1_idx++) {
        v0[s1_idx] = s1_idx;
    }    var char_s1='', char_s2='';
    for (s2_idx=1; s2_idx<=s2_len; s2_idx++) {
        v1[0] = s2_idx;
        char_s2 = s2[s2_idx - 1];
         for (s1_idx=0; s1_idx<s1_len;s1_idx++) {
            char_s1 = s1[s1_idx];
            cost = (char_s1 == char_s2) ? 0 : 1;
            var m_min = v0[s1_idx+1] + 1;
            var b = v1[s1_idx] + 1;            var c = v0[s1_idx] + cost;
            if (b < m_min) {
                m_min = b; }
            if (c < m_min) {
                m_min = c; }            v1[s1_idx+1] = m_min;
        }
        var v_tmp = v0;
        v0 = v1;
        v1 = v_tmp;    }
    return v0[s1_len];
}

