function zoom(foto,h,w){
	zooming(foto);
	//if (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion)>=4) rf="fullscreen=1";
	//	else rf="resizable=1";
	//pant=window.open("","",'toolbar=0,menubar=0,scroll=no,'+rf);
	//y=(screen.availHeight-h)/2;
	//x=(screen.availWidth-w)/2;
	//pant.resizeTo(w,h); pant.moveTo(x,y); pant.document.location="plan_amplia.php?foto="+foto;
} 

function zoom_s(foto,h,w){
	if (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion)>=4) rf="fullscreen=1";
		else rf="resizable=1";
	pant=window.open("","",'toolbar=0,menubar=0,scroll=no,'+rf);
	w=screen.availWidth;
	h=screen.availHeight;
	y=0;
	x=0;
	pant.resizeTo(w,h); pant.moveTo(x,y); pant.document.location="plan_amplia.php?foto="+foto;
} 

function zoomid(foto,h,w){
	/*if (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion)>=4) rf="fullscreen=1";
		else rf="resizable=1";
	pant=window.open("","",'toolbar=0,menubar=0,scroll=no,'+rf);
	y=(screen.availHeight-h)/2;
	x=(screen.availWidth-w)/2;*/
	fotobj=MM_findObj(foto);
	fotosrc=fotobj.src;
	foto=fotosrc.replace("\/med\/", "\/big\/"); 
	foto=foto.replace("\/mini\/", "\/big\/"); 
	foto=foto.replace("\/mini\/", "\/big\/"); 
	foto=foto.replace("\/ico\/", "\/big\/"); 
	foto=foto.replace(".gif", ".jpg"); 
	zooming(foto);
	//pant.resizeTo(w,h); pant.moveTo(x,y); pant.document.location="plan_amplia.php?foto="+foto;
} 
function closezoom(){
	showHideMe("zoomimgid","none");
	MM_swapImage('zoomimgsrc','','img/logoLd.gif',1);
} 
function zooming(img){
	MM_swapImage('zoomimgsrc','',img,1);
	var zoomimgsrcvar= document.getElementById("zoomimgid");
	zoomimgsrcvar.style.top=document.body.scrollTop; 
	showHideMe("zoomimgid","block");
} 

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_findObj(n, d) { //v4.01
  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 isValidCardNumber (strNum) 
{
   var nCheck = 0;
   var nDigit = 0;
   var bEven  = false;
   
   for (n = strNum.length - 1; n >= 0; n--) 
   {
      var cDigit = strNum.charAt (n);
      if (isDigit (cDigit))
      {
         var nDigit = parseInt(cDigit, 10);
         if (bEven)
         {
            if ((nDigit *= 2) > 9)
               nDigit -= 9;
         }
         nCheck += nDigit;
         bEven = ! bEven;
      }
      else if (cDigit != ' ' && cDigit != '.' && cDigit != '-')
      {
         return false;
      }
   }
   return (nCheck % 10) == 0;
}
function isDigit (c)
{
   var strAllowed = "1234567890";
   return (strAllowed.indexOf (c) != -1);
}
function isCardTypeCorrect (strNum, type)
{
   var nLen = 0;
   for (n = 0; n < strNum.length; n++)
   {
      if (isDigit (strNum.substring (n,n+1)))
         ++nLen;
   }
   
   if (type == 'Visa')
      return ((strNum.substring(0,1) == '4') && (nLen == 13 || nLen == 16));
   else if (type == 'Amex')
      return ((strNum.substring(0,2) == '34' || strNum.substring(0,2) == '37') && (nLen == 15));
   else if (type == 'Master Card')
      return ((strNum.substring(0,2) == '51' || strNum.substring(0,2) == '52'
              || strNum.substring(0,2) == '53' || strNum.substring(0,2) == '54'
              || strNum.substring(0,2) == '55') && (nLen == 16));
   else
      return false;
   
}

function validateForm() { 
  var i,p,q,nm,test,name,num,min,max,errors='',args=validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; name=args[i+1]; val=args[i];
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isCreditcard')!=-1) {
        if (!isValidCardNumber(val)) errors+='- '+name+' must contain a valid credit card number.\n';
      } else if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+name+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+name+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+name+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+name+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}

