
//GENERICAS
// retorna un objeto con los valores pasados por GET
getQuery=function(){
	var i,eq,qs=location.search.substring(1), nv=qs.split('&'), o=[];
	for(i=0;i<nv.length;i++){
    	eq=nv[i].indexOf('=');
    	o[nv[i].substring(0,eq).toLowerCase()]=unescape(nv[i].substring(eq+1));
	}return(o);
}

//Cookies
//Deja  uan cookie :: sName es un string, oValue es un objeto,nVida en Horas
function setCookie(sName,sValue,nVida){
  var i,a=[],ex="",e="";
  if(nVida!=null) {
    ex=new Date((new Date()).getTime() + nVida * 3600000);
    ex="; expires=" + ex.toGMTString();
  }
  document.cookie=sName+"="+escape(sValue)+ex;
}

//devuelve el valor de esa cookie
function getCookie(sName){
	try{
		var d=document,c=unescape(d.cookie),bgin=sName+"=";
		return c.split(bgin)[1].split(";")[0];
	}catch(e){return false;}
}

function getCombo(oCombo){return(oCombo.options[oCombo.options.selectedIndex].value)}

//CADENAS------------------------------------------------------------------------------------------------------------------------
function l_trim(s){	while(s.indexOf(" ")==0)s=s.substring(1);return(s);}//anula los espacios por la izq
function r_trim(s){while(s.length && s.lastIndexOf(" ")==s.length-1)s=s.substring(0,s.length-1);return(s);}//anula los espacios por la izq
function trim(s){if(!s) return ""; return(l_trim(r_trim(s)));}//anula los espacios en dcha e izq
function contain(s,c){return(s.indexOf(c)!=-1);}
function capitalice(s){	return(s.charAt(0).toUpperCase() + s.substring(1).toLowerCase())}
function isEmail(s){var e=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,5})+$/; return(e.test(s))}
function isUrl(s){e=new RegExp(/\b(http:\/\/)?(\w+\.)+[a-z]{2,3}/); return(e.test(s))}
function isNumber(s){e=new RegExp(/\d+/); return(e.test(s))}
function isTelephone(s){e=new RegExp(/\b(\+\d{1,3})?\d{9}\b/);return(e.test(s))}
function isZip(s){return new RegExp(/\d{5}/).test(s)}
function isInArray(a,o){for(var i in a)if(a[i]==o)return true;return false;}
function isLeapYear(y){return(y%4==0 && y%100==0);}

//valido mes y dia(sin bisiestos)
function isMonth(mm,dd){
	var largos=[1,3,5,7,8,10,12];
	if(mm.length>2 || dd.length>2 || (!isInArray(largos,mm) && dd>30) || (mm==2 && dd>29))	return false;
	return true;
}

//valido Aņo, mes y dia (incluidos bisiestos)
function isDate(aaaa,mm,dd){
	if(aaaa.length>4 || !isMonth(mm,dd) || (mm==2 && !isLeapYear(aaaa) && dd>28))return false;
	return true;
}

//BOOLEANAS------------------------------------------------------------------------------------------------------------------------
function is_string(s){return s.constructor.toString().match(/String/)};
function is_checkbox(oCampo){return(oCampo.type=='checkbox')}
function is_radio(oCampo){return(oCampo.type=='radio')}
function is_combo(oCampo){return(oCampo.type=='select-one')}
function is_list(oCampo){return(oCampo.type=='select-multiple')}
function is_txt(oCampo){var t=oCampo.type; return(t=="text" || t=="textarea" || t=="password")}
function is_txtarea(oCampo){return(oCampo.type=='textarea')}
function is_hidden(oCampo){return(oCampo.type=='hidden')}
function ok_combo(oCombo){return hasValue(getCombo(oCombo))}
function ok_list(oList){return(oList.options.selectedIndex!=-0)}
function ok_txt(oText){return hasValue(oText.value)}
function ok_hidden(oHidden){return(oHidden.value!='');}
function hasValue(v){return((v!="")&&(v!=null)&&(v!=false)&&(v!="undefined"));}//Una variable tiene valor??


/*
//Dado un objeto, retorna si pertenece a esa clase
function instanceOf(object, constructorFunction) {
  while (object != null){
  	if (object == constructorFunction.prototype) return true;
    object = object.__proto__;
  } return false;
}
*/




//FORMULARIOS ----------------------------------------------------------------------------------------
//Marca un campo con una clase css
function highLightField(oCampo,sClase){
	var prevClass=oCampo.className; //guardo el estilo original del campo del formulario
	oCampo.className=sClase;
	oCampo.onblur=function(){this.className=prevClass;}
}

//marca un campo, le da foco ,alerta un mensaje y retorna falso
function setFormError(oCampo,sMnsj,sClase){
	if(sClase)highLightField(oCampo,sClase);
	alert(sMnsj);
	if(oCampo.focus)oCampo.focus();
	return false;
}

//Da trim() al valor de un campo
function trimTextField(o){try{o.value=trim(o.value)}catch(e){return false}}

//Dado un formulario, da trim() al valor de todos los campos de un formulario
function megaTrimForm(f){
	var i,t,a=f.getElementsByTagName("input");
	for(i in a){t=a[i].type; if(is_txt(a[i])) trimTextField(a[i]);}
}


//deuelve el codigo de las opciones de un combo con los dias del mes 
getComboDay = function(total,selected){
	var i,std="",s="",total=(total||31);
	for(i=1;i<=total;i++){
		std=(selected && selected==i)? 'selected' : '';
		s+=('<option '+std+' value="'+i+'">'+i+'</option>');
	}
	return s;
}

//deuelve el codigo de las opciones de un combo con los meses del aņo 
getComboMonth = function(selected){
	if(!hasValue(meses))meses=["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"];
	var i,std="",s="",total=meses.length;
	for(i=1;i<=total;i++){
		std=(selected && selected==i)? 'selected' : '';
		s+=('<option '+std+' value="'+i+'">'+meses[i-1]+'</option>');
	}
	return s;
}

//deuelve el codigo de las opciones de un combo con los meses del aņo 
getComboYear = function(minYear,maxYear,selected){
	var i,std="",s="";
	if(minYear>maxYear){i=minYear; minYear=maxYear; maxYear=i;}
	for(i=minYear;i<=maxYear;i++){
		std=(selected && selected==i)? 'selected' : '';
		s+=('<option '+std+' value="'+i+'">'+i+'</option>');
	}
	return s;
}

//devuelve el codigo de flash. values es un objeto con las variables para pasar a flash
getFlash=function(movie,width,height,values){
	var i,s='',code='';
	if(values){for(i in values)s+=('&'+i+'='+values[i]);movie+='?'+s.substring(1);}	
	code+='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="'+ width +'" height="'+ height +'">';
	code+='<param name="movie" value="'+ movie +'">';
	code+='<param name="quality" value="high">';
	code+='<param name="allowScriptAccess" value="all">';
	code+='<embed src="'+ movie +'" width="'+ width +'" height="'+ height +'" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" scale="exactfit" ></embed></object>';
	return(code);
}

function openPop(theUrl,theName,theWidth,theHeight,scrollbars){
	scrollbars=(scrollbars)? 'Yes' : 'No';
	var centerX=screen.availWidth/2-theWidth/2 , centerY=screen.availHeight/2-theHeight/2;
	var theFeatures='menubar=no,status=no,location=no,resizable=no,left='+centerX+',top='+centerY+',scrollbars='+ scrollbars +',width='+theWidth+',height='+theHeight;
	var popWin=window.open(theUrl,theName,theFeatures);popWin.focus();
}


