// Variables
var _silverlightControl;
var _originalWidth;
var _originalHeight;
var _rootScaleTransform;
var _rootTranslateTransform;

function getStyle(oElm, strCssRule){
	var strValue = "";
	if(document.defaultView && document.defaultView.getComputedStyle){	   
		strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
	}
	else if(oElm.currentStyle){
		strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
			return p1.toUpperCase();
		});
		strValue = oElm.currentStyle[strCssRule];
	}
	return strValue;
}


var expandoControl;
var divID;
var sw1;
var sh1;
var ew1;
var eh1;
var direction1;
var url1;
var senderControl;
var currentMarginTop
function xpandoLeftDown(sourceImage, silverlightHostElementId, sw, sh, ew, eh, speed, direction, url)
{
    divID = silverlightHostElementId;
    sw1 = sw;
    sh1 = sh;
    ew1 = ew;
    eh1 = eh;
    direction1 = direction;
    url1 = url;
    
    currentMarginTop = Number(getStyle(document.getElementById(silverlightHostElementId), "margin-top").toLowerCase().replace("px",""));

    if(direction != 'right') { direction = 'left'; }    
	Silverlight.createObjectEx({
		source: 'Expando.xaml',
		parentElement: document.getElementById(silverlightHostElementId),
		id: silverlightHostElementId + 'SilverlightPlugIn',
		properties: {
			width: '' + (ew + 2),
			height: '' + (sh + 2),
			background:'transparent',
            isWindowless: 'true',
			version: '1.0'
		},
		events: {
		    onError: null,
			onLoad: function(f, c, e) { 
			
			    e.findName("xPandoImage").ImageSource = sourceImage; 
			    e.findName("expand_left").Duration = "00:00:0" + speed;
			    e.findName("expand_width").Duration = "00:00:0" + speed;
			    e.findName("expand_height").Duration = "00:00:0" + speed;
			    e.findName("contract_left").Duration = "00:00:0" + speed;
			    e.findName("contract_width").Duration = "00:00:0" + speed;
			    e.findName("contract_height").Duration = "00:00:0" + speed;
			    
                if(direction == 'left')
                {
			        e.findName("xPando")["Canvas.Left"] = (ew - sw) - 2; 
			        e.findName("expand_left").From =  (ew - sw)  - 2;    
			        e.findName("expand_left").To = 0;    
			    }
			    else
			    {
			        e.findName("xPando")["Canvas.Left"] = 0; 
			        e.findName("expand_left").From = 0;			        
			        e.findName("expand_left").To = 0;    
			    }
			    e.findName("xPando").Width = sw + 2;
			    e.findName("xPando").Height = sh + 2; 
//			    if(url)
//			    {
//			        e.findName("xPando").Cursor = "Hand";
//			        e.findName("xPando").Tag = url; 
//			    }
			    e.findName("expand_height").To = (eh + 2); 
			    e.findName("expand_width").To = (ew + 2); 
                
                e.findName("contract_height").To = e.findName("xPando").Height;
                e.findName("contract_width").To  = e.findName("xPando").Width;
    
			    expandoControl = f;
			    senderControl = e;
			    expandoControl.content.onResize = Resized;
                Resized();
		    }
		},		
		context: null 
	});
}
function e1_Click(sender, args)
{
    var url = sender.findName("xPando").Tag;
    if(url != null)
    {
        if(url != '')
        {
            window.location.href=url;
        }
    }
}
function containsText(str, val) {
  var l = str.toUpperCase().indexOf(val.toUpperCase());
  return (l != -1);
}

