
/* Cookie manipulation
---------------------------------------------------------------- */
function SetCookie(name, value, expireSeconds, path, domain, secure) {
    // set time, it's in milliseconds
    var today = new Date();
    today.setTime(today.getTime());
    var expires = 0;
    if (expireSeconds) {
        expires = expireSeconds * 1000;
    }
    var expires_date = new Date(today.getTime() + (expires));
    if (expireSeconds == 0) {
        expires_date = 0;
    }
    document.cookie = name + "=" + encodeURIComponent(value) +
    ((expires) ? ";expires=" + expires_date.toGMTString() : "") +
    ((path) ? ";path=" + path : ";path=/") +
    ((domain) ? ";domain=" + domain : "") +
    ((secure) ? ";secure" : "");
}
function GetCookie(check_name) {
    // first we'll split this cookie up into name/value pairs
    // note: document.cookie only returns name=value, not the other components
    var a_all_cookies = document.cookie.split(';');
    var a_temp_cookie = '';
    var cookie_name = '';
    var cookie_value = '';
    var b_cookie_found = false; // set boolean t/f default f
    for (i = 0; i < a_all_cookies.length; i++) {
        // now we'll split apart each name=value pair
        a_temp_cookie = a_all_cookies[i].split('=');
        // and trim left/right whitespace while we're at it
        cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
        // if the extracted name matches passed check_name
        if (cookie_name == check_name) {
            b_cookie_found = true;
            // we need to handle case where cookie has no value but exists (no = sign, that is):
            if (a_temp_cookie.length > 1) {
                cookie_value = decodeURIComponent(a_temp_cookie[1].replace(/^\s+|\s+$/g, ''));
            }
            // note that in cases where cookie is initialized but no value, null is returned
            return cookie_value;
            break;
        }
        a_temp_cookie = null;
        cookie_name = '';
    }
    if (!b_cookie_found) {
        return null;
    }
}
function DeleteCookie(name, path, domain) {
    if (GetCookie(name)) {
        document.cookie = name + "=" +
        ((path) ? ";path=" + path : ";path=/") +
        ((domain) ? ";domain=" + domain : "") +
        ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
    }
}
function deletecookie(name, path, domain) 
{
	DeleteCookie(name, path, domain);
}


/* Search, miniguides etc. 
02-03-2009 alpha added undefinded checks
---------------------------------------------------------------- */

function toogleFilter(f, filter) {
    var elm = document.getElementById(f);
    var obj = document.getElementById(filter);
    if (obj.style.display == '' || obj.style.display == 'none') {
        obj.style.display = 'block';
        if (f.className == undefined) {
            elm.className = 'minus';
        }
        else {
            f.className = 'minus';
        }
    } else {
        obj.style.display = 'none';
        if (f.className == undefined) {
            elm.className = 'plus';
        }
        else {
            f.className = 'plus';
        }
    }
}

function guideTabs(f, tab) {
    var tab1link = document.getElementById('tab1_link');
    var tab2link = document.getElementById('tab2_link');
    var tab1cont = document.getElementById('tab1');
    var tab2cont = document.getElementById('tab2');
    var obj = document.getElementById(tab);
    // Reset
    if (tab1link && tab1cont) { tab1link.className = 'active'; tab1cont.style.display = 'none'; }
    if (tab2link && tab2cont) { tab2link.className = 'active'; tab2cont.style.display = 'none'; }
    // Select and show
    f.className = 'selected';
    if (tab == 'tab1') { tab1cont.style.display = 'block'; }
    if (tab == 'tab2') { tab2cont.style.display = 'block'; }
}

function hideLayer(f) {
    var elm = document.getElementById(f);
    if (elm) { elm.style.display = 'none'; }
}

function guideCheck(f) {
    guideCheckUpdate(f, true);
}

function guideCheckWithSelectAllUncheck(f, saID, parentID) {


    if (saID != undefined && saID != '') {
        var selectAll = document.getElementById(saID);
        if (selectAll != undefined && selectAll != null) {
            if (selectAll.checked) {
                selectAll.checked = false;
                CheckUncheck(false, selectAll);
                guideCheckUpdate(selectAll, false);
            }
        }
    }
    if (parentID != undefined && parentID != '') {
        var parent = document.getElementById(parentID);
        if (parent != undefined && parent != null) {
            if (parent.checked) {
                parent.checked = false;
                CheckUncheck(false, parent);
                guideCheckUpdate(parent, false);
            }
        }
    }

    guideCheckUpdate(f, true);
}

