/**
 * STMELF JavaScript core
 *
 * @author  Peter Dobetsberger <p.dobetsberger@edelweiss72.de>
 *
 * Conventions:
 * Variables in camelCase
 * Classes in PascalCase
 * Function/Methods in camelCase
 */


STMELF = {};

$(document).ready(function() {

    // Instanz des Schriftgroessenwechslers
  	var fss = new STMELF.FontSizeSwitch();

  	// Registrieren der Funktionen fuer onclick Ereignisse innerhalb der Ankerelemente in der
    // Werkzeugkiste (E-Mail, Lesezeichen, Drucken, usw.) im Kopfteil des Dokuments.

    // E-Mail
    /*
  	$("#layer_email_link").click(function() {
  		STMELF.toggleLayer(this, "boxEmailActive");
  		return false;
  	});
    $(".moduleLayerEmail .boxIconClose > a").click(function() {
        STMELF.toggleLayer($("#layer_email_link"), "boxEmailActive");
  		return false;
  	});
	*/
    // Bookmark
  	$("#layer_bookmark_link").click(function() {
  		STMELF.toggleLayer(this, "boxBookmarkActive");
  		return false;
  	});
    $(".moduleLayerBookmark .boxIconClose > a").click(function() {
        STMELF.toggleLayer($("#layer_bookmark_link"), "boxBookmarkActive");
  		return false;
  	});

    /* Print
  	$("#layer_print_link").click(function() {
  		// @todo: Was soll hier passieren?
  		window.print();
  		return false;
  	});*/

    // Newsleter
    /*
  	$("#layer_newsletter_link").click(function() {
  		STMELF.toggleLayer(this, "boxNewsletterActive");
  		return false;
  	});
    $(".moduleLayerNewsletter .boxIconClose > a").click(function() {
        STMELF.toggleLayer($("#layer_newsletter_link"), "boxNewsletterActive");
  		return false;
  	});
*/
    // RSS
  	$("#layer_rss_link").click(function() {
  		STMELF.toggleLayer(this, "boxRSSActive");
  		return false;
  	});
    $(".moduleLayerRss .boxIconClose > a").click(function() {
        STMELF.toggleLayer($("#layer_rss_link"), "boxRSSActive");
  		return false;
  	});


    $("div.jsToggleByCheckbox").hide();

      // Registrieren der der Funktionen fuer onclick Ereignisse der Anker innerhalb der Lesezeichen Liste
      $(".moduleLayerBookmark a.bookmarkLink").click(function(){
          window.open(this.href);
          return false;
      });
    
      var mybmval = document.getElementById('form_bookmark_name');
      mybmval.value = document.title;
      
     /* nur fuer toggable navi, punkte initial ausblenden
      STMELF.toggleNaviInit('nav_institute');
      */
      
      $(".pdfselector input.globalFormButton").click(function(){
          var theId = this.id;
          theId = 'pdflist' + theId.substring(6);
          var myPdf = document.getElementById(theId).options[document.getElementById(theId).selectedIndex].value;
    	   window.open(myPdf);
          return false;
      })
});


// toggle Layer RSS etc.
STMELF.toggleLayer = function (setLink,setClass) {
    // reset
    var match;
    $("a.jsToggleLayer").each(function(){
        if ($(this).data('active')){
            $(this).removeClass($(this).data('active'));
            $(this).data('active', false);
            if ($(this).attr("class") == $(setLink).attr("class")) {match=true;return false;}
        }
    });
    $("#box_toplayers div.jsToggleLayer").hide();
    if (match){return false;}

    // toggle
    var index = $(".moduleIcons a.jsToggleLayer").index($(setLink));
    $("#box_toplayers div.jsToggleLayer:eq("+index+")").toggle();
    $(setLink).toggleClass(setClass);
    $(setLink).data("active", setClass);
    return false;
}


// goTo
STMELF.goTo = function (url) {
	  location.href=url;
}


// InputFeld auf leer setzen
STMELF.clearField = function(field, cssClass) {
    // addValue
    if ($(field).data("value")) {return;}
    $(field).data("value", $(field).val());
    $(field).val("");;
    if (cssClass){
        $(field).removeClass(cssClass);
    }
    // addFocus-Event
    $(field).focus(function(){
        if ($(this).data("done")){return;}
        if ($(this).val() == $(field).data("value")) {
            $(this).val("");
            if (cssClass){
                $(this).removeClass(cssClass);
            }
            //$(this)
        }
    });
    // addBlur-Event
    $(field).blur(function(){
        if ($(this).val() == "") {
            $(this).val($(field).data("value"));
            if (cssClass){
                $(this).addClass(cssClass);
            }
        }
    });
    // nach Eingabe deaktivierung
    $(field).bind('keypress', function(e){
        $(this).data("done", true);
    });
}