function e1_Over(sender, args)
{
    document.getElementById(sender.gethost().id).height =  sender.findName("xPando").Height * 2;
    
    var s = sender.findName("xPandoImage").ImageSource;
    if(containsText(s, "revenue"))
    { 
        document.getElementById("ceLink").style.zIndex = 1;
    }
    sender.findName("expand_height").From = senderControl.findName("xPando").Height;
    sender.findName("expand_width").From = senderControl.findName("xPando").Width;
    sender.findName("expand_left").From = senderControl.findName("xPando")["Canvas.Left"]; 
    sender.findName("contract").stop();
    sender.findName("expand").begin();   
}
function e1_Leave(sender, args)
{   
    sender.findName("contract_height").From = sender.findName("xPando").Height;
    sender.findName("contract_width").From = sender.findName("xPando").Width;
    sender.findName("contract_left").From = sender.findName("xPando")["Canvas.Left"];
    sender.findName("expand").stop();   
    sender.findName("contract").begin();
}
function contract_Completed(sender, args)
{
    document.getElementById(sender.gethost().id).height = sender.findName("xPando").Height; 
    var s = sender.findName("xPandoImage").ImageSource;
    if(containsText(s, "revenue"))
    { document.getElementById("ceLink").style.zIndex = 2000000;
    }
}

var selectedImage = -1;

function createSilverlight()
{  
    var parent = document.getElementById('central_nav');
    parent.style.zIndex = "20";
    
        
	Silverlight.createObjectEx({
		source: 'Menu.xaml',
		parentElement: parent,
		id: 'SilverlightPlugIn',
			properties: {
			width: '573',
			height: '160',
			background: '#00000000',
            isWindowless: 'true',
			version: '1.0'
		},
		events: {
		onError: function(sender, args) 
		{
		    alert( args.errorMessage);
		},
		    
			onLoad: function(f, c, e)
			{ 
			    _silverlightControl = f;
			    // Find the root canvas
                var rootCanvas = e.findName("menu");
                if (rootCanvas) {
                    // Capture the original width/height
                    _originalWidth = rootCanvas.width;
                    _originalHeight = rootCanvas.height;

                    // Create the necessary transforms on the root Canvas
                    rootCanvas.renderTransform = _silverlightControl.content.createFromXaml('<TransformGroup><ScaleTransform Name="rootScaleTransform" ScaleX="1" ScaleY="1" /><TranslateTransform Name="rootTranslateTransform" X="0" Y="0" /></TransformGroup>');
                    _rootScaleTransform = _silverlightControl.content.findName("rootScaleTransform");
                    _rootTranslateTransform = _silverlightControl.content.findName("rootTranslateTransform");
                }

                // Hook up the resize handler
                _silverlightControl.content.onResize = resize;
                resize();
			    if(selectedImage == 0)
			    {
			        e.findName("imgCO").Source = "img/IC_header_menu_left_hover.jpg"; 
			    }
			    else if(selectedImage == 1)
			    {
			        e.findName("imgFL").Source = "img/IC_header_menu_center_hover.jpg"; 
			    }
			    else if(selectedImage == 2)
			    {
			        e.findName("imgSR").Source = "img/IC_header_menu_right_hover.jpg"; 
			    }
			    e.findName("cCompanyOverview").Visibility = "Visible";
			    e.findName("cFinancialStatements").Visibility = "Visible";
			    e.findName("cBusinessUnitResults").Visibility = "Visible";			    
			}
		},		
		context: 'menu' 
	});
}

if (!window.Silverlight) 
	window.Silverlight = {};

Silverlight.createDelegate = function(instance, method) {
	return function() {
        return method.apply(instance, arguments);
    }
}

function goToUrl(url)
{
    window.location.href=url;
}
var co = null;
var fs = null;
var bu = null;

var chkCompleted = -1;

var thehost = null;

function CheckCompleted(sender, args)
{
    thehost = sender.gethost();
    if(chkCompleted == -1)
    {
        window.setTimeout(resizeHost, 400);    
    }
}

function resizeHost()
{
    if(chkCompleted == -1)
    {
        thehost.height = "160";
    }
}

function Bu_OutComplete(sender, args)
{
    bu = null;
    CheckCompleted(sender, args);
}
function Fs_OutComplete(sender, args)
{
    fs = null;
    CheckCompleted(sender, args);
}
function Co_OutComplete(sender, args)
{
    co = null;
    CheckCompleted(sender, args);
}