function guideCheckUpdate(f, update) {
    var elm = document.getElementById(f.id + '_check');
    var obj = f.checked;
    if (f.type == 'radio') {
        var items = document.getElementsByTagName('input');
        var current = items.length;
        for (var d = 0; d < current; d += 1) {
            if (items[d].name == f.name) {
                var str = document.getElementById(items[d].id + '_check');
                if (str) { str.className = ''; }
            }
        }
    }
    if (elm) {
        CheckUncheck(obj, elm);
    }
    if (obj) {
        if (update)
            removeKey('offset'); // reset paging
        updateKey(f.name, f.value, update);
    }
    else {
        if (update)
            removeKey('offset'); // reset paging
        removeKey(f.name, f.value, update);
    }
}

function CheckUncheck(obj, elm) {
    if (obj) {
        if (elm.className == 'opx') {
            elm.className = 'opxs';
        }
        else if (elm.className == 'opxs') // allready selected don't change
        {
            elm.className = 'opxs';
        }
        else {
            elm.className = 'selected';
        }
    }
    else {
        if (elm.className == 'opxs') {
            elm.className = 'opx';
        }
        else if (elm.className == 'opx') // allready de-selected don't change
        {
            elm.className = 'opx';
        }
        else {
            elm.className = '';
        }
    }
}

//added by alpha
function guideCheckUpdateID(f, update) {
    var elm = document.getElementById(f.id + '_check');
    var obj = f.checked;
    if (elm) {
        if (obj) {
            elm.className = 'selected';
        } else {
            elm.className = '';
        }
    }
    if (obj) {
        if (update) removeKey('offset'); // reset paging
        updateKey(f.id, f.value, update);
    } else {
        if (update) removeKey('offset'); // reset paging
        removeKey(f.id, f.value, update);
    }
}


function guideCheckAllWithClass(f, classNames) {
    var state = f.checked;
    removeKey('offset'); // reset paging
    var items = document.getElementsByTagName('input');
    var current = items.length;
    for (d = 0; d < current; d += 1) {
        if (items[d].type == 'checkbox') {
            if (items[d].className == classNames) {
                items[d].checked = state;
                guideCheckUpdate(items[d], false);
            }
        }
    }
    ajaxSearch();
}
var customResetFilterMethods = new Array();
var customResetFilterInitialValuesMethods = new Array();
function resetFilters() {
    var items = document.getElementsByTagName('input');
    var current = items.length;
    for (d = 0; d < current; d += 1) {
        if (items[d].type == 'checkbox') {
            items[d].checked = false;
            var obj = document.getElementById(items[d].id + '_check');
            if (obj) {
                obj.className = 'opx';
            }
        }
        if (items[d].type == 'text') {
            if (items[d].id == 'q') { // http://fogbugz.schultz-information.dk/default.asp?988
                items[d].value = '';
            }
        }
    }
    if (typeof resetSliders == 'function' && typeof (sliderNames) != 'undefined') {
        resetSliders(sliderNames);
    }

    if (customResetFilterMethods.length > 0) {
        for (i = 0; i < customResetFilterMethods.length; i++) {
            fname = customResetFilterMethods[i];
            if (typeof this[fname] == 'function' && typeof (this[fname]) != 'undefined') {
                this[fname]();
            }
        }
    }

    // Reset key
    ajaxKey = '';
    if (customResetFilterInitialValuesMethods.length > 0) {
        for (i = 0; i < customResetFilterInitialValuesMethods.length; i++) {
            fname = customResetFilterInitialValuesMethods[i];
            if (typeof this[fname] == 'function' && typeof (this[fname]) != 'undefined') {
                this[fname]();
            }
        }
    }

    ajaxSearch();
}

function datesCheck(f, update) {
    var day = document.getElementById(f + '_day').value;
    var month = document.getElementById(f + '_month').value;
    var year = document.getElementById(f + '_year').value;
    var str = day + '-' + month + '-' + year;

    //ADDED BY ALPHA, TO MAKE SURE VALID DATES ARE INPUT, AND UPDATES HIDDEN FIELDS.
    var testDate = new Date(month + '/' + day + '/' + year);

    if (testDate.getDate() == day && testDate.getMonth() + 1 == month && testDate.getFullYear() == year) {
        document.getElementById(f + '_error').style.display = "none";

        document.getElementById(f).value = str;

        removeKey('offset'); // reset paging
        updateKey(f, str, update);
    }
    else {
        document.getElementById(f + '_error').style.display = "block";
    }
}

