var FIInternetLibrary = {}

FIInternetLibrary.bannerItemList       = [];
FIInternetLibrary.bannerItemListUrl    = [];
FIInternetLibrary.currentBanner        = 0;
FIInternetLibrary.flashBannerSupported = false;
FIInternetLibrary.bannerSpeed          = 10000; // 10 seconds
FIInternetLibrary.clearSearchText      = true;
FIInternetLibrary.startMousePosition   = null;

FIInternetLibrary.redirectLocation = function( newURL )
{
    if ( newURL !== null && newURL !== false && newURL !== undefined && newURL !== '' )
    {
        window.location.href = newURL;
        return true;
    }
    return false;
}

FIInternetLibrary.getDOMObjectById = function( domID )
{
    if ( document.getElementById )
    {
        var domObject = document.getElementById( domID );
        if ( domObject !== undefined && domObject !== null )
        {
            return domObject;
        }
    }
    return false;
}

FIInternetLibrary.displayAddressType = function( tagId, COAName )
{
    if( tagId !== '')
    {
        var selectTag   = FIInternetLibrary.getDOMObjectById( COAName );
        if( selectTag )
        {
            var selectedValue   = selectTag.value;
            var domObject       = FIInternetLibrary.getDOMObjectById( tagId );
            if( domObject )
            {
                if( selectedValue == '0' )
                {
                    domObject.style.display = '';
                }
                else
                {
                    domObject.style.display = 'none';
                }
            }
        }
    }
}

FIInternetLibrary.getTagTextContentByObject = function( domObject )
{
    var tagText = false;
    if ( domObject.textContent !== undefined && domObject.textContent !== null )
    {
        tagText = domObject.textContent;
    }
    else if ( domObject.innerText !== undefined && domObject.innerText !== null ) // IE 6
    {
        tagText = domObject.innerText;
    }
    return tagText;
}

FIInternetLibrary.getTagTextContentById = function( domID )
{
    var domObject = FIInternetLibrary.getDOMObjectById( domID );
    if ( domObject !== false )
    {
        return FIInternetLibrary.getTagTextContentByObject( domObject );
    }
    return false;
}

FIInternetLibrary.getNewBoxHeight = function()
{

    var ids = new Array( 'zone_one_2zoneslayout1', 'zone_one_2zoneslayout1_2', 'leftmenubox', 'zone_two_2zoneslayout1', 'searchrefinement' );

    var divId        = 0,
        clientHeight = 0,
        columnsNode  = FIInternetLibrary.getDOMObjectById( 'columns-position' );
        heightValue  = false,
        pdfCatalogue = FIInternetLibrary.getDOMObjectById( 'pdfCatalogueSendArea' );

    if ( pdfCatalogue !== false )
    {
        ids.push( 'content' );
    }

    if ( columnsNode !== false )
    {
        heightValue = columnsNode.clientHeight;
    }
    if ( heightValue !== false )
    {
        for( i = 0; i < ids.length; ++i )
        {
            divId = FIInternetLibrary.getDOMObjectById( ids[i] );
            if ( divId !== 0 && divId !== false )
            {
                clientHeight = divId.clientHeight;
                if ( clientHeight < heightValue )
                {
                    divId.style.height = heightValue + 'px';
                }
            }
        }
    }
}

FIInternetLibrary.showBannerURL = function( bannerLinkDomNode, status )
{
    if ( bannerLinkDomNode !== false )
    {
        if ( status === true )
        {
            bannerLinkDomNode.style.display = '';
        }
        else
        {
            bannerLinkDomNode.style.display = 'none';
        }
    }
}

FIInternetLibrary.showImageBanner = function( fileSource, itemUrl )
{
    var imageDomNode     = FIInternetLibrary.getDOMObjectById( 'frontpage_image_banner' ),
        flashAreaDOMNode = FIInternetLibrary.getDOMObjectById( 'bannerFlashArea' ),
        imageAreaDomNode = FIInternetLibrary.getDOMObjectById( 'bannerImageArea' ),
        bannerUrl        = FIInternetLibrary.getDOMObjectById( 'bannerUrl' ),
        bannerUrl_2      = FIInternetLibrary.getDOMObjectById( 'bannerUrl_2' );
    if ( imageDomNode !== false && flashAreaDOMNode !== false && imageAreaDomNode !== false )
    {
        flashAreaDOMNode.style.display = 'none';
        imageAreaDomNode.style.display = '';
        if ( fileSource !== false )
        {
            imageDomNode.src = fileSource;
        }
        if ( bannerUrl !== false )
        {
            if ( itemUrl !== false )
            {
                bannerUrl.href = itemUrl;
                FIInternetLibrary.showBannerURL( bannerUrl, true );
                bannerUrl_2.href = itemUrl;
                FIInternetLibrary.showBannerURL( bannerUrl_2, true );
            }
            else
            {
                bannerUrl.href = '/';
                FIInternetLibrary.showBannerURL( bannerUrl, false );
                bannerUrl_2.href = '/';
                FIInternetLibrary.showBannerURL( bannerUrl_2, false );
            }
        }
    }
}

