Object.extend = function(dst, src){
	for(var i in src){
		dst[i]=src[i]	
	} return dst;
}

Object.extend(String.prototype,{
	stripTags: function() {
		return this.replace(/<\/?[^>]+>/gi, '');
	},
	include: function(pattern) {
		return this.indexOf(pattern) > -1;
	},
	camelize: function() {
		var parts = this.split('-'), len = parts.length;
		if (len == 1) return parts[0];
		
		var camelized = this.charAt(0) == '-'
		  ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
		  : parts[0];
		
		for (var i = 1; i < len; i++)
		  camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
		
		return camelized;
	},
	getStyle: function(element, style) {
		element = $(element);
		style = style == 'float' ? 'cssFloat' : style.camelize();
		var value = element.style[style];
		if (!value) {
		  var css = document.defaultView.getComputedStyle(element, null);
		  value = css ? css[style] : null;
		}
		if (style == 'opacity') return value ? parseFloat(value) : 1.0;
		return value == 'auto' ? null : value;
	},
	getOpacity: function(element) {
		return $(element).getStyle('opacity');
	},
	readAttribute: function(element, name) {
		element = $(element);
		if (Prototype.Browser.IE) {
		  var t = Element._attributeTranslations.read;
		  if (t.values[name]) return t.values[name](element, name);
		  if (t.names[name]) name = t.names[name];
		  if (name.include(':')) {
			return (!element.attributes || !element.attributes[name]) ? null :
			 element.attributes[name].value;
		  }
		}
		return element.getAttribute(name);
	},
	setStyle: function(element, styles) {
		element = $(element);
		var elementStyle = element.style, match;
		if (Object.isString(styles)) {
		element.style.cssText += ';' + styles;
		return styles.include('opacity') ?
		element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;
		}
		for (var property in styles)
		if (property == 'opacity') element.setOpacity(styles[property]);
		else
		elementStyle[(property == 'float' || property == 'cssFloat') ?
		  (elementStyle.styleFloat === undefined ? 'cssFloat' : 'styleFloat') :
			property] = styles[property];
		
		return element;
	},
	getDimensions: function(element) {
		element = $(element);
		var display = $(element).getStyle('display');
		if (display != 'none' && display != null) // Safari bug
		  return {width: element.offsetWidth, height: element.offsetHeight};
		
		// All *Width and *Height properties give 0 on elements with display none,
		// so enable the element temporarily
		var els = element.style;
		var originalVisibility = els.visibility;
		var originalPosition = els.position;
		var originalDisplay = els.display;
		els.visibility = 'hidden';
		els.position = 'absolute';
		els.display = 'block';
		var originalWidth = element.clientWidth;
		var originalHeight = element.clientHeight;
		els.display = originalDisplay;
		els.position = originalPosition;
		els.visibility = originalVisibility;
		return {width: originalWidth, height: originalHeight};
	},
	Trim: function(){
		return this.replace(new RegExp("^[\\s]+", "g"),"").replace(new RegExp("[\\s]+$", "g"),"");
	},
	isEmail: function(){
		return new RegExp(/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]{2,200}\.[a-zA-Z]{2,6}$/).test(this);	
	},
	isDate: function(){
		if( !new RegExp(/^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/).test(this) ) {return false;}
		var dt = this.split('/');
		var d = parseInt(dt[0]);
		if( d < 0 || d > 31 ){ return false; }
		var m = parseInt(dt[1]);
		if( m < 0 || m > 12 ){ return false; }
		var y = parseInt(dt[2]);
		if( y < 1000 ){ return false; }
		if( d > 28 && m == 2 && !dbisiesto(y) ){ return false; }
		return true;
	},
	isImage: function(){
		return new RegExp(/(\.jpg|\.jpeg|\.gif|\.png)$/).test(this.toLowerCase());
	},
	empty: function(){
		return this.Trim(this) == "";
	}
});

