// Constants to be used later in various functions.
var PROVIDER_PATTERN = /^[.\-\+ a-zA-Z0-9ßÜÄÖäöü]+$/;
var TARIF_PATTERN = /^[\-()\+/% a-zA-Z0-9ßÜÄÖäöü]+$/;
var CURRENCY_PATTERN =/^\s*((\d{1,3}(\.(\d){3})*)|\d*)(,\d{1,2})?\s?(\u20AC)?\s*$/;
var DATE_PATTERN = /^(\d{1,2})(\.)(\d{1,2})(\.)(\d{4})$/;
var TSN_PATTERN = /^[a-zA-Z0-9ßÜÄÖäöü]{3}$/;
var FAKE_ERROR_CLASS = "redinput";
var FAKE_ERROR_CLASS_SELECTION = "redselect";
var STYLE_FONT_COLOR_ERROR = "color: #ff0000";
var STYLE_FONT_COLOR_NORMAL = "color: #003468";
var CLASS_DISPLAY_NONE = "display-none";
var CLASS_DISPLAY_BLOCK = "display-block";  
var CLASS_FAKE_INPUT_DISABLE = "greyinput";
var GERMAN_DATE_FORMAT = "TT.MM.JJJJ";
var DEFAULT_AMOUNT_TEXT = 'z.B. 1000';
var MAX_PRODUCT_BLUELABEL_CALC_COMAPRISON = 3;
var MAX_PRODUCT_CALC_COMAPRISON = 5;
// variable to hold the status for scrolling whether to scroll or not
var isScrollRequired = true;

// variable to hold the value if the user has clicked on calculator product list for the first time
var calculatorProductChecked = false;

//variable to hold the value if user has checked/unchecked PHV,RS checkbox for online contract closure
var onlineClosureChecked = false;

//Variable to hold that page load is start of the module
var moduleStart = true;

//Flag to be set true when OSC pixel is added to the page
var oscPixelAdded = false;

var internalCalc = true;

var saveHistoryPos;


// variable to hold the value if the user has clicked on calculator product list for the first time
var rkCalculatorProductChecked = false;

addEvent(window, "load", startSscrollDetect);
function addEvent(elm, evType, fn, useCapture)
// addEvent and removeEvent
// cross-browser event handling for IE5+,  NS6 and Mozilla
// By Scott Andrew
{
  if (elm.addEventListener){
    elm.addEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.attachEvent){
    var r = elm.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be removed");
  }
} 

// pass the message to be displayed to the function as string i.e 'message'.
function showMessage(strMsg){
	alert(strMsg);
}

// This is the function that sets the flag to false and thus the calculator page does not scrolls to the top
function setNoScrollRequired()
{
    isScrollRequired = false;
}

//function to validate the email address
function IsValidEmailID(emailStr) 
{
	return /^([a-zA-Z0-9_][a-zA-Z0-9_\+-]*)+(\.[a-zA-Z0-9_\+-]+)*@([a-zA-Z0-9][a-zA-Z0-9-]*)+(\.[a-zA-Z0-9]+)*\.([a-zA-Z]{2,4})$/.test(emailStr);		
}

//trimming spaces from left of string
function trimAll(sString) 
{
    while (sString.substring(0,1) == ' ')
    {
        sString = sString.substring(1, sString.length);
    }
    while (sString.substring(sString.length-1, sString.length) == ' ')
    {
        sString = sString.substring(0,sString.length-1);
    }
    return sString;
}


//function to check if the string entered has numbers
function HasNumericData(strData)
{    
    var invalidCharacters = '0123456789';
    var isNumData = false;   
    for (var index = 0; index < strData.length && isNumData == false; index++) 
    {
       var currentChar = strData.charAt(index);  
       if (invalidCharacters.indexOf(currentChar) != -1) 
       {            
           isNumData = true;
           break;
       }
    }    
    return isNumData;    
}


//function to check if the data entered is numeric or not
function IsNumericData(dataNum)
{     
    var isNumData = true;
    var validCharacters = '0123456789';
    for (var index = 0; index < dataNum.length && isNumData == true; index++)
    {
        var currentChar = dataNum.charAt(index);                  
        if (validCharacters.indexOf(currentChar) == -1)
        {                 
           isNumData = false;
           break;
        }
    }     
    return isNumData;    
}

//function to check if the date is valid
function IsValidDate(dateStr,compareCurrentDate) 
{    
    var datePat = /^(\d{1,2})(\.)(\d{1,2})(\.)(\d{4})$/;

    var matchArray = dateStr.match(datePat); // is the format valid

    if (matchArray == null)
    { 
        return false;
    }
    if(compareCurrentDate == null )
    {
        compareCurrentDate = true;
    }
    if(compareCurrentDate)
    {
        if(GetCurrentDate(matchArray) == false)
        {
            return false;        
        }
    }
            
    day = matchArray[1]; // p@rse date into variables
    month = matchArray[3];
    year = matchArray[5];

    if (month < 1 || month > 12) 
    { // check month range     
        return false;
    }

    if (day < 1 || day > 31) 
    {        
        return false;
    }

    if ((month==4 || month==6 || month==9 || month==11) && day==31) 
    {    
        return false;
    }

    if (month == 2) 
    { // check for february 29th
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day==29 && !isleap)) 
        {     
            return false;
        }
    }
    return true; // date is valid
}

//function to get current date
function GetCurrentDate(matchArray)
{
    var today = new Date();
    var currDate = today.getDate();  
    var currMonth = today.getMonth()+ 1;    
    var currYear = today.getYear(); 
    
    var browName = navigator.appName;    
    if(browName == 'Netscape')
        currYear = 1900 + currYear; 
   
    date = matchArray[1]; // p@rse date into variables
    month = matchArray[3];
    year = matchArray[5];
    
    if(currYear > year)
    {        
        return true;
    }
    else
    {       
        if(currYear == year)
        {
            
            if(currMonth > month)
            {
                return true;
            }
            else
            {
                if(currMonth == month)
                {
                    if(currDate >= date)
                        return true;
                    else
                        return false;                    
                }
                else
                    return false;
                
            }
        }
        else
        {            
           if(currYear < year) 
           {            
                return false;
           }
        }
    }
    return true;        
}

function OpenPrintWindow(printID)
{  
  printWindow = window.open(PrintPreviewPopUpUrl+"/PrintPreviewPopUp.aspx?printID=" + printID,'PrintPreviewPopUp','width=700,height=650,toolbar=0,scrollbars=1,location=0,statusbar=no,menubar=0,resizable=0,left=200,top=200');
	printWindow.focus();
}

function OpenPrintWindowCalc(printID)
{  
    printWindow = window.open(PrintPreviewPopUpUrl+"/PrintPreviewPopUpCalc.aspx?printID=" + printID,'PrintPreviewPopUpCalc','width=700,height=650,toolbar=0,scrollbars=1,location=0,statusbar=no,menubar=0,resizable=0,left=200,top=200');
	printWindow.focus();
}

function OpenPrintWindow_tonline(printID,calculatorcategory)
{  
  printWindow = window.open(PrintPreviewPopUpUrl+"/PrintPreviewPopUp.aspx?printID=" + printID + "&calculatorCategory=" + calculatorcategory ,'PrintPreviewPopUp','width=700,height=650,toolbar=0,scrollbars=1,location=0,statusbar=no,menubar=0,resizable=0,left=200,top=200');
  printWindow.focus();
}

function OpenPrintWindowComparison(url )
{  
    printWindow = window.open(PrintPreviewPopUpUrl+ "/" + url,'PrintPreviewPopUp','width=820,height=650,toolbar=0,scrollbars=1,location=0,statusbar=no,menubar=0,resizable=0,left=200,top=200');
	printWindow.focus();
}

//function to validate email & display error message
function ValidateEmail(emailFieldId)
{
   var email = document.getElementById(emailFieldId).value;
   if ((email=="") ||(IsValidEmailID(email)==false))
   {
        showMessage(EMAIL_INVALID_MESSAGE);
        return false;
   }
   else
   {return true; }
}

//Function to impose the maximum length onto a textbox in the multiline mode.An alternative to Maxlength of singleline mode
function imposeMaxLength(e,object,maxLength)
{
    //Code 37 to 40 for arrow keys,8 for backspace-key,45 for insert-key,46 for del-key,35 for end-key and 36 for home-key
    if (!((e.keyCode>=35 && e.keyCode<=40) || (e.keyCode==8) || (e.keyCode==46) || (e.keyCode==45)))
    {
    return (object.value.length < maxLength);
    }
}

function EnableCalculateButtonForHyperLink(btnName,event)
{  
    //Call method to generate OSC pixel
    try
    {
        if (internalCalc && oscPixelAdded)
        {
            if (moduleStart)
            {
               scMStart();
               moduleStart = false; 
            }
        }
    }
    catch(ex){}
  
    if(document.getElementById(btnName).parentNode.className == 'button_orange button_inactive')
    {
        document.getElementById(btnName).parentNode.className = 'button_orange';
    }
    
    if (document.all)
    {
        if (event.keyCode == 13)
        {
            event.returnValue=false;
            event.cancel = true;
            document.getElementById(btnName).click();
            document.getElementById(btnName).focus();
            return false;
        }
    }

    else if (event.which)
    {
        if (event.which == 13)
        {
            event.returnValue=false;
            event.cancel = true;
            document.getElementById(btnName).focus();
            return false;
        }
    }
}

function CheckCssClass(control)
{
    if(control.parentNode.className == 'button_orange button_inactive')
        return false;
    else 
        return true;
}

function CheckCssClassRegister(control)
{
    if(control.parentNode.className == 'button_orange fsFloat-Right button_inactive')
        return false;
    else 
        return true;
}

function EnableCalculateButton(btnName,event)
{
    //Call method to generate OSC pixel
    if (internalCalc && oscPixelAdded)
    {
        if (moduleStart)
        {
           scMStart();
           moduleStart = false; 
        }
    }
    
    if( document.getElementById(btnName).disabled)
    {
        document.getElementById(btnName).disabled = false;
        document.getElementById(btnName).src = "/templates/images/btn_neu_berechnen_active.gif";
    }
    
    if (document.all)
    {
        if (event.keyCode == 13)
        {
            event.returnValue=false;
            event.cancel = true;
            document.getElementById(btnName).click();
            document.getElementById(btnName).focus();
            return false;
        }
    }

    else if (event.which)
    {
        if (event.which == 13)
        {
            event.returnValue=false;
            event.cancel = true;
            document.getElementById(btnName).focus();
            return false;
        }
    }
}

function EnableCalculateButton_tonline(btnName,event)
{  
    if (oscPixelAdded)
    {
        if (moduleStart)
        {
           scMStart();
           moduleStart = false; 
        }
    }
      
    if( document.getElementById(btnName).disabled)
    {
        document.getElementById(btnName).disabled = false;
        document.getElementById(btnName).src = "/templates/images/btn_neu_berechnen_tonline.gif";
    }
    
    if (document.all)
    {
        if (event.keyCode == 13)
        {
            event.returnValue=false;
            event.cancel = true;
            document.getElementById(btnName).click();
            document.getElementById(btnName).focus();
            return false;
        }
    }

    else if (event.which)
    {
        if (event.which == 13)
        {
            event.returnValue=false;
            event.cancel = true;
            document.getElementById(btnName).focus();
            return false;
        }
    }

}


//Function to show the progress bar image on the calculators 
function showProgress(image,imagePath,header,headerText)
{
    image.src = imagePath;
    document.getElementById(header).innerHTML = headerText;
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
}

function DisplaySaveResultConfirm(confirmDiv)
{
    document.getElementById(confirmDiv).style.width = 250 + "px";
    document.getElementById(confirmDiv).style.height = 100 + "px";
    document.getElementById(confirmDiv).style.left = 717 + "px";
    document.getElementById(confirmDiv).style.top = 325 + "px";
    document.getElementById(confirmDiv).style.position = "absolute";
    document.getElementById(confirmDiv).style.display = "block";
}

function HideSaveResultConfirm(confirmDiv)
{
    confirmDiv.parentNode.parentNode.style.display = "none";
}
 
function DisableInputForm(inputDiv,disablingDiv,reduceMargin)
{
     try
     {
        if(!reduceMargin)
        {
            reduceMargin = 0;
        }
        var XYPos = findPos(document.getElementById(inputDiv));
		var inputDivWidth = document.getElementById(inputDiv).offsetWidth;//"100%" 
		var inputDivHeight = document.getElementById(inputDiv).offsetHeight;     
		document.getElementById(disablingDiv).style.width = inputDivWidth + 'px';     
		document.getElementById(disablingDiv).style.height = inputDivHeight + 'px';
		document.getElementById(disablingDiv).style.left = XYPos[0] + 'px';
		document.getElementById(disablingDiv).style.top = XYPos[1] + reduceMargin + 'px';
		document.getElementById(disablingDiv).style.position = "absolute";
		document.getElementById(disablingDiv).style.display = "block";
     }
     catch (e){}
}