FIInternetLibrary.showFlashBanner = function( fileSource, itemUrl )
{
    var flashDOMNode     = FIInternetLibrary.getDOMObjectById( 'frontpage_flash_banner' ),
        flashAreaDOMNode = FIInternetLibrary.getDOMObjectById( 'bannerFlashArea' ),
        imageAreaDomNode = FIInternetLibrary.getDOMObjectById( 'bannerImageArea' ),
        bannerUrl        = FIInternetLibrary.getDOMObjectById( 'bannerUrl' ),
        bannerUrl_2      = FIInternetLibrary.getDOMObjectById( 'bannerUrl_2' );
    if ( flashDOMNode !== false && flashAreaDOMNode !== false && imageAreaDomNode !== false )
    {
        flashDOMNode.style.display = '';
        flashAreaDOMNode.style.display = '';
        imageAreaDomNode.style.display = 'none';
        if ( fileSource !== false )
        {
            flashDOMNode.src = fileSource;
        }
        if ( bannerUrl !== false )
        {
            if ( itemUrl !== false )
            {
                bannerUrl.href = itemUrl;
                FIInternetLibrary.showBannerURL( bannerUrl, true );
                bannerUrl_2.href = itemUrl;
                FIInternetLibrary.showBannerURL( bannerUrl_2, true );
            }
            else
            {
                bannerUrl.href = '/';
                FIInternetLibrary.showBannerURL( bannerUrl, false );
                bannerUrl_2.href = '/';
                FIInternetLibrary.showBannerURL( bannerUrl_2, false );
            }
        }
    }
}

FIInternetLibrary.showBannerItem = function( itemNumber )
{
    var itemIndex = parseInt( itemNumber );
    if ( FIInternetLibrary.bannerItemList.length > 0 && itemIndex < FIInternetLibrary.bannerItemList.length )
    {
        if ( FIInternetLibrary.bannerItemList[itemIndex] !== null && FIInternetLibrary.bannerItemList[itemIndex] !== undefined )
        {
            if ( FIInternetLibrary.bannerItemList[itemIndex].flash !== '' &&
                 FIInternetLibrary.bannerItemList[itemIndex].flash !== false &&
                 FIInternetLibrary.flashBannerSupported
               )
            {
                FIInternetLibrary.showFlashBanner( FIInternetLibrary.bannerItemList[itemIndex].flash, FIInternetLibrary.bannerItemListUrl[itemIndex].url );
            }
            else if ( FIInternetLibrary.bannerItemList[itemIndex].image !== '' &&
                      FIInternetLibrary.bannerItemList[itemIndex].image !== false
                    )
            {
                FIInternetLibrary.showImageBanner( FIInternetLibrary.bannerItemList[itemIndex].image, FIInternetLibrary.bannerItemListUrl[itemIndex].url );
            }
        }
    }
}

FIInternetLibrary.rotateBanner = function( itemNumber )
{
    clearTimeout( FIInternetLibrary.bannerTimerID );
    if ( itemNumber !== false )
    {
        FIInternetLibrary.currentBanner = itemNumber;
    }
    else
    {
        FIInternetLibrary.currentBanner += 1;
    }
    if ( FIInternetLibrary.currentBanner >= FIInternetLibrary.bannerItemList.length )
    {
        FIInternetLibrary.currentBanner = 0;
    }
    FIInternetLibrary.showBannerItem( FIInternetLibrary.currentBanner);
    FIInternetLibrary.bannerTimerID = window.setTimeout( function() {FIInternetLibrary.rotateBanner( false );}, FIInternetLibrary.bannerSpeed );
}