Object.extend(Object, {
	isElement: function(object) {
		return object && object.nodeType == 1;
	},
	isArray: function(object) {
		return object && object.constructor === Array;
	},
	isHash: function(object) {
		return object instanceof Hash;
	},
	isFunction: function(object) {
		return typeof object == "function";
	},
	isString: function(object) {
		return typeof object == "string";
	},
	isNumber: function(object) {
		return typeof object == "number";
	},
	isUndefined: function(object) {
		return typeof object == "undefined";
	}
});


var Nav = {
    IE:     !!(window.attachEvent && !window.opera),
    Opera:  !!window.opera,
    WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
    Gecko:  navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1,
    MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
};

function dbisiesto(year){ 
	return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) ? 1 : 0;
};


function $nf(number, decs, thsep, decsep){ var number, decs, thsep, decsep;
	var cd = new String(number);
	cd = cd.replace(/([^0-9|\.]+)/gi,'');
	var dc = decs ? decs : 0;
	if(dc>0 && !decsep && typeof(decsep)!== 'string' ){ decsep = '.'; }
	if(!thsep && typeof(thsep)!== 'string' ) thsep = ',';
	
	var dcs = '00';
	if( cd.indexOf('.') > -1 && cd.indexOf('.')<cd.length ){ dcs = cd.substring( cd.indexOf('.')+1, cd.length); cd = cd.substring(0,cd.indexOf('.')); }
	for(var i=cd.length, ns=[];i>0;i-=3){
		ns.unshift(cd.substring(i-3, cd.length));
		cd = cd.substring(0,cd.length-3);
	} if(dc>0){ dcs=dcs.substring(0,dc); if(dcs.length<dc){ dcs+=$str_repeat('0',dc-dcs.length-1); } dcs='.'+dcs; }
	return (ns.join(thsep)+dcs);
}
function $move(e,l,t){ var e,l,t;
	$(e).style.left = l + 'px';
	$(e).style.top = t + 'px';
	return;
}

function $hide(){
	for(var i=0;i<arguments.length;i++){
		$(arguments[i]).style.display='none';
	}
}

function $in_array(s,r){
	for(var i=0;i<r.length;i++){
		try{ if(r[i]==s){ return true; } }catch(e){}
	} return false;
}

function $show(){
	for(var i=0;i<arguments.length;i++){
		$(arguments[i]).style.display='block';
	}
}

function $switch_show(){
	for(var i=0;i<arguments.length;i++){
		$(arguments[i]).style.display=($(arguments[i]).style.display=='none'?'block':'none');
	}
}

function $hideandshow(){ var action = 'none';
	for(var i=0;i<arguments.length;i++){
		if( Object.isString(arguments[i]) && arguments[i]=='|'){ action='block'; continue; }
		$(arguments[i]).style.display=action;
	}
}

function $showandhidewReg(show,parent,type,reg){ var show,parent,type,reg;
	var els = $(parent).getElementsByTagName(type); var regx = new RegExp(eval("/"+reg+"/"));
	for(var i =0;i<els.length;i++){
		if(regx.test(els[i].getAttribute('id'))){
			$hide(els[i]);
		}
	}	$show(show);
}

function $str_repeat(s,x){ var rx="";
	for(var i=0;i<=x;i++) rx+= s;
	return rx;
}

function $only_numbers(e,t,f){ var e, t, f;
	var invalid_keys = [13,8,16,17,27,46,33,34,35,36,37,38,39,40,112,113,114,115,116,117,118,119,120,121,122,123];
	var e = e||window.event;
	var k = e.keyCode||e.which;
	if($in_array(k,invalid_keys)){return true;}else {
		if((!new RegExp(/([0-9])/).test(String.fromCharCode(k))&&f==false) || (!new RegExp(/([0-9|,|.])/).test(String.fromCharCode(k))&&f==true)){
			e.handled = true;
			return false;
		}
	}
	return true;
}