// dropdowns

// store a global storyboard object so that we can
// suppress any animations on hovers so we can avoid a jittery UX
var _IsExpanding = false;
var _IsExpanded = false;
var _PrevMenu = null;

function DoFadeIn(sender, args)
{
    var a = sender.findName("FadeInObj");
    var sb = sender.findName("FadeIn"); 
    sb.stop();
    a["Storyboard.TargetName"] = "btn"+sender.Name.substr(1);
    sb.begin();
    
}
function DoFadeOut(sender, args)
{
    var a = sender.findName("FadeOutObj");
    var sb = sender.findName("FadeOut"); 
    sb.stop();
    a["Storyboard.TargetName"] = "btn"+sender.Name.substr(1);
    sb.begin();
}

function ExpandComplete(sender, args)
{
    _IsExpanded = true;
}
function CollapseComplete(sender, args)
{
    _IsExpanded = false;
    _IsExpanding = false;
    _PrevMenu.Visibility  = "Collapsed";
    _PrevMenu = null;
    if(document.getElementById('pinnedGraphCount') != null && document.getElementById('pinnedGraphCount').value > 0)
    {   
        ZOrderHelper( "central_nav", centralNavZIndex ); 
    }
    sender.getHost().height = "160"; 
    CheckCompleted(sender,args);
}
function ZOrderHelper( objectName, Order )
{
    var obj = document.getElementById(objectName);
	   
    if( obj != null )
        obj.style.zIndex = Order;
}

var centralNavZIndex = 0;
function MenuItemExpand(sender, args)
{
    if(_PrevMenu != null)
    {
        _PrevMenu.Visibility  = "Collapsed";
    }
    else
    {
        if(document.getElementById('pinnedGraphCount') != null && document.getElementById('pinnedGraphCount').value > 0)
        {    
            centralNavZIndex = document.getElementById('central_nav').style.zIndex;
            ZOrderHelper( "central_nav", "503" );
        }
    }
    var menuName = "mnu_"+sender.Name.substr(1);
    
    var sb1 = sender.findName("MenuCollapse"); 
    sb1.stop();
        
    var a = sender.findName("MenuItemFadeIn");
   //var b = sender.findName("MenuItemExpand");

    var sb = sender.findName("MenuExpand"); 
    sb.stop();
    a["Storyboard.TargetName"] = menuName;
    // b["Storyboard.TargetName"] = "mnu_"+sender.Name.substr(1);
    var menu = sender.findName(menuName);
    menu.Visibility  = "Visible";
    sb.begin();
    
    sender.getHost().height = "286"; 
    chkCompleted = 0;

    DoFadeIn(sender,args);
    
}

function MenuItemCollapse(sender, args)
{

    
    chkCompleted = -1;
    
    var menuName = "mnu_"+sender.Name.substr(1); 
    var a = sender.findName("MenuItemFadeOut");
   // var b = sender.findName("MenuItemCollapse");
    var sb = sender.findName("MenuCollapse"); 
    sb.stop();
    a["Storyboard.TargetName"] = menuName;
  //  b["Storyboard.TargetName"] = "mnu_"+sender.Name.substr(1);
    sb.begin();
    _PrevMenu = sender.findName(menuName);

    DoFadeOut(sender,args);

}



// menu items
function HoverOn(sender, args)
{
    var bg = sender.findName("HoverOnBG");
    var fg = sender.findName("HoverOnFG");
    var sb = sender.findName("HoverOn"); 
    sb.stop();
    bg["Storyboard.TargetName"] = "mi"+sender.Name.substr(2);
    fg["Storyboard.TargetName"] = "mt"+sender.Name.substr(2);
    sb.begin();
  
}

function HoverOff(sender, args)
{
 
    var bg = sender.findName("HoverOffBG");
    var fg = sender.findName("HoverOffFG");
    var sb = sender.findName("HoverOff"); 
    sb.stop();
    bg["Storyboard.TargetName"] = "mi"+sender.Name.substr(2);
    fg["Storyboard.TargetName"] = "mt"+sender.Name.substr(2);
    sb.begin();

}
function Img_Click(sender, args)
{
   goToUrl('Default.aspx');
}