function showHideMe(id,disp){
  if(typeof(id)=="string")  id=document.getElementById(id);
  switch(disp){
	  case "block":
	  case "on":
	  	disp="block";
		break;
	  case "none":
	  case "off":
	  	disp="none";
		break;
	  default:
	  	disp=false;
		break;
  }
  if (id.style) {
	  if (!disp) disp=(id.style.display!="block"?"block":"none");
	  id.style.display=disp;
  }else {
	  if (!disp) disp=(id.display!="block"?"block":"none");
	  id.display=disp;
  }
}

function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { 
    v=args[i+2];
    fnd=args[i+1];
    if (fnd != "ex") {
		MM_swapImgRestore();
		MM_showHideLayers('trasera','ex',v);
		MM_showHideLayers('m2','ex','hide');
		MM_showHideLayers('m3','ex','hide');
		MM_showHideLayers('m4','ex','hide');
		MM_showHideLayers('m5','ex','hide');
		MM_showHideLayers('m6','ex','hide');
		MM_showHideLayers('m28','ex','hide');
		MM_showHideLayers('m29','ex','hide');
		MM_showHideLayers('m8','ex','hide');
		MM_showHideLayers('m9','ex','hide');
	}	
    if (obj.style) { obj=obj.style; w=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=w; 
	if (v=='show') MM_swapImage('h'+args[i],'','/img/menu/ih'+args[i]+'.gif',1); 
	}
}

function MM_swapImage() { //v3.0
  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 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() { //v3.0
  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];}}
}

MM_preloadImages(
'/img/menu/vmenosh.gif',
'/img/menu/vmash.gif',
'/img/menu/vnoh.gif',
'/img/menu/vnos.gif',
'/img/menu/vmenoss.gif',
'/img/menu/vmass.gif');


// Menú izq



var bV=parseInt(navigator.appVersion);
NS4=(document.layers) ? true : false;
IE4=((document.all)&&(bV>=4))?true:false;
ver4 = (NS4 || IE4) ? true : false;
modokjwed=false;

function expandIt(){return}
function expandAll(){return}

function menudina() { //v3.0
  var i,p,v,obj,args=menudina.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style;}
   // obj.display=v; 
	
	if ((v=="none") || (v=="block")) {
		obj.display=v;
	}else{
		if (obj.display!="block"){
			obj.display="block"; 
			MM_swapImage(args[i+1],'','/img/menu/vmenos'+args[i+2]+'.gif',1);
			if(args[i+3]) intervars=intervars+"&"+args[i+3]+"=1";
		}else{
			obj.display="none";
			MM_swapImage(args[i+1],'','/img/menu/vmas'+args[i+2]+'.gif',1);
			if(args[i+3]) intervars=intervars+"&"+args[i+3]+"=0";
			//alert (args[i+1]+',/img/menu/vmas'+args[i+2]+'.gif');
		}
	}
  }
}
function menudin() { //v3.0
  var i,p,v,obj,args=menudin.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style;}
   // obj.display=v; 
	
	if ((v=="none") || (v=="block")) {
		obj.display=v;
	}else{
		if (obj.display!="block"){
			obj.display="block"; 
			MM_swapImage(args[i+1],'','/img/'+args[i+3]+'/vmenos'+args[i+2]+'.gif',1);
		}else{
			obj.display="none";
			MM_swapImage(args[i+1],'','/img/'+args[i+3]+'/vmas'+args[i+2]+'.gif',1);
			//alert ('/img/'+args[i+3]+'/vmas'+args[i+2]+'.gif');
		}
	}
  }
}


lastmenuclick=new Date();