function HistoryOverlay(inputDiv,disablingDiv,contentdiv,dvfooter)
{
     try
     {
		var XYPos = findPos(document.getElementById(inputDiv));
		 var inputDivWidth = document.getElementById(inputDiv).offsetWidth;
		 var inputDivHeight = document.getElementById(inputDiv).offsetHeight;
		 var inputDivWidth1 = document.getElementById(contentdiv).offsetWidth;
		 var inputDivHeight1 = document.getElementById(contentdiv).offsetHeight;
		 var footer = document.getElementById(dvfooter).offsetHeight;
		 var finalwidth= inputDivWidth -  inputDivWidth1;
		 var finalHeight= inputDivHeight -  inputDivHeight1;
		 document.getElementById(disablingDiv).style.width = inputDivWidth + 'px';
		 document.getElementById(disablingDiv).style.height = inputDivHeight + footer + 'px';
		 document.getElementById(disablingDiv).style.left = XYPos[0] + 'px';
		 document.getElementById(disablingDiv).style.top = XYPos[1]  + 'px';
		 document.getElementById(disablingDiv).style.marginTop =  -finalHeight + 37 + 'px';
		 document.getElementById(disablingDiv).style.paddingRight =  + finalwidth + 'px';
		 document.getElementById(disablingDiv).style.position = "absolute";
		 document.getElementById(disablingDiv).style.display = "block";
     }
     catch (e){}
}

function findPosTOI(obj,objParent) {
	var curleft = curtop = 0;
	var curleftParent = curtopParent = 0;
	
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	if (objParent.offsetParent) {
		do {
			curleftParent += objParent.offsetLeft;
			curtopParent += objParent.offsetTop;
		} while (objParent = objParent.offsetParent);
	}
	curleft = (curleft - curleftParent);
	curtop = (curtop - curtopParent + 36);
	return [curleft,curtop];
}
function DisableInputFormTOI(inputDiv,disablingDiv,inputdiv1)
{
     try
     {
		 var XYPos = findPosTOI(document.getElementById(inputDiv), document.getElementById("positionTOI"));
		 var inputDivWidth = document.getElementById(inputDiv).offsetWidth;
		 var inputDivHeight = document.getElementById(inputDiv).offsetHeight;     
		 document.getElementById(disablingDiv).style.width = inputDivWidth + 'px';     
		 document.getElementById(disablingDiv).style.height = inputDivHeight + 'px';
		 document.getElementById(disablingDiv).style.left = XYPos[0] + 'px';
		 document.getElementById(disablingDiv).style.top = XYPos[1] + 'px';
		 document.getElementById(disablingDiv).style.position = "absolute";
		 document.getElementById(disablingDiv).style.display = "block";
     }
     catch (e){}
}
function EnableInputForm(disablingDiv)
{
     document.getElementById(disablingDiv).style.display = "none";
}

// Function handles the check uncheck events of Product List Checkboxes
function productChecked(checkedObj,comparisonId,comparison1Id,hdnSelectedProducts)
{
    var firstProductSelected;
    
    //Check if the checkbox is selected for the first time 
    //Then remove all the default selected checkboxes
    if (calculatorProductChecked==false)
    {
        for(var i=0;i<selectedProductsArray.length;i++)
        
        {
            if (document.getElementById(selectedProductsArray[i]))
            {
                document.getElementById(selectedProductsArray[i]).checked = false ;
            }
        }
        selectedProductsArray.splice(0,3);
    }
    
    //Check if the checkbox id is at the index 0 of array 
    //then change the selection order 
    if (checkedObj.id == selectedProductsArray[0])
    {
        if (checkedObj.checked)
        {
            selectedProductsArray.reverse(); 
            calculatorProductChecked=true;
        } 
        else
        {
            selectedProductsArray.shift();
            calculatorProductChecked=true;

        }
    }
    
    //Check if the checkbox id is at the index 1 of array 
    //then change the selection order 
    else if (checkedObj.id == selectedProductsArray[1])
    {
        if (checkedObj.checked)
        {
            selectedProductsArray[1]=selectedProductsArray[2];
            selectedProductsArray[2]= checkedObj.id;
            calculatorProductChecked=true;
            
        }
        else
        {
            if (selectedProductsArray.length > 2)
            {
                selectedProductsArray[1]=selectedProductsArray[2];
                selectedProductsArray.splice(2,1);
                calculatorProductChecked=true;
            }
            else
            {
                selectedProductsArray.splice(1,1);
                calculatorProductChecked=true;
   
            }


        }
    }
    
    //Check if the checkbox id is at the index 0 of array 
    //then remove the checkbox id from array
    else if (checkedObj.id == selectedProductsArray[2])
    {
        if (!checkedObj.checked)
            {
                selectedProductsArray.splice(2,1);
                calculatorProductChecked=true;
            }
    }
    
    //Check if the checkbox id does not exist in the array
    //then add the checkbox id into array
    else
    {
        if (checkedObj.checked)
        {
            if (selectedProductsArray.length > 2)
            {
                firstProductSelected =selectedProductsArray.shift();
                if (document.getElementById(firstProductSelected))
                {
                    document.getElementById(firstProductSelected).checked = false ;
                }
            }
            selectedProductsArray.push(checkedObj.id);
            calculatorProductChecked=true;

        }

    }
    
    //Disable the comparison button if selected products are less then 2
    if (selectedProductsArray.length < 2)
    {
        document.getElementById(comparisonId).disabled=true;
        document.getElementById(comparison1Id).disabled=true;
        document.getElementById(comparisonId).src= "/templates/Images/btn_angebote_vergleichen_inactive.gif";
        document.getElementById(comparison1Id).src= "/templates/Images/btn_angebote_vergleichen_inactive.gif";

    }
    else
    {
        document.getElementById(comparisonId).disabled=false;
        document.getElementById(comparison1Id).disabled=false;
        document.getElementById(comparisonId).src= "/templates/Images/btn_angebote_vergleichen.gif";
        document.getElementById(comparison1Id).src= "/templates/Images/btn_angebote_vergleichen.gif";


    }
    
    
    //Assign the value of selected products into a hidden input
    var selectedproducts = new String();
    selectedproducts = (selectedProductsArray.join("-"));
    selectedproducts=selectedproducts.split('-');
    
    document.getElementById(hdnSelectedProducts).value="";
    
    for(var i=0;i<selectedproducts.length;i++)
    { 
       if(!(i%2==0))
       {   
           if (document.getElementById(hdnSelectedProducts).value == "") 
           {
               document.getElementById(hdnSelectedProducts).value += selectedproducts[i];
           }
           else
           {
               document.getElementById(hdnSelectedProducts).value += "," + selectedproducts[i];
           }
       }
    }
}

// Function handles the check/uncheck events of Product List Checkboxes on normal calculators
function productCheckedForComparison(checkedObj,dvComparisonId,hdnSelectedProducts,maxProductComparisonCount)
{
    productCheckedForHyperLink(checkedObj,dvComparisonId,hdnSelectedProducts,MAX_PRODUCT_CALC_COMAPRISON);
}

// Function handles the check/uncheck events of Product List Checkboxes on Bluelabel calculators
function productCheckedForHyperLink(checkedObj,dvComparisonId,hdnSelectedProducts,maxProductComparisonCount)
{
    var firstProductSelected;
    //Check if user does not use max prod compare count
    if(!maxProductComparisonCount)
    {
        maxProductComparisonCount = MAX_PRODUCT_BLUELABEL_CALC_COMAPRISON;
    }
    // Clean the array for empty values
    for(var i=0;i<=selectedProductsArray.length;i++)
    {
        if(selectedProductsArray[i] == '')
        {
          selectedProductsArray.splice(i,1);
        }
    }
    // If this is the first time an array has been loaded then assign it to empty
    if (calculatorProductChecked==false && typeof(selectedProductsArray)!='undefined')
    {
        selectedProductsArray = [];
    }
   
    if (checkedObj.checked)
    {        
        if (selectedProductsArray.length > (maxProductComparisonCount - 1))
        {
            firstProductSelected =selectedProductsArray.shift();
            if (document.getElementById(firstProductSelected))
            {
                document.getElementById(firstProductSelected).checked = false ;
            }
        }
        selectedProductsArray.push(checkedObj.id);
        calculatorProductChecked=true;
    }
    else
    {
        for(var i=0;i<selectedProductsArray.length;i++)
        {
            if(selectedProductsArray[i] == checkedObj.id)
            {
                selectedProductsArray.splice(i,1);
            }
        }
    }

    //Disable the comparison button if selected products are less then 2
    if (selectedProductsArray.length < 2)
    {
        document.getElementById(dvComparisonId).className = 'button_orange button_inactive';
    }
    else
    {
        document.getElementById(dvComparisonId).className = 'button_orange';
    }
    
    //sort the array
    selectedProductsArray.sort();
    
    //Assign the value of selected products into a hidden input
    var selectedproducts = new String();
    selectedproducts = (selectedProductsArray.join("-"));
    selectedproducts=selectedproducts.split('-');
    document.getElementById(hdnSelectedProducts).value="";
    
    for(var i=0;i<selectedproducts.length;i++)
    { 
       if(!(i%2==0))
       {   
           if (document.getElementById(hdnSelectedProducts).value == "") 
           {
               document.getElementById(hdnSelectedProducts).value += selectedproducts[i];
           }
           else
           {
               document.getElementById(hdnSelectedProducts).value += "," + selectedproducts[i];
           }
       }
    }
}

//This method is used to check the selected products after binding of product list on Bluelabel calculators
function CheckSelectedProducts(comparisonId)
{  
    // Clean the array for empty values
    for(var i=0;i<=selectedProductsArray.length;i++)
    {
        if(selectedProductsArray[i] == '')
        {
          selectedProductsArray.splice(i,1);
        }
    }
 
    for(var i=0;i<selectedProductsArray.length;i++)
    {
        if (document.getElementById(selectedProductsArray[i]))
        {
            document.getElementById(selectedProductsArray[i]).checked = true ;
        }
    }
    if(selectedProductsArray.length >= 2)
    {
  
        document.getElementById(comparisonId).className = 'button_orange'; 
    }
 
}

//This method is used to check the selected products after binding of product list on internal calculators
function CheckFakeSelectedProducts(comparisonId)
{  
    // Clean the array for empty values
    for(var i=0;i<=selectedProductsArray.length;i++)
    {
        if(selectedProductsArray[i] == '')
        {
          selectedProductsArray.splice(i,1);
        }
    } 
    for(var i=0;i<selectedProductsArray.length;i++)
    {
        if (document.getElementById(selectedProductsArray[i]))
        {
            $("#"+selectedProductsArray[i]).parent().addClass("checkbox_gewaehlt");
            document.getElementById(selectedProductsArray[i]).checked = true ;
        }
    }
    if(selectedProductsArray.length >= 2)
    {  
        document.getElementById(comparisonId).className = 'button_orange'; 
    } 
}

//This method is used to clear selectedProducts array on calculate button click
function ClearProductsArray()
{
   selectedProductsArray = [];
}

function SetExplorerBackButtonStatus()
{   
    linkClicked = true;
}

function UnsuppressExitAlertBox()
{
    linkClicked = false;
}   


function closeForm(formName) 
{
		document.getElementById(formName).style.display="none";
}
/*

function showForgotPassword()
{
		document.getElementById("forgot-password").style.display="block";
}
*/
//cm33 specific script
var $d =  function(strId){return document.getElementById(strId);}
var origImgSrc;
Show = function(id){

	var actualImg = $d(id+'On').getElementsByTagName('img')[0];
	var subsImg = $d(id+'Off').getElementsByTagName('img')[0];
	origImgSrc = actualImg.src;
	actualImg.src = subsImg.src;

}

Hide= function(id){

	var actualImg = $d(id+'On').getElementsByTagName('img')[0];
	actualImg.src = origImgSrc

}

function cursorMouseHand(elementName)
{
    document.getElementById(elementName).style.cursor="pointer";
}


// This method disables the passed dropdown list
function DisableDropDownList(dropdown)
{
    document.getElementById(dropdown).disabled=true;
}

// This method enables the passed dropdown list
function EnableDropDownList(dropdown)
{
    document.getElementById(dropdown).disabled=false;
}

function DisableOnlineClosureButtons(clientid,message)
{
    // Disabling all the checkboxes & buttons after clicking the online button
    document.getElementById(clientid + "_imgDatenzusammenfassungZuruck").disabled = true;
    document.getElementById(clientid + "_imgBtnEditPersondaten").disabled = true;
    document.getElementById(clientid + "_imgBtnEditPersondaten").src = "/templates/Images/btn_personendaten_andern_inactive.gif";
    document.getElementById(clientid + "_imgDatenzusammenfassungZuruck").disabled = true;
    document.getElementById(clientid + "_imgDatenzusammenfassungZuruck").src = "/templates/Images/btn_zuruck_inactive.gif";
    document.getElementById(clientid + "_chkDaten").disabled = true;
    document.getElementById(clientid + "_chkAllgemeine").disabled = true;
    document.getElementById(clientid + "_chkNutzungsbedingungen").disabled = true;
    document.getElementById(clientid + "_lblMessage").innerHTML = message;
    
    //hide redirect message 
    redirectClicked = true;
    linkClicked = true;    
}