function Perf_Click(sender, args)
{
   goToUrl('Overview_Performance.aspx');
}

function Outl_Click(sender, args)
{
   goToUrl('Overview_Outlook.aspx');
}

function Stra_Click(sender, args)
{
   goToUrl('Overview_Strategy.aspx');
}

function KPI_Click(sender, args)
{
   goToUrl('Overview_KPI.aspx');
}

function mnuIS_Click(sender, args)
{
   goToUrl('Statements_Income.aspx');
}

function BS_Click(sender, args)
{
   goToUrl('Statements_Balance.aspx');
}

function CF_Click(sender, args)
{
   goToUrl('Statements_CashFlows.aspx');
}

function SR_Click(sender, args)
{
   goToUrl('Statements_SegmentRevenues.aspx');
}

function CL_Click(sender, args)
{
   goToUrl('segments_client.aspx');
}
function ST_Click(sender, args)
{
   goToUrl('segments_server.aspx');
}

function OSB_Click(sender, args)
{
   goToUrl('segments_osb.aspx');
}

function EDD_Click(sender, args)
{
   goToUrl('segments_edd.aspx');
}

function MBD_Click(sender, args)
{
   goToUrl('segments_mbd.aspx');
}


// TODO: replace all of the menu clicks with this generic one
function MenuItem_Click(sender, args )
{
    goToUrl(sender.Tag);
}

// Resizes the content to fit the container (preserving original aspect ratio)
function resize() {
    // Capture the current width/height
    var currentWidth = _silverlightControl.content.ActualWidth;
    var currentHeight = _silverlightControl.content.ActualHeight;

    if (_rootScaleTransform && _rootTranslateTransform && _originalWidth && _originalHeight) {
        // Scale the root Canvas to fit within the current control size
        var uniformScaleAmount = Math.min((currentWidth / _originalWidth), (currentHeight / _originalHeight));
       
        _rootScaleTransform.scaleX = uniformScaleAmount;
        _rootScaleTransform.scaleY = uniformScaleAmount;
    }
}

function Resized()
{
    var currentWidth = expandoControl.content.ActualWidth;
    var currentHeight = expandoControl.content.ActualHeight;
    var uniformScaleAmount = Math.min((currentWidth / (ew1 + 2)), (currentHeight / (sh1 + 2)));
    if(uniformScaleAmount != 0)
    { 
        if(direction1 == 'left')
        {
            senderControl.findName("xPando")["Canvas.Left"] = ((ew1 - sw1) - 2) * uniformScaleAmount;  
            senderControl.findName("expand_left").To = 0;    
        }
        else
        {
            senderControl.findName("xPando")["Canvas.Left"] = 0; 
            senderControl.findName("expand_left").From = 0;			        
            senderControl.findName("expand_left").To = 0;    
        }
        senderControl.findName("xPando").Width = (sw1 + 2) * uniformScaleAmount;
        senderControl.findName("xPando").Height = (sh1 + 2) * uniformScaleAmount; 
//        if(url1)x
//        {
//            senderControl.findName("xPando").Cursor = "Hand";
//            senderControl.findName("xPando").Tag = url1; 
//        }
        senderControl.findName("expand_height").To = (eh1 + 2) * uniformScaleAmount; 
        senderControl.findName("expand_width").To = (ew1 + 2) * uniformScaleAmount; 

        senderControl.findName("contract_height").To = senderControl.findName("xPando").Height;
        senderControl.findName("contract_width").To  = senderControl.findName("xPando").Width;
        
        var top = currentMarginTop * uniformScaleAmount;
//        if(navigator.appName != "Microsoft Internet Explorer")
//	    { alert('hi'); top = top + 10;}	    
//	    
//        document.getElementById(divID).style.marginTop = currentMarginTop * (1/uniformScaleAmount) + "px";
    }
}
