﻿//----------------------------------------------------------
// Copyright (C) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------
// SilverlightControl.js
Type.registerNamespace("Sys.UI.Silverlight");Sys.UI.Silverlight.Control=function(a){Sys.UI.Silverlight.Control.initializeBase(this,[this._findObject(a)||a]);this._scaleMode=Sys.UI.Silverlight.ScaleMode.none};Sys.UI.Silverlight.Control.prototype={_source:null,_loaded:false,_boundEvents:null,_setOnLoad:false,_setOnFullScreenChange:false,_setOnResize:false,_setOnError:false,add_pluginError:function(a){this.get_events().addHandler("pluginError",a)},remove_pluginError:function(a){this.get_events().removeHandler("pluginError",a)},add_pluginFullScreenChanged:function(a){this.get_events().addHandler("pluginFullScreenChanged",a)},remove_pluginFullScreenChanged:function(a){this.get_events().removeHandler("pluginFullScreenChanged",a)},add_pluginLoaded:function(a){this.get_events().addHandler("pluginLoaded",a)},remove_pluginLoaded:function(a){this.get_events().removeHandler("pluginLoaded",a)},add_pluginResized:function(a){this.get_events().addHandler("pluginResized",a)},remove_pluginResized:function(a){this.get_events().removeHandler("pluginResized",a)},get_scaleMode:function(){return this._scaleMode},set_scaleMode:function(a){if(a!==this.get_scaleMode()){this._scaleMode=a;if(this._loaded)this._ensureTransform()}},get_source:function(){return this._source||""},set_source:function(a){this._source=a;if(a&&this._setOnLoad)this.get_element().Source=a},addEventListener:function(b,a,e){var d=b.addEventListener(a,e),c=this._getEventsForElement(b,true);c[c.length]={eventName:a,token:d};return d},dispose:function(){if(this._loaded){this.pluginDispose();this._loaded=false}var a=this.get_element();if(a){if(this._setOnLoad)a.OnLoad=null;if(this._setOnError)a.OnError=null;if(this._setOnFullScreenChange)a.content.OnFullScreenChange=null;if(this._setOnResize)a.content.OnResize=null}var b=this._boundEvents;if(b){for(var c=0,i=b.length;c<i;c++){var g=b[c],h=g.element,e=g.events;for(var d=0,j=e.length;d<j;d++){var f=e[d];h.removeEventListener(f.eventName,f.token)}}this._boundEvents=null}Sys.UI.Silverlight.Control.callBaseMethod(this,"dispose")},_ensureTransform:function(){var e=this.get_element(),d=e.content.root,a=Sys.UI.Silverlight.Control._computeScale(d),b,c;switch(this.get_scaleMode()){case Sys.UI.Silverlight.ScaleMode.zoom:b=c=Math.min(a.horizontal,a.vertical);break;case Sys.UI.Silverlight.ScaleMode.stretch:b=a.horizontal;c=a.vertical;break;default:b=c=1}Sys.UI.Silverlight.Control._applyScale(d,b,c)},_findObject:function(d){if(this._isSilverlight(d))return d;var a,e,b,c=d.getElementsByTagName("object");for(a=0,e=c.length;a<e;a++){b=c[a];if(this._isSilverlight(b))return b}c=d.getElementsByTagName("embed");for(a=0,e=c.length;a<e;a++){b=c[a];if(this._isSilverlight(b))return b}return null},_getEventsForElement:function(d,e){var b,a=this._boundEvents;if(!a)this._boundEvents=a=[];for(var c=0,f=a.length;c<f;c++){b=a[c];if(b.element===d)return b.events}if(!e)return null;b={element:d,events:[]};a[a.length]=b;return b.events},initialize:function(){Sys.UI.Silverlight.Control.callBaseMethod(this,"initialize");var a=this.get_element();if(this._isSilverlight(a)){if(!a.OnError){a.OnError=Function.createDelegate(this,this._pluginError);this._setOnError=true}if(a.IsLoaded)this._pluginLoaded();else{a.OnLoad=Function.createDelegate(this,this._pluginLoaded);this._setOnLoad=true;if(!a.Source){var b=this.get_source();if(b)a.Source=b}}}},_isSilverlight:function(a){if(!a)return false;var b=a.tagName.toLowerCase();if(b==="object"||b==="embed"){var c=a.type?a.type.toLowerCase():"";if(c.indexOf("application/x-silverlight")===0||c.indexOf("application/silverlight")===0){a.innerHTML;return !!a.settings}}},_onFullScreen:function(){if(!this.get_element())return;this.onPluginFullScreenChanged(Sys.EventArgs.Empty);this._raiseEvent("pluginFullScreenChanged")},onPluginError:function(){},onPluginFullScreenChanged:function(){},onPluginLoaded:function(){},onPluginResized:function(){if(this.get_scaleMode()!==Sys.UI.Silverlight.ScaleMode.none)this._ensureTransform()},_onResize:function(){if(!this.get_element())return;this.onPluginResized(Sys.EventArgs.Empty);this._raiseEvent("pluginResized")},pluginDispose:function(){},_pluginError:function(c,b){if(!this.get_element())return;var a=new Sys.UI.Silverlight.ErrorEventArgs(b);this.onPluginError(a);if(!a.get_cancel())this._raiseEvent("pluginError",a)},_pluginLoaded:function(){var a=this.get_element();if(a){if(!a.content.OnFullScreenChange){a.content.OnFullScreenChange=Function.createDelegate(this,this._onFullScreen);this._setOnFullScreenChange=true}if(!a.content.OnResize){a.content.OnResize=Function.createDelegate(this,this._onResize);this._setOnResize=true}this._raisepluginLoaded()}},_raiseEvent:function(c,b){var a=this.get_events().getHandler(c);if(a)a(this,b||Sys.EventArgs.Empty)},_raisepluginLoaded:function(){this._loaded=true;this.onPluginLoaded(Sys.EventArgs.Empty);this._raiseEvent("pluginLoaded")},removeEventListener:function(d,c,e){d.removeEventListener(c,e);var a=this._getEventsForElement(d,false);if(!a)return;for(var b=0,g=a.length;b<g;b++){var f=a[b];if(f.token===e&&f.eventName===c){Array.removeAt(a,b);return}}}};Sys.UI.Silverlight.Control._computeScale=function(a){var c=a.width,b=a.height,d=a.getHost();return {horizontal:c?d.content.ActualWidth/c:0,vertical:b?d.content.ActualHeight/b:0}};Sys.UI.Silverlight.Control._applyScale=function(b,d,e){var a=b.RenderTransform;if(!a)b.RenderTransform=a=b.getHost().content.createFromXaml('<ScaleTransform ScaleX="1" ScaleY="1"/>');var c={x:a.ScaleX,y:a.ScaleY};a.ScaleX=d;a.ScaleY=e;return c};Sys.UI.Silverlight.Control.createObject=function(a,b){document.getElementById(a).innerHTML=b};Sys.UI.Silverlight.Control.registerClass("Sys.UI.Silverlight.Control",Sys.UI.Control);Sys.UI.Silverlight.ErrorEventArgs=function(a){this._error=a;Sys.UI.Silverlight.ErrorEventArgs.initializeBase(this)};Sys.UI.Silverlight.ErrorEventArgs.prototype={get_error:function(){return this._error}};Sys.UI.Silverlight.ErrorEventArgs.registerClass("Sys.UI.Silverlight.ErrorEventArgs",Sys.CancelEventArgs);Sys.UI.Silverlight.ScaleMode=function(){throw Error.notImplemented()};Sys.UI.Silverlight.ScaleMode.prototype={none:0,zoom:1,stretch:2};Sys.UI.Silverlight.ScaleMode.registerEnum("Sys.UI.Silverlight.ScaleMode");
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();