﻿var doIvw = false;
var sbtnParam = "";
  /*new stopEvent*/
function stopEvent(e) {
    if (e.stopPropagation) {
        e.stopPropagation();
    } else {
        e.cancelBubble = true;
    }

    if (e.preventDefault) {
        e.preventDefault;
    } else {
        e.returnValue = false;
    }
}
  
  // finds element position
  function fpfindPos(obj) {
      // Credit for this function: http://www.quirksmode.org/js/findpos.html
      // Visit the URL for a complete tutorial on this function
      var curleft = curtop = 0;
      if (obj.offsetParent) {
         curleft = obj.offsetLeft
         curtop = obj.offsetTop
         curwidth = obj.offsetWidth;
         curheight = obj.offsetHeight;
         while (obj = obj.offsetParent) {
            curleft += obj.offsetLeft
            curtop += obj.offsetTop
         }
      }
      return [curleft,curtop,curwidth,curheight];
   }

   var g_fphshFadingIsFinished = new Object();
   var g_fphshAjaxCallIsFinished = new Object();
   
   function g_fpAppendWithFadingHelper(hshArgsNew)
   {
   //debugger;
     var targetHelper = document.getElementById(hshArgsNew['target'] + '_containerHelper');
      //jQuery(targetHelper).queue(function () {
            if(g_fphshFadingIsFinished[hshArgsNew['target']] != false)
            {
                g_fpAppendWithFading(hshArgsNew);
            }
            else
            {
               jQuery(targetHelper).queue( function() {
                    g_fpAppendWithFadingHelper(hshArgsNew);
                    }
                );
            }
        //});
   }
   
    function g_fpcallServerForDataWithFading(hostUrl, targetId, hshArgs, callback)
    {
   // debugger;
         var target = document.getElementById(hshArgs['target']);
         var cache = true;
         if(hshArgs['cache'] != null && hshArgs['cache'] != 'undefined')
         {
            cache = hshArgs['cache'];
         }
         jQuery(target).queue(function() {
             if (g_fphshAjaxCallIsFinished[hshArgs['target']] != false) {
                 g_fphshAjaxCallIsFinished[hshArgs['target']] = false;

                 jQuery.ajax({
                     type: "GET",
                     cache: cache,
                     timeout: 100000,
                     url: hostUrl,
                     dataType: "html",
                     beforeSend: function() {
                         //var a = new Date();
                         // window.status = 'sec=' + a.getSeconds() + 'mili=' + a.getMilliseconds();    
                     },
                     success: function(html) {
                         //  var a = new Date();
                         // window.status = window.status + '|sec=' + a.getSeconds() + 'mili=' + a.getMilliseconds();
                         //debugger;
                         if (typeof setUpIwv != "undefined")
                             setUpIwv();
                         var hshArgsNew = new Object();
                         hshArgsNew['target'] = targetId;
                         hshArgsNew['innerHTML'] = html;
                         hshArgsNew['staticHeight'] = hshArgs['staticHeight'];
                         hshArgsNew['adjustedNewHeight'] = hshArgs['adjustedNewHeight'];
                         hshArgsNew['setPosStaticAfterFading'] = hshArgs['setPosStaticAfterFading'];
                         hshArgsNew['paddingForStaticHeight'] = hshArgs['paddingForStaticHeight'];
                         hshArgsNew['callback'] = callback;
                         g_fpAppendWithFadingHelper(hshArgsNew);
                         g_fphshAjaxCallIsFinished[hshArgs['target']] = true;
                         jQuery(target).dequeue();
                     },
                     error: function(error) {
                         //window.status = 'ajax error:  ' + error.responseText;
                         jQuery(target).append("<div>Load timeout...</div>");
                     }
                 });
             }
             else {
                 g_fpcallServerForDataWithFading(hostUrl, targetId, hshArgs, callback);
             }
         });    
    }
    
    
    // GLOBAL calls given Url and a callBack function on response return
    function g_fpcallServerWithCallBackFunction(hostUrl,fCallBackFunction)
    {
   // debugger;
        var url = hostUrl;
        jQuery.ajax({
            type: "GET",
            cache: true,
            timeout: 30000,
            url: url,
            dataType: "html",
            beforeSend: function() {
            },
            success: function(html) {
                // debugger;
                if (typeof setUpIwv != "undefined")
                    setUpIwv();
                fCallBackFunction(html);
            },
            error: function(error) {
                window.status = 'ajax error:  ' + error;
            }
        }); 
        
    }   
    