//Added by alpha to support new date filter
function datesCheckDateFilter(f, qsKey, update) {
    var day = document.getElementById(f + '_day').value;
    var month = document.getElementById(f + '_month').value;
    var year = document.getElementById(f + '_year').value;
    var str = day + '-' + month + '-' + year;

    //ADDED BY ALPHA, TO MAKE SURE VALID DATES ARE INPUT, AND UPDATES HIDDEN FIELDS.
    var testDate = new Date(month + '/' + day + '/' + year);

    if (testDate.getDate() == day && testDate.getMonth() + 1 == month && testDate.getFullYear() == year) {
        document.getElementById(f + '_error').style.display = "none";

        document.getElementById(f).value = str;

        var orig = getKey(qsKey);

        var parts = new Array();
        if (orig != undefined)
            parts = orig.split(":");

        var finalStr = "";

        if (f == "fromdate")
            finalStr = str + ":" + ((parts != undefined && parts.length > 1) ? parts[1] : "");
        else if (f == "todate")
            finalStr = ((parts != undefined && parts.length > 0) ? parts[0] : "") + ":" + str;

        removeKey('offset'); // reset paging
        updateKey(qsKey, finalStr, update);
    }
    else {
        document.getElementById(f + '_error').style.display = "block";
    }
}

function resetKnown(f) {
    if (f) {
        var temp = new Array();
        temp = f.split(",");
        for (var i = 0; i < temp.length; i++) {
            var obj = document.getElementById(temp[i]);
            if (obj) {
                if (obj.type == 'radio' || obj.type == 'checkbox') {
                    obj.checked = false;
                }
            }

        }
    }
}


function resetDateFilter(f, update) {
    if (document.getElementById(f + '_day')) document.getElementById(f + '_day').value = '';
    if (document.getElementById(f + '_month')) document.getElementById(f + '_month').value = '';
    if (document.getElementById(f + '_year')) document.getElementById(f + '_year').value = '';

    removeKey('offset'); // reset paging
    removeKey(f);
    if (update) {
        ajaxSearch();
    }
}

function resetControl(obj) {
    var control = document.getElementById(obj);
    var items = control.getElementsByTagName('input');
    var current = items.length;
    for (d = 0; d < current; d += 1) {
        if (items[d].type == 'checkbox') {
            items[d].checked = false;
            removeKey(items[d].name, '', false);
        }
        if (items[d].type == 'text') {
            if (items[d].id != 'q') { items[d].value = ''; }
            removeKey(items[d].id, '', false);
        }
    }
    ajaxSearch();
}

//var cookieName = 'searchParms';
//// get from cookie if available
//var ajaxKey = GetCookie(cookieName); 
var ajaxKey = '';
var ajaxUrl = '';

function updateKey(obj, val, update) {
    removeKey(obj, '', false);
    addKey(obj, val, update);
}

function addKey(obj, val, update) {
    var toAdd = '&' + obj + '=' + val;
    ajaxKey = ajaxKey + toAdd;


    // update cookie
    // THA 2011-11-16
    // SetCookie(cookieName, ajaxKey, 0);
    if (update) {
        ajaxSearch();
    }
}

function removeKey(obj, val, update) {
    var str = ajaxKey;
    var fieldName = obj;
    var temp = new Array();
    var checkup = new Array();
    var newAjaxKey = '';

    // String to split
    temp = str.split("&");

    // Run through items
    for (var i = 0; i < temp.length; i++) {
        if (temp[i] != '') {
            checkup = temp[i].split("=");
            if (checkup[0] != fieldName) {
                newAjaxKey += '&' + temp[i];
            }
        }
    }

    // Update key
    ajaxKey = newAjaxKey;
    // update cookie
    // THA 2011-11-16
    // SetCookie(cookieName, ajaxKey, 0);
    if (update) {
        ajaxSearch();
    }
}

function getKey(obj) {
    var str = ajaxKey;
    var temp = new Array();

    // String to split
    temp = str.split("&");

    for (var i = 0; i < temp.length; i++) {
        if (temp[i] != '') {
            checkup = temp[i].split("=");
            if (checkup[0] == obj) {
                return checkup[1];
            }
        }
    }
}

