/// framework code ----------------------------------------------------------------------\\\\\\\\\\\\\\\
		
	function f(o) { 
		if(o.error.length>0) { handle(o); };
		if(o.debug) { debug(o); };
		if (o.f.length>0) { // 
		try { 
			var me = o.f.shift(); me(o); 
		} catch (e) { o.error.push(e.message); handle(o); };
		}
	}	
		
	function see(o) { 
		for (var v in o) { if (v!='f'&&v!='error'&&v!='require'&&v!='rate'||o.debug) { document.write(v+'='+o[v]); } }; 
		return o;
	};	
		
	function debug(o) {
		switch (o.debug) {
			case 0: break;
			case 1:
				alert('doing :'+o.f.length+': '+ o.f[0]);
			break;
			case 2:
				if (o.f.length>0) {
					$('status').innerHTML = 'doing :'+o.f.length+': '+ o.f[0];
				} else {
					$('status').innerHTML = 'done';
				};
			break;
		}
	}
	function handle(o) {
		//see(o.error);
		//alert('error: '+o.error.pop());
		$('status').innerHTML = 'error: '+o.error.pop();
	}