/********************************************************************/
// general functions
/********************************************************************/

// address flash movie for external interface in action script
function thisMovie( movieName )
{
    if ( navigator.appName.indexOf("Microsoft") != -1 )
    {
        return window[movieName];
    }
    else
    {
        return document[movieName];
    }
}


// reload page on resize
function reloadPage()
{
	window.document.location.href = currentPage;
}


/********************************************************************/
// ajax for immo detail
/********************************************************************/

function getLargeVersion ( urlslug )
{
	var detailContainer = document.getElementById("immoDetailContainer");
	if ( detailContainer ) {
		detailContainer.innerHTML = '<div id="AjaxLoader"><img src="../../web/pix/ajax-loader.gif" alt="" title="Bitte warten..." /></div>';
		DOMAssistant.AJAX.get(
			document.siteRoot + '/inc.project_detail_large.php' + urlslug,
			function ( responseText )
			{
				detailContainer.innerHTML = responseText.replace(/\{WEBROOT\}/g, document.siteRoot);
			}
		);
	}
}

var aspekt = {
	flashMovie : null,
	districtSelect : null,
	init : function() {
		aspekt.districtSelect = $$("district");
		aspekt.flashMovie = typeof document.getElementById("clickmap-search").showSelected === "function"
		                  ? document.getElementById("clickmap-search")
		                  : document.getElementById("clickmap-search").getElementsByTagName("object")[0];

		aspekt.districtSelect.last_selected = aspekt.get_selected_quarters();
		aspekt.districtSelect.addEvent("change", aspekt.send_changes_to_flash);
	},
	select_quarter : function(id) {
		for (var i=0; i<aspekt.districtSelect.options.length; i++) {
			if (aspekt.districtSelect.options[i].value == id) {
				aspekt.districtSelect.options[i].selected = true;
				break;
			}
		}
		aspekt.districtSelect.last_selected = aspekt.get_selected_quarters();
	},
	deselect_quarter : function(id) {
		for (var i=0; i<aspekt.districtSelect.options.length; i++) {
			if (aspekt.districtSelect.options[i].value == id) {
				aspekt.districtSelect.options[i].selected = false;
				break;
			}
		}
		aspekt.districtSelect.last_selected = aspekt.get_selected_quarters();
	},
	get_selected_quarters : function() {
		var selected = [];
		for (var i=0; i<aspekt.districtSelect.options.length; i++) {
			if (aspekt.districtSelect.options[i].selected) {
				selected.push(parseInt(aspekt.districtSelect.options[i].value));
			}
		}
		return selected;
	},

	send_changes_to_flash : function() {
		var last_selected = aspekt.districtSelect.last_selected;
		var now_selected = aspekt.get_selected_quarters();
		var changed = [];
		for (var i=0; i<last_selected.length; i++) {
			if (!aspekt.array_contains(now_selected, last_selected[i])) {
				changed.push(last_selected[i]);
			}
		}
		for (var i=0; i<now_selected.length; i++) {
			if (!aspekt.array_contains(last_selected, now_selected[i])) {
				changed.push(now_selected[i]);
			}
		}
		aspekt.districtSelect.last_selected = now_selected;

		aspekt.thisMovie('clickmap-search').showSelected(changed);
	},
	array_contains : function(arr, item) {
		if (typeof arr.indexOf === "function") {
			return arr.indexOf(item) !== -1;
		}
		var contains = false;
		for (var i=0; i<arr.length; i++) {
			if (arr[i] == item) {
				contains = true;
				break;
			}
		}
		return contains;
	},
	thisMovie : function (movieName) {
		return aspekt.flashMovie;
	}
};


DOMAssistant.DOMReady(function() {
	var map = document.getElementById("clickmap-search");
	if (!map) {
		return;
	}
	aspekt.init();
	if (map.parentNode.offsetWidth - parseInt(map.getAttribute("width")) > 20) {
		var ratio = (map.parentNode.offsetWidth - 20) / parseInt(map.getAttribute("width"));
		var curWidth = parseInt(map.getAttribute("width"));
		var curHeight = parseInt(map.getAttribute("height"));
		var newWidth = curWidth * ratio;
		var newHeight = curHeight * ratio;
		map.setAttribute("width", newWidth);
		map.setAttribute("height", newHeight);

		var innerObjs = map.getElementsByTagName("object");
		if (innerObjs.length > 0) {
			innerObjs[0].setAttribute("width", newWidth);
			innerObjs[0].setAttribute("height", newHeight);
		}
	}
});


