/**
 * WISO JavaScript core
 *
 * @author  Peter Dobetsberger <p.dobetsberger@edelweiss72.de>
 *
 * Conventions:
 * Variables in camelCase
 * Classes in PascalCase
 * Function/Methods in camelCase
 */
 
WISO = {};

/**
 * HtmlObject $(String htmlObjectId)
 * shortnotation for window.document.getElementById()
 */
function $(htmlObjectId) {return document.getElementById(htmlObjectId);}

// CSS1280 bei Bildschirmanzeigen > 1250 anzeigen
WISO.loadCss = function (phase) {
    var de = document.documentElement;
    var myWidth = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
    if (myWidth>1250) {
        // CSS einbinden
        document.write('<link rel="stylesheet" type="text/css" href="/_common/css/wiso1280.css?t=2009-09-26" media="screen" />');
        if (phase=='phase1') {
            document.write('<link rel="stylesheet" type="text/css" href="/_common/css/wiso1280_phase1.css?t=2009-09-26" media="screen" />');
        }
    }
}

// Startseiten Elemente setzen
WISO.setStartData = function () {
    var de = document.documentElement;
    var myWidth = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
    if (myWidth>1250) {
        // Hompage-Bild setzen
        if ($('image_homepage')){
            $('image_homepage').src = '/_common/img/bg/header_image_950px.jpg';
            $('image_homepage').width = '950';
        }
        // letzten Teaser einblenden
        if ($('last_teaser')){
            $('last_teaser').style.display = 'block';
        }
    }
}

// Helper für show/hide
WISO.findObj = function (n, d) { 
    var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
    if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=WISO.findObj(n,d.layers[i].document);
    if(!x && d.getElementById) x=d.getElementById(n); return x;
}

// Helper für show/hide 
WISO.changeProp = function (objName,x,theProp,theValue) {
    var obj = WISO.findObj(objName);
    if (obj && (theProp.indexOf("style.")==-1 || obj.style)){
    if (theValue == true || theValue == false)
    eval("obj."+theProp+"="+theValue);
    else eval("obj."+theProp+"='"+theValue+"'");
    }
}

// hide Layer 
WISO.hideLayer = function (setDiv) {
	  WISO.changeProp(setDiv,'','style.display','none','DIV');
}

// show Layer
WISO.showLayer = function (setDiv) {
	  WISO.changeProp(setDiv,'','style.display','block','DIV');
}

// show loader animation
WISO.showLoaderAni = function (){
    $('layer_overlay').style.display = 'block';
    $('layer_loaderAni').style.display = 'block';
    $('body').style.overflowY = 'hidden';

    // Grafiken austauschen anstoßen
    if (navigator.userAgent.toLowerCase().indexOf("msie") > -1){
        WISO.switchLoaderImageSrc(-1);
    }
}

// Grafiken austauschen (nur für IE wegen animated.gif-Bug)
WISO.switchLoaderImageSrc = function (i) {
    if (i < 9) {
        // Funktion verzögert aufrufen
        i++;
        var timeout = window.setTimeout("WISO.switchLoaderImageSrc(" + i + "); document.getElementById('image_loader_ani').src='/_common/img/icons/loader_ani" + i + ".gif'", 400);
    }else{
        WISO.switchLoaderImageSrc(-1);
    }
}

// body auf overflow="scroll" setzen
WISO.bodyEnableScroll = function () {
    $('body').style.overflowY = 'scroll';
}

// body auf overflow="hidden" setzen
WISO.bodyDisableScroll = function () {
    $('body').style.overflowY = 'hidden';
}