FIInternetLibrary.bannerRotation = function()
{
    var bannerAreaDOMNode = FIInternetLibrary.getDOMObjectById( 'bannerArea' );
    if ( bannerAreaDOMNode !== false )
    {
        bannerAreaDOMNode.className = '';
    }
    var bannerConfigDOMNode = FIInternetLibrary.getDOMObjectById( 'banner_configuration' );
    if ( bannerConfigDOMNode !== false )
    {
        if ( ACLibrary !== null && ACLibrary !== undefined &&
             ACLibrary.GetSwfVer !== null && ACLibrary.GetSwfVer !== undefined
           )
        {
            if ( ACLibrary.GetSwfVer() != -1 )
            {
                FIInternetLibrary.flashBannerSupported = true;
            }
        }
        var        bannerSpeed = FIInternetLibrary.getTagTextContentById( 'banner_speed' ),
            bannerNodeIDString = FIInternetLibrary.getTagTextContentById( 'banner_node_idlist' ),
              bannerNodeIDList = false;
        if ( bannerSpeed !== false )
        {
            FIInternetLibrary.bannerSpeed = parseInt( bannerSpeed );
        }
        if ( bannerNodeIDString !== false )
        {
            bannerNodeIDList = bannerNodeIDString.split( ',' );
        }

        for ( var i = 0; i < bannerNodeIDList.length; ++i )
        {
            var spanDOMNodeContent = FIInternetLibrary.getTagTextContentById( 'banner_flash_' + bannerNodeIDList[i] ),
                flashPath = false,
                imagePath = false;
                itemUrl   = false;
            if ( spanDOMNodeContent !== false && spanDOMNodeContent != '' )
            {
                flashPath = '/' + spanDOMNodeContent;
            }
            spanDOMNodeContent = FIInternetLibrary.getTagTextContentById( 'banner_image_' + bannerNodeIDList[i] );
            if ( spanDOMNodeContent !== false && spanDOMNodeContent != '' )
            {
                imagePath = '/' + spanDOMNodeContent;
            }
            spanDOMNodeContent = FIInternetLibrary.getTagTextContentById( 'banner_url_' + bannerNodeIDList[i] );

            if ( spanDOMNodeContent !== false && spanDOMNodeContent != '' )
            {
                itemUrl = spanDOMNodeContent;
            }
            FIInternetLibrary.bannerItemList.push( {'image' : imagePath, 'flash' : flashPath} );
            FIInternetLibrary.bannerItemListUrl.push( {'url' : itemUrl} );
        }

        FIInternetLibrary.showBannerItem( 0 );
        FIInternetLibrary.bannerTimerID = window.setTimeout( function() {FIInternetLibrary.rotateBanner( false );}, FIInternetLibrary.bannerSpeed );
    }
}

FIInternetLibrary.sendMail = function( subjectText, receiverEmail, subscribeText )
{
    var firstNameDOMNode = FIInternetLibrary.getDOMObjectById( 'first_name' ),
        lastNameDOMNode = FIInternetLibrary.getDOMObjectById( 'last_name' ),
        senderEmailDOMNode = FIInternetLibrary.getDOMObjectById( 'email' ),
        receiverEmailItems = receiverEmail.split( '€' );
    if ( firstNameDOMNode === false || lastNameDOMNode === false || senderEmailDOMNode === false ||
         firstNameDOMNode.value == '' || lastNameDOMNode.value == '' || senderEmailDOMNode.value == ''
       )
    {
        alert( 'Eingaben können nicht geprüft werden. Bitte füllen Sie das Formular vollständig aus.' );
        return false;
    }
    var bodyText = 'Sehr geehrte Damen und Herren,%0A%0AIch möchte gerne den Newsletter der Finanz Informatik ' + subscribeText + ':%0A%0AVorname: ' + firstNameDOMNode.value + '%0ANachname: ' + lastNameDOMNode.value + '%0AE-Mail: ' + senderEmailDOMNode.value + '%0A%0A' +
                   firstNameDOMNode.value + ',' + lastNameDOMNode.value + ',' + senderEmailDOMNode.value + '%0A%0AMit freundlichen Grüßen,%0A%0A';
    location.href = 'mailto:' + receiverEmailItems.join( '@' ) + '?subject=' + subjectText + '&body=' + bodyText;
}

FIInternetLibrary.switchSearchActivity = function( eventObject )
{
    var searchTextDOMNode = FIInternetLibrary.getDOMObjectById( 'globalSearchTextInputField' );
    if ( searchTextDOMNode.className == 'inactive' )
    {
        searchTextDOMNode.className = 'active';
        if ( FIInternetLibrary.clearSearchText === true )
        {
            searchTextDOMNode.value = '';
            FIInternetLibrary.clearSearchText = false;
        }
    }
    else
    {
        searchTextDOMNode.className = 'inactive';
    }
}

FIInternetLibrary.verifySearchSubmit = function( eventObject )
{
    if ( eventObject.keyCode == 13 )
    {
        var searchFormDOMNode = FIInternetLibrary.getDOMObjectById( 'globalSearchForm' ),
            searchTextDOMNode = FIInternetLibrary.getDOMObjectById( 'globalSearchTextInputField' );
        if ( searchFormDOMNode !== false && searchTextDOMNode !== false && searchTextDOMNode != '' )
        {
            searchFormDOMNode.submit();
        }
    }
}

