var FORM={};

function connectAJAX(H,url){
var query=hashToString(H);
if(document.getElementById('test')){
document.getElementById('test').innerHTML = query;}
if(! url){
url='/cgi-bin/ajax_projects.pl';
}
var status = false; var contentType = "application/x-www-form-urlencoded; charset=UTF-8";
var request;
    // Native XMLHttpRequest object
if(window.XMLHttpRequest){
	request = new XMLHttpRequest();
    // ActiveX XMLHttpRequest object
    } else if (window.ActiveXObject) {
        request = new ActiveXObject("Microsoft.XMLHTTP");
	}

if (request){
	request.onreadystatechange = function(){
	if(request.readyState == 4 && request.status == 200){
 	return processAJAX(request,H)}
		}
	request.open("post", url, true);
	request.setRequestHeader("Content-Type", contentType);
	request.send(query);
	status = true;
	}
	return status;
}
var ajax;
function processAJAX(AJAX,H){
ajax=eval('(' + AJAX.responseText + ')');
try{eval(ajax.instructions.return_function)}catch(e){}
}

function hashToString(H){
var date=new Date();
if(! H['ajax_id']){H['ajax_id'] = date.valueOf() + Math.floor(Math.random()*101)/100;}
var content='';
for(var item in H){
	content += item + '=' + escape(H[item]) + '&';
	}
return content;
}

// FORM utilities

function makePopupMenu(H){
var values = H['values'];
var labels = H['labels'];
if(! values){return '';}
if(! labels){labels={}}
var content='<select name="'+H['name']+'">\n';
for(var i =0; i< values.length;i++){
	var selected_='';
	if(H['selected'] == values[i]){selected_ = 'selected'} 
	var label_ = labels[values[i]];
	if(! label_){label_ = values[i]}
	content += '<option value="'+values[i]+'"'+ selected_ +'>' + label_ + '</option>\n';
	}
content += '</select>';
return content;
}

function makeTextarea(EL){
var value_=EL['value'];var rows_=EL['rows'];var cols_=EL['cols'];
if(! value_){value_ = ''}
var content = '<textarea name="'+EL['name']+'" rows="'+rows_+'" cols="'+cols_+'" >' + value_ + '</textarea>';
return content;
}

function makeTextfield(EL){
var value_=EL['value'];var size_=EL['size'];
if(! value_){value_ = ''}
var content = '<input type="text" name="'+EL['name']+'" size="'+size_+'" value="'+value_+'">';
return content;
}

function replacer(str,m1,offset,s){
if(FORM[m1]){
	switch(FORM[m1]['type']){
	case "text": return makeTextfield(FORM[m1]);
	break;
	case "select": return makePopupMenu(FORM[m1]);
	break;
	case "textarea": return makeTextarea(FORM[m1]);
	break;
	default: return '';
	}
	}
return '';
}



