﻿<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.  
-->
<UserControl x:Class="WPCordovaClassLib.CordovaView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    d:DesignHeight="480" d:DesignWidth="480" 
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone">
    
    <Grid x:Name="LayoutRoot" Background="Transparent">
        
        <phone:WebBrowser x:Name="CordovaBrowser" 
                          Opacity="0.0"
                          HorizontalAlignment="Stretch"  
                          VerticalAlignment="Stretch" 
                          IsScriptEnabled="True" 
                          Foreground="White"
                          Background="Black"
                          Navigated="CordovaBrowser_Navigated" 
                          Loaded="CordovaBrowser_Loaded" 
                          Unloaded="CordovaBrowser_Unloaded" 
                          ScriptNotify="CordovaBrowser_ScriptNotify" 
                          LoadCompleted="CordovaBrowser_LoadCompleted" 
                          Navigating="CordovaBrowser_Navigating" 
                          NavigationFailed="CordovaBrowser_NavigationFailed" 
                          IsGeolocationEnabled="True">

            <phone:WebBrowser.Resources>      
                <Storyboard x:Name="FadeIn">
                    <DoubleAnimation Duration="0:0:0.6" 
                            To="1.0"
                            Storyboard.TargetName="CordovaBrowser" 
                            Storyboard.TargetProperty="Opacity"/>
                </Storyboard>
            </phone:WebBrowser.Resources>

        </phone:WebBrowser>
        
    </Grid>
</UserControl>

    