// Dynaminc fading
function g_fpfAnimateHeightChanging(hshArgs) 
{
    jQuery.targetId = '#' + hshArgs['target'];
    jQuery.targetHelperId = '#' + hshArgs['target'] + '_containerHelper';
    
    hshArgs['containerActive'].style.position = 'absolute';
    
    // GET NEW CONTENT HEIGHT
    hshArgs['containerInactive'].style.display = 'block';    
    var heightNew = hshArgs['containerInactive'].offsetHeight;
    hshArgs['containerInactive'].style.display = 'none';    
    hshArgs['containerInactive'].style.visibility = 'visible';
    
    // ANIMATING heights changing
    var fadeTimeout = 300;
    var diff = hshArgs['oldHeight'] - heightNew;
    if(diff == 1 || diff == 0)   // ignore 1px difference caused by cont1 being not absolute on first load
    {
    }
    else
    {
        if(hshArgs['staticHeight'] == false)
        {
            
            jQuery(jQuery.targetId).animate({ height: heightNew }, fadeTimeout);
            jQuery(jQuery.targetHelperId).animate({ height: heightNew }, fadeTimeout);
        }
    }
    var targetHelper = document.getElementById(hshArgs['target'] + '_containerHelper');

    var setPosStaticAfterFading = false;
    if(hshArgs['setPosStaticAfterFading'] == true)
    {
        setPosStaticAfterFading = true;
    }

    // FADE IN/OUT
    jQuery(hshArgs['containerInactive']).fadeIn(fadeTimeout);
    jQuery(hshArgs['containerActive']).fadeOut(fadeTimeout, function () {
    jQuery(this).html(''); if(setPosStaticAfterFading ){jQuery(targetHelper).css('position','static'); jQuery(hshArgs['containerInactive']).css('position','static'); } g_fphshFadingIsFinished[hshArgs['target']]= true; jQuery(targetHelper).dequeue(); if(jQuery.isFunction(hshArgs['callback'])) hshArgs['callback']();
    });
  
    // selecting active container  
    jQuery(jQuery.targetId).attr('activeContainer',hshArgs['activeContainerNew']);
}

