var __SELECTED_DISTRICT_ID__ = null;
var __ON_DISTRICTS_CHANGE__ = false;

function ajaxSetDistricts(id, path, district_id, ondistrictchange)
{	
  /*alert("district_id = " + district_id + ", id = " + id + ", Path = " + path + ", ondistrictchange = " + ondistrictchange);*/
	/*var url = path+"ajaxGetDistricts/p/"+id+"/"+district_id;*/
	var url = path+"ajaxGetDistricts/p/"+id;
	if(district_id != "undefined" && district_id != null && parseInt(district_id) > 0 && district_id != "")
	{
    url += "/" + district_id;
  }
	
	//alert(url);
	
	var ajaxObject = new Ajax (url, {onComplete: setDistricts, method: 'get'}).request();	
	__SELECTED_DISTRICT_ID__ = district_id;
	__ON_DISTRICTS_CHANGE__ = ondistrictchange;
	
}

function setDistricts(request)
{	
	var districtsBox = document.getElementById("register_districts");
	districtsBox.innerHTML = "";
	//request = utf8_decode(request);
	//alert(request);
  //document.getElementById("JSdebugBox").innerText = request;
  //document.write(request);	
	
	var districtObject = eval("(" + request + ")");

	
	var i;
	var options = "";
	
  var elements = districtObject.districts;
	var nrOfObjects = elements.length;
	
	

	
	for(i = 0; i < nrOfObjects; i++)
	{
	  var selectedString = "";
	  if(__SELECTED_DISTRICT_ID__ == elements[i].id)
	   selectedString = "selected=\"selected\" ";
		options += "<option value=\""+elements[i].id+"\" "+selectedString+">"+elements[i].name+"</option>";
	}
	
	var widthString = "";
	if(districtsBox.style.width)
	 widthString = "style=\"width: "+districtsBox.style.width+"\"";
	var onChangeString = "";
  if(__ON_DISTRICTS_CHANGE__)
	 onChangeString = "onchange=\"document.getElementById('request_employee_form').submit()\""; 
	districtsBox.parentNode.innerHTML = "<select "+onChangeString+" "+widthString+" id=\""+districtsBox.id+"\" name=\""+districtsBox.name+"\">"+options+"</select>";
}

function utf8_encode ( argString ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: sowberry
    // +    tweaked by: Jack
    // +   bugfixed by: Onno Marsman
    // +   improved by: Yves Sucaet
    // +   bugfixed by: Onno Marsman
    // +   bugfixed by: Ulrich
    // *     example 1: utf8_encode('Kevin van Zonneveld');
    // *     returns 1: 'Kevin van Zonneveld'

    var string = (argString+''); // .replace(/\r\n/g, "\n").replace(/\r/g, "\n");

    var utftext = "";
    var start, end;
    var stringl = 0;

    start = end = 0;
    stringl = string.length;
    for (var n = 0; n < stringl; n++) {
        var c1 = string.charCodeAt(n);
        var enc = null;

        if (c1 < 128) {
            end++;
        } else if (c1 > 127 && c1 < 2048) {
            enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128);
        } else {
            enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128);
        }
        if (enc !== null) {
            if (end > start) {
                utftext += string.substring(start, end);
            }
            utftext += enc;
            start = end = n+1;
        }
    }

    if (end > start) {
        utftext += string.substring(start, string.length);
    }

    return utftext;
}

function utf8_decode ( str_data ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
    // +      input by: Aman Gupta
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Norman "zEh" Fuchs
    // +   bugfixed by: hitwork
    // +   bugfixed by: Onno Marsman
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: utf8_decode('Kevin van Zonneveld');
    // *     returns 1: 'Kevin van Zonneveld'

    var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0;
    
    str_data += '';
    
    while ( i < str_data.length ) {
        c1 = str_data.charCodeAt(i);
        if (c1 < 128) {
            tmp_arr[ac++] = String.fromCharCode(c1);
            i++;
        } else if ((c1 > 191) && (c1 < 224)) {
            c2 = str_data.charCodeAt(i+1);
            tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
            i += 2;
        } else {
            c2 = str_data.charCodeAt(i+1);
            c3 = str_data.charCodeAt(i+2);
            tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
            i += 3;
        }
    }

    return tmp_arr.join('');
}