function DisableOnlineClosureButtons_tonline(clientid,message)
{
    // Disabling all the checkboxes & buttons after clicking the online button
    document.getElementById(clientid + "_imgDatenzusammenfassungZuruck").disabled = true;
    document.getElementById(clientid + "_imgBtnEditPersondaten").disabled = true;
    document.getElementById(clientid + "_imgBtnEditPersondaten").src = "/templates/Images/btn_personendaten_andern_inactive_tonline.gif";
    document.getElementById(clientid + "_imgDatenzusammenfassungZuruck").disabled = true;
    document.getElementById(clientid + "_imgDatenzusammenfassungZuruck").src = "/templates/Images/btn_zuruck_inactive_tonline.gif";
    document.getElementById(clientid + "_chkDaten").disabled = true;
    document.getElementById(clientid + "_chkAllgemeine").disabled = true;
    document.getElementById(clientid + "_chkNutzungsbedingungen").disabled = true;
    document.getElementById(clientid + "_lblMessage").innerHTML = message;
    
    //hide redirect message 
    redirectClicked = true;
    linkClicked = true;    
}

var iSelectVal="";
function loadDropdown(clientid,textboxid)
{
   if (iSelectVal!=$d(textboxid).value)
   {
    $d(clientid).disabled=false;
    iSelect = $d(clientid);
    iSelect.innerHTML="";
    var objOption = new Option('Ort wird geladen...','noValue');
    iSelect.options[0] = objOption;
    iSelectVal = $d(textboxid).value;
   }
}
   
// Variable to hold disable image URL for button causing postback.
var calculatorButtonDisabledURL ="";
var calculatorButtonDisabled2URL ="";
function MakeButtonDisabled(disabledImagePath, disabledImagePath2)
{
    // Function assigns a new image URL which will be called by InitializeRequest() to disable the button that is causing the postback
    calculatorButtonDisabledURL = disabledImagePath;
    if(!disabledImagePath2)
    {   // There doesnt exist a second argument
        calculatorButtonDisabled2URL="";
    }
    else
    {  // Second argument exists. This will be used to specify an alternate image URL for the button causing postback
       calculatorButtonDisabled2URL = disabledImagePath2;
    }
}

//function MakeButtonDisabledForLink(disabledImagePath, disabledImagePath2)
//{

////if(document.getElementById(btnName).parentNode.className == 'button_orange button_inactive')
//    // Function assigns a new image URL which will be called by InitializeRequest() to disable the button that is causing the postback
//    calculatorButtonDisabledURL = disabledImagePath;
//    if(!disabledImagePath2)
//    {   // There doesnt exist a second argument
//        calculatorButtonDisabled2URL="";
//    }
//    else
//    {  // Second argument exists. This will be used to specify an alternate image URL for the button causing postback
//       calculatorButtonDisabled2URL = disabledImagePath2;
//    }
//}


function ShowSaveLayer(controlId){
    var browsername=navigator.appName;
    if (browsername.indexOf("Microsoft")!=-1){
		var verticalOffset = 2;
		var horizOffset = 2;
    } else {
        var verticalOffset = 4;
		var horizOffset = 1;
    }
        var saveIconXY = findPos($d(saveHistoryPos));
		var saveIconleftPos = $d(controlId).offsetWidth+horizOffset;
		$d(controlId).style.left = saveIconleftPos-28+'px';
		$d(controlId).style.top = saveIconXY[1]-$d(controlId).offsetHeight+verticalOffset-5+'px';
		
}
/*login layer*/
function SaveloginLayer(loginForm){
    var browsername=navigator.appName;
    if (browsername.indexOf("Microsoft")!=-1){
		var verticalOffset = 2;
		var horizOffset = 2;
    } else {
        var verticalOffset = 4;
		var horizOffset = 1;
    }
		var saveIconXY = findPos($d(saveHistoryPos));
		var saveIconleftPos = saveIconXY[0]-113+horizOffset;
		$d(loginForm).style.left = saveIconleftPos+'px';
		$d(loginForm).style.top = saveIconXY[1]-$d(loginForm).offsetHeight-5+'px';
}

function showHelpLayer(helpIconID,helpContentID){
   var els = document.getElementsByTagName("select");
    for (var x = 0; x < els.length; x++){
        els[x].blur();
    }
    var browsername=navigator.appName;
    if (browsername.indexOf("Microsoft")!=-1){
		var verticalOffset = 2;
		var horizOffset = 2;
    } else {
        var verticalOffset = 4;
		var horizOffset = 1;
    }
    try
    {
    	if ($d(helpContentID))
		{
			$d("helpContentArea").innerHTML = $d(helpContentID).innerHTML;
		}else{
			$d("helpContentArea").innerHTML = "No information available";
		}
		

		helpIcon = helpIconID.id;
		var helpIconXY = findPos($d(helpIcon));
		var leftPos = helpIconXY[0]-46+horizOffset;
		if (leftPos<=0)
		{
			leftPos=helpIconXY[0]-1+horizOffset;
		}
		
		$d("dvHelpLayer").style.left = leftPos+'px';
		if(document.getElementById("scrollComparison")) 
		    {
		        var abc=document.getElementById("scrollComparison").scrollTop;
		        $d("dvHelpLayer").style.top = helpIconXY[1]-abc+$d(helpIcon).offsetHeight-$d("dvHelpLayer").offsetHeight+verticalOffset-17+'px';
		    }
		    else{
		        $d("dvHelpLayer").style.top = helpIconXY[1]-$d("dvHelpLayer").offsetHeight+verticalOffset-3+'px';
		    }
		    $d("dvHelpLayer").style.display = 'block';
		    $d("dvHelpLayer").style.visibility = 'visible';
    }
    catch (e){}
	
}

function showBlueHelp(helpIconID,helpContentID){
   var els = document.getElementsByTagName("select");
    for (var x = 0; x < els.length; x++){
        els[x].blur();
    }
    var browsername=navigator.appName;
    if (browsername.indexOf("Microsoft")!=-1){
		var verticalOffset = 2;
		var horizOffset = 2;
    } else {
        var verticalOffset = 4;
		var horizOffset = 1;
    }
    try
    {
    	if ($d(helpContentID))
		{
			$d("helpContentArea").innerHTML = $d(helpContentID).innerHTML;
		}else{
			$d("helpContentArea").innerHTML = "No information available";
		}
		

		helpIcon = helpIconID.id;
		var helpIconXY = findPos($d(helpIcon));
		var leftPos = helpIconXY[0]-46+horizOffset;
		if (leftPos<=0)
		{
			leftPos=helpIconXY[0]-1+horizOffset;
		}
		$d("dvHelpLayer").style.left = leftPos+'px';
		$d("dvHelpLayer").style.top = helpIconXY[1]+$d(helpIcon).offsetHeight+verticalOffset+'px';
		$d("dvHelpLayer").style.display = 'block';
		$d("dvHelpLayer").style.visibility = 'visible';
    }
    catch (e){}
	
}

function showProductHelp(helpIconID,helpContentID){
   var els = document.getElementsByTagName("select");
    for (var x = 0; x < els.length; x++){
        els[x].blur();
    }
    var browsername=navigator.appName;
    if (browsername.indexOf("Microsoft")!=-1){
		var verticalOffset = 2;
		var horizOffset = 2;
    } else {
        var verticalOffset = 4;
		var horizOffset = 1;
    }
    try
    {
    	if ($d(helpContentID))
		{
			$d("helpContentArea").innerHTML = $d(helpContentID).innerHTML;
		}else{
			$d("helpContentArea").innerHTML = "No information available";
		}
		

		helpIcon = helpIconID.id;
		var helpIconXY = findPos($d(helpIcon));
		var leftPos = helpIconXY[0]-46+horizOffset;
		if (leftPos<=0)
		{
			leftPos=helpIconXY[0]-1+horizOffset;
		}
		
		$d("dvHelpLayer").style.left = leftPos+'px';
	     if(document.getElementById("scrollProduct"))
		    {
		        var abcd=document.getElementById("scrollProduct").scrollTop;
		        $d("dvHelpLayer").style.top = helpIconXY[1]-abcd+$d(helpIcon).offsetHeight-$d("dvHelpLayer").offsetHeight+verticalOffset-17+'px';
		    }
		    else{
		        $d("dvHelpLayer").style.top = helpIconXY[1]+$d(helpIcon).offsetHeight-$d("dvHelpLayer").offsetHeight+verticalOffset-17+'px';
		    }
		    $d("dvHelpLayer").style.display = 'block';
		    $d("dvHelpLayer").style.visibility = 'visible';
    }
    catch (e){}
	
}


function showMehrLayer(moreInfoMenu,moreInfoMenuItems){
    var browsername=navigator.appName;
    if (browsername.indexOf("Microsoft")!=-1){
		var verticalOffset = 2;
		var horizOffset = 2;
    } else {
        var verticalOffset = 4;
		var horizOffset = 1;
    }
    try
    {
		helpIcon = moreInfoMenu.id;
		var helpIconXY = findPos($d(moreInfoMenu));
		var leftPos = helpIconXY[0]+horizOffset;
		$d(moreInfoMenuItems).style.left = leftPos-$d(moreInfoMenu).offsetWidth-2+'px';
		$d(moreInfoMenuItems).style.left;
		$d(moreInfoMenuItems).style.top = helpIconXY[1]+24+'px';
		$d(moreInfoMenuItems).style.visibility = 'visible';
    }
    catch (e){}
	
}
function showProduct(helpIconID,helpContentID){
   var els = document.getElementsByTagName("select");
    for (var x = 0; x < els.length; x++){
        els[x].blur();
    }
    var browsername=navigator.appName;
    if (browsername.indexOf("Microsoft")!=-1){
		var verticalOffset = 2;
		var horizOffset = 2;
    } else {
        var verticalOffset = 4;
		var horizOffset = 1;
    }
    try
    {
    	if ($d(helpContentID))
		{
			$d("helpContentArea").innerHTML = $d(helpContentID).innerHTML;
		}else{
			$d("helpContentArea").innerHTML = "No information available";
		}
		

		helpIcon = helpIconID.id;
		var helpIconXY = findPos($d(helpIcon));
		var leftPos = helpIconXY[0]-196+horizOffset;
		if (leftPos<=0)
		{
			leftPos+=0;
		}
		$d("dvHelpLayer").style.left = leftPos+'px';
		$d("dvHelpLayer").style.top = helpIconXY[1]+$d(helpIcon).offsetHeight-$d("dvHelpLayer").offsetHeight+verticalOffset+'px';
		$d("dvHelpLayer").style.display = 'block';
		$d("dvHelpLayer").style.visibility = 'visible';
    }
    catch (e){}
	
}
function hideLayer(helpLayerID){
	$d(helpLayerID).style.visibility = 'hidden';
	return false;		
}
function abc(){
$d(helpLayerID).style.visibility = 'hidden';
	return false;	
}
/*The next two functions are for the purpose of fixing the onmouseout issue with nested elements on all browsers */
function is_child_of(parent, child) {
	if( child != null ) {			
		while( child.parentNode ) {
			if( (child = child.parentNode) == parent ) {
				return true;
			}
		}
	}
	return false;
}



function fixOnMouseOut(element, event, JavaScript_code) {
	var current_mouse_target = null;
	if( event.toElement ) {				
		current_mouse_target 			 = event.toElement;
	} else if( event.relatedTarget ) {				
		current_mouse_target 			 = event.relatedTarget;
	}
	if( !is_child_of(element, current_mouse_target) && element != current_mouse_target ) {
		eval(JavaScript_code);
		       // var verticalOffset = -1000;
		        $d("dvHelpLayer").style.top = '-1000px';
		        $d("dvHelpLayer").style.left = '0px';          
	}	
}


function showExampleLayer(exampleLinkID,exampleContentID){
	try
	{
		if ($d(exampleContentID))
		{
			$d("exampleContentArea").innerHTML = $d(exampleContentID).innerHTML;
		}else{
			$d("exampleContentArea").innerHTML = "No information available";
		}
		
		exampleLink = exampleLinkID.id;
		var exampleLinkXY = findPos($d(exampleLink));
		OffsetHeight = ($d("dvExampleLayer").offsetHeight)/2;
		$d("dvExampleLayer").style.left = exampleLinkXY[0]+52+'px';	
		$d("dvExampleLayer").style.top = exampleLinkXY[1]-OffsetHeight+'px';
		$d("dvExampleLayer").style.display = 'block';
		$d("dvExampleLayer").style.visibility = 'visible';
	}
	catch (e){}
	
}

/*Detect scroll to hide open layers on scrolling*/
var initScrollY;
function startSscrollDetect(){
	var browsername=navigator.appName;
    if (browsername.indexOf("Microsoft")!=-1){
		initScrollY=document.body.scrollTop;
    } else {
		initScrollY=window.pageYOffset;
    }
	setInterval("scrollingDetector()", 500);
}
function scrollingDetector(){
	if ($d('dvHelpLayer'))
	{
		var browsername=navigator.appName;
		if (browsername.indexOf("Microsoft")!=-1){
			newScrollY=document.body.scrollTop;
		} else {
			newScrollY=window.pageYOffset;
		}
		if (newScrollY!=initScrollY)
		{
			hideLayer('dvHelpLayer');
		}
		initScrollY=newScrollY;
	}
	
}