FIInternetLibrary.configureSearch = function()
{
    var searchTextDOMNode = FIInternetLibrary.getDOMObjectById( 'globalSearchTextInputField' );
    if ( searchTextDOMNode !== false )
    {
        if ( searchTextDOMNode.attachEvent )
        {
            searchTextDOMNode.attachEvent( 'onfocus', FIInternetLibrary.switchSearchActivity );
            searchTextDOMNode.attachEvent( 'onblur', FIInternetLibrary.switchSearchActivity );
            searchTextDOMNode.attachEvent( 'onkeyup', FIInternetLibrary.verifySearchSubmit );
        }
        else if ( searchTextDOMNode.addEventListener )
        {
            searchTextDOMNode.addEventListener( 'focus', FIInternetLibrary.switchSearchActivity, false );
            searchTextDOMNode.addEventListener( 'blur', FIInternetLibrary.switchSearchActivity, false );
            searchTextDOMNode.addEventListener( 'keyup', FIInternetLibrary.verifySearchSubmit, false );
        }
    }
}

FIInternetLibrary.showPDFCatalogueLink = function()
{
    var selectedListElementIDs = PDFCatalogueLibrary.getElementIDList( PDFCatalogueLibrary.targetList, true ),
                   selectedIDs = [],
                   spanDOMNode = PDFCatalogueLibrary.getDOMObjectById( 'sendLinkText' ),
                    urlDOMNode = PDFCatalogueLibrary.getDOMObjectById( 'pdfCatalogueEmailCatalogueURL' );
    for ( var i = 0; i < selectedListElementIDs.length; ++i )
    {
        selectedIDs.push( selectedListElementIDs[i].chapter_id + '_' + selectedListElementIDs[i].document_id + '_' + selectedListElementIDs[i].pdf_id );
    }
    spanDOMNode.innerHTML = urlDOMNode.value + '/(idlist)/' + selectedIDs.join( ',' );
}

if ( window.attachEvent )
{
    window.attachEvent( 'onload', FIInternetLibrary.getNewBoxHeight );
    window.attachEvent( 'onload', FIInternetLibrary.bannerRotation );
    window.attachEvent( 'onload', FIInternetLibrary.configureSearch );
}
else if ( window.addEventListener )
{
    window.addEventListener( 'load', FIInternetLibrary.getNewBoxHeight, false );
    window.addEventListener( 'load', FIInternetLibrary.bannerRotation, false );
    window.addEventListener( 'load', FIInternetLibrary.configureSearch, false );
}

var startX;
var startY;
var isMoving = false;

FIInternetLibrary.cancelTouch = function()
{
    function cancelTouch()
    {
        this.removeEventListener('touchmove', onTouchMove);
        startX = null;
        isMoving = false;
    }
}

FIInternetLibrary.onTouchStart = function( eventObject )
{
    if (e.touches.length == 1)
    {
             startX = e.touches[0].pageX;
             startY = e.touches[0].pageY;
             isMoving = true;
             this.addEventListener('touchmove', onTouchMove, false);
     }
     if ('ontouchstart' in document.documentElement)
     {
         this.addEventListener('touchstart', onTouchStart, false);
     }
}

FIInternetLibrary.onTouchMove = function( eventObject )
{

    if(config.preventDefaultEvents)
    {
        e.preventDefault();
    }
    if(isMoving)
    {
        var x = e.touches[0].pageX;
        var y = e.touches[0].pageY;
        var dx = startX - x;
        var dy = startY - y;
     
        if(Math.abs(dx) >= config.min_move_x)
        {
            cancelTouch();
            if(dx > 0)
            {
                config.wipeLeft();
            }
        }
        else
        {
            config.wipeRight();
        }
    }
    else if(Math.abs(dy) >= config.min_move_y)
    {
    cancelTouch();
        if(dy > 0)
        {
            config.wipeDown();
        }
        else
        {
            config.wipeUp();
        }
     }
 }
    
FIInternetLibrary.mouseX = function( eventObject )
{
    var touch = eventObject.touches[0];

    if ( touch === undefined || touch === null )
    {
        return 0;
    }
    if ( touch.pageX )
    {
        return touch.pageX;
    }
    else if ( touch.clientX )
    {
        return touch.clientX + FIInternetLibrary.getScrollLeft();
    }
    else
    {
        return 0;
    }
}

FIInternetLibrary.getScrollLeft = function()
{
    if ( typeof( window.pageXOffset ) == 'number' )
    {
        return window.pageXOffset;
    }
    else if ( document.body && document.body.scrollLeft )
    {
        return document.body.scrollLeft;
    }
    else if ( document.documentElement && document.documentElement.scrollLeft )
    {
        return document.documentElement.scrollLeft;
    }
    return 0;
}