function mo(arg){
	var id=arg+"_mo";
	id=document.getElementById(arg+"_mo");
	if(!id) return;
	var alink=id.getElementsByTagName("a");
	
	switch(alink[0].id){
		case "menu_tree_home":
			alink[0].id="menu_tree_selected_home";
			break;
		case "menu_tree_inact":
			alink[0].id="menu_tree_selected_inact";
			break;
		default:
			alink[0].id="menu_tree_selected";
	}

	m_o(arg+"_mo","block",true);
}
function m_o(arg,disp,tree){//disp="block";
	var id, idd, imag;
	if(arg===undefined) return;
	if(arg.id!==undefined) id=arg;
	else {
		id=document.getElementById(replace(arg,"_mo","_ul"));
		if(!id) id=document.getElementById(arg);
	}
	if(id)if(id.id.indexOf("_ul")>0){
		if (id.style) idd=id.style;
		else idd=id;
		if (!disp) disp=(idd.display!="block"?"block":"none");
		idd.display=disp;
			idd=id.parentNode.getElementsByTagName("img");
			imag=idd[0].src;
		if(disp=="block"){
			idd[0].src=replace(imag,"mas","menos");
		}else {
			idd[0].src=replace(imag,"menos","mas");
		}
	}
	if(id)if(id!==undefined && tree && id.id!="menu_tree") m_o(id.parentNode,disp,tree);
}


function escribe(id,txt) {
	var obj=document.getElementById(id);
	if(txt=="WAIT") txt='<img src="img/ed/loading.gif" width="95" height="43" vspace="200" />';	 
  	if (obj) {
		document.getElementById(id).innerHTML=txt;
	}
}


function isEmail (email, bEmptyOK) {
	reEmail = /^[A-Z, a-z, 0-9,_]+\.{0,1}[A-Z, a-z, 0-9,_]+\@[A-Z, a-z, 0-9,_]+\.[A-Z, a-z, 0-9,_]+/;
	if (trim(email)!="" && !reEmail.test(email)) { 
		if (bEmptyOK) return true;
		else return false;
	}
	return true;
} 

pey_max=20;
pey_cont=0;
function pey(msg,n) { 
  if(n) pey_max=n;
  if(pey_cont++ < pey_max) alert (msg);
  if(pey_cont== pey_max) alert (" ... ");
}

function MM_displayStatusMsg(msgStr) { //v1.0
  status=msgStr;
  document.MM_returnValue = true;
}

function ifonload() { 
  if (window.onloadfn == null){
  	//******
  }else onloadfn();
}

function ifonunload() { 
  if (window.onunloadfn == null){
  	//******
  }else onunloadfn();
}

function ifcheckform(form) { 
  if (eval("window.checkform_"+form.name) == null){
		return (true);
  	//******
  }else return (eval("window.checkform_"+form.name+"();"));
}

function addproduct(doc,prd,en){
	if (!en) en="";
	var sel='&addprd'+en+'='+prd+"||";
	var ok=true;
	lng=prd.length;
	for (var i=0; i<document.formshop.length; i++){
		nelmnt=document.formshop.elements[i].name;
		if (nelmnt.substring(0,lng+4)=="intv"+prd) {
			suf=nelmnt.substring(lng+6);
			nint="inte"+document.formshop.elements[i].name.substring(4);
			nintv=eval("document.formshop."+nint+".value");
			nelmntv=eval("document.formshop."+nelmnt+".value");
			if(nelmntv.substring(0,1)=="&")ok=false;
			sel+=escape(nint)+":"+escape(nintv)+"|"+escape(nelmnt)+":"+escape(nelmntv)+"|";
			
			ncant="cant"+document.formshop.elements[i].name.substring(4);
			if(eval("document.formshop."+ncant)){
				ncantv=eval("document.formshop."+ncant+".value");
				sel+="&addqty="+ncantv;
			}
		} 
	} 
	//alert (sel);
	if (ok) ve(doc+sel);
	else alert("Please, fill the fields");
}

function chkinte(box,hid) { 
  hid.value=(box.checked?'1':'0');
}

function selinte(box,hid,fn) {
  hid.value=box.value;
  if(fn) eval(fn.replace("##box##","'"+box.value+"'"));
}


