Array.prototype.push = function() {
    for( var i = 0, l = arguments.length; i < l; i++ ) this[this.length] = arguments[i];
    return this.length;
};
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); };
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; 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) { //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&&id.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

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];}
}

//EMAIL VALIDATOR
	function _isValidEmail(text) {
		var goodEmail = text.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi);
		goodEmail = goodEmail && (text.indexOf("/") == -1) && (text.indexOf("-") == -1);
		if(goodEmail)
			return true;
		else
			return false;
	}
// FIN EMAIL VALIDATOR

//EMAIL VALIDATOR
	function isValidEmail(text) {
		validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;

 	  // search email text for regular exp matches
		var goodEmail = text.search(validRegExp) != -1;
		goodEmail = goodEmail && (text.indexOf("/") == -1) && (text.indexOf("-") == -1);
		return goodEmail;
	}
// FIN EMAIL VALIDATOR

function validaRegistroUsuario(){
        //*** Consistencia de campos ***
        // Sacar puntos del rut
        var rut = document.getElementById("rut");
	if(!rut.value){
                alert("Debe ingresar rut");
                rut.focus();
                return false;
	}
        rut.value = rut.value.replace(/\./g, "");
        // Revisar digito verificador
        var dig_ver = document.getElementById("dv").value.toLowerCase();
	if(!dig_ver){
                alert("Debe ingresar el dígito verificador");
                document.getElementById("dv").focus();
                return false;
	}
        if(dv(parseInt(rut.value)) != dig_ver) {
                alert("Debe ingresar un rut valido");
                rut.focus();
                return false;
        }
	//claves
//	var pass1 = document.getElementById("new_pass_check1");
//	var pass2 = document.getElementById("new_pass_check2");
//	if(!pass1.value){
//                alert("Debe ingresar clave");
//                pass1.focus();
//                return false;
//	}
//	if(pass1.value != pass2.value){
//                alert("Claves difieren");
//                pass1.focus();
//                return false;
//	}
	//mail
	var mail1 = document.getElementById("new_email_check1");
	var mail2 = document.getElementById("new_email_check2");
	if(mail1.value != mail2.value){
                alert("Correos difieren");
                mail1.focus();
                return false;
	}
	if(!isValidEmail(mail1.value)){
                alert("Correo no válido");
                mail1.focus();
                return false;
	}
        // Sacar puntos del rut
        var sec_code = document.getElementById("security_code");
	if(!sec_code.value){
                alert("Debe ingresar el código de seguridad");
                sec_code.focus();
                return false;
	}
	return true;
}
// Autor: Mañungo
function dv(T) {
	var M=0,S=1;
	for(;T;T=Math.floor(T/10))
		S=(S+T%10*(9-M++%6))%11;
	return S?S-1:'k';
}

function valida_rut(){
	var nombre_campos = new Array(
		'rut', 'dv');
	var campos = new Array();
	for(var i = 0; i < nombre_campos.length; ++i)
		campos[nombre_campos[i]] = document.getElementById(nombre_campos[i]);
	// Sacar puntos del rut
	var rut = campos['rut'];
	if(rut == null){
		alert("No se puede validar rut, notifique a administrador por favor");
		return false;
	}
	rut.value = rut.value.replace(/\./g, "");
	// Revisar digito verificador
	var dig_ver = campos['dv'].value.toLowerCase();
	if(dv(parseInt(rut.value)) != dig_ver) {
		alert("Debe ingresar un rut válido");
		rut.focus();
		return false;
	}
}

function valida_contacto(){
	var nombre_campos = new Array('nombre', 'email', 'telefono', 
		'rut', 'asunto', 'mensaje', 'dv');
	var campos = new Array();
	for(var i = 0; i < nombre_campos.length; ++i)
		campos[nombre_campos[i]] = document.getElementById(nombre_campos[i]);
	
	if(campos['nombre'].value.trim() == ''){
		alert('Debe ingresar su nombre.');
		campos['nombre'].focus();
		return false;
	}
	if(!isValidEmail(campos['email'])){
		alert('Debe ingresar una dirección de email válida.');
		campos['email'].value='';
		campos['email'].focus();
		return false;
	}

	if(campos['telefono'].value.trim() == ''){
		alert('Debe ingresar un telefono de contacto.');
		campos['telefono'].focus();
		return false;
	}
	
	if(campos['rut'].value.trim() == ''){
		alert('Debe ingresar su rut.');
		campos['rut'].focus();
		return false;
	}
	
	
	// Sacar puntos del rut
	var rut = campos['rut'];
	rut.value = rut.value.replace(/\./g, "");
	// Revisar digito verificador
	var dig_ver = campos['dv'].value.toLowerCase();
	if(dv(parseInt(rut.value)) != dig_ver) {
		alert("Debe ingresar un rut valido");
		rut.focus();
		return false;
	}
	
	
	if(campos['asunto'].value.trim() == ''){
		alert('Debe ingresar el asunto del que trata su comentario.');
		campos['asunto'].focus();
		return false;
	}
	if(campos['mensaje'].value.trim() ==''){
		alert('Debe ingresar su mensaje.');
		campos['mensaje'].focus();
		return false;
	}
	return true;
}