function setOnlineClosureChecked()
{
    onlineClosureChecked = true;
}

/* Code change starts here
 * Code changed by :- Vikrant Tiwari
 * artf733596: denied cookies are generating error pages
 * Added javascript code to check if cookie is disabled and to show a popup once
 *
*/
var calleeDetail= false;
var calleeComparison= false;
var calleeOnline= false;
var calleeProductList = false;
var calleePaging =false;
var calleeSorting = false;


function checkCookies(callee)
{
   
   var cookieDate = new Date();
  
   chkcookie = (cookieDate.getTime() + '');
  
   document.cookie = "chkcookie=" + chkcookie + "; path=/";
  
   if (document.cookie.indexOf(chkcookie,0) < 0 && callee=="Detail" && calleeDetail==false)
    {
       alert('Für die Berechnung ist ein Cooky erforderlich. Sie haben möglicherweise in den Browsereinstellungen die Akzeptanz von Cookies deaktiviert. Bitte nehmen Sie entsprechende Änderungen in Ihren Browsereinstellungen vor.');
       calleeDetail=true;
       return false;
    }
    else if (document.cookie.indexOf(chkcookie,0) < 0 && callee=="Compare" && calleeComparison==false)
    {
       alert('Für die Berechnung ist ein Cooky erforderlich. Sie haben möglicherweise in den Browsereinstellungen die Akzeptanz von Cookies deaktiviert. Bitte nehmen Sie entsprechende Änderungen in Ihren Browsereinstellungen vor.');
       calleeComparison=true;
       return false;
    }
    else if (document.cookie.indexOf(chkcookie,0) < 0 && callee=="Online" && calleeOnline==false)
    {
       alert('Für die Berechnung ist ein Cooky erforderlich. Sie haben möglicherweise in den Browsereinstellungen die Akzeptanz von Cookies deaktiviert. Bitte nehmen Sie entsprechende Änderungen in Ihren Browsereinstellungen vor.');
       calleeOnline=true;
       return false;
    }
      else if (document.cookie.indexOf(chkcookie,0) < 0 && callee=="ProductList" && calleeProductList==false)
    {
       alert('Für die Berechnung ist ein Cooky erforderlich. Sie haben möglicherweise in den Browsereinstellungen die Akzeptanz von Cookies deaktiviert. Bitte nehmen Sie entsprechende Änderungen in Ihren Browsereinstellungen vor.');
       calleeProductList=true;
       return false;
    }
     else if (document.cookie.indexOf(chkcookie,0) < 0 && callee=="Paging" && calleePaging==false)
    {
       alert('Für die Berechnung ist ein Cooky erforderlich. Sie haben möglicherweise in den Browsereinstellungen die Akzeptanz von Cookies deaktiviert. Bitte nehmen Sie entsprechende Änderungen in Ihren Browsereinstellungen vor.');
       calleePaging=true;
       return false;
    }
     else if (document.cookie.indexOf(chkcookie,0) < 0 && callee=="Sorting" && calleeSorting==false)
    {
       alert('Für die Berechnung ist ein Cooky erforderlich. Sie haben möglicherweise in den Browsereinstellungen die Akzeptanz von Cookies deaktiviert. Bitte nehmen Sie entsprechende Änderungen in Ihren Browsereinstellungen vor.');
       calleeSorting=true;
       return false;
    }     
    
    if(document.cookie.indexOf(chkcookie,0) >= 0 )
    {
        return true;
    }
    return false;
}

var calleeLogIn = false;
function checkCookiesLogIn(boolLogin,logInStatus,SaveHistory)
{
   var cookieDate = new Date();
   saveHistoryPos = SaveHistory;
   chkcookie = (cookieDate.getTime() + '');
  
   document.cookie = "chkcookie=" + chkcookie + "; path=/";
    if (document.cookie.indexOf(chkcookie,0) < 0  && calleeLogIn==false)
    {
       alert('FÃ¼r die Berechnung ist ein Cooky erforderlich. Sie haben mÃ¶glicherweise in den Browsereinstellungen die Akzeptanz von Cookies deaktiviert. Bitte nehmen Sie entsprechende Ã„nderungen in Ihren Browsereinstellungen vor.');
       calleeLogIn=true;
       return false;
    }
    else if(document.cookie.indexOf(chkcookie,0) >= 0 && logInStatus==false)
    {        
        window.location = REGISTER_REDIRECT_URL;
    }
    else if(document.cookie.indexOf(chkcookie,0) >= 0 && logInStatus==true)
    {
      return true;
    }
    return false;
}

function HideOverlay(){
    document.getElementById("transparentLayer").style.display="none";
}

function LoginEventStatus() 
{
    try
    {   //Code Added for Integration with Incovia artf758030
        if(document.getElementById('hdnUser') == null  || document.getElementById(iframeIDField).contentWindow.FS24LoginEventStatus == undefined )
        {
                   
        }
        else
        {
            document.getElementById(iframeIDField).contentWindow.FS24LoginEventStatus(document.getElementById('hdnUser').getAttribute('value'));
        }
            
   } 
    catch(e)
    {
    }
}
  
  //Disable Result List when wrong inputs are given for re-search
function DisableResultPage(resultDiv,disablingDiv)
{
     var XYPos = findPos(document.getElementById(resultDiv));
     var inputDivWidth = document.getElementById(resultDiv).offsetWidth;
     var inputDivHeight = document.getElementById(resultDiv).offsetHeight;     
     document.getElementById(disablingDiv).style.width = inputDivWidth + 'px';     
     document.getElementById(disablingDiv).style.height = inputDivHeight + 'px';
     document.getElementById(disablingDiv).style.left = XYPos[0] + 'px';
     document.getElementById(disablingDiv).style.top = XYPos[1] + 'px';
     document.getElementById(disablingDiv).style.position = "absolute";
}

// Function handles the check uncheck events of Product List Checkboxes
function productCheckedRK(checkedObj,comparisonId,comparison1Id,hdnSelectedProducts,hdnSelectedProductRate,hdnSelectedProductDuration)
{
    var firstProductSelected;
    
    //Check if the checkbox is selected for the first time 
    //Then remove all the default selected checkboxes
    if (rkCalculatorProductChecked==false)
    {
        for(var i=0;i<selectedProductsArray.length;i++)
        
        {
            if (document.getElementById(selectedProductsArray[i]))
            {
                document.getElementById(selectedProductsArray[i]).checked = false ;
            }
        }
        selectedProductsArray.splice(0,3);
    }
    
    //Check if the checkbox id is at the index 0 of array 
    //then change the selection order 
    if (checkedObj.id == selectedProductsArray[0])
    {
        if (checkedObj.checked)
        {
            selectedProductsArray.reverse(); 
            rkCalculatorProductChecked=true;
        } 
        else
        {
            selectedProductsArray.shift();
            rkCalculatorProductChecked=true;

        }
    }
    
    //Check if the checkbox id is at the index 1 of array 
    //then change the selection order 
    else if (checkedObj.id == selectedProductsArray[1])
    {
        if (checkedObj.checked)
        {
            selectedProductsArray[1]=selectedProductsArray[2];
            selectedProductsArray[2]= checkedObj.id;
            rkCalculatorProductChecked=true;
            
        }
        else
        {
            if (selectedProductsArray.length > 2)
            {
                selectedProductsArray[1]=selectedProductsArray[2];
                selectedProductsArray.splice(2,1);
                rkCalculatorProductChecked=true;
            }
            else
            {
                selectedProductsArray.splice(1,1);
                rkCalculatorProductChecked=true;
   
            }


        }
    }
    
    //Check if the checkbox id is at the index 0 of array 
    //then remove the checkbox id from array
    else if (checkedObj.id == selectedProductsArray[2])
    {
        if (!checkedObj.checked)
            {
                selectedProductsArray.splice(2,1);
                rkCalculatorProductChecked=true;
            }
    }
    
    //Check if the checkbox id does not exist in the array
    //then add the checkbox id into array
    else
    {
        if (checkedObj.checked)
        {
            if (selectedProductsArray.length > 2)
            {
                firstProductSelected =selectedProductsArray.shift();
                if (document.getElementById(firstProductSelected))
                {
                    document.getElementById(firstProductSelected).checked = false ;
                }
            }
            selectedProductsArray.push(checkedObj.id);
            rkCalculatorProductChecked=true;

        }

    }
    
    //Disable the comparison button if selected products are less then 2
    if (selectedProductsArray.length < 2)
    {
        document.getElementById(comparisonId).disabled=true;
        document.getElementById(comparison1Id).disabled=true;
        document.getElementById(comparisonId).src= "/templates/Images/btn_angebote_vergleichen_inactive.gif";
        document.getElementById(comparison1Id).src= "/templates/Images/btn_angebote_vergleichen_inactive.gif";
        
    }
    else
    {
        document.getElementById(comparisonId).disabled=false;
        document.getElementById(comparison1Id).disabled=false;
        document.getElementById(comparisonId).src= "/templates/Images/btn_angebote_vergleichen.gif";
        document.getElementById(comparison1Id).src= "/templates/Images/btn_angebote_vergleichen.gif";

    }
    
    
    //Assign the value of selected products into a hidden input
    var selectedproducts = new String();
    selectedproducts = (selectedProductsArray.join("-"));
    selectedproducts=selectedproducts.split('-');
        
    document.getElementById(hdnSelectedProducts).value="";
    document.getElementById(hdnSelectedProductRate).value="";
    document.getElementById(hdnSelectedProductDuration).value="";
    
    for(var i=0;i<selectedproducts.length;i++)
    { 
       if(!(i%2==0))
       {   
           //Split selectedproducts into strings
           var prodInfoArray = selectedproducts[i].split("_");
           var productId = prodInfoArray[0];
           var productRate = prodInfoArray[1];
           var productDuration = prodInfoArray[2];
           
           //Hidden field Slected Product Id
           if (document.getElementById(hdnSelectedProducts).value == "") 
           {
               document.getElementById(hdnSelectedProducts).value += productId;
           }
           else
           {
               document.getElementById(hdnSelectedProducts).value += "_" + productId;
           }
           
           //Hidden field Slected Product Rate
           if (document.getElementById(hdnSelectedProductRate).value == "") 
           {
               document.getElementById(hdnSelectedProductRate).value += productRate;
           }
           else
           {
               document.getElementById(hdnSelectedProductRate).value += "_" + productRate;
           }
           
           //Hidden field Slected Product Duration           
           if (document.getElementById(hdnSelectedProductDuration).value == "") 
           {
               document.getElementById(hdnSelectedProductDuration).value += productDuration;
           }
           else
           {
               document.getElementById(hdnSelectedProductDuration).value += "_" + productDuration;
           }
       }
    }
}