// toggle Layer
WISO.toogleLayer = function (setDiv,classId,logo) {
    // Layer einblenden
    if ($(setDiv).style.display!='block') {
            WISO.showLayer(setDiv);
            // Erweiterte Suche
            if (classId=='link_advanced_search') {
                $('box_search_inner').className='boxSearchInner';
                $('link_advanced_search').className='boxOpen spritesIcons';
                WISO.hideLayer('but_search');
                WISO.hideLayer('div_delete_profile');
                // WISO.showLayer('box_logo');
            }
            // Link Mein WISO
            else {
                $(classId).className='boxOpen spritesIcons';
                $('box_mywiso').className='boxMyWiso boxMyWisoShadow spritesGeneral clearfix';
                // Layer Einstellungen Select zu wg IE6
                WISO.hideLayer('layer_settings'); 
            }
    }
    // Layer schliessen
    else {
        WISO.hideLayer(setDiv);
        if (classId!='') {
            // Erweiterte Suche
            if (classId=='link_advanced_search') {
                // wenn Logo muss das Inputfeld kürzer sein
                if (logo=='logo') {
                $('box_search_inner').className='boxSearchInner boxSearchLogo';
                }
                else {
                $('box_search_inner').className='boxSearchInner';
                }
                $('link_advanced_search').className='boxClose spritesIcons';
                // WISO.hideLayer('box_logo');
                WISO.showLayer('but_search');
                WISO.showLayer('div_delete_profile');
            }
            // Link Mein WISO 
            else {
                $(classId).className='boxClose spritesIcons';
                $('box_mywiso').className='boxMyWiso spritesGeneral clearfix';
            }
        }
    }
}

// findet die absolute x Position eines Elementes raus
WISO.getAbsoluteX = function(elm) {
   var x = 0;
   if (elm && typeof elm.offsetParent != "undefined") {
     while (elm && typeof elm.offsetLeft == "number") {
       x += elm.offsetLeft;
       elm = elm.offsetParent;
     }
   }
   return x;
}

// findet die absolute y Position eines Elementes raus
WISO.getAbsoluteY = function(elm){
   var y = 0;
   if (elm && typeof elm.offsetParent != "undefined") {
     while (elm && typeof elm.offsetTop == "number") {
       y += elm.offsetTop;
       elm = elm.offsetParent;
     }
   }
   return y;
}

// Setzen der Position für das Quellenlayer-Highlight in der Hauptnavigation
WISO.setLayerSourceNaviHighlightPosition = function(){
    var element = $('layer_source_navi_main');
    var x = WISO.getAbsoluteX(element);
    var y = WISO.getAbsoluteY(element);
    var elementHighlight = $('layer_source_navi_main_highlight');
    if (elementHighlight){
        elementHighlight.style.display = 'block';
        elementHighlight.style.left = x + 'px';
        elementHighlight.style.top = y + 'px';
    }
}

// klappt Navi Level2 auf und zu 
WISO.toggleNavi = function () {
    navLev2Open=true;
    if ($('arrow_toggle').className=='spritesIcons open') {
    navLev2Open=false;
    $('arrow_toggle').className='spritesIcons';
    }
    else {
    $('arrow_toggle').className='spritesIcons open';
    }
    c=1;
    id='navLev2_'+c;
    while ($(id)) {
        if (($(id).className!='active') && ($(id).className!='activeShort')) {
            if (navLev2Open==false) {
                WISO.showLayer(id);
            }
            else {
                WISO.hideLayer(id);
            }
        }
        c++;
        id='navLev2_'+c;
    }
}

// klappt Weitere/Weniger auf/zu 
WISO.toggleMore = function (setId) {
    var moreLess=true;
    var more=setId+'_more';
    var less=setId+'_less';
    if ($(less).className=='displayNone') {
        moreLess=false;
        $(more).className='displayNone';
        $(less).className='clearfix';
    }
    else  {
        $(less).className='displayNone';
        $(more).className='clearfix';
    }
    c=1;
    id=setId+'_'+c;
    while ($(id)) {
                
            if (moreLess==false) {
                $(id).className='clearfix';
            }
            else {
                $(id).className='displayNone';
            }
 
        c++;
        id=setId+'_'+c;
    }
}

var marker=false;
// alle Checkboxen anklicken
WISO.selectAllCheckboxesBottom = function (checkboxname) {
    WISO.selectAllCheckboxes(checkboxname);
} 
WISO.selectAllCheckboxes = function (checkboxname) {
    var elements=document.getElementsByName(checkboxname);
    if(marker==false) {
        for(i=0;i<elements.length;i++) {
            elements[i].checked=true;
            marker=true;
        }
    }
    else {
        for(i=0;i<elements.length;i++) {
            elements[i].checked=false;
            marker=false;
        }
    }
}