function g_fpAppendWithFading(hshArgs) 
{    
    g_fphshFadingIsFinished[hshArgs['target']] = false;    
    // setting/getting parameters     
    var htmlNew = hshArgs['innerHTML'];
    // executing fBeforeFading
    if(jQuery.isFunction(hshArgs['fBeforeFading']))
    {
        var htmlNewTemp = hshArgs['fBeforeFading'](hshArgs);
        if(htmlNewTemp != null && htmlNewTemp != 'undefined')
        {
            htmlNew = htmlNewTemp;
        }
    }
     // setting/getting parameters
    var targetArg = hshArgs['target'];   
    var innerHTML = htmlNew;   
    var staticHeight = false;
    if(hshArgs['staticHeight'] != null && hshArgs['staticHeight'] != 'undefined')
    {
        staticHeight = hshArgs['staticHeight'];
    }
    // setting property for  g_fpfAnimateHeightChanging function
    hshArgs['staticHeight'] = staticHeight;
    
    //adjustedNewHeight
    var adjustedNewHeight = 0;
    
    if(hshArgs['adjustedNewHeight'] != null && hshArgs['adjustedNewHeight'] != 'undefined')
    {
        adjustedNewHeight = hshArgs['adjustedNewHeight'];
    }
    
    var target = document.getElementById(hshArgs['target']);
    var containerHelper = document.getElementById(targetArg + '_containerHelper');
    if(target != null)
    {
        var activeContainer = target.getAttribute('activeContainer');
        if(activeContainer != null && activeContainer != 'undefined')
        {
            var activeContainerNew;
            var containerActive;
            var containerInactive;
            // if 1 container was active or first load
            if(activeContainer == '1' || activeContainer == '0')
            {
                containerActive = document.getElementById(targetArg + '_container1');
                containerInactive = document.getElementById(targetArg + '_container2');
                jQuery.containerActiveID = '#'+ targetArg + '_container1';
                jQuery.containerInactiveID = '#'+ targetArg + '_container2';
                activeContainerNew = '2';
            }
            // if container 2 was active
            else if(activeContainer == '2')
            {
                containerActive = document.getElementById(targetArg + '_container2');
                containerInactive = document.getElementById(targetArg + '_container1');
                jQuery.containerActiveID = '#'+ targetArg + '_container2';
                jQuery.containerInactiveID = '#'+ targetArg + '_container1';
                activeContainerNew = '1';  
            }
          
            // SETTING TARGET heigth in order not to let content to collapse    
            var height1;
            if(staticHeight)
            {
                // test
                var defaultPadding = 20;
                if(hshArgs['paddingForStaticHeight'] != null && hshArgs['paddingForStaticHeight'] != 'undefined')
                     defaultPadding = hshArgs['paddingForStaticHeight'];
                height1 = target.clientHeight - defaultPadding;  // minus padding
            }
            else
            {
                var arrPos1 = fpfindPos(containerActive);
                if(activeContainer == '0')
                {
                    height1 = arrPos1[3] + adjustedNewHeight;                        // rg: TESTING WITH PADDING  //  - adjustedHeight;                
                }
                else
                {
                    height1 = arrPos1[3];                        
                }
            }
            target.style.height = height1 + 'px';
            
            // div helper height
            if (containerHelper != null)
            {
                var helperHeight;
                if(staticHeight)
                {
                    // test
                    helperHeight = containerHelper.clientHeight;
                }
                else
                {
                   helperHeight = height1;
                }
                containerHelper.style.position = 'absolute';
                containerHelper.style.height = helperHeight + 'px';
            }

            // SETTINT INACTIVE HEIGHT AND WAITING FOR CORRECT RENDERING
            jQuery(containerInactive).append(innerHTML);
            containerInactive.style.visibility = 'hidden';
            containerInactive.style.display = 'none';
            containerInactive.style.position = 'absolute';
            
            // setting params for height animation
            hshArgs['containerInactive'] = containerInactive;
            hshArgs['containerActive'] = containerActive;
            hshArgs['activeContainerNew'] = activeContainerNew;
            hshArgs['oldHeight'] = height1;
            
            if(jQuery.browser.mozilla)
            {
                setTimeout(function() {g_fpfAnimateHeightChanging(hshArgs);}, 100);   // 200 local machine (cause FF need some time for correct contentRendering(for height scanning))
            }
            else
            {
                g_fpfAnimateHeightChanging(hshArgs);
            }
        }
    }     
}
// end Dynaminc fading