function productCheckedRKForHyperLink(checkedObj,dvComparisonId,dvComparison1Id,hdnSelectedProducts,hdnSelectedProductRate,hdnSelectedProductDuration)
{
    var firstProductSelected;
    
    //Check if the checkbox is selected for the first time 
    //Then remove all the default selected checkboxes
    if (rkCalculatorProductChecked==false)
    {
        for(var i=0;i<selectedProductsArray.length;i++)
        
        {
            if (document.getElementById(selectedProductsArray[i]))
            {
                document.getElementById(selectedProductsArray[i]).checked = false ;
            }
        }
        selectedProductsArray.splice(0,3);
    }
    
//    alert("selectedProductsArray.length: " + selectedProductsArray.length);
//    
//    alert("selectedProductsArray[0] " + selectedProductsArray[0]);
//    alert("selectedProductsArray[0] " + selectedProductsArray[1]);
//    alert("selectedProductsArray[0] " + selectedProductsArray[2]);
    
    //Check if the checkbox id is at the index 0 of array 
    //then change the selection order 
    if (checkedObj.id == selectedProductsArray[0])
    {
        if (checkedObj.checked)
        {
            selectedProductsArray.reverse(); 
            rkCalculatorProductChecked=true;
        } 
        else
        {
            selectedProductsArray.shift();
            rkCalculatorProductChecked=true;

        }
    }
    
    //Check if the checkbox id is at the index 1 of array 
    //then change the selection order 
    else if (checkedObj.id == selectedProductsArray[1])
    {
        if (checkedObj.checked)
        {
            selectedProductsArray[1]=selectedProductsArray[2];
            selectedProductsArray[2]= checkedObj.id;
            rkCalculatorProductChecked=true;
            
        }
        else
        {
            if (selectedProductsArray.length > 2)
            {
                selectedProductsArray[1]=selectedProductsArray[2];
                selectedProductsArray.splice(2,1);
                rkCalculatorProductChecked=true;
            }
            else
            {
                selectedProductsArray.splice(1,1);
                rkCalculatorProductChecked=true;
   
            }


        }
    }
    
    //Check if the checkbox id is at the index 0 of array 
    //then remove the checkbox id from array
    else if (checkedObj.id == selectedProductsArray[2])
    {
        if (!checkedObj.checked)
            {
                selectedProductsArray.splice(2,1);
                rkCalculatorProductChecked=true;
            }
    }
    
    //Check if the checkbox id does not exist in the array
    //then add the checkbox id into array
    else
    {
        if (checkedObj.checked)
        {
            if (selectedProductsArray.length > 2)
            {
                firstProductSelected =selectedProductsArray.shift();
                if (document.getElementById(firstProductSelected))
                {
                    document.getElementById(firstProductSelected).checked = false ;
                }
            }
            selectedProductsArray.push(checkedObj.id);
            rkCalculatorProductChecked=true;

        }

    }
    
    //Disable the comparison button if selected products are less then 2
    if (selectedProductsArray.length < 2)
    {
        document.getElementById(dvComparisonId).className = 'button_orange button_inactive';
        document.getElementById(dvComparison1Id).className = 'button_orange button_inactive';
    }
    else
    {
        document.getElementById(dvComparisonId).className = 'button_orange';
        document.getElementById(dvComparison1Id).className = 'button_orange';
    }
    
    
    //Assign the value of selected products into a hidden input
    var selectedproducts = new String();
    selectedproducts = (selectedProductsArray.join("-"));
    selectedproducts=selectedproducts.split('-');
        
    document.getElementById(hdnSelectedProducts).value="";
    document.getElementById(hdnSelectedProductRate).value="";
    document.getElementById(hdnSelectedProductDuration).value="";
    
    for(var i=0;i<selectedproducts.length;i++)
    { 
       if(!(i%2==0))
       {   
           //Split selectedproducts into strings
           var prodInfoArray = selectedproducts[i].split("_");
           var productId = prodInfoArray[0];
           var productRate = prodInfoArray[1];
           var productDuration = prodInfoArray[2];
           
           //Hidden field Slected Product Id
           if (document.getElementById(hdnSelectedProducts).value == "") 
           {
               document.getElementById(hdnSelectedProducts).value += productId;
           }
           else
           {
               document.getElementById(hdnSelectedProducts).value += "_" + productId;
           }
           
           //Hidden field Slected Product Rate
           if (document.getElementById(hdnSelectedProductRate).value == "") 
           {
               document.getElementById(hdnSelectedProductRate).value += productRate;
           }
           else
           {
               document.getElementById(hdnSelectedProductRate).value += "_" + productRate;
           }
           
           //Hidden field Slected Product Duration           
           if (document.getElementById(hdnSelectedProductDuration).value == "") 
           {
               document.getElementById(hdnSelectedProductDuration).value += productDuration;
           }
           else
           {
               document.getElementById(hdnSelectedProductDuration).value += "_" + productDuration;
           }
       }
    }
} 

//This method is used to check the selected products after binding of product list
function CheckSelectedProductsRK(comparisonId,comparison1Id)
{
    if(selectedProductsArray.length > 0)
    {
        for(var i=0;i<selectedProductsArray.length;i++)
        {
            if (document.getElementById(selectedProductsArray[i]))
            {
                document.getElementById(selectedProductsArray[i]).checked = true ;
            }
        }
    }
    
    if(selectedProductsArray.length < 2)
    {
        document.getElementById(comparisonId).disabled=true;
        document.getElementById(comparisonId).src= "/templates/Images/btn_angebote_vergleichen_inactive.gif";
        document.getElementById(comparison1Id).disabled=true;
        document.getElementById(comparison1Id).src= "/templates/Images/btn_angebote_vergleichen_inactive.gif";
       
    }

}

/* Â© Copyright 2008 Sapient Corporation.  All Rights Reserved
This function will be called by OSC control to render the pixel
*/

function CreateOSCPixel(pageName,OSCchannel,OSCpageType,OSChier1, OSCprop1, OSCprop2, OSCprop3, OSCprop4, 
OSCprop5, OSCprop6, OSCprop7, OSCprop8, OSCprop9, OSCprop10, OSCprop11, OSCprop12, OSCcampaign, OSCproducts, 
OSCevents, OSCstate, OSCzip, OSCpurchase, OSCeVar1, OSCeVar2, OSCeVar3, OSCeVar4, OSCeVar5, OSCeVar6, OSCeVar7, 
OSCeVar8, OSCeVar9, OSCeVar10, OSCeVar11, OSCeVar12, OSCeVar13, OSCeVar14, OSCeVar15, OSCeVar16, OSCeVar17, OSCeVar18, OSCeVar19, OSCeVar20, OSCeVar24)
{
    s.pageName=pageName;
    s.server=document.location.host;
    s.channel=OSCchannel;
    s.pageType=OSCpageType;
    s.hier1=OSChier1;
    s.prop1=OSCprop1;
    s.prop2=OSCprop2;
    s.prop3=OSCprop3;
    s.prop4=OSCprop4;
    s.prop5=OSCprop5;
    s.prop6=OSCprop6;
    s.prop7=OSCprop7;
    s.prop8=OSCprop8;
    s.prop9=OSCprop9;
    s.prop10=OSCprop10;
    s.prop11=OSCprop11;
    s.prop12=OSCprop12;
    /* Conversion Variables */
    s.campaign=OSCcampaign;
    s.products=OSCproducts;
    s.events=OSCevents;
    s.state=OSCstate;
    s.zip=OSCzip;
    s.purchaseID=OSCpurchase;
    s.eVar1=OSCeVar1;
    s.eVar2=OSCeVar2;
    s.eVar3=OSCeVar3;
    s.eVar4=OSCeVar4;
    s.eVar5=OSCeVar5;
    s.eVar6=OSCeVar6;
    s.eVar7=OSCeVar7;
    s.eVar8=OSCeVar8;
    s.eVar9=OSCeVar9;
    s.eVar10=OSCeVar10;
    s.eVar11=OSCeVar11;
    s.eVar12=OSCeVar12;
    s.eVar13=OSCeVar13;
    s.eVar14=OSCeVar14;
    s.eVar15=OSCeVar15;
    s.eVar16=OSCeVar16;
    s.eVar17=OSCeVar17;
    s.eVar18=OSCeVar18;
    s.eVar19=OSCeVar19;
    s.eVar20=OSCeVar20;
    s.eVar24=OSCeVar24;
    /************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
    var s_code=s.t();if(s_code)document.write(s_code);
     }
     
/************************************Dsquare Pixel :: Start ****************************************/   
function WriteDTrack(Src,PID,IncomingURL,RefId,SessionId,Ordnr,Amt,PLZ,Institut,enddate,tarif,zinterval,gebdate,geschlecht,DS_pers,DS_verm,SB,partner,versbereich,erstzul,SF,Berufsstatus,bes_vers,HSN,TSN)
{
    var referer = document.referrer; 
    
    var myFSCookie = "";
    myFSCookie = getDSquareCookie("MyFSID");
    
    if(myFSCookie != null)
    {
        if(myFSCookie.length == 36)
        {
            if(!(/^[a-zA-Z0-9/-]+$/.test(myFSCookie)))
            {
                myFSCookie = "";
            }
        }
        else
        {
            myFSCookie = "";
        }
    }
    else
    {
        myFSCookie = "";
    }
    
    var pixelString = Src+'?pid='+PID+'&params=';
     
    pixelString = pixelString + Base64.encode(escape(document.referrer));                                                                                                                                                   
    
    pixelString = pixelString + ','+Base64.encode(escape(document.location.href))+','+RefId+','+SessionId+','+Ordnr+'||'+Amt+'||'+PLZ+'|'+ escape(Institut) +'|||'+ Berufsstatus + ','+ myFSCookie +',' + 
    escape(tarif) +'|'+ escape(enddate) +'|||'+zinterval+'|'+ escape(gebdate) +'|'+geschlecht+'|'+erstzul+'|'+SF+'|'+DS_pers+'|'+DS_verm+'|'+SB+'|'+partner+'|'+versbereich+'|'+bes_vers+'|'+HSN+'|'+TSN;
    
    pixelString = pixelString + '&Key='+ new Date().getTime();
    
    document.getElementById('pixelImage').src = pixelString;
    
    return false;
}

var Base64 = 
	{
       
		// private property
		_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

		// public method for encoding
		encode : function (input) 
		{
			var output = "";
			var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
			var i = 0;

			input = Base64._utf8_encode(input);
			while (i < input.length) 
			{

				chr1 = input.charCodeAt(i++);
				chr2 = input.charCodeAt(i++);
				chr3 = input.charCodeAt(i++);

				enc1 = chr1 >> 2;
				enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
				enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
				enc4 = chr3 & 63;

				if (isNaN(chr2)) 
					{
						enc3 = enc4 = 64;
					} 
				else if (isNaN(chr3)) 
					{
						enc4 = 64;
					}

				output = output +
				this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
				this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

			}

			return output;
		},

	// public method for decoding
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;

		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

		while (i < input.length) {

			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));

			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;

			output = output + String.fromCharCode(chr1);

			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}

		}

		output = Base64._utf8_decode(output);

		return output;

	},

	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";

		for (var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}

		return utftext;
	},

	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while ( i < utftext.length ) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}

}
/************************************Dsquare Pixel :: End ****************************************/ 

// HTML Event-Handler On Click, OnChange or OnSubmit  ="scMStart();"
// The matching javascript Function is:
function scMStart()
{
    var s = s_gi(s_account);

	s.linkTrackVars='products,prop1,prop2,prop9,prop12,eVar1,eVar2,eVar10,eVar14,eVar16,eVar17,events,pageName';

    s.linkTrackEvents='event1';

	s.events = 'event1';

    s.eVar1 = s.prop1;

    s.eVar2 = s.prop2;

    s.eVar10 = s.pageName;

    s.eVar17 = s.prop12;

	s.tl(this,'o','Link Name');

}


// HTML Event-Handler On Click, OnChange or OnSubmit  ="scLogin();"
// The matching javascript Function is: 

function scLogin(){
    var s = s_gi(s_account);
    s.linkTrackVars='products,prop9,prop17,eVar1,eVar2,eVar10,eVar14,eVar15,eVar16,events,pageName';
    s.linkTrackEvents='event17,event16,event15';
    s.products='MyFS;MyFS;0;0.00';
    s.events = 'event17';   
    s.eVar15='+1';   
    s.eVar10 = s.pageName;
    s.prop9 = s.eVar14 = 'loggedin';
    var liste=Get_Cookie('prev').split(']|[');   
    s.eVar2 = liste[1];   
    s.prop17=liste[0];
    s.tl(this,'o','Link Name');
}

// HTML Event-Handler for "Tell a friend" Submit-Button.
// On Click, OnChange or OnSubmit="scTellFr();"
// The matching javascript Function is:

function scTellFr()
{
    	var s = s_gi(s_account);

	s.linkTrackVars='products,prop1,prop2,eVar1,eVar2,prop9,eVar10,eVar14,eVar16,events,pageName';
	s.linkTrackEvents='event19';

         s.events = 'event19';
         s.eVar1 = s.prop1;
         s.eVar2 = s.prop2;

         s.tl(this,'o','Link Name');

}

// this function reads cookie which contains pageName of previous page to set the login source
function Get_Cookie(check_name) {
    var a_all_cookies=document.cookie.split(';');
    var a_temp_cookie='';
    var b_cookie_found=false;
    for(i=0;i<a_all_cookies.length;i++){
        a_temp_cookie=a_all_cookies[i].split('=');
        cookie_name=a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
        if(cookie_name==check_name || check_name == "*" ){
            b_cookie_found = true;
            if(a_temp_cookie.length>1){
                cookie_value=unescape(a_temp_cookie[1].replace(/^\s+|\s+$/g, ''));
            }
            return cookie_value;
            break;
        }
        a_temp_cookie=null;
        cookie_name='';
    }
    if (!b_cookie_found)return null;
}

/******************************************************bgiframe :: Start******************************************************************************/

/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * $LastChangedDate: 2007-07-21 18:44:59 -0500 (Sat, 21 Jul 2007) $
 * $Rev: 2446 $
 *
 * Version 2.1.1
 */

