function send_xmlhttprequest_demands(targetId,link,method, url, content, headers) {
    var xmlhttp = (window.XMLHttpRequest ? new XMLHttpRequest : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false));
    if (!xmlhttp) {
        return false;
    }
    xmlhttp.open(method, url);
    xmlhttp.onreadystatechange = function() {
        handler_demands(xmlhttp,targetId,link);
    };
    if (headers) {
        for (var key in headers) {
            xmlhttp.setRequestHeader(key, headers[key]);
        }
    }
    xmlhttp.send(content);
    return true;
}

function ajaxList_demands(action,link,targetId) {
	var val;

	if (document.getElementById(targetId)) {
		// SEND REQUEST
	  	if (!send_xmlhttprequest_demands(targetId,link,'GET', link+'?act='+action+'&id=1')) {
	   	    return false;
	   	}
	   	return true;
	}
	return false;
}

function handler_demands(xmlhttp,targetId,link) {
    if (xmlhttp.readyState == 4) {    	
    	// RESPONSE ELEMENTS
		var options = xmlhttp.responseXML.getElementsByTagName('option');
		if (options) {
			
			// TRANSFORM ALL OPTIONS FROM RESPONSE
			if (options.length > 0) {
				var xSelect = document.createElement("select");
				for (var i=0; i < options.length; i++) {
		 			var newOption = document.createElement("option");
		            value=options[i].getAttribute('value');
		          	text=options[i].firstChild.data;
		          	newOption.setAttribute("value",value);
		          	texto = document.createTextNode(text);
		          	newOption.appendChild(texto);
		          	xSelect.appendChild(newOption);
				}	
				addDemandLocalityBlock(link,xSelect,targetId);				
			}
		}
	}
}