function $(element) {
  if (arguments.length > 1) {
    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
      elements.push($(arguments[i]));
    return elements;
  }
  if (Object.isString(element))
    element = document.getElementById(element);
  return element;
}

/* 
	options 
*/

function addOption(sel,value,text,checkE){ var sel, value, text, checkE = ( checkE ? true : false ), sel =$(sel);
		if( checkE ){
			for( var i =0; i < sel.options.length; i++ ){
				if( sel.options[i].value == value ){
					return false;
				}
			}
		}
		var nEl = document.createElement("option");
		nEl.setAttribute('value',value );
		var srd = document.createTextNode(text);
		nEl.appendChild(srd);	sel.appendChild(nEl);
		return true;
}

function eraseOptions(sel,replaces_sel){ var sel, replaces_sel;
	var replaces_sel = replaces_sel ? true : false;
	var sel = $(sel), dlt = [];
	if(replaces_sel){
		$("options_"+sel.getAttribute('id')).innerHTML = '';
	}
	for( var i =0; i < sel.options.length; i++ ){
		dlt.unshift(sel.options[i]);
	}
	if( dlt.length == 0 ){
		return false;
	}
	for( var i =0; i < dlt.length; i++ ){
		sel.removeChild(dlt[i]);
	}
	return true;
}


function wsonload(){
	var to_eval = new Array();
	wsonload.prototype.add = function(Item){ var Item;
		if(!Object.isArray(Item)){Item=[Item];}
		for(var i=0;i<Item.length;i++){
			to_eval.unshift(Item[i]);
		}
	}
	wsonload.prototype.eval = function(){
		for(var i=0;i<to_eval.length;i++){eval(to_eval[i]);}	
	}
}

var $wload = new wsonload();
window.onload = function(){
	$wload.eval();
}

function window_resize(){
	var to_eval = new Array();
	window_resize.prototype.add = function(Item){ var Item;
		if(!Object.isArray(Item)){Item=[Item];}
		for(var i=0;i<Item.length;i++){
			to_eval.unshift(Item[i]);
		}
	}
	window_resize.prototype.eval = function(){
		for(var i=0;i<to_eval.length;i++){eval(to_eval[i]);}	
	}
}

var $wresize = new window_resize();
window.onresize = function(){
	$wresize.eval();
}


var INCLUDED_JS_MAIN = true;

/*
	Lists
*/
var skiping_fields_lists_results = [13,16,17,27,46,33,34,35,36,37,38,39,40,112,113,114,115,116,117,118,119,120,121,122,123];
function list_show_results(x,e,f,y){ var x,e,f,y;
	var code = x.which||x.keyCode;
	var str_code = "";
	var str = e.value;
	if( str.Trim() == "" ){	$hide(f); $(f).innerHTML=''; return; }
	if( code == 40 || code == 38 ){
		var SelectNextNode = false;
		var dvs = $(f).getElementsByTagName('div');
		for(var i = dvs.length -1; i >= 0; i-- ){
			if( code == 40 ){
				if(dvs[i].getAttribute('sel_nde') == 'y' && dvs[i+1]){
					dvs[i].setAttribute('sel_nde','n');
					dvs[i].className = 'unselectedDV';

					dvs[i+1].setAttribute('sel_nde','y');
					dvs[i+1].className = 'selectedDV';
					return;
				}
				if( i == 0 ){
					dvs[i].setAttribute('sel_nde','y');
					dvs[i].className = 'selectedDV';
					return;
				}
				if( i == dvs.length-1 && dvs[dvs.length-1].getAttribute('sel_nde') == 'y'){
					dvs[i].setAttribute('sel_nde','n');
					dvs[i].className = 'unselectedDV';
				}
			} else {
				try {
				if(dvs[i].getAttribute('sel_nde') == 'y' && dvs[i-1]){
					dvs[i].setAttribute('sel_nde','n');
					dvs[i].className = 'unselectedDV';

					dvs[i-1].setAttribute('sel_nde','y');
					dvs[i-1].className = 'selectedDV';
					return;
				}
				if( i == dvs.length ){
					dvs[i].setAttribute('sel_nde','y');
					dvs[i].className = 'selectedDV';
					return;
				} } catch(ex){}
			}
		}
		
		return;
	}
	
	if( code == 13){
		var dvs = $(f).getElementsByTagName('div');
		for(var i = 0; i < dvs.length ; i++ ){
			if(dvs[i].getAttribute('sel_nde') == 'y'){
				$(e.getAttribute("hidden_value")).value = dvs[i].getAttribute('cont_hidden');
				e.value = dvs[i].getAttribute('cont_text');
				dvs[i].setAttribute('sel_nde','n');
				dvs[i].className = 'unselectedDV';
				$hide(f);
				$showhideselects(true);
				return;
			}
		}
		return;
	}
	
	if( code == 27 ){
		$hide(f);
		$showhideselects(true);
	}
	
	if( $in_array(code,skiping_fields_lists_results) ) return;
	
	eval(y);
}