(function($){

/**
 * The bgiframe is chainable and applies the iframe hack to get 
 * around zIndex issues in IE6. It will only apply itself in IE6 
 * and adds a class to the iframe called 'bgiframe'. The iframe
 * is appeneded as the first child of the matched element(s) 
 * with a tabIndex and zIndex of -1.
 * 
 * By default the plugin will take borders, sized with pixel units,
 * into account. If a different unit is used for the border's width,
 * then you will need to use the top and left settings as explained below.
 *
 * NOTICE: This plugin has been reported to cause perfromance problems
 * when used on elements that change properties (like width, height and
 * opacity) a lot in IE6. Most of these problems have been caused by 
 * the expressions used to calculate the elements width, height and 
 * borders. Some have reported it is due to the opacity filter. All 
 * these settings can be changed if needed as explained below.
 *
 * @example $('div').bgiframe();
 * @before <div><p>Paragraph</p></div>
 * @result <div><iframe class="bgiframe".../><p>Paragraph</p></div>
 *
 * @param Map settings Optional settings to configure the iframe.
 * @option String|Number top The iframe must be offset to the top
 * 		by the width of the top border. This should be a negative 
 *      number representing the border-top-width. If a number is 
 * 		is used here, pixels will be assumed. Otherwise, be sure
 *		to specify a unit. An expression could also be used. 
 * 		By default the value is "auto" which will use an expression 
 * 		to get the border-top-width if it is in pixels.
 * @option String|Number left The iframe must be offset to the left
 * 		by the width of the left border. This should be a negative 
 *      number representing the border-left-width. If a number is 
 * 		is used here, pixels will be assumed. Otherwise, be sure
 *		to specify a unit. An expression could also be used. 
 * 		By default the value is "auto" which will use an expression 
 * 		to get the border-left-width if it is in pixels.
 * @option String|Number width This is the width of the iframe. If
 *		a number is used here, pixels will be assume. Otherwise, be sure
 * 		to specify a unit. An experssion could also be used.
 *		By default the value is "auto" which will use an experssion
 * 		to get the offsetWidth.
 * @option String|Number height This is the height of the iframe. If
 *		a number is used here, pixels will be assume. Otherwise, be sure
 * 		to specify a unit. An experssion could also be used.
 *		By default the value is "auto" which will use an experssion
 * 		to get the offsetHeight.
 * @option Boolean opacity This is a boolean representing whether or not
 * 		to use opacity. If set to true, the opacity of 0 is applied. If
 *		set to false, the opacity filter is not applied. Default: true.
 * @option String src This setting is provided so that one could change 
 *		the src of the iframe to whatever they need.
 *		Default: "javascript:false;"
 *
 * @name bgiframe
 * @type jQuery
 * @cat Plugins/bgiframe
 * @author Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
 */
$.fn.bgIframe = $.fn.bgiframe = function(s) {
	// This is only for IE6
	if ( $.browser.msie && jQuery.browser.version == "6.0" ) {
		s = $.extend({
			top     : 'auto', // auto == .currentStyle.borderTopWidth
			left    : 'auto', // auto == .currentStyle.borderLeftWidth
			width   : 'auto', // auto == offsetWidth
			height  : 'auto', // auto == offsetHeight
			opacity : true,
			src     : 'javascript:false;'
		}, s || {});
		var prop = function(n){return n&&n.constructor==Number?n+'px':n;},
		    html = '<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+
		               'style="display:block;position:absolute;z-index:-1;'+
			               (s.opacity !== false?'filter:Alpha(Opacity=\'0\');':'')+
					       'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+
					       'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+
					       'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+
					       'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+
					'"/>';
		return this.each(function() {
			if ( $('> iframe.bgiframe', this).length == 0 )
				this.insertBefore( document.createElement(html), this.firstChild );
		});
	}
	return this;
};

})(jQuery);

/******************************************************bgiframe :: End******************************************************************************/
  
  
// HTML Event-Handler for "PrintView" Submit-Button.
// On Click, OnChange or OnSubmit="scPrint();"
// The matching javascript Function is:


function scPrint()
{
    	var s = s_gi(s_account);

	s.linkTrackVars='products,prop1,prop2,eVar1,eVar2,prop9,eVar14,eVar16,events,eVar10,prop50,eVar50,pageName';
	s.linkTrackEvents='event18';

         s.events = 'event18';
         s.eVar1 = s.prop1;
         s.eVar2 = s.prop2;
	 s.eVar10 = s.pageName;

         s.tl(this,'o','Link Name');

}

//Finds the absolute top position of an element and scroll to that specific position.
//skipElementHight = true, if need to scroll to a position (excluding the element).Default is true
function scrollToPosition(elemId, skipElement)
{
    var elem = document.getElementById(elemId);                      
    if(!elem)
    {
        elem = document.forms[0];
    }            
    //var width = elem.offsetWidth;
    //var left = 0;
    var height = elem.offsetHeight;
    
    var top = 0;
    while (elem)
    {
        //left += elem.offsetLeft;
        top += elem.offsetTop;
        elem = elem.offsetParent;
    }    
    if(skipElement==null || skipElement)
    {
       top +=  height;
    }                
    window.scroll(0, top);            
}
        
function productPopScroll()
{
    window.scrollTo(250,200)
}

function openProductWindow(url)
{
    newwindow=window.open(url,'',"width=560, height=430,toolbar=yes,status=yes,location=yes,menubar=yes,scrollbars=yes,resizable=yes");
    if (window.focus)
    {
        newwindow.focus();
    }
}

//Show Newsletter box from Link or button
function showNLBoxFromLink()
{
    closeNLPopup('dvNewsletter');
    transparentLayer();
    showNLPopup('dvMainPopup'); 
    showNLPopup('dvDetails'); 
    return false;
}

        
function pruefe_radio() {        
    $("span.fs_radio").parent().removeClass("radio_gewaehlt");
    $("span.fs_radio input:checked").parent().parent().addClass("radio_gewaehlt"); 
    $("input.fs_checkbox").parent().removeClass("checkbox_gewaehlt");
    $("input.fs_checkbox").parent().removeClass("checkbox_gewaehlt_red");
    $("input.fs_checkbox:checked").parent().not(".redcheck").addClass("checkbox_gewaehlt");
    $("input.fs_checkbox:checked").parent(".redcheck").addClass("checkbox_gewaehlt_red");
}   
        
function write_selects(obj) {
    var options = obj.getElementsByTagName('option');
    /* find selected option */
    for (var i = 0; i < options.length; i++) {
        if (options[i].selected) {
            str = (options[i].label) ? (options[i].label) : (options[i].text);
            obj.parentNode.getElementsByTagName("span")[1].replaceChild(document.createTextNode(str), obj.parentNode.getElementsByTagName("span")[1].firstChild);
            break
        }
     }
}
        
function showNLPopup(dvid) {    
		document.getElementById(dvid).style.display = "block";
	}
	
function closeNLPopup(dvid){
		document.getElementById(dvid).style.display="none";
	}	

var $ = jQuery.noConflict();
$(document).ready(function()
{
    jQuery(function()
    {
        try
        {
            jQuery('#transparentLayer').bgiframe();       
        }
        catch(ex){}
        jQuery(document).ready(function()
        {
            if(jQuery.updnWatermark != null)
            {
                jQuery.updnWatermark.attachAll();
            }
        });
    });
});

/******************************************************Datetime picker related scripts :: Start******************************************************************************/
function clearText(objInput, txtToClear){    
    var inputID = document.getElementById(objInput.id);   
    if(inputID.value == txtToClear) 
    {
        inputID.value = "";
    }
}

function retainText(objInput,txtToRetain){    
    var inputID = document.getElementById(objInput.id);      
    if(inputID.value == "") 
    {
        inputID.value = txtToRetain;
    }
}

 
function CalculateRangeForYear(usrInput, plusRange, negativeRange)
{
    if(plusRange == null)
    {
        plusRange = 0;
    }
    if(negativeRange == null)
    {
        negativeRange = 0;
    }	    
    var yearRange = new Date();
    var currentYear = yearRange.getFullYear();
    if(usrInput.length == 10 && usrInput != GERMAN_DATE_FORMAT)
    {
        //get only last 4 digits as date is in German format
        currentYear = usrInput.substring(usrInput.lastIndexOf(".") + 1);                        
    }                    
    var today = new Date();
    //calculate the upper range for year.
    var maxYear = today.getFullYear() + plusRange;  
    //calculate the lower range for year.
    var minYear = currentYear - negativeRange;
    // Keep check on upper,lower date ranges to avoid runtime exceptions.
    if(maxYear > 9999)
    {
        maxYear = 9999;
    }
    if(minYear < 1753)
    {
        minYear = 1753;
    }        
    //set the year range for calendar control  
    var newYearRange = new String();             
    newYearRange = minYear + ":" + maxYear;        
    return newYearRange;
}
	
function showCalendar(){    
    $("input[class~='fsDateField']" ).each(function() {
            $("#ui-datepicker-div").attr("style","display:none");
            $.datepicker.setDefaults($.extend({showMonthAfterYear: false}, $.datepicker.regional['de']));
            $(this).datepicker({showOn: 'button', buttonImage: '/templates/Images/icon_calendar.gif', buttonImageOnly: true,changeMonth: true,changeYear: true,dateFormat: 'dd.mm.yy'});                
            $(this).datepicker('enable'); 
            try
            {   //use try incase this is not of type fakeInput then its parent may be null.
                if($(this).parent().parent().hasClass(CLASS_FAKE_INPUT_DISABLE))
                {
                    $(this).datepicker('disable');                
                }
            }
            catch(ex){}
            var dtEntered = this.value;
            if(this.value == "")
            {
               this.value = GERMAN_DATE_FORMAT ;
            }
            //Get reference to only those textfields which are used for entering dateofbirth                                 
            if(this.id.indexOf('birth')>=0 || this.id.indexOf('Birth') >=0 )
            {                       
                $(this).datepicker( 'option','yearRange', CalculateRangeForYear(this.value, 0, 100));  
            }
            else
            {               
                $(this).datepicker( 'option','yearRange',CalculateRangeForYear(this.value, 50, 5));            
            }                 
         });
         $("#ui-datepicker-div").addClass("fake-calender");
}
    
function enableDisableCalendar(chkBoxCtrlId, dateCtrlId, lblCtrlId)
{   
    if(document.getElementById(chkBoxCtrlId).checked)
    {           
        var txtDateCtrl = document.getElementById( dateCtrlId );
        removeErrorClass(txtDateCtrl, lblCtrlId);        
        $("#" + dateCtrlId).datepicker('disable'); 
        //if calender is disabled then set its associated control's value to default i.e "TT.MM.JJJJ;
        txtDateCtrl.value = GERMAN_DATE_FORMAT;
        //apply disabled class on fake-input field.
        $("#" + dateCtrlId).parent().parent().addClass(CLASS_FAKE_INPUT_DISABLE);//Fake input box is nested within 2 divs.         
    }
    else
    {
        $("#" + dateCtrlId).datepicker('enable');
        //apply disabled class on input field.  
        $("#" + dateCtrlId).parent().parent().removeClass(CLASS_FAKE_INPUT_DISABLE); //Fake input box is nested within 2 divs.      
        $("#" + dateCtrlId).focus();
    }        
}

//Remove error class( if any) from input control and its associated label control.     
function removeErrorClass(ctrlFakeInput, lblCtrlId, errorClassName)
{    
    //Note: If error class is not defined  then it is being assigned based on the type of control.
    //Note: Fake input box is nested within 2 divs while fake selection is nested withing single div 
    try
    { 
        var parentField ;
        if(ctrlFakeInput.type == "text")
        {
            parentField = $( ctrlFakeInput ).parent().parent();
            if(!errorClassName)
            {
                errorClassName = FAKE_ERROR_CLASS;
            }
        }
        else if(ctrlFakeInput.type == "select-one")
        {
            parentField = $(ctrlFakeInput).parent();
            if(!errorClassName)
            {
                errorClassName = FAKE_ERROR_CLASS_SELECTION;
            }
        }
        if( parentField != null)
        {
            $(parentField).removeClass(errorClassName);           
        }        
        else
        {
            $( ctrlFakeInput ).removeClass(errorClassName);            
        }
    }
    catch(ex){}
    if(lblCtrlId)
    {
        $("#" + lblCtrlId).attr("style", STYLE_FONT_COLOR_NORMAL);
    }
}

function showHideDivs(dvOpen, dvClose)
{  
    $("#" + dvClose).removeClass(CLASS_DISPLAY_BLOCK);
    $("#" + dvClose).addClass(CLASS_DISPLAY_NONE);
    $("#" + dvOpen).removeClass(CLASS_DISPLAY_NONE);
    $("#" + dvOpen).addClass(CLASS_DISPLAY_BLOCK);	
}