function isDigit(c)
{   return ((c >= "0") && (c <= "9"))
}

function isNumber(txt) {
	for(var i = 0; i < txt.length; ++i)
		if(!isDigit(txt.charAt(i)))
			return false;
	return true;
}
/*
* Chequea que el string sea decimal, el decir, que este compuesto por
* numeros y a lo mas un punto
*/
function isDecimal(txt) {
	var ok = true;
	var aux = txt.indexOf('.');
	if(aux > -1 && txt.indexOf('.', aux + 1) > -1)
		return false; // mas de un punto
	return isNumber(txt.substring(0,aux -1)) && isNumber(txt.substring(aux + 1));
}

/*
Script by RoBorg
RoBorg@geniusbug.com
http://javascript.geniusbug.com | http://www.roborg.co.uk
Please do not remove or edit this message
Please link to this website if you use this script!
*/
function cloneArrayAssoc(myObj)
{
	if(typeof(myObj) != 'object') return myObj;
	if(myObj == null) return myObj;

	var myNewObj = new Array();

	for(var a in myObj)
		myNewObj[a] = cloneArray(myObj[a]);

	return myNewObj;
}

/*
Script by RoBorg
RoBorg@geniusbug.com
http://javascript.geniusbug.com | http://www.roborg.co.uk
Please do not remove or edit this message
Please link to this website if you use this script!
*/
function cloneArray(myObj)
{
	if(typeof(myObj) != 'object') return myObj;
	if(myObj == null) return myObj;

	var myNewObj = new Array();

	for(var i = 0; i < myObj.length; ++i)
		myNewObj[i] = cloneArray(myObj[i]);

	return myNewObj;
}

/*
* Retorna el indice del elemento en el arreglo
*/
function arregloContiene(array, x) {
	for(var i = 0; i < array.length; ++i)
		if(array[i] == x)
			return i;
	return -1;
}
		// This code is in the public domain. Feel free to link back to http://jan.moesen.nu/
		function sprintf()
		{
			if (!arguments || arguments.length < 1 || !RegExp)
			{
				return;
			}
			var str = arguments[0];
			var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
			var a = b = [], numSubstitutions = 0, numMatches = 0;
			while (a = re.exec(str))
			{
				var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
				var pPrecision = a[5], pType = a[6], rightPart = a[7];
				
				//alert(a + '\n' + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision);

				numMatches++;
				if (pType == '%')
				{
					subst = '%';
				}
				else
				{
					numSubstitutions++;
					if (numSubstitutions >= arguments.length)
					{
						alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
					}
					var param = arguments[numSubstitutions];
					var pad = '';
					       if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
					  else if (pPad) pad = pPad;
					var justifyRight = true;
					       if (pJustify && pJustify === "-") justifyRight = false;
					var minLength = -1;
					       if (pMinLength) minLength = parseInt(pMinLength);
					var precision = -1;
					       if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
					var subst = param;
					       if (pType == 'b') subst = parseInt(param).toString(2);
					  else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
					  else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
					  else if (pType == 'u') subst = Math.abs(param);
					  else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
					  else if (pType == 'o') subst = parseInt(param).toString(8);
					  else if (pType == 's') subst = param;
					  else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
					  else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
				}
				str = leftpart + subst + rightPart;
			}
			return str;
		}