// ==FAZNUM==
var fpFazNum = {
    // Settings
    positiveClass: "numPositive",
    negativeClass: "numNegative",
    currency: "&euro;",
    dateExceptionMessage: "Das Datum (%1) hat nicht das richtige Format (TT.MM.JJJJ)",
    numberExceptionMessage: "Der eingegebene Wert (%1) muss eine Zahl sein.",

    // Functions
    Format: function(value, format) {
        if (format.length == 0)
            return value;

        if (value == null)
            return "";

        if (format.substr(0, 1) == 'n') {
            var decimals = format.substr(1, 1);
            var showPlus = format.indexOf('+') > -1;
            var wrapInColor = format.indexOf('col') > -1;
            var postfix = '';
            if (format.length > 2 && format.substr(2, 1) == 'c')
                postfix = " " + fpFazNum.currency;

            return fpFazNum.FormatNumber(value, decimals, postfix, showPlus, wrapInColor);
        }
        if (format.substr(0, 1) == '%') {
            var decimals = format.substr(1, 1);
            var showPlus = format.indexOf('+') > -1;
            var wrapInColor = format.indexOf('col') > -1;
            var postfix = ' %';

            return fpFazNum.FormatNumber(value, decimals, postfix, showPlus, wrapInColor);
        }
        if (format.substr(0, 1) == 'd') {
            var time = getDateFromFormat(value, 'M/d/yyyy H:mm:ss a');
            if (format.length > 1 && format.substr(1, 1) == '2')
                return formatDate(new Date(time), 'dd.MM.yy');
            else
                return formatDate(new Date(time), 'dd.MM.yyyy');
        }
        if (format.substr(0, 1) == 't') {
            var time = getDateFromFormat(value, 'M/d/yyyy H:mm:ss a');
            if (format.length > 1 && format.substr(1, 1) == 's')
                return formatDate(new Date(time), 'HH:mm:ss');
            else
                return formatDate(new Date(time), 'HH:mm');
        }
        if (format.substr(0, 1) == 'k') {
            var decimals = format.substr(1, 1);
            var showPlus = format.indexOf('+') > -1;
            var wrapInColor = format.indexOf('col') > -1;
            var postfix = '';
            if (format.length > 2)
            {
                if(format.substr(2, 1) == 'c')
                    postfix = " " + fpFazNum.currency;
                else if(format.substr(2, 1) == '%')
                    postfix = " %";
            }

            if (value < 1000000 && value > -1000000)
            {
                return fpFazNum.FormatNumber(value, decimals, postfix, showPlus, wrapInColor);
            }
            else if ( value < 1000000000 && value > -1000000000)
            {
                postfix = " Mio" + postfix;
                if (decimals > 1)
                    decimals = 1;
                return fpFazNum.FormatNumber(value/1000000, decimals, postfix, showPlus, wrapInColor);
            }
            else
            {
                postfix = " Mrd" + postfix;
                if (decimals > 1)
                    decimals = 1;
                return fpFazNum.FormatNumber(value/1000000000, decimals, postfix, showPlus, wrapInColor);
            }
        }
        if (format.substr(0, 1) == 'm') {
            var decimals = format.substr(1, 1);
            var showPlus = format.indexOf('+') > -1;
            var wrapInColor = format.indexOf('col') > -1;
            var postfix = '';
            if (format.length > 2)
            {
                if(format.substr(2, 1) == 'c')
                    postfix = " " + fpFazNum.currency;
                else if(format.substr(2, 1) == '%')
                    postfix = " %";
            }

            if ( value < 1000000000 && value > -1000000000)
            {
                return fpFazNum.FormatNumber(value, decimals, postfix, showPlus, wrapInColor);
            }
            else
            {
                postfix = " Mrd" + postfix;
                if (decimals > 1)
                    decimals = 1;
                return fpFazNum.FormatNumber(value/1000000000, decimals, postfix, showPlus, wrapInColor);
            }
        }
    },
    FormatNumber: function(value, decimals, postfix, showPlus, wrapInColor) {
        var fullNumber = fpFazNum.ToFixed(value, decimals);
        var numAndDec = fullNumber.split(".");
        var output = numAndDec[0];
        var k = output.length;
        for (var i = k - 3; i > 0; i = i - 3)
            output = output.substr(0, i) + "." + output.substr(i, output.length);
        output = output.replace("-.", "-");

        if (numAndDec.length > 1)
            output += "," + numAndDec[1];
        if (fullNumber > 0 && showPlus)
            output = '+' + output;
        if (wrapInColor && fullNumber != 0)
            if (fullNumber > 0)
            return "<span class='" + fpFazNum.positiveClass + "'>" + output + postfix + "</span>";
        else
            return "<span class='" + fpFazNum.negativeClass + "'>" + output + postfix + "</span>";
        else
            return output + postfix;
    },
    FormatFigures: function(value, decimals, postfix, showPlus, wrapInColor) {
    },
    Parse: function(value, format) {

        if (format.substr(0, 1) == 'n') {
            if (typeof (value) == 'number') {
                return value;
            }
            var number = value.replace(/\./g, "");
            number = number.replace(/,/g, ".");
            var numRegex = /(^\d+$)|(^\d+\.\d+$)/;
            if (numRegex.test(number))
                return number;
            else
                throw fpFazNum.numberExceptionMessage.replace('%1', value);
        }
        if (format.substr(0, 1) == 'd') {
            if (format.length > 1 && format.substr(1, 1) == 't') {
                if (isDate(value, 'd.M.y HH:mm:ss')) {
                    var time = getDateFromFormat(value, 'd.M.y HH:mm:ss');
                    return formatDate(new Date(time), 'M/d/yyyy H:mm:ss a');
                }
                else
                    throw fpFazNum.dateExceptionMessage.replace('%1', value);
            }
            else {
                if (isDate(value, 'd.M.y')) {
                    var time = getDateFromFormat(value + ' 00:00:00', 'd.M.y HH:mm:ss');
                    return formatDate(new Date(time), 'M/d/yyyy H:mm:ss a');
                }
                else
                    throw fpFazNum.dateExceptionMessage.replace('%1', value);
            }
        }

    },
    // Will parse given number and if its correct will return in provided format
    FormatParsedNumber: function(value, format) {
        return (fpFazNum.Format(fpFazNum.Parse(value, 'n').replace(',', '.'), format));
    },
    // Will parse given number and return it in JavaScript number format.
    ParsedNumber: function(value) {
        return fpFazNum.Parse(value, "n").replace(",", ".");
    },
    ToFixed: function(num, decimals) {
        var amp = 1;
        var zeros = '';
        for (var i = 0; i < decimals; i++) {
            zeros += '0';
            amp = amp * 10;
        }
        num = Math.round(num * amp);
        num = (num / amp + '.').split('.');
        if (decimals > 0)
            return num[0] + '.' + (num[1] + zeros).substr(0, decimals);
        else
            return num[0];
    }
}


