/* 2003-06-17  CommonTown JS util functions */
/* Add your utility functions here. */
/* Please put a short comment with your big name for posterity */

function ctpopup(name,url,w,h,param) {
 // popup window at the centre of screen
 if (typeof w =="undefined") w=400;
 if (typeof h =="undefined") h=250;

 if (typeof param =="undefined") {
	 param=",status=no,menubar=no,resizable=yes,scrollbars=yes";
 }

 if (param.indexOf('left')==-1) {
   var left = ( screen.width - w ) / 2 ;
	 param+=",left="+left;
 }
 if (param.indexOf('top')==-1) {
   var top = ( screen.height - h ) / 2;
	 param+=",top="+top;
 }

 param += ",width="+w+",height="+h;
 win= window.open(url,name,param);
 if (win) win.focus();
 win.opener=self;
 return win;
}

function ctformselectval(elm) {
  // get form select value
  cnt=elm.options.length;
  for(var i=0; i< cnt; i++) {
    if (elm.options[i].selected) return elm.options[i].value;
  }
  return false;
}

function ctfilldiv(which,url,msg) {
  targetDiv=document.getElementById(which);

  if (targetDiv){
    if (msg) targetDiv.innerHTML=msg;
    else targetDiv.innerHTML='<div class=help align=center><br><br>Downloading, please wait..<br></div>';
  }

  fobj=document.getElementById('_dlframe');
  fobj.targetObj=targetDiv;
  aobj=document.getElementById('_dlgrabber');
  aobj.href=url;
  aobj.target='_dlframe';
  aobj.click();
}


function ctload_dlframe(c) {
  var rwin=c.contentWindow; // result
  if (rwin && rwin.document.body) {
    var html=rwin.document.body.innerHTML;
    if (html) c.targetObj.innerHTML=html;
  }
}


// 2004-08-23 joel: menu 
function ct_show_menu(mname,nudge) {
  var omenu=document.getElementById(mname);
  if (omenu) {
    if (nudge) {
	  if (!omenu.style.origleft) 
		omenu.style.origleft=omenu.style.pixelLeft;
	  omenu.style.pixelLeft=omenu.style.origleft+nudge;
	}
    omenu.style.display='block';
  }
//  else alert('ct_show_menu error: menu '+mname+' not found');
}
function ct_hide_menu(mname) {
  var omenu=document.getElementById(mname);
  if (omenu) omenu.style.display='none';
//  else alert('ct_hide_menu error: menu '+mname+' not found');
}

// 2004-08-23 joel: dialog box 
function ct_dialog(title,url,w,h) {
  if (!w) w=400;
  if (!h) h=300;
  param=new Array();
  param[0]=window;
  param[1]=title;
  param[2]=url;

  retval=window.showModalDialog(url,param,'dialogwidth:'+w+'px;dialogheight:'+h+'px;status:no;scroll:yes;help:no;');

  // 2003-07-13 joel: refresh entire browser
  if (retval) {
    if (retval=='view_refresh' && window.parent) {
      window.parent.leftFrame.document.location.reload();
      window.parent.mainFrame.document.location.reload();
    }
    else if (retval=='full_refresh' && window.parent) {
      window.parent.document.location.reload();
    }
    else if (retval=='confirm') {
      window.document.location=url+'&confirm=1';
    }
    else document.location.reload();
  }
}

// 2004-09-19 joel: dialog using window.open
function ct_open(name,url,w,h,param) {
 // popup window at the centre of screen
 if (typeof w =="undefined") w=400;
 if (typeof h =="undefined") h=250;

 var left = ( screen.width - w ) / 2 ;
 var top = ( screen.height - h ) / 2;

 if (typeof param =="undefined") {
   param=",status=no,menubar=no,resizable=yes,scrollbars=yes";
 }
 param += ",width="+w+",height="+h+",top="+top+",left="+left;
 win= window.open(url,name,param);
 if (win) {
   win.focus();
   if (!win.opener) win.opener=window;
   // 2006-02-25 joel: keep dialog on top 
   window.dialog_window=win;
   setTimeout('waitdialog()',1000);
 }
}
function waitdialog() {
  if (!window.dialog_window.closed) {
//    window.dialog_window.focus();
    setTimeout('waitdialog()',1000);
  }
  else {
   // window.document.location.reload();
  }
}

// 2005-11-28 joel: close myself and refresh opener 
function ct_close(reload_opener) {
  if (typeof reload_opener =="undefined") reload_opener=true;
  if (reload_opener && window.opener) window.opener.location.reload();
  window.close();
}

// 2004-09-19 joel: refresh routine callable by the window opened with ct_open
// win: should be window.opener usually
function ct_refresh(win,reftype) {
  if (reftype=='view_refresh' && win.parent) {
    win.parent.leftFrame.document.location.reload();
    win.parent.mainFrame.document.location.reload();
  }
  else if (reftype=='full_refresh' && window.parent) {
	win.parent.document.location.reload();
  }
  else if (reftype=='refresh') {
    win.document.location.reload();
  }
}

// 2004-10-21: ec convert query str to array 
function ct_querystr2arr (str) {
  str = str ? str : location.search;
  var query = str.charAt(0) == '?' ? str.substring(1) : str;
  var args = new Object();
  if (query) {
    var fields = query.split('&');
    for (var f = 0; f < fields.length; f++) {
      var field = fields[f].split('=');
    if(field[0]&&field[1]&&field[0].match(/^[a-zA-Z]/)&&!field[0].match(/[^0-9a-zA-Z_]/)){
      args[unescape(field[0].replace(/\+/g,' '))] = unescape(field[1].replace(/\+/g, ' '));
    }
    }
  }
  return args;
}

// 2006-04-28 joel: debug object 
function ct_dump_array(what) {
  buf='<table>';
  for(i in what)
    buf+='<tr><td><b>'+i+'</b></td><td>'+what[i]+"</td></tr>";
  buf+='</table>';
  return buf;
}

function ct_toggle_expand(oname) {  obj=document.getElementById(oname);
  icon=document.getElementById(oname+'_icon');
  obj.style.display=(obj.style.display=='none'?'block':'none');
  icon.src='/pix/b/'+(obj.style.display=='none'?'collapse.gif':'expand.gif');
}