function $showhideselects(t){ var t;
	var sls = document.getElementsByTagName('select');
	for(var i =0;i < sls.length; i++){
		if(t==true){sls[i].style.visibility='visible';}else{sls[i].style.visibility='hidden';}
	}
}

function list_addDiv(p,c,m,r){
	var x = document.createElement("div");
	x.className = 'unselectedDV';
	x.setAttribute('sel_nde','n');
	x.setAttribute('cont_text',m);
	x.setAttribute('cont_hidden',r);
	var p = $(p);
	p.appendChild(x);
	x.innerHTML = c;
	
	if( p.getElementsByTagName('div').length > 30 ){
		p.style.height = '180px';
		p.style.width = '250px';
		p.style.overflow = 'auto';
	} else {
		p.style.height = 'auto';
	}
}


/// IE_FIXES
function fix_IE_Inputs_w100Percent(){ var txt, test;
	var inputs = document.getElementsByTagName('input');
	for(var i=0;i<inputs.length;i++){
		if(inputs[i].getAttribute('type') == 'text' && inputs[i].className == 'd_FIX_IE_W100'){
			txt = inputs[i].parentElement.offsetWidth; test = txt;
			inputs[i].style.width = test-20 + "px";
		}
	}
	var inputs = document.getElementsByTagName('textarea');
	for(var i=0;i<inputs.length;i++){
		if(inputs[i].className == 'd_FIX_IE_W100'){
			txt = inputs[i].parentElement.offsetWidth; test = txt;
			inputs[i].style.width = test-120 + "px";
		}
	}
}

function $load_images(){
	var imgs = [];
	for(var i = 0; i <arguments.length; i++){
		imgs[i] = new Image();
		imgs[i].src = arguments[i];
		/*
			var d = document.createElement('img');
			d.style.position = 'absolute';
			d.style.visibility = 'hidden';
			d.style.top = '-1000px';
			d.style.left = '-1000px';
			//d.src = $load_images.arguments[i];
			//var bdy = document.getElementsByTagName('body')[0];
			//bdy.appendChild(d);
			alert('cargando imagen'+$load_images.arguments[i]+'...');
		*/
	}
}

function iselect(from,to,i,sel){ var from, to, i, sel;
	$(from).value = $(from).options[i].value;
	$(to).value = $(from).options[i].firstChild.nodeValue;
	$hide(sel);
}

if(Nav.IE){
	document.write('<link href="ie.css" rel="stylesheet" media="all" type="text/css" />');
	//$wresize.add("fix_IE_Inputs_w100Percent();");
	//$wload.add("fix_IE_Inputs_w100Percent();");
} else {
	document.write("<link href='/good-browsers.css' type='text/css' media='all' rel='stylesheet' rev='stylesheet' />");
}