// toggle Navigation
STMELF.toggleNavi = function (setNav,setText,setLink,duration) {

    var speed = (duration===undefined) ? 'slow' : duration;

    $("#"+setNav+" > li:not(.active)").toggle(speed);
    actualText=$(setLink).text();
    if ($(setLink).data("tempvar")==undefined) {
      $(setLink).data("tempvar", actualText);
    }
    if ($(setLink).data("tempvar")==actualText) {
      $(setLink).text(setText);
      $(setLink).attr('title',setText);
    }
    else {
      $(setLink).text($(setLink).data("tempvar"));
      $(setLink).attr('title',$(setLink).data("tempvar"));
    }
    $(setLink).toggleClass('jsActive');
    return false;
}

//toggle Navigation
STMELF.toggleNaviInit = function (setNav) {

    var speed = (duration===undefined) ? 0.00001 : 0.001;

    $("#"+setNav+" > li:not(.active)").toggle(speed);
    
    return false;
}

// toggle Box
/*STMELF.toggleBox = function(setLink, className, duration) {
    var speed = (duration===undefined) ? "slow" : duration;
    if (typeof(setLink) == "number") {
        $(".jsToggle:not(a.jsToggle):eq("+(setLink-1)+")").show();
        $("a.jsToggle:eq("+(setLink-1)+")").addClass('jsActive');
        return false;
    }
    var index = $("a.jsToggle").index($(setLink));
    $(".jsToggle:not(a.jsToggle):eq("+index+")").toggle(speed);
    $(setLink).toggleClass('jsActive');
    $(setLink).blur();
    return false;
}*/


// toggle + zoom Image
STMELF.toogleImage = function (imgObject) {
    $('#'+imgObject).animate({
      //opacity: 0.25,
      //left: '-=100',
      //top: '-=100',
      height: 'toggle'
    }, 500);
    $('#'+imgObject).parents(".divToggle").toggleClass("jsIE6zIndexFix");
}
// TODO ohne id toggle + zoom Image
STMELF.XXtoogleImage = function (imgObject) {
    var index = $("a.jsZoomToggle").index($(imgObject));
    setImg=$(".jsZoomToggle:not(a.jsZoomToggle):eq("+index+")");
    setImg.animate({
      //opacity: 0.25,
      //left: '-=100',
      //top: '-=100',
      height: 'toggle'
    }, 500);
}


// toggle InfoLayer
STMELF.toggleInfoLayer = function(setLink) {
    if (jQuery.browser.msie && jQuery.browser.version == 6.0) {
        $("select").toggle();
    }
}

// toggelt einen Layer im Abnängigkeit von einer Checkbox
STMELF.toggleByCheckbox = function(checkboxId, duration) {
    //duration = (duration===undefined) ? "slow" : "";
    duration = "";
    var index = $('input.jsToggleByCheckbox').index($('#'+checkboxId));
    if ($('#'+checkboxId).get(0).checked != true) {
        $("div.jsToggleByCheckbox:eq("+index+")").hide(duration);
    } else {
        $("div.jsToggleByCheckbox:eq("+index+")").show(duration);
    }
}



/**
 * KLasse zum Wechseln der Schriftgroese
 *
 * @class
 */
STMELF.FontSizeSwitch = function() {
  	/**
  	 * CSS Klassennamen fue verschiedene Schriftgroessen.
  	 * @type  {Array}
  	 */
  	this._classNames = ["", "fontSize2"];

  	/**
  	 * Aktuelle Position
  	 * @type  {Array}
  	 */
  	this._currPos = 0;

  	// Klickereignisse registrieren
  	var that = this;
  	$(".boxFontBig").click(function() {
  		$(this).attr("href", "#");
  		that.increase();
  	});
  	$(".boxFont").click(function() {
  		$(this).attr("href", "#");
  		that.decrease();
  	});

  	// --- Ermittlung der aktuell gesetzten Schriftgroesse (=Position innerhalb von this._classNames)

  	// 1. Position aus dem Keks
  	var cookiePos = this._getCookieValue();

  	// 2. Position aus dem Inhaltselement
  	this._currPos = this._getElementPos();

  	if (cookiePos !== null) {
  		// Ein existierender Wert im Keks überschreibt immer den im class-Attribut
          // des Inhaltselements gesetzten Wert.
  		if (cookiePos != this._currPos) {
  			this._setFontSizeClass(
  				this._classNames[cookiePos], this._classNames[this._currPos]
  			);
  			this._currPos = cookiePos;
  		}
  	}
};


/**
 * Erhoeht die Schriftgroesse des Inhaltsbereiches und speichert den neuen Wert im Keks.
 */
STMELF.FontSizeSwitch.prototype.increase = function() {
  	if (this._currPos < this._classNames.length-1) {
  		this._setFontSizeClass(
  			this._classNames[this._currPos+1], this._classNames[this._currPos]
  		);
  		this._currPos++;
  		this._setCookieValue(this._currPos);
  	}
  	return false;
};