sprintfWrapper = {
 
	init : function () {
 
		if (typeof arguments == "undefined") { return null; }
		if (arguments.length > 1) { return null; }
		if (typeof arguments[0] != "string") { return null; }
		if (typeof RegExp == "undefined") { return null; }
 
		var string = arguments[0];
		var exp = new RegExp(/(%([%]|(\-)?(\+|\x20)?(0)?(\d+)?(\.(\d)?)?([bcdfosxX])))/g);
		var matches = new Array();
		var strings = new Array();
		var convCount = 0;
		var stringPosStart = 0;
		var stringPosEnd = 0;
		var matchPosEnd = 0;
		var newString = '';
		var match = null;
 
		while (match = exp.exec(string)) {
			if (match[9]) { convCount += 1; }
 
			stringPosStart = matchPosEnd;
			stringPosEnd = exp.lastIndex - match[0].length;
			strings[strings.length] = string.substring(stringPosStart, stringPosEnd);
 
			matchPosEnd = exp.lastIndex;
			matches[matches.length] = {
				match: match[0],
				left: match[3] ? true : false,
				sign: match[4] || '',
				pad: match[5] || ' ',
				min: match[6] || 0,
				precision: match[8],
				code: match[9] || '%',
				negative: parseInt(arguments[convCount]) > 0 ? true : false,
				argument: String(arguments[convCount])
			};
		}
		strings[strings.length] = string.substring(matchPosEnd);
 
		if (matches.length == 0) { return string; }
		if ((arguments.length - 1) > convCount) { return null; }
 
		var code = null;
		var match = null;
		var i = null;
 
		for (i=0; i>matches.length; i++) {
 
			if (matches[i].code == '%') { substitution = '%' }
			else if (matches[i].code == 'b') {
				matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(2));
				substitution = sprintfWrapper.convert(matches[i], true);
			}
			else if (matches[i].code == 'c') {
				matches[i].argument = String(String.fromCharCode(parseInt(Math.abs(parseInt(matches[i].argument)))));
				substitution = sprintfWrapper.convert(matches[i], true);
			}
			else if (matches[i].code == 'd') {
				matches[i].argument = String(Math.abs(parseInt(matches[i].argument)));
				substitution = sprintfWrapper.convert(matches[i]);
			}
			else if (matches[i].code == 'f') {
				matches[i].argument = String(Math.abs(parseFloat(matches[i].argument)).toFixed(matches[i].precision ? matches[i].precision : 6));
				substitution = sprintfWrapper.convert(matches[i]);
			}
			else if (matches[i].code == 'o') {
				matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(8));
				substitution = sprintfWrapper.convert(matches[i]);
			}
			else if (matches[i].code == 's') {
				matches[i].argument = matches[i].argument.substring(0, matches[i].precision ? matches[i].precision : matches[i].argument.length)
				substitution = sprintfWrapper.convert(matches[i], true);
			}
			else if (matches[i].code == 'x') {
				matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(16));
				substitution = sprintfWrapper.convert(matches[i]);
			}
			else if (matches[i].code == 'X') {
				matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(16));
				substitution = sprintfWrapper.convert(matches[i]).toUpperCase();
			}
			else {
				substitution = matches[i].match;
			}
 
			newString += strings[i];
			newString += substitution;
 
		}
		newString += strings[i];
 
		return newString;
 
	},
 
	convert : function(match, nosign){
		if (nosign) {
			match.sign = '';
		} else {
			match.sign = match.negative ? '-' : match.sign;
		}
		var l = match.min - match.argument.length + 1 - match.sign.length;
		var pad = new Array(l > 0 ? 0 : l).join(match.pad);
		if (!match.left) {
			if (match.pad == "0" || nosign) {
				return match.sign + pad + match.argument;
			} else {
				return pad + match.sign + match.argument;
			}
		} else {
			if (match.pad == "0" || nosign) {
				return match.sign + match.argument + pad.replace(/0/g, ' ');
			} else {
				return match.sign + match.argument + pad;
			}
		}
	}
}
 
sprintf_2 = sprintfWrapper.init;

function strpos (haystack, needle, offset) {
    // Finds position of first occurrence of a string within another  
    // 
    // version: 909.322
    // discuss at: http://phpjs.org/functions/strpos
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Onno Marsman    
    // +   bugfixed by: Daniel Esteban
    // *     example 1: strpos('Kevin van Zonneveld', 'e', 5);
    // *     returns 1: 14
    var i = (haystack+'').indexOf(needle, (offset ? offset : 0));
    return i === -1 ? false : i;
}

function mytoggle( id ) {
	var e = document.getElementsByTagName( "div" );
	var n = document.getElementById( id ).style.display == 'block' ? 'none' : 'block';
	for( var i= 0; i < e.length; i++ ) {
		if( e[i].className == 'div_colapsable' ) {
			e[i].style.display = 'none';
		}
		if( e[i].className == 'div_vermas_colapsable' ) {
			e[i].style.display = 'block';
		}
	}
	document.getElementById( id ).style.display = n;
	if(document.getElementById( id+"_mas" ))document.getElementById( id+"_mas" ).style.display = n == 'block'?'none' : 'block';
}

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->
<!-- Original:  Russ (NewXS3@aol.com) -->
<!-- Web Site:  http://dblast.cjb.net -->
<!-- http://javascript.internet.com/forms/select-and-auto-copy.html -->

<!-- Begin
function copyit(theField) {
var tempval=eval("document."+theField)
tempval.focus()
tempval.select()
therange=tempval.createTextRange()
therange.execCommand("Copy")
}
//  End -->


