//http_request is global handle to XMLHTTP instance
//TODO: rewrite to use an array of handles
var http_request; 
function makeRequest(url, action, additionalParam) { 
	http_request = false; 
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} 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('Your browser does not support AJAX!');
		return false;
	} else {
		if (!additionalParam) additionalParam = '';
		
        var additionalParams = new Array();
        if (typeof(additionalParam) == "array") {
            for (i = 0; i < additionalParam.length; i++) {
                    additionalParams  += "'" + additionalParam[i] + "', ";

            }
        } else additionalParams = "'" + additionalParam + "',";
        additionalParams += "''";
        additionalParams += ",'',''";
		
		http_request.onreadystatechange = new Function(action + '(' + additionalParams + ');');
		http_request.open('GET',url + '&sid=' + Math.random(), true);
		http_request.send(null);
	}
}

function getResponse(type) {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			if (type=='xml') return http_request.responseXML;
			else return http_request.responseText;
		} else {
			alert('getResponse:: There was a problem with the request. Status:' + http_request.statusText);
			return false;
		}
	} else return false;
}

function city_by_state(city_selected, url, action, additionalParam) {
	var selObj = document.getElementById('city');
	var xmldoc = getResponse('xml');
	if (!xmldoc) return false;
    // alert(selObj);
	var opts = xmldoc.getElementsByTagName('options')[0];
	
	if (!opts) {
		selObj.value = '--eroare--';
		alert('Fisierul XML rezultat contine erori(nu este corect formatat/contine caractere nepermise)');
		return false;
	}
	
	var elems = opts.getElementsByTagName('city');
	
	//remove all elements from given selectbox
	selObj.length = 1;

	for(i = 0; i < elems.length; i++) {
		val = elems[i].getAttribute("value");
		txt = elems[i].getAttribute("text");
		selObj[i+1] = new Option(txt, val);
		if (city_selected == val) selObj.selectedIndex = i+1;
	}
	
	var selObj = document.getElementById('zone');
	var xmldoc = getResponse('xml');
	
	if (!xmldoc) return false;
	
	var opts = xmldoc.getElementsByTagName('options')[0];
	
	if (!opts) {
		selObj.value = '--eroare--';
		alert('Fisierul XML rezultat contine erori(nu este corect formatat/contine caractere nepermise)');
		return false;
	}
	var elems = opts.getElementsByTagName('zone');
	
	//remove all elements from given selectbox
	selObj.length = 1;

	for(i = 0; i < elems.length; i++) {
		val = elems[i].getAttribute("value");
		txt = elems[i].getAttribute("text");
		selObj[i+1] = new Option(txt, val);
		if (city_selected == val) selObj.selectedIndex = i+1;
	}
	
	if (url != '') makeRequest(url, action, additionalParam);
}

function zone_by_city(zone_selected) {
	var selObj = document.getElementById('form1').zone;
	var xmldoc = getResponse('xml');
	
	if (!xmldoc) return false;
	
	var opts = xmldoc.getElementsByTagName('options')[0];
	
	if (!opts) {
		selObj.value = '--eroare--';
		alert('Fisierul XML rezultat contine erori(nu este corect formatat/contine caractere nepermise)');
		return false;
	}
	var elems = opts.getElementsByTagName('option');
	
	//remove all elements from given selectbox
	selObj.length = 1;

	for(i = 0; i < elems.length; i++) {
		val = elems[i].getAttribute("value");
		txt = elems[i].getAttribute("text");
		selObj[i+1] = new Option(txt, val);
		if (zone_selected == val) selObj.selectedIndex = i+1;
	}
}

function show_rooms(tip) {
	if (tip == 'vile|v' || tip == 'vile|i' || tip == 'apartamente|i' || tip == 'apartamente|v' ) 
		document.getElementById('tr_camere').style.display = '';
	else 
		document.getElementById('tr_camere').style.display = 'none';
}

function request_info_get(obj) {
	var getstr = "?action=send&";
	for (i=0; i<obj.elements.length; i++) {
		if (obj.elements[i].tagName == "INPUT") {
			if (obj.elements[i].type == "text") {
				getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
			}
			if (obj.elements[i].type == "hidden") {
				getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
			}
			if (obj.elements[i].type == "checkbox") {
				if (obj.elements[i].checked) {
					getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
				} else {
					getstr += obj.elements[i].name + "=&";
				}
			}
			if (obj.elements[i].type == "radio") {
				if (obj.elements[i].checked) {
					getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
				}
			}
		}   

		if (obj.elements[i].tagName == "SELECT") {
			var sel = obj.elements[i];
			getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
		}
		if (obj.elements[i].tagName == "TEXTAREA") {
			getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
		}
	}
	makeRequest('request_info_done.php' + getstr, 'return_msg');
}

function return_msg() {
	var xmldoc = getResponse();
	if (!xmldoc) return false;

	eval(xmldoc);
}


function newsletter_get(obj_id) {
	var obj = document.getElementById(obj_id);
	var getstr = "?action=send&";
	for (i=0; i<obj.elements.length; i++) {
		if (obj.elements[i].tagName == "INPUT") {
			if (obj.elements[i].type == "text") {
				getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
			}
			if (obj.elements[i].type == "hidden") {
				getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
			}
			if (obj.elements[i].type == "radio") {
				if (obj.elements[i].checked) {
					getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
				}
			}
		}   
	}
	
	document.getElementById('newsletter_msg').innerHTML = "<center><img src='images/loading.gif' /></center>";
	
	makeRequest('newsletter/subscription.php' + getstr, 'return_newsletter_msg');
}

function return_newsletter_msg() {
	var xmldoc = getResponse();
	if (!xmldoc) return false;
	
	document.getElementById('newsletter_msg').innerHTML = '<table cellspacing=0 cellpadding=1 style="width:90%; border:1px solid #FF0000;" align="center"><tr><td>' + xmldoc + '</td></tr></table>';
}
