/**
 * Created by: damirabdic
 * Date: Feb 09, 2010
 * Time: 3:10:36 PM
 */

$(document).ready(function() {

    //Loads external recurring files
    $("#metaNavi").load("tiles/topRightNavi.htm");
    $("#footerBuzzwords").load("tiles/footerBuzzwords.htm");
    $("#mainFooter").load("tiles/comsystoAddress.htm");
    $("#mainNaviSitemap").load("tiles/topNaviSitemap.htm", function() {
        getCurrentLanguage();
    });

    /* NAVIGATION EFFECTS
     --------------------------------------------------------------------------------------------------*/

    //Displays alternative navi if JavaScript is enabled
    $('.altNavi').removeClass('noJavaScript');

    //Top navigation files
    var siteFileNames = [
        'index.htm',
        'CRM_Performance_Management_Measurement.htm',
        'CRM_Sales_Efficiency.htm',
        'CRM_Sales_Effectiveness.htm',
        'HR_Performance_Management_Measurement.htm',
        'Process_Performance_Management_Measurement.htm',
        'Enterprise_2_0.htm',
        'Customer_Portals.htm',
        'Collective_Intelligence.htm',
        'Services.htm',
        'Scrum.htm',
        'Enterprise_Java_Spring.htm',
        'Enterprise_Java_Hibernate.htm',
        'Apache_Wicket.htm',
        'Google_Android_Development.htm',
        'Oracle_Business_Intelligence_OBIEE.htm',
        'Oracle_Database_Management_System_DBMS.htm',
        'Oracle_Application_Express_APEX.htm',
        'Pentaho.htm',
        'Informatica_Power_Center_ETL.htm',
        'References.htm',
        'Projects.htm',
        'Jobs_Consultant.htm',
        'Jobs_JEE_Spring_Specialist.htm',
        'Jobs_Business_Intelligence_Consultant.htm',
        'Jobs_Database_Administrator.htm',
        'Jobs_Werkstundenten_Muenchen.htm',
        'Blog.htm',
        'Imprint.htm'
    ];

    var prevFileName;
    var nextFileName;

    var fullFilePath = document.location.href;
    var htmRegex = /\w*\.htm/;
    var result;
    var currentFile;

    if ((fullFilePath.match(htmRegex) == null) || (fullFilePath.match(htmRegex) == "undefined")) {
        currentFile = siteFileNames[0];
    } else {
        result = fullFilePath.match(htmRegex);
        currentFile = result[0];
    }

    //Opens previous html file from the siteFileNames array
    function getPrev() {
        filePosition = siteFileNames.indexOf(currentFile);
        prevFile = filePosition - 1;
        if (prevFile < 0) {
            prevFileName = siteFileNames[siteFileNames.length - 1];
        } else {
            prevFileName = siteFileNames[prevFile];
        }
        window.location.href = prevFileName + '?language=' + currentLanguage;
    }

    //Opens next html file from the siteFileNames array
    function getNext() {
        filePosition = siteFileNames.indexOf(currentFile);
        nextFile = filePosition + 1;
        if (nextFile >= siteFileNames.length) {
            nextFileName = siteFileNames[0];
        } else if (typeof(currentFile) == "undefined") {
            nextFileName = siteFileNames[1];
        } else {
            nextFileName = siteFileNames[nextFile];
        }
        window.location.href = nextFileName + '?language=' + currentLanguage;
    }

    //This block is needed since IE does not include indexOf-method for arrays
    if (!Array.indexOf) {
        Array.prototype.indexOf = function(currentFile) {
            for (var i = 0; i < siteFileNames.length; i++) {
                if (siteFileNames[i] == currentFile) {
                    return i;
                }
            }
            return -1;
        }
    }

    $('.leftArrowNavigation').click(function() {
        getPrev();
    });
    $('.rightArrowNavigation').click(function() {
        getNext();
    });


    /* LANGUAGE MANAGEMENT EFFECTS
     --------------------------------------------------------------------------------------------------*/

    var linkAddress = null;
    var effectDuration = 500;
    var languageChangedOnThisPage = false;
    var stringSlicer = fullFilePath.indexOf('=') + 1;

    //Removes CSS class "invisible", which hides english text even if JavaScript is disabled
    $('.invisible').removeClass('invisible').addClass('visible').hide();

    //Gets and sets currentLanguage and initiates the link changes in dom(appendLanguageStringToLink)
    function getCurrentLanguage() {
        currentLanguage = 'german';
        if (fullFilePath.indexOf('=') != -1) {
            currentLanguage = fullFilePath.slice(stringSlicer);
            toggleContentVisibilityForLanguage(currentLanguage);
        }
        toggleContentVisibilityForLanguage(currentLanguage);
        appendLanguageStringToLink(currentLanguage);
    }

    //Selector for toggling the language
    $('.languageFlag').click(
            function() {
                if (currentLanguage == 'german') {
                    currentLanguage = 'english';
                } else {
                    currentLanguage = 'german';
                }
                languageChangedOnThisPage = true;
                toggleContentVisibilityForLanguage(currentLanguage);
                appendLanguageStringToLink(currentLanguage);
                return false;
            });

    //Adds language variable to all internal links within document when page loads
    function appendLanguageStringToLink(lang) {
        $('a').each(function() {
            linkAddress = $(this).attr('href');
            if (linkAddress.indexOf('?') != -1) {
                var position = linkAddress.indexOf('?');
                var splittedLinkAddress = linkAddress.substring(0, position);
                linkAddress = splittedLinkAddress + '?language=' + currentLanguage;
            } else {
                linkAddress += '?language=' + currentLanguage;
            }
            if (linkAddress.indexOf('http') == -1) {
                $(this).attr('href', linkAddress);
            }
        });
    }

    //Displays and hides tags based on currentLanguage and lang-attribute of the tag
    function toggleContentVisibilityForLanguage(lang) {
        $('[lang="german"], [lang="english"]').each(function() {
            tagsLanguage = $(this).attr('lang');
            if (tagsLanguage == lang) {
                if (languageChangedOnThisPage) {
                    $(this).removeClass('invisible').slideDown(effectDuration);
                } else {
                    $(this).removeClass('invisible').show();
                }
            } else {
                if (languageChangedOnThisPage) {
                    $(this).addClass('visible').slideUp(effectDuration);
                } else {
                    $(this).addClass('visible').hide();
                }
            }
        });
        //Switches the flags
        if (lang == 'english') {
            $('.languageFlag').addClass('german');
        } else {
            $('.languageFlag').removeClass('german');
        }
    }

});