// setzt User+PW auf leer
WISO.setEmptyField = function (id,val) {
    if ($(id).value==val) {
        $(id).value='';
        $(id).focus();
    }
}

// setzt inputfeld auf gesetzten Wert wenn leer
WISO.setValueField = function (id,val) {
    if ($(id).value=='') {
        $(id).value=val;
    }
}
    
// oeffnet Popup wird für popup-Modul benötigt
WISO.openPopup = function (URL,popname,W,H,scroll,rezisable,X,Y) {
  	var URL,popname,W,H,scroll,rezisable,X,Y;
  	if (!popname) { popname='popup'; }
  	if (!W) { W=520; }
  	if (!H) { H=460; }
  	if (!scroll) { scroll=0; }
  	if (!rezisable) { rezisable=0; }
  	if (!X) { X=screen.width/2-(W/2); }
  	if (!Y) { Y=screen.height/2-(H/2)-20; }
  	properties = "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars="+scroll+",resizable="+rezisable+",";
  	properties += "width="+W+",height="+H+",left="+X+",top="+Y;
  	popwin=window.open(URL,popname,properties);
  	popwin.focus();
}

// setzt ausgewählten Zeitmodus aktiv
WISO.setTimeMod = function (id){
    if (id == 'modus_erscheinungsdatum'){
        $('erscheinungsdatum').disabled = '';
        $('box_disabled_zeitmodus_raum').style.display = 'block';
    }else{
        $('erscheinungsdatum').disabled = 'disabled';
        $('box_disabled_zeitmodus_raum').style.display = 'none';
    }
}

// setzt Ort für Institutionelles Login
WISO.setInstituteLogin = function (){
    if ($('place_for_institute_login').value == ''){
        $('institute_for_institute_login').disabled = 'disabled';
        $('institute_for_institute_login').style.color = '#999';
    }else{
        $('institute_for_institute_login').disabled = '';
        $('institute_for_institute_login').style.color = '#000';
    }
}

// befüllt iframe für Druck
WISO.printTransfer = function (id){
    var code = '<br /><br />' + $(id).innerHTML;
    window['print_iframe'].printQuotation(code);
}

// Steuerung einer Reiternavigation
// id           id der Reiternavigation
// tabNumber    Anzahl der Reiter
// actualTab    aktueller Reiter
WISO.tabNav = function (id, tabNumber, actualTab){
    var actualTabNumber = actualTab.id.substr(4, actualTab.id.length);

    // reset
    for (var i=1; i<=tabNumber; i++){
        $('tab_' + i).className = '';
        $('content_tab_' + i).className = 'print';
    }

    //set
    actualTab.className = 'active';
    $('content_tab_' + actualTabNumber).className = '';
    $(id).className = 'boxTab' + actualTabNumber;
}


// Steuerung mehrerer Inhalte
// num              Anzahl der Inhalte
// actualContent    aktueller Inhalt
WISO.switchContent = function (num, actualContent){
    // reset
    for (var i=1; i<=num; i++){
        WISO.hideLayer('content_' + i);
    }

    //show actual content
    if (actualContent != 0){
        WISO.showLayer('content_' + actualContent);
    }
}



/**
 * Audio-Track-Steuerung  
 *
 * @static
 */
