// 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); }