1 if ( !document.__dataface__ ) document.__dataface__ = {};
  2 if ( !document.__dataface__.recordIndex ) document.__dataface__.recordIndex = {};
  3 if ( !document.__dataface__.tableIndex ) document.__dataface__.tableIndex = {};
  4 if ( !document.__dataface__.requestStack ) document.__dataface__.requestStack = [];
  5 var __dataface__ = document.__dataface__;
  6 
  7 __dataface__.recordLoaded = function(id){
  8 	
  9 	return (__dataface__.recordIndex[id] != null);
 10 }
 11 
 12 __dataface__.tableLoaded = function(name){
 13 	return (__dataface__.tableIndex[name] != null);
 14 }
 15 
 16 __dataface__.fieldLoaded = function(tablename, fieldname){
 17 	return ( tableLoaded(tablename) && __dataface__.tableIndex[tablename].__fields__[fieldname] != null );
 18 }
 19 
 20 __dataface__.pushRequest = function(func, params){
 21 	__dataface__.requestStack.push([func, params]);
 22 }
 23 __dataface__.popRequest = function(){
 24 	return __dataface__.requestStack.pop();
 25 }
 26 
 27 __dataface__.requestStackSize = function(){ return __dataface__.requestStack.length; }
 28 
 29 __dataface__.getRecord = function(id){
 30 	return __dataface__.recordIndex[id];
 31 }
 32 
 33 __dataface__.getTable = function(name){
 34 	return __dataface__.tableIndex[name];
 35 }
 36 
 37 __dataface__.loadField = function(params, callback){
 38 	__dataface__.errors = [];
 39 	if ( __dataface__.fieldLoaded(params['table'], params['field']) ) return;
 40 	var query = {'action': '-ajax_load_fields', tables': [], 'records': [], 'fields': [] };
 41 	
 42 	if ( !__dataface__.tableLoaded(params['table']) ) query.tables.push(params['table']);
 43 	query.fields.push('*');
 44 	__dataface__.pushRequest(callback[0], callback[1]);
 45 	__dataface__.sendRequest(query, [__dataface__.handleLoadField, null]);
 46 	return;
 47 }
 48 
 49 __dataface__.handleLoadField = function(){
 50 
 51 	if ( __dataface__.http.readyState == 4 ){
 52 		var data = eval('('+__dataface__.http.responseText+')');
 53 		__dataface__.errors = data.errors;
 54 		__dataface__.messages = data.messages;
 55 		
 56 		
 57 		if ( data.tables ){
 58 			for ( tablename in data.tables ){
 59 				__dataface__.updateTable(tablename, data.tables[tablename]);
 60 			}
 61 		}
 62 		
 63 		if ( data.records ){
 64 			for ( recordId in data.records ){
 65 				__dataface__.updateRecord(recordId, data.records[recordId]);	
 66 			}
 67 		}
 68 		
 69 		__dataface__.performNextRequest();
 70 	}
 71 
 72 }
 73 
 74 
 75 __dataface__.performNextRequest = function(){
 76 	if ( __dataface__.requestStackSize() > 0 ){
 77 		var callback = __dataface__.popRequest();
 78 		var func = callback[0];
 79 		var param = callback[1];
 80 		func(param);
 81 	}
 82 
 83 }
 84 
 85 __dataface__.sendRequest = function(query, callback){
 86 	__dataface__.http = getHTTPObject();
 87 	var qstr = '?-action='+escape(query.action);
 88 	if ( query.tables ){
 89 		for ( var i=0; i<query.tables.length; i++){
 90 			qstr += '&'+escape('tables['+i+']')+'='+escape(query.tables[i]);
 91 		}
 92 	}
 93 	if ( query.records ){
 94 		for ( var i=0; i<query.records.length; i++){
 95 			qstr += '&'+escape('records['+i+']')+'='+escape(query.records[i]);
 96 		}
 97 	}
 98 	if ( query.fields ){
 99 		for ( var i=0; i<query.fields.length; i++){
100 			qstr += '&'+escape('fields['+i+']')+'='+escape(query.fields[i]);
101 		}
102 	}
103 
104 	__dataface__.http.open('GET', qstr);
105 	
106 	__dataface__.http.onreadystatechange = callback[0];
107 	__dataface__.http.send(null);
108 }
109 
110 
111 __dataface__.setTagMode = function(tag, mode){
112 	var id = tag.getAttribute('id');
113 	var date = new Date();
114 	if ( !tag.__modes__ ) tag.__modes__ = {'view': {'timestamp': date.getTime(), 'innerHTML': tag.innerHTML}};
115 	if ( !tag.__mode__ ) tag.__mode__ = 'view';
116 	if ( tag.__mode__ != mode ){
117 		if ( mode == 'edit' ){
118 			// we are entering edit mode... must load the field
119 			
120 		}
121 	}
122 	
123 	
124 	if ( !id ) return;
125 	var recid = id.substring(0, id.indexOf('#'));
126 	var field = id.substring(id.indexOf('#