//--------------------------------------
// XOPAC-Tools
// Speichern der Einstellungen der Suchmaske des KIT-Katalog
// Copyright by Uwe Dierolf, KIT-Bibliothek Karlsruhe
// März 2010
//--------------------------------------

function debug(txt) {
    // ohne window.debugging wird eine JS Error geworfen, 
    // falls debugging nicht deklariert wurde
    if (window.debugging != true) return;
    if (typeof(console) != 'undefined') console.log(txt);
    // else alert(txt);
}

// Falls mal ein selector-Ausdruck falsch ist, kann man so wenigstens 
// per debug-Aufruf erkennen, dass das wrapped set leer ist

(function($){
  $.fn.debugWrappedSet = function(txt) {
    // debug('this.size = ' + this.size());
    if (this.size() == 0) { 
	debug('wrappedSet is empty ! info=' + txt);
    }
    return this;
  }
}) (jQuery);


function zuruecksetzen() {
    $.cookies.del(unikatalog_cookie);
    // debug('formValues = ' + $.cookies.get(unikatalog_cookie));
    enableSucheinschraenkungen(); 
    toggleRestrictionNoticeVisibility(false);
}

function isEmpty(x) {
    if (x == null || typeof(x) == undefined || x == '') return true
    return false
}

function checkAndDoSubmit() {
    var freitext = $('#freitext_suche_id_1').attr('value')
    var field1 = $('#standard_suche_id_3').attr('value')
    var field2 = $('#standard_suche_id_6').attr('value')
    var field3 = $('#standard_suche_id_10').attr('value')
    var otherFields = field1 + field2 + field3
    if (!isEmpty(freitext) && !isEmpty(otherFields)) {
        alert('Sie können die Freitextsuche und die Erweiterte Suche nicht kombinieren! Die Freitextsuche hat Vorrang und wird nun durchgeführt!')
	$('#standard_suche_id_3').attr('value','')
	$('#standard_suche_id_6').attr('value','')
	$('#standard_suche_id_10').attr('value','')
    }
    return saveForm()
}

function mySetCookie(cookieName, cookieValue) {
    // var options = {expiresAt: new Date(2020, 0, 1) , path: location.pathname};
    var options = {expiresAt: new Date(2020, 0, 1)};
    $.cookies.set(cookieName, cookieValue, options);
}

function saveForm() {
    var formValues = $('#myFormId').values();
    // in standard stehen die Default-Werte drin --> löschen
    delete formValues['standard'];
    // debug('saveForm: formValues = ' + $.toJSON(formValues));
    if (formValues != '' && formValues != null) {
	// $.cookies.set(unikatalog_cookie, $.toJSON(formValues), {expires: 10});
	mySetCookie(unikatalog_cookie, $.toJSON(formValues));
    }
    return true;
}

function resetFocus(element) {
    element.blur();
    element.focus();
}

function xopac_init() {
    var formValues = $.cookies.get(unikatalog_cookie);
    enableSucheinschraenkungen();
    debug('xopac_init');
    // debug('formValues = ' + formValues + (formValues == formValues) + (formValues != ''));
    if (formValues != '' && formValues != null) {
        if (typeof(formValues) == "string") {
            var formValuesObject = $.evalJSON(formValues)
        } else if (typeof(formValues) == "object") {
            var formValuesObject = formValues
        }   
	debug('if');
	$('#myFormId').values(formValuesObject);
	toggleRadioButton();
    } else {
	debug('else');
    }

    $('wrongSelector').debugWrappedSet('1');

    $('#alleBestaende').debugWrappedSet('2').click(function() {
	$('.radioCheckbox').attr('checked',false);
	enableSucheinschraenkungen();
	onSearchRestrictionChange();
    });


    $('#zuruecksetzen_btn').bind('click', zuruecksetzen );
    $('#myFormId').bind('submit',checkAndDoSubmit);

    className = ".radioCheckbox";

    // Sonderbehandlung für IE, da der den change-Event bei Radio-Buttons und Checkboxen
    // erst bei blur wirft
    // Workaround: auf click reagieren, dann blur durchführen, was change auslöst und focus
    //             zurücksetzen
    // debug('bind(' + className + ')');
    if ($.browser.msie) {
	$(className).bind('click', function() { 
	    resetFocus(this);  
	});
    }
    $(className).bind('change', toggleRadioButton );  
    // Den Suchtext im Feld Freitextsuche selektieren, damit man ihn direkt überschreiben kann
    $("#freitext_suche_id_1").select();
}       

function toggleRadioButton() {
    debug("toggleRadioButton");
    var the_id_of_checked_RB    = jQuery('input:radio:checked').attr('id');
    debug('the_id_of_checked_RB = ' + the_id_of_checked_RB);
    if (the_id_of_checked_RB == null) { 
	debug('is undefined'); 
    } else {
        if (the_id_of_checked_RB == 'rb0') 
            enableSucheinschraenkungen();
        else 
            disableSucheinschraenkungen();
	if (the_id_of_checked_RB == 'rb1') { enable_SE('UBKA'); }
	if (the_id_of_checked_RB == 'rb2') { enable_SE('FZK');  }
	if (the_id_of_checked_RB == 'rb3') { enable_SE('FBH');  }
    }
}

function disableFachgebiete() {
    disableElementById("fachgebiete");
}

function disableElementById(id) {
    var id = '#' + id;
    $(id).attr('disabled', true);
}
function enableElementById(id) {
    var id = '#' + id;
    // $(id).attr('disabled', false);
    $(id).removeAttr('disabled');
}

function disableSucheinschraenkungen() {
    debug('disableSucheinschraenkungen');
    $('#sucheinschraenkungen :input:not(:radio)').attr('disabled', true);
}

function enableSucheinschraenkungen() {
    debug('enableSucheinschraenkungen');
    $('#sucheinschraenkungen :input').attr('disabled', false);
}

function enable_SE(fuerWen) {
    debug('enable_SE fuer ' + fuerWen);
    var className = '.SE_fuer_' + fuerWen;
    $(className).attr('disabled', false);
    $('input:checkbox:disabled').attr('checked', false);
}


// -------------------------------
// main
// -------------------------------

// debugging = false;

unikatalog_cookie   = 'unikatalog-cookie';
radioCheckbox_class = "radioCheckbox";
$(document).ready( xopac_init );

