/*
 * Functions for the IFTEc web site.
 *
 * Copyright 2006, 2007, 2008 by Ben Siemerink.
 * http://www.qoben.com/
 */

function submitForm(formid)
{
  /* Remove all paragraphs of class error */
  paragraphs=document.getElementsByTagName('p');
  for (i in paragraphs)
  {
    e=paragraphs[i];
    if (e && e.className && e.className=='error') e.parentNode.removeChild(e);
  }

  form=document.getElementById(formid);
  form.submit();
  form.innerHTML='<p class="submitted">Su petición está siendo procesada <img width="42px" height="42px" src="/img/wait.gif"></p>';
  return true;
}


function focusFirstField()
{
  elist=document.getElementsByTagName('input');
  for (i in elist) if (elist[i].type=="text" || elist[i].type=="password")
  {
    elist[i].focus();
    break;
  }
}


function showHelp(id, text)
{
  e=document.getElementById(id+'_help');
  if (!e) return;
  e.style.display='block';
  e.innerHTML='<span class="formhelp">&raquo;&nbsp;'+text+'</span>';
}


function showFileDelete(id, size, text)
{
  e=document.getElementById(id+'_file');
  if (!e) return;
  e.innerHTML=text+'<input type="hidden" name="'+id+'__delete" value="delete">';
}


function showUpload(id, size)
{
  e=document.getElementById(id+'_file');
  if (!e) return;
  e.innerHTML='<input type="file" id="'+id+'" name="'+id+'" size="'+size+'">';
}


function showRefproject(e, id, toright) {
    if (!e) e=window.event;
    mouse=ju_mousepos(e);
    scrollpos=ju_getscroll();
    d=document.getElementById('ref'+id);

    // Turn off all other projects
    divlist=document.getElementsByTagName('div');
    for (i in divlist) {
	e=divlist[i];
	if (e.className=='refproject' && e.id!=('ref'+id)) {
	    if (e.fade_value) fader.fade(e.id, 0, 700, -300);
	}
    }

    if (!d) return;

    if (d.fade_value>0)
	fader.fade(d.id, 0, 700, -300);
    else {
	wsize=ju_winsize();

	// Width and horizontal position
	w=d.clientWidth;
	maxw=wsize.x*.7;
	if (maxw<400) maxw=400;
	if (maxw>800) maxw=800;
	if (maxw<w) {
	    d.style.maxWidth=maxw.toFixed(0)+'px';
	    w=maxw;
	}
	if (toright) x=280+25+document.getElementById('toright').offsetWidth;
	else x=mouse.x-w/2+scrollpos.x;
	if (x+d.offsetWidth>wsize.x) x=wsize.x-d.offsetWidth-20;
	if (x<scrollpos.x+10) x=scrollpos.x+10;
	d.style.left=x.toFixed(0)+'px';

	// Height
	h=d.clientHeight;
	y=mouse.y-h/2+scrollpos.y;
	if (y+d.offsetHeight>wsize.y+scrollpos.y) y=wsize.y+scrollpos.y-d.offsetHeight-20;
	if (y<scrollpos.y+10) y=scrollpos.y+10;
	window.status='mouse=('+mouse.x+','+mouse.y+')   window=('+wsize.x+','+wsize.y+')   size=('+w+','+h+')   pos=('+x+','+y+')';

	d.style.top=y.toFixed(0)+'px';
	ju_addevent(document.body, 'click', hideRefproject, false);
	fader.fade(d.id, 300, 1000, 300);
    }
}


function hideRefproject(e) {
    d=ju_eventtarget(e);
    while (d.className!='refproject' && d.parentNode)
	d=d.parentNode;
    if (d && d.className=='refproject')
	fader.fade(d.id, 0, 700, -300);
}

function setToday(id)
{
  // Verify form elements
  d=document.getElementById(id);
  m=document.getElementById(id+'__month');
  y=document.getElementById(id+'__year');
  if (!d || !m || !y) return;

  // Set to today
  now=new Date();
  d.value=now.getDate();
  m.value=now.getMonth()+1;
  y.value=now.getFullYear();
}


function humansonly(id, text, link)
{
  element=document.getElementById(id);
  if (element==undefined) return;

  if (text!=null)
  {
    t='';
    for (i in text) t+=String.fromCharCode(153-text[i]);
    element.innerHTML=t;
  }

  if (link!=null && element.href)
  {
    l='';
    for (i in link) l+=String.fromCharCode(153-link[i]);
    element.href=l;
  }
}


function maxlen(textarea, maxlength)
{
  text_id=document.getElementById(textarea);
  if (text_id==undefined) return;

  curlength=document.getElementById(textarea).value.length;
  if (curlength==undefined) return;

  hint_id=document.getElementById(textarea+'_hint');
  if (hint_id==undefined) return;

  if (curlength<=maxlength)
  {
    hint_id.innerHTML='&raquo;&nbsp;'+maxlength+' caracteres máximo; quedan '+(maxlength-curlength)+'.';
    hint_id.className='hint_ok';
  }
  else
  {
    hint_id.innerHTML='&raquo;&nbsp;'+maxlength+' caracteres máximo; se quitarán '+(curlength-maxlength)+'.';
    hint_id.className='hint_truncate';
  }
}


/* Prefetch some pictures */
var prefetchlist=new Array();
function prefetch(imagelist)
{
  for (i=0; i<imagelist.length; i++)
  {
    prefetchlist[i]=new Image();
    prefetchlist[i].src=imagelist[i];
  }
}

function ju_offset(e) { // {{{1
    if (!e) return null;
    var x, y;
    x=e.offsetLeft;
    y=e.offsetTop;
    while (e.offsetParent) {
	e=e.offsetParent;
	x+=e.offsetLeft;
	y+=e.offsetTop;
    }
    return {x:x, y:y};
}

function ju_addevent(obj, type, fn, oncapture) { // {{{1
    if (obj.attachEvent) {
	obj['e'+type+fn]=fn;
	obj[type+fn]=function() { obj['e'+type+fn](window.event); }
	obj.attachEvent('on'+type, obj[type+fn]);
    } else obj.addEventListener(type, fn, oncapture);
}

function ju_delevent(obj, type, fn, oncapture) { // {{{1
    if (obj.detachEvent) {
	if (obj[type+fn]) {
	    obj.detachEvent('on'+type, obj[type+fn]);
	    obj[type+fn]=null;
	}
    }
    else obj.removeEventListener(type, fn, oncapture);
}

function ju_delallevents(obj, type) { // {{{1
    obj['on'+type]=null;
}

function ju_eventtarget(e) { // {{{1
    var targ;
    if (!e) var e=window.event;
    if (e.target) targ=e.target;
    else if (e.srcElement) targ=e.srcElement;
    if (targ.nodeType==3) targ = targ.parentNode; // Webkit returns text node
    return targ;
}

function ju_getscroll() { // {{{1
    return {
	x:(window.pageXOffset ? window.pageXOffset : document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft),
	y:(window.pageYOffset ? window.pageYOffset : document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop)
	};
}

function ju_winsize() { // {{{1
    var x=0, y=0;
    if (typeof(window.innerWidth)=='number') {
	x=window.innerWidth;
	y=window.innerHeight;
    } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
	x=document.documentElement.clientWidth;
	y=document.documentElement.clientHeight;
    } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
	x=document.body.clientWidth;
	y=document.body.clientHeight;
    }
    return {x:x, y:y};
}

function ju_mousepos(e) { // {{{1
    return {x:e.clientX, y:e.clientY};
}