//Method to validate user inputs on QC|KFZ public area(Screen I).
function validateQCInputsStep1(dvError, dvErrorMsg, arrJsonObj)
{      
    var isStep1InputsValid = true;     
    var detailedErrorMsgs = "";     
    var errMessageHeader = "<p><strong>Bitte überprüfen Sie die Angaben bei folgenden Feldern:</strong></p>";    
     
    for(var index = 0; index < arrJsonObj.length; index++ )
    { 
        var jsonObj = eval( arrJsonObj[index] ); 
        var inputValue = document.getElementById(jsonObj.InputField).value; 
        //Remove error related classes/style        
        $("#" + jsonObj.Label).attr("style", STYLE_FONT_COLOR_NORMAL);          
        $("#" + jsonObj.FakeSelectionField).removeClass(FAKE_ERROR_CLASS);  
          
        if(inputValue == "")
        {                 
            $("#" + jsonObj.Label).attr("style", STYLE_FONT_COLOR_ERROR);          
            $("#" + jsonObj.FakeSelectionField).addClass(FAKE_ERROR_CLASS);       
            detailedErrorMsgs += "<li>" + jsonObj.ErrMsg_Mandatory +"</li>";                    
            isStep1InputsValid = false;
        }  
        else
        { 
            switch(index)
            {
                case 0 ://Validate Provider                
                    if( !inputValue.match(PROVIDER_PATTERN))
                    {
                        $("#" + jsonObj.Label).attr("style", STYLE_FONT_COLOR_ERROR);          
                        $("#" + jsonObj.FakeSelectionField).addClass(FAKE_ERROR_CLASS);  
                        detailedErrorMsgs += "<li>" + jsonObj.ErrMsg_ValidChars +"</li>";
                        isStep1InputsValid = false;
                    }
                    break;
                case 1://Validate Tarif                     
                    if( !inputValue.match(TARIF_PATTERN))
                    {
                        $("#" + jsonObj.Label).attr("style",STYLE_FONT_COLOR_ERROR);          
                        $("#" + jsonObj.FakeSelectionField).addClass(FAKE_ERROR_CLASS);  
                        detailedErrorMsgs += "<li>" + jsonObj.ErrMsg_ValidChars +"</li>";
                        isStep1InputsValid = false;
                    }
                    break;  
                case 2://Validate Amount 
                        if(inputValue == DEFAULT_AMOUNT_TEXT)
                        {
                            $("#" + jsonObj.Label).attr("style",STYLE_FONT_COLOR_ERROR);          
                            $("#" + jsonObj.FakeSelectionField).addClass(FAKE_ERROR_CLASS);  
                            detailedErrorMsgs += "<li>" + jsonObj.ErrMsg_Mandatory +"</li>";
                            isStep1InputsValid = false;
                        }                    
                        else if( !inputValue.match(CURRENCY_PATTERN))
                        {
                            $("#" + jsonObj.Label).attr("style",STYLE_FONT_COLOR_ERROR);          
                            $("#" + jsonObj.FakeSelectionField).addClass(FAKE_ERROR_CLASS);  
                            detailedErrorMsgs += "<li>" + jsonObj.ErrMsg_ValidChars +"</li>";
                            isStep1InputsValid = false;
                        }
                    break;  
                case 3://Validate Duration Date only if check box is unchecked                      
                    var isContractExpirable = document.getElementById(jsonObj.ChkContractExpirableID).checked;                    
                    if(!isContractExpirable)
                    {
                        if(inputValue == GERMAN_DATE_FORMAT)
                        {
                            $("#" + jsonObj.Label).attr("style",STYLE_FONT_COLOR_ERROR);          
                            $("#" + jsonObj.FakeSelectionField).addClass(FAKE_ERROR_CLASS);  
                            detailedErrorMsgs += "<li>" + jsonObj.ErrMsg_Mandatory +"</li>";
                            isStep1InputsValid = false;
                        }
                        else if( !IsValidDate(inputValue, false))//Do not compare with today's date(as this is not required)
                        {
                            $("#" + jsonObj.Label).attr("style",STYLE_FONT_COLOR_ERROR);          
                            $("#" + jsonObj.FakeSelectionField).addClass(FAKE_ERROR_CLASS);  
                            detailedErrorMsgs += "<li>" + jsonObj.ErrMsg_ValidChars +"</li>";
                            isStep1InputsValid = false;
                        }
                    }                                       
                    break;            
            }//End | switch statement
        }
    }//End | for-loop
    //Show error div if invalid inputs.
    if(isStep1InputsValid)
    {
        $("#" + dvError).removeClass(CLASS_DISPLAY_BLOCK); 
        $("#" + dvError).addClass(CLASS_DISPLAY_NONE);              
    }
    else
    {
        $("#" + dvError).removeClass(CLASS_DISPLAY_NONE); 
        $("#" + dvError).addClass(CLASS_DISPLAY_BLOCK); 
        document.getElementById(dvErrorMsg).innerHTML = errMessageHeader + "<ul>" + detailedErrorMsgs + "</ul>";
        //Call swap-boxer control's click to align swap-box 
        if(document.getElementById('swapBoxer'))
        {
            document.getElementById('swapBoxer').onclick();
        } 
    }
    return isStep1InputsValid;      
}

//Method to validate user inputs on QC|KFZ public area(Screen II).
function validateQCInputsStep2(dvError, dvErrorMsg, arrJsonObj)
{    
    var isStep2InputsValid = true;     
    var detailedErrorMsgs = "";     
    var errMessageHeader = "<p><strong>Bitte überprüfen Sie die Angaben bei folgenden Feldern:</strong></p>";    
     
    for(var index = 0; index < arrJsonObj.length; index++ )
    { 
        var jsonObj = eval( arrJsonObj[index] ); 
        var inputValue = document.getElementById(jsonObj.InputField).value; 
        //Remove error related classes/style        
        $("#" + jsonObj.Label).attr("style", STYLE_FONT_COLOR_NORMAL);          
        $("#" + jsonObj.FakeSelectionField).removeClass(FAKE_ERROR_CLASS);   
         
        if(inputValue == "" || inputValue == GERMAN_DATE_FORMAT)
        {                 
            $("#" + jsonObj.Label).attr("style",STYLE_FONT_COLOR_ERROR);          
            $("#" + jsonObj.FakeSelectionField).addClass(FAKE_ERROR_CLASS);       
            detailedErrorMsgs += "<li>" + jsonObj.ErrMsg_Mandatory + "</li>";                    
            isStep2InputsValid = false;
        }  
        else
        {     
            switch(index)
            {
                case 0 ://Validate HSN                
                    if( inputValue.length != 4 || !IsNumericData(inputValue))
                    {
                        $("#" + jsonObj.Label).attr("style",STYLE_FONT_COLOR_ERROR);          
                        $("#" + jsonObj.FakeSelectionField).addClass(FAKE_ERROR_CLASS);  
                        detailedErrorMsgs += "<li>" + jsonObj.ErrMsg_ValidChars +"</li>";
                        isStep2InputsValid = false;
                    }
                    break;
                case 1://Validate TSN                     
                    if( inputValue.length != 3 || !inputValue.match(TSN_PATTERN))
                    {
                        $("#" + jsonObj.Label).attr("style",STYLE_FONT_COLOR_ERROR);          
                        $("#" + jsonObj.FakeSelectionField).addClass(FAKE_ERROR_CLASS);  
                        detailedErrorMsgs += "<li>" + jsonObj.ErrMsg_ValidChars +"</li>";
                        isStep2InputsValid = false;
                    }
                    break;  
                case 2://Validate PostCode                     
                    if( inputValue.length != 5 || !IsNumericData(inputValue))
                    {
                        $("#" + jsonObj.Label).attr("style",STYLE_FONT_COLOR_ERROR);          
                        $("#" + jsonObj.FakeSelectionField).addClass(FAKE_ERROR_CLASS);  
                        detailedErrorMsgs += "<li>" + jsonObj.ErrMsg_ValidChars +"</li>";
                        isStep2InputsValid = false;
                    }
                    break;  
                case 3://Validate Registration Date 
                case 4://Validate DateOfBirth 
                    if(!IsValidDate(inputValue, false))//Do not compare with today's date(diff check is implemented for that)
                    {
                        $("#" + jsonObj.Label).attr("style",STYLE_FONT_COLOR_ERROR);          
                        $("#" + jsonObj.FakeSelectionField).addClass(FAKE_ERROR_CLASS);  
                        detailedErrorMsgs += "<li>" + jsonObj.ErrMsg_ValidChars +"</li>";
                        isStep2InputsValid = false;
                    }
                    else if(!GetCurrentDate(inputValue.match(DATE_PATTERN)))//check if date is valid and < today 
                    {
                        $("#" + jsonObj.Label).attr("style",STYLE_FONT_COLOR_ERROR);          
                        $("#" + jsonObj.FakeSelectionField).addClass(FAKE_ERROR_CLASS);  
                        detailedErrorMsgs += "<li>" + jsonObj.ErrMsg_InvalidDOB +"</li>";
                        isStep2InputsValid = false;
                    }                    
                    break;              
                                      
            }//End | switch statement
        }//End | If-Else   
    }//End | for-loop
    //Show error div if invalid inputs.
    if(isStep2InputsValid)
    {
        $("#" + dvError).removeClass(CLASS_DISPLAY_BLOCK); 
        $("#" + dvError).addClass(CLASS_DISPLAY_NONE); 
        //"form1" is the id of ProductInfo template
        showHourGlassQCP('form1');       
    }
    else
    {
        $("#" + dvError).removeClass(CLASS_DISPLAY_NONE); 
        $("#" + dvError).addClass(CLASS_DISPLAY_BLOCK); 
        document.getElementById(dvErrorMsg).innerHTML = errMessageHeader + "<ul>" + detailedErrorMsgs + "</ul>";
        //Call swap-boxer control's click to align swap-box 
        if(document.getElementById('swapBoxer'))
        {
            document.getElementById('swapBoxer').onclick();
        } 
    }    
    return isStep2InputsValid;
}

function redirectionFromQC()
{
    try
    {
        var myFSCookie = getDSquareCookie("MyFSID"); 
        ;
      if(myFSCookie)	   
	    {
	        window.location = LANDING_REDIRECT_URL;			
	    }
	    else
	    {
	        window.location = REGISTER_REDIRECT_URL;			
	    }
    }
    catch(ex){}
}

function hideHourGlassQCP()
{
  try
  {
    document.getElementById("transparentLayer").style.display = "none";
    document.getElementById("hourGlass").style.display = "none";
  }
  catch(ex){}
}

function showHourGlassQCP(frmID)
{    
    DisableInputForm(frmID, "transparentLayer");
    document.getElementById("hourGlass").style.display="block";
    document.getElementById("hourGlass").style.visibility="hidden";
    var browsername=navigator.appName;
    if (browsername.indexOf("Microsoft")!=-1)
        {
            scrHeight = document.documentElement.clientHeight;  //For IE
            scrolly = document.documentElement.scrollTop;
        } 
        else {
            scrHeight = window.innerHeight;        
            scrolly = window.scrollY;                
        }     
    
    var frmWidth = document.getElementById(frmID).offsetWidth;
    var translayerHeight = document.getElementById("transparentLayer").offsetHeight;
    var hourglassHeight = document.getElementById("hourGlass").clientHeight;
    var hourglassWidth = document.getElementById("hourGlass").clientWidth;

    if (translayerHeight >= scrHeight){
        hourglassTop = parseInt((scrHeight - hourglassHeight)/2);
    }
    else
    {
        hourglassTop = parseInt((translayerHeight - hourglassHeight)/2);
    }

    hourglassLeft= parseInt((frmWidth - hourglassWidth)/2);
    document.getElementById("hourGlass").style.top= hourglassTop+scrolly + 'px';
    document.getElementById("hourGlass").style.left=  hourglassLeft + 'px';
    document.getElementById("hourGlass").style.position= "absolute";
    document.getElementById("hourGlass").style.visibility="visible";   
   
}



/******************************************************Datetime picker related scripts :: End******************************************************************************/
var activityTsrArray = new Array("divContent1", "divContent2", "divContent3", "divContent4", "divContent5");
function SwapActivity(usrCtrlId, activityNo)
{       
    
    for(index=0; index < activityTsrArray.length; index++)
    {           
        var divEle = document.getElementById(usrCtrlId+"_"+activityTsrArray[index]);
        
        if(divEle)
        { 
            divEle.className = "fsDisplay-None";                
        }
        document.getElementById(usrCtrlId + "_lnkActivity" + (index + 1)).className = "";
    }
    //var linkName="lnkActivity" + activityNo;
    //Set class for div element
    var divEle = document.getElementById(usrCtrlId+"_"+activityTsrArray[activityNo - 1]);
    if(divEle)
    {
        divEle.className = "fsTeaser-TwoCol fsDisplay-Block";
    }
    //Set class for active linkbutton    
    document.getElementById(usrCtrlId + "_lnkActivity" + activityNo).className="fsTeaser-BtnOver";
}


function SwapTopFiveProducts(usrCtrlId, linkno)
{       
    
    for(index = 1; index <= 5; index++)
    {           
        document.getElementById(usrCtrlId + "_dvHeading" + index).className = 'dvdisplay-none';
        document.getElementById(usrCtrlId + "_imgProduct" + index).className = 'dvdisplay-none';
        document.getElementById(usrCtrlId + "_lnkBtnProduct" + index).className = 'dvdisplay-none';
        document.getElementById(usrCtrlId + "_dvSubheading" + index).className = 'dvdisplay-none';
        document.getElementById(usrCtrlId + "_paraBody" + index).className = 'dvdisplay-none';
        document.getElementById(usrCtrlId + "_lnkRedirectProductPage" + index).className = 'dvdisplay-none';
        document.getElementById(usrCtrlId + "_lnkBtnProduct" + index).className = 'dvdisplay-none';
    }
    
        document.getElementById(usrCtrlId + "_dvHeading" + linkno).className = 'fsTeaser-ProdHeaderLine fsWidth353';
        document.getElementById(usrCtrlId + "_imgProduct" + linkno).className = '';
        document.getElementById(usrCtrlId + "_lnkBtnProduct" + linkno).className = 'fsTeaser-SubHeaderLine';
        document.getElementById(usrCtrlId + "_dvSubheading" + linkno).className = '';
        document.getElementById(usrCtrlId + "_paraBody" + linkno).className = 'fsFont11';
        document.getElementById(usrCtrlId + "_lnkRedirectProductPage" + linkno).className = 'fsTeaser-Link';
        document.getElementById(usrCtrlId + "_lnkBtnProduct" + linkno).className = 'fsTeaser-BtnOver';
}

