// 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>