function radinte(box,hid){ 
    var i 
    for (i=0;i<box.length;i++){ 
       if (box[i].checked) {
			hid.value=box[i].value;
			break; 
	   }
    } 
} 

modificado=false;

function simodif() { 
	modificado=true;
	//alert ("****");
}

function modifilist(sel,hid,cod){
	hid.value=',';
	for (i=0; i<sel.length; i++) { 
		if (sel.options[i].selected == true){
			hid.value+=cod+sel.options[i].value+",";
		} 
	} 
}





function GetLeft(obj){   
    if (obj.offsetParent) return (obj.offsetLeft + GetLeft(obj.offsetParent));   
    else return obj.offsetLeft;   
}   
function GetTop(obj) {   
    if (obj.offsetParent) return (obj.offsetTop + GetTop(obj.offsetParent));   
    else return (obj.offsetTop);   
}  
function GetWidth(obj){ 
    return (obj.clientWidth);   
}   
function GetHeight(obj) { 
    return (obj.clientHeight);   
} 

function getDocWidth(){
	return (document.all? getTrueBody().scrollLeft+getTrueBody().clientWidth : pageXOffset+window.innerWidth-15);
}

function getDocHeight(){
	return (document.all? Math.min(getTrueBody().scrollHeight, getTrueBody().clientHeight) : Math.min(window.innerHeight));
}

function getTrueBody(){
	return ( (!window.opera && document.compatMode && document.compatMode!="BackCompat") || window.opera)? document.documentElement : document.body
}



function replace(texto,s1,s2){
	if(typeof texto=="string"){
		texto=texto.split(s1);
		texto=texto.join(s2);
	}
	return texto
}



function nada(){}


//********************************** Calendario **************************************

