File:  [LON-CAPA] / loncom / javascriptlib / loncapa.js
Revision 1.1: download - view: text, annotated - select for diffs
Mon May 14 21:19:16 2001 UTC (23 years ago) by harris41
Branches: MAIN
CVS tags: stable_2001_fall, HEAD
beginning javascript library which should work
everywhere

// loncapa.js
//
// This is a window handling library for the LON-CAPA
// web interface.  This library interfaces with a variety
// of web page handlers.  This is part of the LON-CAPA
// project at http://www.lon-capa.org/
//
// Window status tracking
// -1: not yet opened, no existing window object yet created
// 0: closed
// 1: open (or closed without using the close_window method)
//
// Methods
// -------
// open_window
// close_window
// check_window
// change_window
// change_window_by_submission

var status=new Array();
status['abc123']=-1;
status['def456']=-1;
status['ghi789']=-1;
var windows=new Array();

//-------------------------------------------------------- window attributes
function window_attributes(name,type) {
  if (name=='abc123') {
    if (type=='target') {return '';}
    if (type=='name') {return 'abc123';}
    if (type=='options') {return 'width=360,height=165';}
    return(true);
  }
  if (name=='def456') {
    if (type=='target') {return '';}
    if (type=='name') {return 'def456';}
    if (type=='options') {return 'width=360,height=165';}
    return(true);
  }
  if (name=='ghi789') {
    if (type=='target') {return '';}
    if (type=='name') {return 'ghi789';}
    if (type=='options') {return 'width=360,height=165';}
    return(true);
  }
  alert('undefined window '+name+' called for loncapa.js;'+
        'see window_attributes function');
  return(false);
}
//------------------------------------------------------------ open a window
function open_window(name) {
  if (window_attributes(name)&&(status[name]==-1||windows[name].closed)) {
    windows[name]=window.open(window_attributes(name,'target'),
                              window_attributes(name,'name'),
                              window_attributes(name,'options'));
    status[name]=1;
  }
}
//-------------------------------------------------- close dependent windows
function close_dependents(name) {
  if (name=='THIS') {
    close_window('abc123');
    close_window('def456');
    close_window('ghi789');
  }
  if (name=='abc123') {
    close_window('ghi789');
  }
}
//----------------------------------------------------------- close a window
function close_window(name) {
  close_dependents(name);
  
  if (name!="THIS" && window_attributes(name) && status[name]!=-1
      && !windows[name].closed) {
    windows[name].close();
    status[name]=0;
  }
}
//------------------------------------------------- check and focus a window
function check_window(name) {
  open_window(name);
  windows[name].focus();
}
//---------------------------------------------------------- change a window
function change_window(name) {
  check_window(name);
}
//-------------------------------------------- change a window by submission
function change_window_by_submission() {
  check_window(name);
}

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>