function addSearch(f) {
    var obj = document.getElementById(f);
    if (obj) {
        var str = encodeURI(obj.value);
        updateKey(f, str, true);
    }
}

function ajaxSearch() {
    if (typeof (pp_gemius_hit) == 'function') {
        if (typeof (AjaxGemiusIdentifier) == 'object') {
            pp_gemius_hit(AjaxGemiusIdentifier);
        }
        else {
            pp_gemius_hit('0nJL0ir.9HpKZej6a3Uc78PJDmX_M9swYcRE54H3dSL.V7');
        }
    }
    var url = ajaxUrl + ajaxKey;

	//check if current history state is different. only update if it is different.
	var historyCurrentHash = History.getState().hash;
	var historyCurrent = historyCurrentHash.substring((historyCurrentHash.indexOf('?') + 1));
	
	if(historyCurrent != ajaxKey.substring(1)){
	    History.replaceState('search_results', null, '?' + decodeURI(ajaxKey.substring(1))); // History.js uses escape - unkown to us why ??
	 //   History.replaceState('search_results', null, '?' + ajaxKey.substring(1)); // History.js uses escape - unkown to us why ??
	}
    ajaxpage(url, 'search_results', true);

    //reset the navigator taxonomy if it exists
    if (Boolean(typeof ajaxTaxNavSearch != 'undefined')) {
        ajaxTaxNavSearch();
    }
}

var AutoUpdateFromHash = {
	filtersForCustomHandling: new Array(),

	bindToFilterItemUpdate: function(callback){
		$j(window).bind('searchAutoUpdateFromHashFilterItemUpdate', callback);
	},
	
	bindToAutoUpdateFinished: function(callback){
		$j(window).bind('searchAutoUpdateFromHashFinished', callback);
	},
	
	triggerFilterItemUpdate: function(key,value){
		$j(window).triggerHandler('searchAutoUpdateFromHashFilterItemUpdate', [ key,value]);
	},
	
	triggerAutoUpdateFinished: function(){
		$j(window).triggerHandler('searchAutoUpdateFromHashFinished');
	},
	
	executeAutoUpdateFromHash: function(){
		var historyHash = History.getHash();
	
		if(historyHash != ''){
			var qs = historyHash.substring(historyHash.indexOf('?') + 1);
			
			if(qs != ''){
				ajaxKey = '&' + encodeURI(qs);
				
				ajaxSearch();
				
    			//set radio buttons and checkboxes
				var filters = qs.split("&");
				$j(filters).each(function(){
					var parts = this.split("=");
					var key = parts[0];
					var value = parts[1];
					
					if (Boolean(typeof filtersToExcludeInAutoUpdate != 'undefined')){
						if($j(filtersToExcludeInAutoUpdate).filter(function(val){ return key.match(this);}).length > 0){
							//alert("ignore: " + key);
							return;
						}
					}
					
					if($j(AutoUpdateFromHash.filtersForCustomHandling).filter(function(val){return key == this;}).length > 0){
						AutoUpdateFromHash.triggerFilterItemUpdate(key, value);
					}
					
					var obj = AutoUpdateFromHash.findFilterObject(key,value);
					if(obj){
						//update checks
						var inputType = $j(obj).attr('type');
						if(inputType == "radio"){
							$j(obj).attr('checked',true);
						}
						if(inputType == "checkbox"){
							$j(obj).attr('checked',true);
						}
						if(inputType == "text"){
							$j(obj).val(value);
						}
						
						expandOptionsSelectionIfNotAlready(obj);
					}
				});
				
				AutoUpdateFromHash.triggerAutoUpdateFinished();
			}
		}
	},
	
	findFilterObject: function(key,value){
		var obj = $j("input[name=" + key + "]").filter(function(){ return ($j(this).attr("value").toLowerCase() == encodeURIComponent(value).toLowerCase() || $j(this).attr("value").toLowerCase() == value.toLowerCase()); });
		if(obj.length > 0){
			return obj[0];
		}
		
		obj = $j("input[id=" + key + "]").filter(function(){ return ($j(this).attr("value").toLowerCase() == encodeURIComponent(value).toLowerCase() || $j(this).attr("value").toLowerCase() == value.toLowerCase()); });
		if(obj.length > 0){
			return obj[0];
		}
		
		obj = $j("input[id^=" + key + "]").filter(function(){ return ($j(this).attr("value").toLowerCase() == encodeURIComponent(value).toLowerCase() || $j(this).attr("value").toLowerCase() == value.toLowerCase()); });
		if(obj.length > 0){
			return obj[0];
		}
		
		//get the text field for freetext search
		obj = $j("#" + key + "[type=text]");
		if(obj.length > 0){
			return obj[0];
		}
		
		return null;
	}
}