function addDemandLocalityBlock(link,xSelectRegions,targetId) {
	
	// TARGET ELEMENT
	var element = document.getElementById(targetId);
	
	// COUNT
    var counter = 0;
   	counter = document.getElementById(targetId).childNodes.length;
   	if (counter > 10) return false;
   	for ( var i = counter; i < 100; i++) {
		if (!document.getElementById('region'+i)) {
			counter = i;
			break;
		}
	}
   	
   	// DIV CONT
   	var xDivCont = document.createElement("div");
   	xDivCont.setAttribute('class','right fifth ulined');
	xDivCont.setAttribute('className','right fifth ulined');
	
	// SELECT REGIONS
	xSelectRegions.id = 'region'+counter;
	xSelectRegions.name = 'localities['+counter+'][region]';
	xSelectRegions.setAttribute('className','element select xxmedium');
	xSelectRegions.setAttribute('class','element select xxmedium');
	xSelectRegions.onchange = new Function ("removeAll('box_ulCities"+counter+"'); removeAll('ulCities"+counter+"'); ajaxList('demands-districts','"+link+"','region"+counter+"','district"+counter+"',true); ");
	
	// SELECT DISTRICTS
	var xSelectDistricts = document.createElement("select");
	xSelectDistricts.id = 'district'+counter;
	xSelectDistricts.name = 'localities['+counter+'][district]';
	xSelectDistricts.setAttribute('className','element select xxmedium');
	xSelectDistricts.setAttribute('class','element select xxmedium');
	xSelectDistricts.onchange = new Function ("ajaxList('demands-cities','"+link+"','district"+counter+"','ulCities"+counter+"',true)");
	
	var xOption = document.createElement('option');
	xOption.appendChild(document.createTextNode('Vyberte'));
	xSelectDistricts.appendChild(xOption);
	
	// DIV CHOOSE
	var xDivChoose = document.createElement("div");
	xDivChoose.setAttribute('className','choose-city');
	xDivChoose.setAttribute('class','choose-city');
	xDivChoose.setAttribute('style','z-index:'+(5000-counter));
	xDivChoose.style.zIndex = (5000-counter);
	
	// DIV MULTI
	var xDivMulti = document.createElement("div");
	
	if (document.getElementById('multiSelectText').innerHTML != '') {
		xDivMulti.appendChild(document.createTextNode(document.getElementById('multiSelectText').innerHTML));
	} else {
		xDivMulti.appendChild(document.createTextNode(''));
	}
	xDivMulti.setAttribute('className','element text multiSelect');	
	xDivMulti.setAttribute('class','element text multiSelect');	
	xDivMulti.id = 'multi'+counter;
	
	// DIV CITIES
	var xDivCities = document.createElement("div");
	xDivCities.setAttribute('className','cities');
	xDivCities.setAttribute('class','cities');
	xDivCities.style.display = 'none';
	xDivCities.id = "cities"+counter;
	
	// DIV SHOW
	var xDivShow = document.createElement("div");
	xDivShow.setAttribute('className','show');
	xDivShow.setAttribute('class','show');
	
	
	// A HREF CLOSE
	var xAClose = document.createElement("a");
	xAClose.href = '#nogo';
	xAClose.id = 'close-selection1';
	xAClose.setAttribute('className','close-selection');
	xAClose.setAttribute('class','close-selection');
	if (document.getElementById('aHrefCloseText').innerHTML != '') {
		xAClose.appendChild(document.createTextNode(document.getElementById('aHrefCloseText').innerHTML));
	} else {
		xAClose.appendChild(document.createTextNode(''));
	}
	
	// UL CITIES
	var xUlCities = document.createElement("ul");	
	xUlCities.id = "ulCities"+counter;
	
	// DIV CITIES LIST
	var xDivCitiesList = document.createElement('div');
	xDivCitiesList.setAttribute('className','cities-list');
	xDivCitiesList.setAttribute('class','cities-list');
	xDivCitiesList.id = "box_ulCities"+counter;
	
	// SELECT REGIONS INTO CONT
	xDivCont.appendChild(xSelectRegions);
	
	// SELECT DISTRICTS INTO CONT
	xDivCont.appendChild(xSelectDistricts);
	
	// DIV CITIES
	xDivCities.appendChild(xDivShow);
	
	// DIV SHOW
	xDivShow.appendChild(xAClose);
	xDivShow.appendChild(xUlCities);
	
	// DIV CHOOSE
	xDivChoose.appendChild(xDivMulti);
	xDivChoose.appendChild(xDivCities);
	
	// DIV CHOOSE INTO CONT
	xDivCont.appendChild(xDivChoose);	
	
	// CONT INTO ELEMENT
	xDivCont.appendChild(xDivCitiesList);
	
	// CONT INTO ELEMENT
	element.appendChild(xDivCont);	
	
	$('#multi'+counter).click(function() {
		$('#cities'+counter).slideToggle(500);
		return false;
	});
	
	$('.close-selection').click(function() {
		$('#cities'+counter).slideUp(500);
		return false;
	});	
	
}

function selectCity(selText,selId,sourceId,targetId) {	
	if (document.getElementById(targetId)) {
		if (!document.getElementById(targetId+sourceId)) {
			// TEXT
			var xText = document.createTextNode(selText);
			
			var splitted=targetId.split("box_ulCities");
			var lineId = splitted[1];
			
			// SPAN
			var xSpan = document.createElement('span');
			xSpan.id = targetId+sourceId;
			xSpan.onclick = new Function ("removeCity('"+targetId+sourceId+"','"+sourceId+"');");
			
			// TEXT INTO SPAN
			xSpan.appendChild(xText);		
			
			// INPUT TYPE HIDDEN
			var xHidden = document.createElement('input');
			xHidden.type = 'hidden';
			xHidden.name = 'localities['+lineId+'][cities][]';
			xHidden.value = selId;
			
			// TEXT INTO SPAN
			xSpan.appendChild(xHidden);			
			
			// SELECTED
			document.getElementById(sourceId).setAttribute("className","selected");
			document.getElementById(sourceId).setAttribute("class","selected");
					
			document.getElementById(targetId).appendChild(xSpan);			
			
		} else {
			removeCity(targetId+sourceId,sourceId)
		}
	}		
}

function removeCity(sourceId,sourceIdList) {
	if (document.getElementById(sourceId)) {
		var cont = document.getElementById(sourceId);
		cont.parentNode.removeChild(cont);
		
		// SELECTED
		document.getElementById(sourceIdList).setAttribute("className","");
		document.getElementById(sourceIdList).setAttribute("class","");
	}
}