fecha= new Date; 
//alert(fecha);
var cal_endario = { 
  id: Math.random(),
  fecha: new Date,
  dia  : fecha.getDate(), 
  mes  : fecha.getMonth(), 
  anio : fecha.getFullYear(),  
  semana: ['Mo','Tu','We','Th','Fr','Sa','Su'], 
  meses: ["January","February","March","April","May","June","July","August","September","October","November","December"], 
  eventos: [],
  msdia: 24 * 60 * 60 * 1000,
  fnc: "nada",
  fne: "nada",
  br: "",//"<br />"
  hoy  : function (set) { 
	var fechahoy= new Date; 
	fechahoy=fecha.getDate()+"/"+(1+fecha.getMonth())+"/"+fecha.getFullYear();
	this.eventua_1(fechahoy,"Hoy");  
	if (set) this.set(fechahoy);
  },
  set  : function (d,m,a) { 
  	if( typeof d == "string"){ 
		if(d.indexOf('/')> -1){
			d=d.split("/");
			m=1*d[1];
			a=1*d[2];
			d=1*d[0];
		} else if(d.indexOf('-')> -1){// 2008-10-25
			d=d.split("-");
			m=1*d[1];
			a=1*d[0];
			d=1*d[2];
		}
	}
  	if(d) this.dia=d;
  	if(m) this.mes=0-1+m;
  	else if(m==0)this.mes=0-1;
  	if(a) this.anio=a;
	this.fecha=new Date(this.anio,this.mes,this.dia);
	this.dia  = this.fecha.getDate();
	this.mes  = this.fecha.getMonth(); 
	this.anio = this.fecha.getFullYear();
  },
  fn  : function (fn,ev) {  
	if(ev) this.fne  = fn;
	else this.fnc  = fn;
  },
  calendario_inner: function (m,a) { 
  	this.set(0,m,a);
	return(this.mesiario()+this.br+this.semanario()+this.br+this.diario());
  },
  calendario: function (m,a) { 
	this.id=Math.random();
  	this.set(0,m,a);
	return('<div class="cal_calend" id="'+this.id+'" title="'+(1+this.mes)+"_"+this.anio+'">'+this.calendario_inner(m,a)+"</div>");
  },
  mesiario: function () { 
    return('<div class="cal_month_line"><span onclick="cal_endario.anterior(\''+this.id+'\')">&lt;&lt;</span><span style="width:100px">'+this.meses[this.mes]+' '+this.anio+'</span><span onclick="cal_endario.siguiente(\''+this.id+'\')">&gt;&gt;</span></div>'); 
  },
  semanario: function () { 
    return('<div class="cal_week_line"><span>'+this.semana.join('</span><span>')+'</span></div>'); 
  },
  diario: function () { 
  	var dias,i,fn,fnc;
  	var ini_semana=this.dia_semana(1,this.mes,this.anio);
	var dias_mes=this.dias_mes(this.mes,this.anio);
	var fin_semana=this.dia_semana(dias_mes,this.mes,this.anio);
	var fecha="";
	var auxid="";
	var dias_mes_ant=this.dias_mes(this.mes-1,this.anio);
	
	dias="";
	while(--ini_semana){
		dias=dias+'<span class="cal_days_out">'+(dias_mes_ant-ini_semana+1)+"</span>";
	}
	var estemes=this.mes+1;
	for (i=1; i<=dias_mes; i++){
		fecha=i+"/"+estemes+"/"+this.anio;
		if(this.fnc) fnc=this.fnc.replace("#fecha#", fecha).replace("#id#", this.auxid).replace("#cal_id#", this.id);
		else fnc="";
		if(this.eventos[fecha]) {
			fn=(this.fne?this.fne.replace("#fecha#", fecha).replace("#id#", this.auxid).replace("#cal_id#", this.id):"");
			switch(this.eventos[fecha]){
				case "Hoy":
					clase=' class="cal_today" ';
					fn=fnc;
				break;
				case "S":
					clase=' class="cal_selec" ';
				break;
				case 1:
					clase=' class="cal_event" ';
				break;
				case 2:
					clase=' class="cal_event2" ';
				break;
				default:
					clase=' class="cal_event3" ';
				break;
			}
		}else {
			clase="";
			fn=(this.fnc?fnc:"");
		}
		dias=dias+'<span onclick="'+fn+'" '+clase+'>'+i+'</span>';
	}
	i=1;
	while(fin_semana++<7){
		dias=dias+'<span class="cal_days_out">'+ i++ +"</span>";
	}
    return('<div class="cal_days_line">'+dias+'</div>'); 
  },
  dias_mes: function (m,a) { 
    var fin_mes=new Date(a, m, 32);
	return(32-fin_mes.getDate());
  },
  dia_semana: function (d,m,a) { 
    var fecha=new Date(a, m, d);
	var dia=fecha.getDay();
	if(!dia)dia=7;
	return(dia);
  },
  refresca: function (id) { 
    var obj=document.getElementById(id);
	var fecha=obj.title;	
	this.id=id;
	fecha=fecha.split("_");
  	this.set(0,1*fecha[0],1*fecha[1]);
	obj.innerHTML=this.calendario_inner();
	obj.title=(1+this.mes)+"_"+this.anio;
  },
  anterior: function (id) { 
    var obj=document.getElementById(id);
	var fecha=obj.title;	
	this.id=id;
	fecha=fecha.split("_");
  	this.set(0,(1*fecha[0])-1,1*fecha[1]);
	obj.innerHTML=this.calendario_inner();
	obj.title=(1+this.mes)+"_"+this.anio;
  },
  siguiente: function (id) { 
    var obj=document.getElementById(id);
	var fecha=obj.title;	
	this.id=id;
	fecha=fecha.split("_");
  	this.set(0,1+(1*fecha[0]),1*fecha[1]);
	obj.innerHTML=this.calendario_inner();
	obj.title=(1+this.mes)+"_"+this.anio;
  },
  eventua_1: function (fecha,tipo) { 
  	//alert(fecha+", "+tipo);
  	if(tipo) {
		switch(tipo){
			case "del":
				delete this.eventos[fecha];
				break;
			default:
				this.eventos[fecha]=tipo;
		}
	}else if(this.eventos[fecha]) {
		if(typeof this.eventos[fecha]=="number") this.eventos[fecha]++;
		if(this.eventos[fecha]=="Hoy") this.eventos[fecha]=1;
	}else this.eventos[fecha]=1;
  },
  eventua: function (fecha,final,tipo) { 
  	var nd,nd_fecha,nd_final,fecha_i;
	if(fecha=="vaciar"){
		this.eventos=new Array();
		return;
	}
	if(fecha.indexOf(',')==-1){
		fecha=fecha.split("/");
		fecha[0]=1*fecha[0];
		fecha[1]=1*fecha[1];
		fecha[2]=1*fecha[2];
		if(final){
			nd_fecha=new Date(fecha[2],fecha[1]-1,fecha[0]);
			nd_fecha=Math.round(nd_fecha.getTime()/this.msdia);
			final=final.split("/");
			final[0]=1*final[0];
			final[1]=1*final[1];
			final[2]=1*final[2];
			nd_final=new Date(final[2],final[1]-1,final[0]);
			nd_final=Math.round(nd_final.getTime()/this.msdia);
			nd=nd_final-nd_fecha;
			for (i=0; i<=nd; i++){
				fecha_i=new Date(fecha[2],fecha[1]-1,i+fecha[0]);
				this.eventua_1(fecha_i.getDate()+"/"+(1+fecha_i.getMonth())+"/"+fecha_i.getFullYear(),tipo);			
			}
		}else this.eventua_1(fecha.join("/"),tipo);
	}else{	
		fecha=fecha.split(",");
		for (n in fecha) this.eventua(fecha[n]);
	}
  },
  leeventos: function (tipo) {
  	var res="";
  	switch (tipo){
		case "S":
			for (n in this.eventos){
				if(this.eventos[n]==tipo) res=res+n+",";
			}
		break;
		default:
			for (n in this.eventos){
				if(typeof this.eventos[n]=="number" && n.indexOf("NaN")== -1) res=res+n+",";
			}
	}
	return(res);
  }
  
}
function pgin(id,n,nsel,plnt,plntsel,intro,nc,ne){
	if(!nc) nc=7;
	if(!ne) ne=2;
	if(!n) n=1;
	if(!nsel) nsel=1;
	if(!intro) intro="";
	var htm='<span class="ccc">'+intro+'</span>';
	var nai=Math.floor(nc/2);// bloque central
	var naf=Math.ceil(nc/2);// bloque central
	var ni=ne;// primer bloque
	var nf=ne;// último bloque
	var ci=nsel-nai;// inicio bloque central
	var cf=nsel+naf-1;// final bloque central
	if(nsel-nai<=ne+2) {ni=0;ci=1;}
	if(nsel+naf>=n-2) {nf=0;cf=n}
	if (ci<=0) {ci=1;}
	if (cf>=n) {cf=n;}
	if (ci>n-nc+1) {ci=n-nc+1;}
	if (cf<nc) {cf=nc;}
	if(!plnt) plnt='<a href="pgin#.htm">#</a>';
	if(!plntsel) plntsel='<a href="pgin#.htm" class="sel">#</a>';//plntsel=plnt;
	id=document.getElementById(id);
	var i;
	if(ni){
		for (i=1;i<=ni;i++){
			if(i==nsel) htm+=plntsel.replace(/#/g,i);
			else htm+=plnt.replace(/#/g,i);
		}
		htm+='<span class="ccc">&nbsp;...&nbsp;</span>';
	}
	for (i=ci;i<=cf;i++){
		if(i==nsel) htm+=plntsel.replace(/#/g,i);
		else htm+=plnt.replace(/#/g,i);
	}
	if(nf){
		htm+='<span class="ccc">&nbsp;...&nbsp;</span>';
		for (i=n-nf+1;i<=n;i++){
			if(i==nsel) htm+=plntsel.replace(/#/g,i);
			else htm+=plnt.replace(/#/g,i);
		}
	}
	id.innerHTML=htm;
}