function expandOptionsSelectionIfNotAlready(obj){
	var selections = $j(obj).parents(".options").children(".section").children("a");
	if(selections.length > 0){
		var selection = selections[0];
		
		if($j(selection).hasClass('plus')){
			$j(selection).trigger("click");
		}
	}
}

var hasSearchedFreeText = false;
function SetElementValue(elementId, value) {
    var obj = document.getElementById(elementId);
    if (obj) {
        obj.value = value;
    }
}
function SearchUpdateFreeTextLabels() {
    var label = document.getElementById('labelForFreeTextSearch');
    if (hasSearchedFreeText) {
        label.innerHTML = FritekstsoegningHasSearched;
    }
    else {
        label.innerHTML = FritekstsoegningNotSearchedYet;
    }
}
function SearchShowDidYouMean(didYouMeanSuggestionLinks) {
    var dymDiv = document.getElementById('didyoumean');
    var dymLinks = document.getElementById('didyoumeanLinks');
    if (dymLinks) dymLinks.innerHTML = didYouMeanSuggestionLinks;
    if (dymDiv) {
        dymDiv.style.display = 'block';
        dymDiv.className = 'row auto';
    }
}

function SearchHideDidYouMean() {
    var dymDiv = document.getElementById('didyoumean');
    if (dymDiv) dymDiv.style.display = 'none';
}



function SearchShowSynonyms(synonyms) {
    var replacedSynonyms = synonyms
        .replace('{synonym}', synonymTokenLeadText)
        .replace('{Expansion}', synonymTokenExpansion)
        .replace('{Rewrite}', synonymTokenReplace);

    var dymDiv = document.getElementById('synonyms');
    var dymLinks = document.getElementById('synonymLinks');
    if (dymLinks) dymLinks.innerHTML = replacedSynonyms;
    if (dymDiv) {
        dymDiv.style.display = 'block';
        dymDiv.className = 'row auto';
    }
}

function SearchHideSynonyms() {
    var dymDiv = document.getElementById('synonyms');
    if (dymDiv) dymDiv.style.display = 'none';
}

function SearchFreeTextOnClick(obj, inputFieldId) {
    hasSearchedFreeText = true;
    SearchUpdateFreeTextLabels();
    //    removeKey('offset');
    //    updateKey(obj.name,encodeURIComponent(document.getElementById(inputFieldId).value),true);
    SearchFreeText(obj.name, document.getElementById(inputFieldId).value);

}

function SearchFreeTextFromAnchor(freeTextFieldId, qsname, inputvalue) {
    var inputField = document.getElementById(freeTextFieldId);
    if (inputField) inputField.value = inputvalue;
    SearchFreeText(qsname, inputvalue);
}

function SearchFreeText(qsname, inputvalue) {
    removeKey('offset');
	//updateKey(qsname, inputvalue, true);
    updateKey(qsname, encodeURIComponent(inputvalue), true);
	//updateKey(qsname, encodeURI(inputvalue), true);
}

function clickButtonViaEnter(evt, buttonid) {
    evt = (evt) ? evt : event;
    var target = (evt.target) ? evt.target : evt.srcElement;
    var charcode = (evt.charcode) ? evt.charcode :
		((evt.which) ? evt.which : evt.keyCode);
    if (charcode == 13 || charcode == 3) { // 3 is mac enter
        document.getElementById(buttonid).click();
        return false;
    }
    return true;
}

/* added by alpha 
---------------------------------------------------------------- */
function dateTextBoxViaEnter(evt, tb) {
    evt = (evt) ? evt : event;
    var target = (evt.target) ? evt.target : evt.srcElement;
    var charcode = (evt.charcode) ? evt.charcode :
		((evt.which) ? evt.which : evt.keyCode);
    if (charcode == 13 || charcode == 3) { // 3 is mac enter
        document.getElementById(tb).onchange();
        return false;
    }
    return true;
}