/**
 * Verkleinert die Schriftgroesse des Inhaltsbereiches und speichert den neuen Wert im Keks.
 */
STMELF.FontSizeSwitch.prototype.decrease = function() {
  	if (this._currPos > 0) {
  		this._setFontSizeClass(
  			this._classNames[this._currPos-1], this._classNames[this._currPos]
  		);
  		this._currPos--;
  		this._setCookieValue(this._currPos);
  	}
  	return false;
};


/**
 * Setzt die CSS-Kasse fuer die Schriftgroesse im HTML-Element mit dem Klassenamen "divContent"
 * im class-Attribut
 */
STMELF.FontSizeSwitch.prototype._setFontSizeClass = function(className, classNameToRemove) {
  	if (classNameToRemove !== "") {
  		$(".divContent").removeClass(classNameToRemove);
  	}
  	if (className !== "") {
  		$(".divContent").addClass(className);
  	}
    this.observeNaviIcons(classNameToRemove);
};


/**
 * Liefert den im Keks gespeicherten Wert.
 */
STMELF.FontSizeSwitch.prototype._getCookieValue = function() {
  	// Wert aus dem Keks holen und validieren
  	var cookieVal = $.cookie("jsFontSizeSwitchStatus");
  	if (cookieVal === null || isNaN(cookieVal)) {
  		return null;
  	}
  	cookieVal = parseInt(cookieVal);
  	if (cookieVal < 0 || cookieVal > this._classNames.length-1) {
  		return null;
  	} else {
  		return cookieVal;
  	}
};


/**
 * Speichert den Wert im Keks.
 */
STMELF.FontSizeSwitch.prototype._setCookieValue = function(newValue) {
	  $.cookie("jsFontSizeSwitchStatus", newValue, {expires: 14});
};


/**
 * Ermittels den fuer die Schriftvergroesserung verwendeted CSS-Klassennamen durch Analyse des
 * HTML-Elements mit dem Klassenamen "divContent" im class-Attribut und liefert die entsprechende
 * Position innerhalb der Eigenschaft this._classNames zurueck.
 */
STMELF.FontSizeSwitch.prototype._getElementPos = function() {
  	// Position durch Analyse des HTML-Elements ermitteln
  	var elemPos = 0;
  	$(this._classNames).each(function(pos, item) {
  		if (item !== "" && $(".divContent").hasClass(item)) {
  			elemPos = pos;
  		}
  	});
  	return elemPos;
};


/**
 * Switcht den Hintergrund (background-position) der Buchstaben Icons
 */
STMELF.FontSizeSwitch.prototype.observeNaviIcons = function(className) {
   observeSring = $(".divContent").attr("class");
   if (observeSring.indexOf(className) == -1){
       // klein
       $(".moduleIcons .boxFont").css("background-position", "0 -20px");
       $(".moduleIcons .boxFontBig").css("background-position", "0 -120px");
   } else {
       // groß
       $(".moduleIcons .boxFont").css("background-position", "-100px -20px");
       $(".moduleIcons .boxFontBig").css("background-position", "-100px -120px");
   }
}


function setBookmark(title,url){
	if (window.sidebar) window.sidebar.addPanel(title, url, ""); //mozilla
	else if(window.opera && window.print){ // op
		var elemA = document.createElement('a');
		elemA.setAttribute('href',url);
		elemA.setAttribute('title',title);
		elemA.setAttribute('rel','sidebar');
		elemA.click();
	} 
	else if(document.all) window.external.AddFavorite(url, title); //ie
}


STMELF.jump2Network = function (){
	var selectedURI = document.form_wegweiser.wegweiser_auswahl.options[document.form_wegweiser.wegweiser_auswahl.selectedIndex].value;
	//alert(selectedURI);
	if(selectedURI.length > 2)location.href=selectedURI;
}


STMELF.checkFts= function (){
	var mytoggleOpen = false;
	var myQuery = location.search;
	//extralist, if matches open
	var matchListXtra = new Array('XPDF','all','DOC','dmodified','3','7','30','183','365');
	for(i=0;i<matchListXtra.length;i++){
		if(myQuery.indexOf('='+matchListXtra[i]) != -1){
			mytoggleOpen = true;
			break;
		}	
	}
	//dirgroup_cmsxx ab 2 matches open
	if(myQuery.match(/dirgroup_cms\d\d=1.+dirgroup_cms\d\d=1/i)){
		mytoggleOpen = true;
	}
	if(mytoggleOpen){
		var myToggler = document.getElementById('ftsToggler');
		myToggler.style.display= 'block';
		var myTogglerCtrl = $('#ftsTogglerControl');
		myTogglerCtrl.removeClass('jsToggleInactive');
		myTogglerCtrl.addClass('jsActive');
	}
}