WISO.AudioTrack = {

    /**
     * Anzahl aller vorhandenen Tracks
     * @type  {Integer}
     */
    allTracks: 0,

    /**
     * Titel der Tracks
     * @type  {Array}
     */
    trackTitles: new Array(),

    /**
     * Pfade der Tracks
     * @type  {Array}
     */
    trackPath: new Array(),

    /**
     * Aktueller Track
     * @type  {Integer}
     */
    actualTrack: -1,

    /**
     * Aktueller Track Status
     * @type  {String}
     */
    actualTrackStatus: 'start',

    /**
     * Pfad Play Icon
     * @type  {String}
     */
    pathPlayIcon: '/_common/img/icons/icon_play.gif',

    /**
     * Pfad Pause Icon
     * @type  {String}
     */
    pathBreakIcon: '/_common/img/icons/icon_break.gif',

    /**
     * spielt übergebenen Track ab
     *
     * @static
     * 
     * @param  {Integer}    num             Nummer des Tracks
     * @param  {String}     title           Titel des Tracks
     * @param  {String}     path            Pfad des Tracks
     */
    control: function(num, title, path){
        
        // aktuelles Controler-Icon
        var activeControler = $('track_' + num);

        if (this.actualTrack != num || this.actualTrack == -1){

            // spiele Track von vorne ab
            callFlash(num, title, path);
            this.actualTrackStatus = 'play';

            // Icons zurücksetzen
            for (var i=0; i<this.allTracks; i++){
                $('track_' + i).src = this.pathPlayIcon;
            }
            activeControler.src = this.pathBreakIcon;
            
        }else{
            if (this.actualTrackStatus == 'play' || this.actualTrackStatus == 'start'){
                // aktueller Track auf Pause
                this.actualTrackStatus = 'pause';
                callFlashPlay(0);
                activeControler.src = this.pathPlayIcon;
            }else{
                // aktueller Track auf Play
                this.actualTrackStatus = 'play';
                callFlashPlay(1);
                activeControler.src = this.pathBreakIcon;
            }
        }

        this.actualTrack = num;
    },

    /**
     * setzt aktuellen Track und dessen Status
     *
     * @static
     *
     * @param  {Integer}    id             Nummer des Tracks
     * @param  {Integer}    status         0=pause, 1=play
     */
    callJSset: function(id, status) {
        this.actualTrack = id;

        // just switch the btn status for the running id
        var elem = $('track_' + id);

        // Icons zurücksetzen
        for (var i=0; i<WISO.AudioTrack.allTracks; i++){
            $('track_' + i).src = WISO.AudioTrack.pathPlayIcon;
        }

        // aktuelles Icon setzen
        if (status == 1){
            elem.src = WISO.AudioTrack.pathBreakIcon;
            WISO.AudioTrack.actualTrackStatus = 'play';
        }else{
            elem.src = WISO.AudioTrack.pathPlayIcon;
            WISO.AudioTrack.actualTrackStatus = 'pause';
        }
    },

    /**
     * ruft Flash-Player auf und liefert die entsprechenden Parameter
     *
     * @static
     *
     * @param  {Integer}    num            Nummer des Tracks
     */
    callJSget: function(num) {
        callFlash(num, WISO.AudioTrack.trackTitles[num], WISO.AudioTrack.trackPath[num])
    }
};


/**
 * Bild-Skiper im Start-Teaser
 *
 * @static
 */
WISO.ImageSkiper = {

    /**
     * Pfad zu den Bildern
     * @type  {Array}
     */
    imagePaths: new Array(),

    /**
     * aktuelle Bildposition
     * @type  {Integer}
     */
    imagePosition: 0,

    /**
     * springt ein Bild vor oder zurück
     *
     * @static
     *
     * @param  {String}     direction           'forward' oder 'backward'
     */
    skip: function(direction){
        var imageNumber = this.imagePaths.length;
        if (direction == 'forward'){
            if (this.imagePosition < imageNumber - 1){
                this.imagePosition += 1;
            }else{
                this.imagePosition = 0;
            }
        }else{
            if (this.imagePosition > 0){
                this.imagePosition -= 1;
            }else{
                this.imagePosition = imageNumber - 1;
            }
        }
        $('teaser_skip_image').src = this.imagePaths[this.imagePosition];
    }
};


/**
 * Klapper
 *
 * @static
 */
WISO.Toggle = {


    /**
     * hide all toggle contents
     *
     * @static
     *
     * @param  {String}     content           id of toggle area
     */
    hideToggleContent: function(content){
        var toggleArea = $(content);
        var toggleContent = toggleArea.getElementsByTagName("div");
        var count = toggleContent.length / 2;
        for (var i = 1; i <= count; i++) {
            $('toggle_headline_' + i).style.textDecoration = 'underline';
            $('toggle_headline_' + i).style.cursor = 'pointer';
            $('toggle_content_' + i).style.display = 'none';
        }

    },

    /**
     * show toggle content
     *
     * @static
     *
     * @param  {String}     content           id of toggle content
     */
    toggleContent: function(content){
        if ($(content).style.display == 'none'){
		$(content).style.display = 'block';
        }else{
            $(content).style.display = 'none';
        }
    }
};