/* Nearby lookup
---------------------------------------------------------------- */

var nearby = function() {
    var elm;
    return {
        focus: function() {
            elm = document.getElementById('nearby_ajax');
            elm.style.display = 'block';
        },
        blur: function() {
            setTimeout("nearby.delay();", 300);
        },
        delay: function() {
            elm = document.getElementById('nearby_ajax');
            elm.style.display = 'none';
        },
        showFurtherSearchOptions: function(searchstring) {
            //show further search options
            var distancediv = document.getElementById('nearby-distance-div');
            if (distancediv) { distancediv.style.display = 'block'; }
            var nearbysearched = document.getElementById('nearbysearched');
            if (nearbysearched) { nearbysearched.innerHTML = 'fra ' + searchstring; }
            var rangesortdiv = document.getElementById('rangesortdiv');
            if (rangesortdiv) { rangesortdiv.style.display = 'block'; }

        },
        lookup: function(filter, n, inputId) {
            if (filter) {
                var suggestionstart = '<li><a href="#" onclick="nearby.select(this,\'' + inputId.id + '\');return false;">';
                var suggestionend = '</a></li>';
                var selected = 0;
                var suggestions = "";

                for (var i = 0; i < dkgeo.length; i++) {
                    for (var j = 0; j < dkgeo[i].length; j++) {
                        if (dkgeo[i][j].trim().toLowerCase().startsWith(filter.toLowerCase())) {
                            suggestions += suggestionstart + dkgeo[i][0] + suggestionend;
                            selected++;
                            break;
                        }
                    }
                    if (n != 0 && selected == n)
                        break;
                }
                // Alpha correction (SG): <ul> tags are inserted here to avoid html validation error
                if (selected > 0) {
                    var suggestionul = document.getElementById('nearbysuggestions');
                    suggestionul.innerHTML = '<ul>' + suggestions + '</ul>';
                }
            }
        },
        search: function(id) {
            var searchstring = document.getElementById(id).value;
            geocoder = new google.maps.Geocoder();
            geocoder.geocode({ 'address': searchstring }, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    var dd = getNearbyDistanceDropDown(); //document.getElementById('nearby-distance');
                    updateKey('nearby_inputSearchStr', searchstring, false);
                    updateKey('nearby_range', dd.options[dd.selectedIndex].value, false);
                    updateKey('nearby_latlong', results[0].geometry.location, true);

                    //show further search options
                    nearby.showFurtherSearchOptions(searchstring);
                } else {
                    alert("Geocode was not successful for the following reason: " + status);
                }

            });
        },
        select: function(f, inputid) {
            var obj = f.innerHTML;
            var elm = document.getElementById(inputid);
            elm.value = obj;
            nearby.search(inputid);
        },
        onchange: function(range) {
            updateKey('nearby_range', range, true);
        },
        reset: function(inputID) {
            nearby.resetControl(inputID);
            //remove ajax keys
            removeKey('nearby_range', '', false);
            removeKey('nearby_latlong', '', false);
            removeKey('nearby_inputSearchStr', '', false);
            updateKey('sortby', document.getElementById('lastsort').value, true);
        },
        resetControl: function(inputID) {
            //reset field and hide further search options
            var obj = document.getElementById(inputID);
            var suggestionul = document.getElementById('nearbysuggestions');
            var distancediv = document.getElementById('nearby-distance-div');
            var rangesort = document.getElementById('lastsort');
            var rangesortdiv = document.getElementById('rangesortdiv');
            if (obj) { obj.value = ''; }
            if (suggestionul) { suggestionul.innerHTML = ''; }
            if (distancediv) { distancediv.style.display = 'none'; }
            if (rangesort) { rangesort.checked = false; }
            if (rangesortdiv) { rangesortdiv.style.display = 'none'; }
        },
        changesort: function(f, sortby) {
            var lastSort = document.getElementById('lastsort');

            if (f.checked) {
                //document.getElementById('lastsort').value = getKey('csortby');
                updateKey('csortby', sortby, true);
            }
            else {
                removeKey('csortby', '', true);
                //updateKey('csortby', document.getElementById('lastsort').value, true);
            }
        }
    };
} ();

String.prototype.trim = function() { return (this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, "")) }
String.prototype.startsWith = function(str) { return (this.match("^" + str) == str) }