var comparisonTableId = "";

function showPopupLayer(dvToShow) 
{
    DisableCalcForm("form1", "transparentLayerCalc");
    $('#' +  dvToShow).removeClass("display-none"); 
    $('#' +  dvToShow).addClass("display-block");  
}

function DisableCalcForm(inputDiv,disablingDiv)
{
     try
     {
        var XYPos = findPos(document.getElementById(inputDiv));
		var inputDivWidth = document.getElementById(inputDiv).offsetWidth;
		var inputDivHeight = document.getElementById(inputDiv).offsetHeight; 
		//calculate heights for all  elements which comes before transparent layer 
		var scoutbar= document.getElementById("scoutbar").offsetHeight;
		var header = document.getElementById("header").offsetHeight;			
		var banner = document.getElementById("dvBanner").offsetHeight;
		var nav = document.getElementById("dvNav").offsetHeight;
		var brdCrumb = document.getElementById("dvBcum").offsetHeight;
		var seo = 0;		
		//check if tab module is added then calculate its height as well
		if(document.getElementById("diesenav"))
		{		    
		    seo = document.getElementById("diesenav").offsetHeight;			       
		}
		var pageTitle = document.getElementById("dvPageTitle").offsetHeight;
		var tabBox = document.getElementById("tabBox").offsetHeight;		
		
		var dvTop =  scoutbar + header + banner + nav + brdCrumb + pageTitle + tabBox;        
		//Calculate width of extra elemnts added to the right of content
		var service = document.getElementById("dvService").offsetWidth;
		var skyscrapper = document.getElementById("dvSkyScrapper").offsetWidth;	
		var extraWidth = service + skyscrapper ;
		document.getElementById(disablingDiv).style.width = inputDivWidth - extraWidth + 'px';     
		document.getElementById(disablingDiv).style.height = inputDivHeight +'px';
		document.getElementById(disablingDiv).style.left = XYPos[0] + 'px';
		document.getElementById(disablingDiv).style.top = XYPos[1] +'px';
		document.getElementById(disablingDiv).style.position = "absolute";	
		//calculate top margin for lightbox//deducting twice of tabmodule's height as it is swapped after lighbox's margin is set	
        document.getElementById(disablingDiv).style.marginTop = -(dvTop + (2* seo))+'px';		
        //set the padding for lightbox			
		var extraSpacing = GetWidth() - document.body.offsetWidth;
		document.getElementById(disablingDiv).style.paddingRight = extraWidth + extraSpacing + 'px';
		document.getElementById(disablingDiv).style.display = "block";
     }
     catch (e){}
}

function HideCalcOverlay(){
    document.getElementById("transparentLayerCalc").style.display="none";
}

$.fn.removeCol = function(col) {
        // Make sure col has value
        if (!col) { col = 1; }
        $('td:nth-child(' + col + '),th:nth-child(' + col + ')',this).hide();        
    };
    
function hideTableColumn(tableId, colToRemoveIndex) {   
    // Remove all table's second columns
    $("#" + tableId).removeCol(colToRemoveIndex);    
    return false;
}

function GetWidth()
{
    var x = 0;
    if (self.innerHeight)
    {
          x = self.innerWidth;
    }
    else if (document.documentElement && document.documentElement.clientHeight)
    {
          x = document.documentElement.clientWidth;
    }
    else if (document.body)
    {
          x = document.body.clientWidth;
    }
    return x;
}


/************** Tabified Box handling ********************/

    /* Optional: Temporarily hide the "tabber" class so it does not "flash"
    on the page as plain HTML. After tabber runs, the class is changed
    to "tabberlive" and it will appear.
    */
    if (typeof (Environment) != "undefined" && Environment == 'live') {
        document.write('<style type="text/css">.tabber{display:none;}<\/style>');
    }

    var tabberOptions = {

        /* Optional: instead of letting tabber run during the onload event,
        we'll start it up manually. This can be useful because the onload
        even runs after all the images have finished loading, and we can
        run tabber at the bottom of our page to start it up faster. See the
        bottom of this page for more info. Note: this variable must be set
        BEFORE you include tabber.js.
        */
        'manualStartup': false,

        /* Optional: code to run after each tabber object has initialized */

        'onLoad': function(argsObj) {
            /* Display an alert only after tab2 */
            if (argsObj.tabber.id == 'tab2') {
                // alert('Finished loading tab2!');
            }
        },

        /* Optional: code to run when the user clicks a tab. If this
        function returns boolean false then the tab will not be changed
        (the click is canceled). If you do not return a value or return
        something that is not boolean false, */

        'onClick': function(argsObj) {

            var t = argsObj.tabber; /* Tabber object */
            var id = t.id; /* ID of the main tabber DIV */
            var i = argsObj.index; /* Which tab was clicked (0 is the first tab) */
            var e = argsObj.event; /* Event object */

            if (id == 'tab2') {
                return true; //confirm('Swtich to ' + t.tabs[i].headingText + '?\nEvent type: ' + e.type);
            }
        },

        /* Optional: set an ID for each tab navigation link */
        'addLinkId': true

    };



    /* Copyright (c) 2006 Patrick Fitzgerald */

    function tabberObj(argsObj) {
        var arg; this.div = null; this.classMain = "tabber"; this.classMainLive = "tabberlive"; this.classTab = "tabbertab"; this.classTabDefault =
"tabbertabdefault"; this.classNav = "clearfix nav"; this.classTabHide = "tabbertabhide"; this.classNavActive = "tabberactive"; this.titleElements = ['h2', 'h3',
'h4', 'h5', 'h6']; this.titleElementsStripHTML = true; this.removeTitle = true; this.addLinkId = false; this.linkIdFormat = '<tabberid>nav<tabnumberone>';
        for (arg in argsObj) { this[arg] = argsObj[arg]; }
        this.REclassMain = new RegExp('\\b' + this.classMain + '\\b', 'gi'); this.REclassMainLive = new RegExp('\\b' + this.classMainLive + '\\b', 'gi');
        this.REclassTab = new RegExp('\\b' + this.classTab + '\\b', 'gi'); this.REclassTabDefault = new RegExp('\\b' + this.classTabDefault + '\\b', 'gi');
        this.REclassTabHide = new RegExp('\\b' + this.classTabHide + '\\b', 'gi'); this.tabs = new Array(); if (this.div) { this.init(this.div); this.div = null; }
    }
    tabberObj.prototype.init = function(e) {
        var 
childNodes, i, i2, t, defaultTab = 0, DOM_ul, DOM_li, DOM_a, aId, headingElement; if (!document.getElementsByTagName) { return false; }
        if (e.id) { this.id = e.id; }
        this.tabs.length = 0; childNodes = e.childNodes; for (i = 0; i < childNodes.length; i++) {
            if (childNodes[i].className &&
childNodes[i].className.match(this.REclassTab)) {
                t = new Object(); t.div = childNodes[i]; this.tabs[this.tabs.length] = t; if
(childNodes[i].className.match(this.REclassTabDefault)) { defaultTab = this.tabs.length - 1; }
            }
        }
        DOM_ul = document.createElement("ul"); DOM_ul.className = this.classNav; for (i = 0; i < this.tabs.length; i++) {
            t = this.tabs[i]; t.headingText = t.div.title; if (this.removeTitle) { t.div.title = ''; }
            if (!t.headingText) {
                for (i2 = 0; i2 < this.titleElements.length; i2++) {
                    headingElement = t.div.getElementsByTagName(this.titleElements[i2])[0]; if (headingElement) {
                        t.headingText = headingElement.innerHTML; if (this.titleElementsStripHTML) {
                            //t.headingText.replace(/<br>/gi, " "); 
                            // t.headingText =t.headingText.replace(/<[^>]+>/g, "");
                        }
                        break;
                    }
                }
            }
            if (!t.headingText) { t.headingText = i + 1; }
            DOM_li = document.createElement("li"); t.li = DOM_li; DOM_a = document.createElement("a");
            DOM_a.appendChild(document.createTextNode(t.headingText)); DOM_a.href = "javascript:void(null);"; DOM_a.title = t.headingText; DOM_a.onclick = this.navClick;
            DOM_a.innerHTML = t.headingText;
            DOM_a.tabber = this; DOM_a.tabberIndex = i; if (this.addLinkId && this.linkIdFormat) {
                aId = this.linkIdFormat; aId = aId.replace(/<tabberid>/gi, this.id);
                aId = aId.replace(/<tabnumberzero>/gi, i); aId = aId.replace(/<tabnumberone>/gi, i + 1);
                aId = aId.replace(/<tabtitle>/gi, t.headingText.replace(/[^a-zA-Z0-9\-]/gi, '')); 
                DOM_a.id = aId;
            }
            DOM_li.appendChild(DOM_a); DOM_ul.appendChild(DOM_li);

        }
        e.insertBefore(DOM_ul, e.firstChild); e.className = e.className.replace(this.REclassMain, this.classMainLive); this.tabShow(defaultTab); if (typeof 
this.onLoad == 'function') { this.onLoad({ tabber: this }); }
        return this;
    };   tabberObj.prototype.navClick = function(event) {
        var 
rVal, a, self, tabberIndex, onClickArgs; a = this; if (!a.tabber) { return false; }
        self = a.tabber; tabberIndex = a.tabberIndex; a.blur(); if (typeof self.onClick == 'function') {
            onClickArgs = { 'tabber': self, 'index': tabberIndex, 'event': event }; if (!event) { onClickArgs.event = window.event; }
            rVal = self.onClick(onClickArgs); if (rVal === false) { return false; }
        }
        self.tabShow(tabberIndex); return false;
    }; tabberObj.prototype.tabHideAll = function()
    { var i; for (i = 0; i < this.tabs.length; i++) { this.tabHide(i); } }; tabberObj.prototype.tabHide = function(tabberIndex) {
        var div; if (!this.tabs[tabberIndex]) { return false; }
        div = this.tabs[tabberIndex].div; if (!div.className.match(this.REclassTabHide)) { div.className += ' ' + this.classTabHide; }
        this.navClearActive(tabberIndex); return this;
    }; tabberObj.prototype.tabShow = function(tabberIndex) {
        var div; if (!this.tabs[tabberIndex]) { return false; }
        this.tabHideAll(); div = this.tabs[tabberIndex].div; div.className = div.className.replace(this.REclassTabHide, ''); this.navSetActive(tabberIndex);
        if (typeof this.onTabDisplay == 'function') { this.onTabDisplay({ 'tabber': this, 'index': tabberIndex }); }
        return this;
    }; tabberObj.prototype.navSetActive = function(tabberIndex) {
        if (tabberIndex == 0) { this.tabs[tabberIndex].li.className = ''; this.tabs[tabberIndex].li.className = this.classNavActive + ' tab_nav_first'; }
        else if (tabberIndex == this.tabs.length - 1) { this.tabs[tabberIndex].li.className = ''; this.tabs[tabberIndex].li.className = this.classNavActive + ' tab_nav_last'; } else { this.tabs[tabberIndex].li.className = this.classNavActive; } return this;
    }; tabberObj.prototype.navClearActive = function(tabberIndex) {
        if (tabberIndex == 0) { this.tabs[tabberIndex].li.className = ''; this.tabs[tabberIndex].li.className = 'tab_nav_first'; }
        else if (tabberIndex == this.tabs.length - 1) { this.tabs[tabberIndex].li.className = ''; this.tabs[tabberIndex].li.className = 'tab_nav_last'; }else { this.tabs[tabberIndex].li.className = ''; } return this;
    }; function tabberAutomatic(tabberArgs) {
        var 
tempObj, divs, i; if (!tabberArgs) { tabberArgs = {}; }
        tempObj = new tabberObj(tabberArgs); divs = document.getElementsByTagName("div"); for (i = 0; i < divs.length; i++) {
            if (divs[i].className &&
divs[i].className.match(tempObj.REclassMain)) { tabberArgs.div = divs[i]; divs[i].tabber = new tabberObj(tabberArgs); } 
        }
        return this;
    }
    function tabberAutomaticOnLoad(tabberArgs) {
        var oldOnLoad;
        if (!tabberArgs) 
        { tabberArgs = {}; }
        oldOnLoad = window.onload;
        if (typeof window.onload != 'function' && typeof (Environment) != "undefined" && Environment == 'live')
        {
            window.onload = function() { tabberAutomatic(tabberArgs); };
        } 
        else if (typeof (Environment) != "undefined" && Environment == 'live'){
        window.onload = function() { oldOnLoad(); tabberAutomatic(tabberArgs); };
        }
    }
    if (typeof tabberOptions == 'undefined') { tabberAutomaticOnLoad(); } else {
    if (!tabberOptions['manualStartup'] && typeof (Environment) != "undefined" && Environment == 'live') {
            tabberAutomaticOnLoad(tabberOptions);
        } 
    }
/************** Tabified Box handling - end **************/
