// Level 0: Browser type & capabilities detection

function TPlatform() {
 var obj={
 	BrowserType: '???',
 	DOM: document.getElementById ? 1 : 0,
 	IE4: document.all ? 1 : 0
 }
 var m;
 if (m=navigator.userAgent.match(/MSIE|Firefox|Opera|Konqueror/)) {
	obj.BrowserType=m[0];
	obj[obj.BrowserType]=true;
 }

 if (m=navigator.userAgent.match(/Mozilla\/[45]/)) obj.NavigatorClass=m[0];

 return obj;
}

var PLATFORM=new TPlatform();

function TQueryString(s) {
 if (!s) s=location.search;
 var res={ };
 s=s.replace(/([a-z0_9]+)=([^&]+)/g,function (cero,uno,dos) { res[uno]=dos; return ''; });
 return res;
}

var QueryString=new TQueryString();

function TCookies(s) {
 if (!s) s=document.cookie;
 s+=';';
 var res={ };
 if (s) s=s.replace(/([a-z]+?)=(.+?);/ig,function(cero,uno,dos) { res[uno]=unescape(dos); return ''; });
 return res;
}

function getCookie(n) {
 if (!document.Cookies) document.Cookies=TCookies(document.cookie);
 return document.Cookies[n];
}

function addBookmark(t,u){
 if (!t) t='Salusline.com';
 if (!u) u=location.href;
 u=u.replace(/bookmark=yes&?/,'');
 try {
	window.external.AddFavorite(u,t);
 } catch(e) {
 	window.sidebar.addPanel(t,u,'');
 }
 return false;
}

// Level 1: String & basic data types management

function trim(s) { return s.replace(/^\s+/,' ').replace(/\s+$/,' ') }

String.prototype.trim=function() { return trim(this) }

function xParse(s,obj) {
 s=s.replace(/\$\[([a-z0-9_]+)\]/ig, function (cero,uno) { return obj[uno] } );
 s=s.replace(/\$%5B([a-z0-9_]+)%5D/ig, function (cero,uno) { return obj[uno] } );
 s=s.replace(/\$=\{(.+?)\}/g, function (cero, uno) { with (obj) return eval(uno); } );
 return s;
}

String.prototype.xParse=function (obj) { return xParse(this,obj); }

function contains(s1,s2) { return (','+s1+',').indexOf(','+s2+',')>=0; }

function containsAll(s1,s2) {
 if (typeof(s2)=='string') s2=s2.split(',');
 s1=','+s1+',';
 for (var i=0; i<s2.length; i++)
	if (s1.indexOf(','+s2[i]+',')==-1) return false;
 return true;
}

function containsAny(s1,s2) {
 s1=','+s1+',';
 s2=s2.replace(/,/g,'|');
 s2=new RegExp(',('+s2+'),');
 return (s1.search(s2)>=0);
}

function updateSession(){
 var temp=new Image();
 temp.src='http://www.salusline.com/session.php?rnd='+parseInt(Math.random()*1000);
 setTimeout('ActualizaSesion()', 60000*15);
}

function txtMakeup(s) {
 s=s.replace(/\r/g,'');

 s=s.replace(/\n\n/g,'<p>');
 s=s.replace(/\n/g,'<br>');

 s=s.replace(/\[(.+?)\]=>([-a-z0-9\/.:?]+)/gi,'<a href="$2">$1</a>');
 s=s.replace(/\[(https?:\/\/[^\s]+)\]/,'<a target=_blank href="$1">$1</a>');
 if (s.search(/^https?:\/\/[^\s]+/)==0) s='<a target=_blank href="'+s+'">'+s+'</a>';
 return s;
}

function objSort(obj,f) {
 var maux=[ ],m;
 for(var i in obj) {
	m=obj[i];
	if (f) m=m[f];
	maux.push({ id: i, v: m });
 }

 maux.sort(function(a,b) { return a.v<b.v?-1:a.v>b.v?1:0; });
 var res={ };
 for (var ID, i=0; i<maux.length; i++) res[ID=maux[i].id]=obj[ID];
 return res;
}

