254 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			254 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
/**
 | 
						|
 * @package phpLDAPadmin
 | 
						|
 * @author The phpLDAPadmin development team
 | 
						|
 * @author Xavier Bruyet
 | 
						|
 */
 | 
						|
 | 
						|
// current request
 | 
						|
var http_div = '';
 | 
						|
var http_request = null;
 | 
						|
var http_request_success_callback = '';
 | 
						|
var http_request_error_callback = '';
 | 
						|
 | 
						|
function ajSUBMIT(div,obj,display) {
 | 
						|
	var pageDiv = getDiv(div);
 | 
						|
 | 
						|
	window.scrollTo(0,0);
 | 
						|
 | 
						|
	makeHttpRequest('cmd.php',getParameters(obj.parentNode)+'meth=ajax','POST','alertAJ','cancelAJ',div);
 | 
						|
 | 
						|
	if (pageDiv)
 | 
						|
		includeHTML(pageDiv,'<img src="images/ajax-progress.gif"><br><small>'+display+'...</small>');
 | 
						|
	else
 | 
						|
		return true;
 | 
						|
 | 
						|
	return false;
 | 
						|
}
 | 
						|
 | 
						|
function ajDISPLAY(div,urlParameters,display,ns) {
 | 
						|
	var pageDiv = getDiv(div);
 | 
						|
 | 
						|
	if (! ns)
 | 
						|
		window.scrollTo(0,0);
 | 
						|
 | 
						|
	makeHttpRequest('cmd.php',urlParameters+'&meth=ajax','GET','alertAJ','cancelAJ',div);
 | 
						|
 | 
						|
	if (pageDiv)
 | 
						|
		includeHTML(pageDiv,'<img src="images/ajax-progress.gif"><br><small>'+display+'...</small>');
 | 
						|
	else
 | 
						|
		return true;
 | 
						|
 | 
						|
	return false;
 | 
						|
}
 | 
						|
 | 
						|
function ajJUMP(url,title,index,prefix) {
 | 
						|
	var attr = prefix ? document.getElementById(prefix+index).value : index;
 | 
						|
 | 
						|
	if (attr)
 | 
						|
		url += '&viewvalue='+attr;
 | 
						|
 | 
						|
	return ajDISPLAY('BODY',url,'Loading '+title);
 | 
						|
}
 | 
						|
 | 
						|
function ajSHOWTHIS(key,except,ctl) {
 | 
						|
	select = document.getElementById(key+except);
 | 
						|
 | 
						|
	if (select.style.display == '')
 | 
						|
		return false;
 | 
						|
 | 
						|
	hideall(key,except,ctl);
 | 
						|
 | 
						|
	return false;
 | 
						|
};
 | 
						|
 | 
						|
function ajSHOWSCHEMA(type,key,value) {
 | 
						|
	select = document.getElementById(type);
 | 
						|
 | 
						|
	if (value != null) {
 | 
						|
		except = value;
 | 
						|
		select.value = value;
 | 
						|
	} else {
 | 
						|
		except = select.value;
 | 
						|
	}
 | 
						|
 | 
						|
	if (! except) {
 | 
						|
		showall(key);
 | 
						|
	} else {
 | 
						|
		objectclass = document.getElementById(key+except);
 | 
						|
		objectclass.style.display = '';
 | 
						|
		hideall(key,except);
 | 
						|
	};
 | 
						|
 | 
						|
	return false;
 | 
						|
};
 | 
						|
 | 
						|