function g_fpBrowserIsFF3()
{
  var blnIsFF3 = false;
  if(jQuery.browser.mozilla)
  {
	  var mozVersionStart = jQuery.browser.version.substr(0, 3);
	  if (mozVersionStart  != "1.7" && mozVersionStart  != "1.8" ) 
	  {
	      blnIsFF3 = true;

	      // check if FF version is greater that 1.9.0.8
	      var versionIsGreaterThan8 = false;
	      var ffVersion = jQuery.browser.version;
	      var arrSplitedByDot = ffVersion.split(".");
	      if(arrSplitedByDot.length == 4)
	      {
	          var secondLastDigit = arrSplitedByDot[2];
	          var lastDigit = arrSplitedByDot[3];
	          if (secondLastDigit > 0 || lastDigit > 8) 
	          {
	              versionIsGreaterThan8 = true;
	          }
	      }
	      else
	      {
	         versionIsGreaterThan8 = true; // unknown ff version format
	      }
	      
	      var hostsContainingThisFile = new Array();
          hostsContainingThisFile[0] = "www.fazfinance.net";
          hostsContainingThisFile[1] = "www.faz.net";
	      	      
	      var hostContainsThisFile = false;
	      for(host in hostsContainingThisFile)
	      {
	        if(document.location.host.indexOf(host) != -1)
	        {
	            hostContainsThisFile = true;
	            break;
	        }
	      } 
	      
	      if(!hostContainsThisFile && versionIsGreaterThan8)
	      {
	          blnIsFF3 = false;
	      }
	  }
  }
  return blnIsFF3;
}

function g_fOnKeyDownKursSuche(e)
{
    var code;
    if (e.keyCode) code = e.keyCode;
    else if (e.which) code = e.which;
    if (code == 13)
    {
        var srcElement;
        if (e.srcElement) {
            srcElement = e.srcElement;
        }
        else if (e.target) {
            srcElement = e.target;
        }
        g_fSearchForKursKursSuche(srcElement);
    }
}
function g_fOnGoClickKursSuche(button)
{
    g_fSearchForKursKursSuche(button.previousSibling);
}

function getTabName( url )
{
    var paramIndex = url.indexOf("tab=");
    var tabName = "";
    if ( paramIndex >= 0 )
    {
        tabName = "/" + url.substring( paramIndex + 4, url.length ).replace( "tab", "" );
    }
    return tabName;
}