// when the page has finished loading add event listeners
$(document).ready(function(){
    $(".striper tr").mouseover(function(){
        $(this).addClass("over");
    }).mouseout(function(){
        $(this).removeClass("over");
    });
    $(".striper tr:even").addClass("alt");

	$("#omrader area").mouseover(function(){
		$('#norge_mask').removeClass().addClass(this.id);
	}).mouseout(function(){
		$('#norge_mask').removeClass();
	});

    $('#sok-postnummer form').submit(getClosestEducator);
    $('#omrader area').click(getAreaEducators);

    $.history.init(historyCallback);
});

// postal code search
function getClosestEducator(event){
    event.preventDefault();
    $('#sok-result').empty().append('<img src="design/images/loader.gif" class="loading" alt="Laster" />');

    var curentHash = (document.location.hash).slice(1);
    var hashToGet = addToHash(curentHash, 'postnummer', $('#postnummer').val());
    $.history.load(hashToGet);
};

// click on map
function getAreaEducators(event){
    event.preventDefault();
    $('#omrade-liste').empty().append('<img src="design/images/loader.gif" class="loading" alt="Laster" />');

    var curentHash = (document.location.hash).slice(1);
    var hashToGet = addToHash(curentHash, 'areaurl', this.href);
    $.history.load(hashToGet);
}

// update content based on history or AJAX navigation
function historyCallback(hash){
    var hashItems = hash.split('_');
    for (var i = 0; i < hashItems.length; i++) {
        if (hashItems[i].indexOf('postnummer') != -1) {
            i++;
            $.get('ajax.php', {
                postnummer: hashItems[i]
            }, function(data){
                $('#sok-result').empty().append(data);
            });
            $("#postnummer").val(hashItems[i]);
        }
        else if (hashItems[i].indexOf('areaurl') != -1) {
            i++;
            $.get('ajax.php', {
                areaurl: hashItems[i]
            }, function(data){
                $('#omrade-liste').empty().append(data);
				var areaHeader = $('#omrade-liste h4 a');
				var areaUrl = areaHeader.attr('href');
				// filtering of last slash needed to get all browsers to perform the same
				if (areaUrl.charAt(areaUrl.length-1) == '/'){
					areaUrl = areaUrl.substr(0, areaUrl.length-1);
				}
				var mapArea = $('#omrader area[href*=' + areaUrl + ']');
				areaHeader.text('Folkeuniversitetet ' + mapArea[0].title);
            });
        }
    }
}

// update the URL hash so that this page-state is included in the browser history
function addToHash(curentHash, variable, value){
    var hashItems = curentHash.split('_');
    var newHash = '';

    //empty hash
    if (curentHash == '') {
        newHash = variable + '_' + value;
        return newHash;
    }

    //update existing variable
    for (var i = 0; i < hashItems.length; i++) {
        if (hashItems[i].indexOf(variable) != -1) {
            hashItems[i + 1] = value;
            newHash = hashItems.join('_');
            return newHash;
        }
    }

    //add new variable
    hashItems.push(variable);
    hashItems.push(value);
    newHash = hashItems.join('_');
    return newHash;
}