function hideall(key,except,ctl) {
 | 
						|
	items = items();
 | 
						|
 | 
						|
	for (x in items) {
 | 
						|
		if (! isNaN(x) && except != items[x]) {
 | 
						|
			item = document.getElementById(key+items[x]);
 | 
						|
			item.style.display = 'none';
 | 
						|
 | 
						|
			if (ctl && (item = document.getElementById(ctl+items[x]))) {
 | 
						|
				item.style.background = '#E0E0E0';
 | 
						|
			}
 | 
						|
 | 
						|
		} else if (! isNaN(x) && except == items[x]) {
 | 
						|
			item = document.getElementById(key+items[x]);
 | 
						|
			item.style.display = '';
 | 
						|
 | 
						|
			if (ctl && (item = document.getElementById(ctl+items[x]))) {
 | 
						|
				item.style.background = '#F0F0F0';
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
function showall(key) {
 | 
						|
	items = items();
 | 
						|
 | 
						|
	for (x in items) {
 | 
						|
		if (! isNaN(x)) {
 | 
						|
			item = document.getElementById(key+items[x]);
 | 
						|
			item.style.display = '';
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// include html into a component
 | 
						|
function includeHTML(component,html) {
 | 
						|
	if (typeof(component) != 'object' || typeof(html) != 'string') return;
 | 
						|
	component.innerHTML = html;
 | 
						|
 | 
						|
	var scripts = component.getElementsByTagName('script');
 | 
						|
	if (!scripts) return;
 | 
						|
 | 
						|
	// load scripts
 | 
						|
	for (var i = 0; i < scripts.length; i++) {
 | 
						|
		var scriptclone = document.createElement('script');
 | 
						|
		if (scripts[i].attributes.length > 0) {
 | 
						|
			for (var j in scripts[i].attributes) {
 | 
						|
				if (typeof(scripts[i].attributes[j]) != 'undefined'
 | 
						|
					&& typeof(scripts[i].attributes[j].nodeName) != 'undefined'
 | 
						|
					&& scripts[i].attributes[j].nodeValue != null
 | 
						|
					&& scripts[i].attributes[j].nodeValue != '') {
 | 
						|
					scriptclone.setAttribute(scripts[i].attributes[j].nodeName,scripts[i].attributes[j].nodeValue);
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
		scriptclone.text = scripts[i].text;
 | 
						|
		scripts[i].parentNode.replaceChild(scriptclone,scripts[i]);
 | 
						|
		eval(scripts[i].innerHTML);
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// callback function
 | 
						|
function alertHttpRequest() {
 | 
						|
	if (http_request && (http_request.readyState == 4)) {
 | 
						|
		if (http_request.status == 200 || http_request.status == 401) {
 | 
						|
			response = http_request.responseText;
 | 
						|
			http_request = null;
 | 
						|
			//alert(response);
 | 
						|
			if (http_request_success_callback) {
 | 
						|
				eval(http_request_success_callback + '(response,http_div)');
 | 
						|
			}
 | 
						|
		} else {
 | 
						|
			alert('There was a problem with the request.');
 | 
						|
			cancelHttpRequest();
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
function cancelHttpRequest() {
 | 
						|
	if (http_request) {
 | 
						|
		http_request = null;
 | 
						|
		if (http_request_error_callback) {
 | 
						|
			eval(http_request_error_callback + '(http_div)');
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
function makeHttpRequest(url,parameters,meth,successCallbackFunctionName,errorCallbackFunctionName,div) {
 | 
						|
	cancelHttpRequest(div);
 | 
						|
 | 
						|
	http_request_success_callback = successCallbackFunctionName;
 | 
						|
	http_request_error_callback = errorCallbackFunctionName;
 | 
						|
	http_div = div;
 | 
						|
 | 
						|
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
 | 
						|
		http_request = new XMLHttpRequest();
 | 
						|
		if (http_request.overrideMimeType) {
 | 
						|
			http_request.overrideMimeType('text/html');
 | 
						|
		}
 | 
						|
 | 
						|
	} else if (window.ActiveXObject) { // IE
 | 
						|
		try {
 | 
						|
			http_request = new ActiveXObject('Msxml2.XMLHTTP');
 | 
						|
		} catch (e) {
 | 
						|
			try {
 | 
						|
				http_request = new ActiveXObject('Microsoft.XMLHTTP');
 | 
						|
			} catch (e) {}
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	if (!http_request) {
 | 
						|
		alert('Cannot create XMLHTTP instance.');
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	http_request.onreadystatechange = window['alertHttpRequest'];
 | 
						|
	if (meth == 'GET') url = url + '?' + parameters;
 | 
						|
	http_request.open(meth,url,true);
 | 
						|
 | 
						|
	http_request.setRequestHeader('Content-type','application/x-www-form-urlencoded');
 | 
						|
	http_request.setRequestHeader('Content-length',parameters.length);
 | 
						|
	http_request.setRequestHeader('Connection','close');
 | 
						|
 | 
						|
	if (meth == 'GET') parameters = null;
 | 
						|
	http_request.send(parameters);
 | 
						|
}
 | 
						|
 | 
						|
function getParameters(obj) {
 | 
						|
	var elements = ['input','select','textarea'];
 | 
						|
	var getstr = '';
 | 
						|
 | 
						|
	for (var j in elements) {
 | 
						|
		for (i=0; i<obj.getElementsByTagName(elements[j]).length; i++) {
 | 
						|
			// Ignore submit variables
 | 
						|
			if (obj.getElementsByTagName(elements[j])[i].type == 'submit') {
 | 
						|
 | 
						|
			} else if (obj.getElementsByTagName(elements[j])[i].type == 'text') {
 | 
						|
				getstr += obj.getElementsByTagName(elements[j])[i].name + '=' + encodeURIComponent(obj.getElementsByTagName(elements[j])[i].value) + '&';
 | 
						|
 | 
						|
			} else if (obj.getElementsByTagName(elements[j])[i].type == 'checkbox') {
 | 
						|
				if (obj.getElementsByTagName(elements[j])[i].checked) {
 | 
						|
					getstr += obj.getElementsByTagName(elements[j])[i].name + '=' + encodeURIComponent(obj.getElementsByTagName(elements[j])[i].value) + '&';
 | 
						|
				} else {
 | 
						|
					getstr += obj.getElementsByTagName(elements[j])[i].name + '=&';
 | 
						|
				}
 | 
						|
 | 
						|
			} else if (obj.getElementsByTagName(elements[j])[i].type == 'radio') {
 | 
						|
				if (obj.getElementsByTagName(elements[j])[i].checked) {
 | 
						|
					getstr += obj.getElementsByTagName(elements[j])[i].name + '=' + encodeURIComponent(obj.getElementsByTagName(elements[j])[i].value) + '&';
 | 
						|
				}
 | 
						|
 | 
						|
			} else if (obj.getElementsByTagName(elements[j])[i].tagName == 'SELECT') {
 | 
						|
				var sel = obj.getElementsByTagName(elements[j])[i];
 | 
						|
				getstr += sel.name + '=' + encodeURIComponent(sel.options[sel.selectedIndex].value) + '&';
 | 
						|
 | 
						|
			} else if (obj.getElementsByTagName(elements[j])[i].tagName == 'INPUT') {
 | 
						|
				getstr += obj.getElementsByTagName(elements[j])[i].name + '=' + encodeURIComponent(obj.getElementsByTagName(elements[j])[i].value) + '&';
 | 
						|
 | 
						|
			} else if (obj.getElementsByTagName(elements[j])[i].tagName == 'TEXTAREA') {
 | 
						|
				getstr += obj.getElementsByTagName(elements[j])[i].name + '=' + encodeURIComponent(obj.getElementsByTagName(elements[j])[i].value) + '&';
 | 
						|
 | 
						|
			} else {
 | 
						|
				alert('UNTRAPPED FORM tag:'+elements[j]+', n: '+obj.getElementsByTagName(elements[j])[i].tagName+', t:'+obj.getElementsByTagName(elements[j])[i].type);
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return getstr;
 | 
						|
}
 |