/*
function MkCheckList(name,ops,cw,cols) {
 if (!cw) cw=22;
 if (!cols) cols=2; 
 if (typeof(ops)=='string') { alert(name); ops=s2o(ops); }
 var op;
 var cells=[ '','','','','','','','','' ], n=0;
 for (var i in ops) {
	op=ops[i];
	if (!op) op='FAIL??';
	if (op.length<=cw) {
		cells[n%cols]+='<input type=checkbox class=stdCheck name="'+name+'[]" value="'+i+'"> '+op+'<br>';
		n++;
	} else
		cells[cols]+='<input type=checkbox class=stdCheck name="'+name+'[]" value="'+i+'"> '+op+'<br>';
 }
 var s='<table class=checkList width=100% border=0 cellspacing=0 cellpadding=2><tr>';
 for (var i=0; i<cols; i++) s+='<td valign=top>' + cells[i];

 if (cells[cols]) s+='<tr><td colspan='+cols+' valign=top style="padding-top:0">'+cells[cols];
 s+='</table>';
 return s;
}
*/

function MkCheckList(name,ops,cols) {
 if (!cols) cols=2; 
 if (typeof(ops)=='string') { alert(name); ops=s2o(ops); }
 var n=0, op;
 var colwidth=Math.floor((100-(3*cols))/cols);
 var res='<table class=checkList width=100% border=0 cellspacing=0 cellpadding=2>';
 for (var i in ops) {
	op=ops[i];
	if (!op) op='FAIL??';
	if (n%cols==0) res+='<tr>';
	res+='<td width=3%><input type=checkbox class=stdCheck name="'+name+'[]" value="'+i+'"><td width='+colwidth+'%>'+op;
	n++;
 }
 res+= '</table>';
 return res;
}

function getCheckValues(me) {
 var res=[], Obj;
 for (var i=0; i<me.length; i++) if (Obj=me[i]) 
	if (Obj.checked) res.push(Obj.value);
 return res.join(',');
}

function addOptsToCombo(ctl,objs,l) {
// if (!l) l='n';
 var o;
 for (var i in objs) {
	if (l)
		o=new Option(objs[i][l],objs[i].id);
	else
		o=new Option(objs[i],i);
      ctl.options.add(o);
 }
 return false;
}

function addGroupOptsToCombo(ctl,objs,l,group) {
// if (!l) l='n';
// alert(group);
 if (!ctl.boundary) ctl.boundary=ctl.getAttribute('optionboundary');
 if (!ctl.boundary) ctl.boundary='-';
 var lastgroup=false, o;
 for (var i in objs) {
	var obj=objs[i];
	if (lastgroup!=obj[group]) {
		o=new Option('--- '+obj[l]+' ---',ctl.boundary);
		o.className='separator';
		ctl.options.add(o);
		lastgroup=obj[group];
		continue;
	}
	if (l) o=new Option(obj[l],obj.id);
	ctl.options.add(o);
 }
 while (ctl.value==ctl.boundary) ctl.selectedIndex++;
 return false;
}

function chainOnload(func) {
 var oldCall=window.onload;
 if (!oldCall) return window.onload=func;
 window.onload=function() { oldCall(); func(); }
}


// if (PLATFORM.MSIE) document.write('<style type="text/css">@import url(/SALUSLINE/xhome/style_MSIE.css);</style>');

var LANG;

function __initialize() {
 LANG=document.body.lang;
 if (!LANG) LANG='es';

 var d=new Date();
 var CURRENT_DATE=DAY_NAMES[d.getDay()]+', '+d.getDate()+'/'+(d.getMonth()+1)+'/'+d.getFullYear();
 document.getElementById('currentDate').innerHTML=CURRENT_DATE;
 var obj;
 if (obj=document.getElementById('lngLink_'+LANG)) obj.className='active';
}

chainOnload(__initialize);

