Adapting 'NHobernate.Northwind' to Conversation.
@@ -9,7 +9,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Northwind.Dao.NHiber
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Northwind.IntegrationTests.2008", "test\Spring.Northwind.IntegrationTests\Spring.Northwind.IntegrationTests.2008.csproj", "{2D0C5DF7-3BDB-44FB-BC1B-58E60B170BAD}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Northwind.Web", "src\Spring.Northwind.Web\Spring.Northwind.Web.2008.csproj", "{2967CA64-7352-46E3-89C0-6BB3A0A13FC1}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Northwind.Web.2008", "src\Spring.Northwind.Web\Spring.Northwind.Web.2008.csproj", "{2967CA64-7352-46E3-89C0-6BB3A0A13FC1}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Northwind.Web.ConvWA.2008", "src\Spring.Northwind.Web.ConvWA\Spring.Northwind.Web.ConvWA.2008.csproj", "{8DCDA20D-DF9F-4723-9649-BC6934B36DC4}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
@@ -71,6 +73,16 @@ Global
|
||||
{2967CA64-7352-46E3-89C0-6BB3A0A13FC1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2967CA64-7352-46E3-89C0-6BB3A0A13FC1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{2967CA64-7352-46E3-89C0-6BB3A0A13FC1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{8DCDA20D-DF9F-4723-9649-BC6934B36DC4}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{8DCDA20D-DF9F-4723-9649-BC6934B36DC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{8DCDA20D-DF9F-4723-9649-BC6934B36DC4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{8DCDA20D-DF9F-4723-9649-BC6934B36DC4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{8DCDA20D-DF9F-4723-9649-BC6934B36DC4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{8DCDA20D-DF9F-4723-9649-BC6934B36DC4}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||
{8DCDA20D-DF9F-4723-9649-BC6934B36DC4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8DCDA20D-DF9F-4723-9649-BC6934B36DC4}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{8DCDA20D-DF9F-4723-9649-BC6934B36DC4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{8DCDA20D-DF9F-4723-9649-BC6934B36DC4}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
# Visual Web Developer Express 2010
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Northwind.Service.2010", "src\Spring.Northwind.Service\Spring.Northwind.Service.2010.csproj", "{9E15876F-E9E0-43B7-9874-B54F163757D6}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Northwind.Dao.2010", "src\Spring.Northwind.Dao\Spring.Northwind.Dao.2010.csproj", "{7F45EEA2-50AC-44E2-85A6-2FFB02E38C44}"
|
||||
@@ -11,6 +11,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Northwind.Integratio
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Northwind.Web.2010", "src\Spring.Northwind.Web\Spring.Northwind.Web.2010.csproj", "{2967CA64-7352-46E3-89C0-6BB3A0A13FC1}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Northwind.Web.ConvWA.2010", "src\Spring.Northwind.Web.ConvWA\Spring.Northwind.Web.ConvWA.2010.csproj", "{8EEAB62E-DBAF-4C5F-9906-77B2A817F945}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|.NET = Debug|.NET
|
||||
@@ -71,6 +73,16 @@ Global
|
||||
{2967CA64-7352-46E3-89C0-6BB3A0A13FC1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2967CA64-7352-46E3-89C0-6BB3A0A13FC1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{2967CA64-7352-46E3-89C0-6BB3A0A13FC1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{8EEAB62E-DBAF-4C5F-9906-77B2A817F945}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{8EEAB62E-DBAF-4C5F-9906-77B2A817F945}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{8EEAB62E-DBAF-4C5F-9906-77B2A817F945}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{8EEAB62E-DBAF-4C5F-9906-77B2A817F945}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{8EEAB62E-DBAF-4C5F-9906-77B2A817F945}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{8EEAB62E-DBAF-4C5F-9906-77B2A817F945}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||
{8EEAB62E-DBAF-4C5F-9906-77B2A817F945}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8EEAB62E-DBAF-4C5F-9906-77B2A817F945}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{8EEAB62E-DBAF-4C5F-9906-77B2A817F945}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{8EEAB62E-DBAF-4C5F-9906-77B2A817F945}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<objects xmlns="http://www.springframework.net"
|
||||
xmlns:db="http://www.springframework.net/database">
|
||||
<!-- Referenced by main application context configuration file. Conversation especific. -->
|
||||
<description>
|
||||
The Northwind object definitions for the Data Access Objects.
|
||||
</description>
|
||||
|
||||
<!-- Property placeholder configurer for database settings -->
|
||||
<object type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core">
|
||||
<property name="ConfigSections" value="databaseSettings"/>
|
||||
</object>
|
||||
|
||||
<!-- Database Configuration -->
|
||||
<db:provider id="DbProvider"
|
||||
provider="SQLite-1.0.65"
|
||||
connectionString="Data Source=|DataDirectory|Northwind.db;Version=3;FailIfMissing=True;"/>
|
||||
|
||||
<!-- NHibernate Configuration -->
|
||||
<object id="NHibernateSessionFactory" type="Spring.Northwind.Dao.NHibernate.CustomLocalSessionFactoryObject, Spring.Northwind.Dao.NHibernate">
|
||||
<property name="DbProvider" ref="DbProvider"/>
|
||||
<property name="MappingAssemblies">
|
||||
<list>
|
||||
<value>Spring.Northwind.Dao.NHibernate</value>
|
||||
</list>
|
||||
</property>
|
||||
<property name="HibernateProperties">
|
||||
<dictionary>
|
||||
<entry key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
|
||||
<entry key="dialect" value="NHibernate.Dialect.SQLiteDialect"/>
|
||||
<entry key="connection.driver_class" value="NHibernate.Driver.SQLite20Driver"/>
|
||||
<entry key="use_proxy_validator" value="false" />
|
||||
<entry key="show_sql" value="false"/>
|
||||
<entry key="format_sql" value="true"/>
|
||||
<entry key="connection.release_mode" value="on_close"/>
|
||||
</dictionary>
|
||||
</property>
|
||||
|
||||
<!-- provides integation with Spring's declarative transaction management features -->
|
||||
<property name="ExposeTransactionAwareSessionFactory" value="true" />
|
||||
|
||||
</object>
|
||||
|
||||
<!-- Transaction Management Strategy - local database transactions -->
|
||||
<object id="transactionManager"
|
||||
type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate32">
|
||||
|
||||
<property name="DbProvider" ref="DbProvider"/>
|
||||
<property name="SessionFactory" ref="NHibernateSessionFactory"/>
|
||||
|
||||
</object>
|
||||
|
||||
<!-- Exception translation object post processor -->
|
||||
<object type="Spring.Dao.Attributes.PersistenceExceptionTranslationPostProcessor, Spring.Data"/>
|
||||
|
||||
<!-- Data Access Objects -->
|
||||
<object id="CustomerDao" type="Spring.Northwind.Dao.NHibernate.HibernateCustomerDao, Spring.Northwind.Dao.NHibernate">
|
||||
<property name="SessionFactory" ref="NHibernateSessionFactory"/>
|
||||
</object>
|
||||
|
||||
<object id="OrderDao" type="Spring.Northwind.Dao.NHibernate.HibernateOrderDao, Spring.Northwind.Dao.NHibernate">
|
||||
<property name="SessionFactory" ref="NHibernateSessionFactory"/>
|
||||
</object>
|
||||
|
||||
<object id="CustomerClassificationCalculator" type="Spring.Northwind.Domain.DefaultCustomerClassificationCalculator, Spring.Northwind.Dao">
|
||||
|
||||
</object>
|
||||
|
||||
<object id="CustomerEntityProtoType" type="Spring.Northwind.Domain.Customer, Spring.Northwind.Dao" singleton="false">
|
||||
<constructor-arg ref="CustomerClassificationCalculator" />
|
||||
</object>
|
||||
|
||||
|
||||
</objects>
|
||||
@@ -95,6 +95,9 @@
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Dao\Dao.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Dao\DaoConvWA.xml" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
|
||||
@@ -127,6 +127,9 @@
|
||||
<Name>Spring.Northwind.Dao.2010</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Dao\DaoConvWA.xml" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
<asp:DataGrid runat="server" CssClass="datagrid">
|
||||
<HeaderStyle CssClass="datagrid-header" />
|
||||
<ItemStyle CssClass="datagrid-item" />
|
||||
<AlternatingItemStyle CssClass="datagrid-alt-item" />
|
||||
<FooterStyle CssClass="datagrid-header" />
|
||||
</asp:DataGrid>
|
||||
@@ -0,0 +1,175 @@
|
||||
body {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
background-color: #dfeac1;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.logo {
|
||||
position:relative;
|
||||
top:-8px;
|
||||
left:22px;
|
||||
float:left;
|
||||
}
|
||||
|
||||
.headerText
|
||||
{
|
||||
color: White;
|
||||
left: 350px;
|
||||
top: 50px;
|
||||
font-family: Verdana;
|
||||
font-size: 150%;
|
||||
font-weight: bold;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
border: 1px solid #CCA383;
|
||||
width: 60%;
|
||||
background: LightGoldenrodYellow;
|
||||
padding: 3px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
fieldset legend {
|
||||
background: PaleGoldenrod;
|
||||
padding: 6px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.formLabelCell
|
||||
{
|
||||
text-align: left;
|
||||
padding-left: 10px;
|
||||
padding-right: 30px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.formValueCell
|
||||
{
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.actionPanel
|
||||
{
|
||||
margin: 30px;
|
||||
border: 1px solid #CCA383;
|
||||
width: 50%;
|
||||
background: LightGoldenrodYellow;
|
||||
text-align: center;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.actionResultWindow
|
||||
{
|
||||
margin: 30px;
|
||||
border: 1px solid #CCA383;
|
||||
width: 90%;
|
||||
background: LightGoldenrodYellow;
|
||||
text-align: left;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#headerCell
|
||||
{
|
||||
background: url(../img/header-spring.png);
|
||||
height: 150px;
|
||||
width: 719px;
|
||||
}
|
||||
|
||||
#contentCell
|
||||
{
|
||||
background-image: url(../img/bg-spring.png);
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
#footerCell
|
||||
{
|
||||
background-image: url(../img/footern.gif);
|
||||
text-align: center;
|
||||
height: 29px;
|
||||
}
|
||||
|
||||
.datagrid
|
||||
{
|
||||
border: solid 1px Tan;
|
||||
margin-left: 10px;
|
||||
width: 95%;
|
||||
}
|
||||
|
||||
.datagrid-header
|
||||
{
|
||||
font-weight: bold;
|
||||
background-color: Tan;
|
||||
}
|
||||
|
||||
.datagid-item
|
||||
{
|
||||
background-color: LightGoldenrodYellow;
|
||||
}
|
||||
|
||||
.datagrid-alt-item
|
||||
{
|
||||
background-color: PaleGoldenrod;
|
||||
}
|
||||
|
||||
.datagrid-footer
|
||||
{
|
||||
font-weight: bold;
|
||||
background-color: Tan;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: Verdana, Arial, Helvetica, sans;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
color: #90A720;
|
||||
}
|
||||
a, a:active, a:visited {
|
||||
font-family: Verdana, Arial, Helvetica, sans;
|
||||
font-size: 12px;
|
||||
color: #606060;
|
||||
}
|
||||
a:hover {
|
||||
font-family: Verdana, Arial, Helvetica, sans;
|
||||
font-size: 12px;
|
||||
color: #000000;
|
||||
}
|
||||
b {
|
||||
font-family: Verdana, Arial, Helvetica, sans;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
color: #606060;
|
||||
}
|
||||
i {
|
||||
font-family: Verdana, Arial, Helvetica, sans;
|
||||
font-size: 12px;
|
||||
color: #606060;
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: Verdana, Arial, Helvetica, sans;
|
||||
font-size: 12px;
|
||||
color: #606060;
|
||||
}
|
||||
.news {
|
||||
border: 1px solid;
|
||||
border-color: #C9C9C9;
|
||||
padding: 12px;
|
||||
font-family: Verdana, Arial, Helvetica, sans;
|
||||
font-size: 12px;
|
||||
color: #606060;
|
||||
background-color: #F5F5F5;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin-left: 25px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
|
||||
<objects xmlns="http://www.springframework.net">
|
||||
|
||||
<object name="CommonLoggingAroundAdvice" type="Spring.Aspects.Logging.SimpleLoggingAdvice, Spring.Aop">
|
||||
<property name="LogUniqueIdentifier" value="true"/>
|
||||
<property name="LogExecutionTime" value="true"/>
|
||||
<property name="LogMethodArguments" value="true"/>
|
||||
<property name="LogReturnValue" value="true"/>
|
||||
|
||||
<property name="Separator" value=";"/>
|
||||
<property name="LogLevel" value="Info"/>
|
||||
|
||||
|
||||
<property name="HideProxyTypeNames" value="true"/>
|
||||
<property name="UseDynamicLogger" value="true"/>
|
||||
</object>
|
||||
|
||||
</objects>
|
||||
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<log4net debug="false">
|
||||
|
||||
<appender name="AspNetTraceAppender" type="log4net.Appender.AspNetTraceAppender">
|
||||
<layout type="log4net.Layout.PatternLayout">
|
||||
<conversionPattern value="[%thread] %-5level - %message" />
|
||||
</layout>
|
||||
</appender>
|
||||
|
||||
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
|
||||
<file value="Logs/log.txt" />
|
||||
<appendToFile value="true" />
|
||||
<rollingStyle value="Size" />
|
||||
<maxSizeRollBackups value="10" />
|
||||
<maximumFileSize value="100KB" />
|
||||
<staticLogFileName value="true" />
|
||||
<layout type="log4net.Layout.PatternLayout">
|
||||
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
|
||||
</layout>
|
||||
</appender>
|
||||
|
||||
<appender name="TraceAppender" type="log4net.Appender.TraceAppender">
|
||||
<layout type="log4net.Layout.PatternLayout">
|
||||
<conversionPattern value="%-5level %M - %message%newline" />
|
||||
</layout>
|
||||
</appender>
|
||||
|
||||
<appender name="MemoryAppender" type="log4net.Appender.MemoryAppender">
|
||||
<!-- simple appender to get results to UI -->
|
||||
</appender>
|
||||
|
||||
<!-- Set default logging level to DEBUG -->
|
||||
<root>
|
||||
<level value="DEBUG" />
|
||||
<!--<appender-ref ref="AspNetTraceAppender" />-->
|
||||
<appender-ref ref="TraceAppender" />
|
||||
<appender-ref ref="RollingFileAppender" />
|
||||
</root>
|
||||
<!--
|
||||
In Spring.NET there is a 1-1 correspondence between the logger name and
|
||||
the namespace of the class doing the logging...
|
||||
-->
|
||||
<logger name="Spring">
|
||||
<level value="DEBUG" />
|
||||
</logger>
|
||||
<logger name="NHibernate">
|
||||
<level value="INFO" />
|
||||
</logger>
|
||||
<logger name="NHibernate.SQL">
|
||||
<level value="DEBUG" />
|
||||
</logger>
|
||||
<logger name="Spring.Transaction>">
|
||||
<level value="INFO" />
|
||||
<appender-ref ref="MemoryAppender" />
|
||||
</logger>
|
||||
<logger name="Spring.Northwind">
|
||||
<level value="INFO" />
|
||||
<appender-ref ref="MemoryAppender" />
|
||||
</logger>
|
||||
</log4net>
|
||||
@@ -0,0 +1,8 @@
|
||||
using Spring.Northwind.Domain;
|
||||
|
||||
public interface ICustomerEditController
|
||||
{
|
||||
void EditCustomer(Customer customer);
|
||||
void Clear();
|
||||
Customer CurrentCustomer { get; }
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
using NHibernate;
|
||||
using Spring.Data.NHibernate;
|
||||
using Spring.Northwind.Domain;
|
||||
|
||||
/// <summary>
|
||||
/// </summary>
|
||||
/// <author>erich.eichinger</author>
|
||||
public class NHibernateCustomerEditController : ICustomerEditController
|
||||
{
|
||||
private readonly ISessionFactory sessionFactory;
|
||||
private Customer currentCustomer;
|
||||
|
||||
public NHibernateCustomerEditController(ISessionFactory sessionFactory)
|
||||
{
|
||||
this.sessionFactory = sessionFactory;
|
||||
}
|
||||
|
||||
private ISession Session
|
||||
{
|
||||
get { return sessionFactory.GetCurrentSession(); }
|
||||
}
|
||||
|
||||
public void EditCustomer(Customer customer)
|
||||
{
|
||||
currentCustomer = customer;
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
currentCustomer = null;
|
||||
}
|
||||
|
||||
public Customer CurrentCustomer
|
||||
{
|
||||
get
|
||||
{
|
||||
Customer customer = currentCustomer;
|
||||
|
||||
//since the Customer entity may have been retrieved from a prior request, we need to reattach it to the current session
|
||||
// in order to support lazy-loading, etc. on the Customer
|
||||
Session.Lock(customer, LockMode.None);
|
||||
|
||||
return customer;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Configuration;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.HtmlControls;
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Web.UI.WebControls.WebParts;
|
||||
using Spring.ConversationWA;
|
||||
|
||||
/// <summary>
|
||||
/// Base classe for page's that suport conversation.
|
||||
/// </summary>
|
||||
public class ConversationPage : Spring.Web.UI.Page
|
||||
{
|
||||
private IConversationState conversation = null;
|
||||
/// <summary>
|
||||
/// Converastion exposed to pages.
|
||||
/// </summary>
|
||||
public IConversationState Conversation
|
||||
{
|
||||
get { return conversation; }
|
||||
set { conversation = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Here start/resume conversation to reconnect the ISession.
|
||||
/// </summary>
|
||||
/// <param name="e"></param>
|
||||
protected override void OnInit(EventArgs e)
|
||||
{
|
||||
this.Conversation.StartResumeConversation();
|
||||
base.OnInit(e);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<%@ Page Language="C#" MasterPageFile="~/Shared/MasterPage.master"
|
||||
Inherits="CustomerEditor" Codebehind="CustomerEditor.aspx.cs" %>
|
||||
|
||||
<asp:Content ID="content" ContentPlaceHolderID="content" runat="server">
|
||||
<h1>
|
||||
Update customer information</h1>
|
||||
<div align="center">
|
||||
<spring:DataBindingPanel runat="server">
|
||||
<fieldset>
|
||||
<legend>Customer details</legend>
|
||||
<table>
|
||||
<tr>
|
||||
<td class="formLabelCell">
|
||||
ID:</td>
|
||||
<td class="formValueCell">
|
||||
<asp:TextBox runat="server" BindingTarget="CurrentCustomer.Id" BindingDirection="TargetToSource"
|
||||
ReadOnly="true" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="formLabelCell">
|
||||
Contact:</td>
|
||||
<td class="formValueCell">
|
||||
<asp:TextBox runat="server" BindingTarget="CurrentCustomer.ContactName" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="text-align: right; padding-top: 10px">
|
||||
<asp:Button runat="server" ID="btnSave" Text="Save" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</spring:DataBindingPanel>
|
||||
<div class="actionPanel">
|
||||
<asp:LinkButton ID="customerList" runat="server" onclick="customerList_Click">« Back to customer list</asp:LinkButton> |
|
||||
<asp:LinkButton ID="cancel" runat="server" onclick="cancel_Click">Cancel edit »</asp:LinkButton>
|
||||
</div>
|
||||
</div>
|
||||
</asp:Content>
|
||||
@@ -0,0 +1,71 @@
|
||||
using System;
|
||||
using Spring.Northwind.Dao;
|
||||
using Spring.Northwind.Domain;
|
||||
using Spring.Web.UI;
|
||||
|
||||
public partial class CustomerEditor : Page
|
||||
{
|
||||
private ICustomerEditController customerEditController;
|
||||
private ICustomerDao customerDao;
|
||||
|
||||
public ICustomerDao CustomerDao
|
||||
{
|
||||
set { customerDao = value; }
|
||||
}
|
||||
|
||||
public ICustomerEditController CustomerEditController
|
||||
{
|
||||
set { customerEditController = value; }
|
||||
}
|
||||
|
||||
public Customer CurrentCustomer
|
||||
{
|
||||
get
|
||||
{
|
||||
return customerEditController.CurrentCustomer;
|
||||
}
|
||||
}
|
||||
|
||||
public CustomerEditor()
|
||||
{
|
||||
InitializeControls += Page_InitializeControls;
|
||||
DataBound += Page_DataBound;
|
||||
DataUnbound += Page_DataUnbound;
|
||||
}
|
||||
|
||||
override protected void InitializeDataBindings()
|
||||
{
|
||||
base.InitializeDataBindings();
|
||||
|
||||
// do the "one time" setup for databinding
|
||||
}
|
||||
|
||||
private void Page_DataBound(object sender, EventArgs e)
|
||||
{
|
||||
// perform custom tasks for binding data from model to the form
|
||||
}
|
||||
|
||||
private void Page_DataUnbound(object sender, EventArgs e)
|
||||
{
|
||||
// perform custom tasks for unbinding data from form to the model
|
||||
}
|
||||
|
||||
private void Page_InitializeControls(object sender, EventArgs e)
|
||||
{
|
||||
btnSave.Click += BtnSave_Click;
|
||||
}
|
||||
|
||||
private void BtnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
customerDao.Update(CurrentCustomer);
|
||||
SetResult("ViewCustomer");
|
||||
}
|
||||
protected void customerList_Click(object sender, EventArgs e)
|
||||
{
|
||||
SetResult("CustomerList");
|
||||
}
|
||||
protected void cancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
SetResult("CancelEdit");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.5448
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
public partial class CustomerEditor {
|
||||
|
||||
/// <summary>
|
||||
/// btnSave control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button btnSave;
|
||||
|
||||
/// <summary>
|
||||
/// customerList control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.LinkButton customerList;
|
||||
|
||||
/// <summary>
|
||||
/// cancel control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.LinkButton cancel;
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
<%@ Page Language="C#" MasterPageFile="~/Shared/MasterPage.master" Inherits="CustomerList" Codebehind="CustomerList.aspx.cs" %>
|
||||
<%@ Reference page="CustomerEditor.aspx" %>
|
||||
|
||||
<asp:Content ID="content" ContentPlaceHolderID="content" runat="server">
|
||||
|
||||
<h1>Customers in database</h1>
|
||||
|
||||
<p>
|
||||
Below you can see all customers in the database paged to grid.
|
||||
By clicking customer name you enter the details and edit information.
|
||||
By clicking orders you can see all orders that customer has. Orders can
|
||||
be in shipped state (they have shipped date) or they can be waiting for
|
||||
shipment. You can ship orders that aren't shipped yet on the orders screen.
|
||||
</p>
|
||||
<p>
|
||||
The customer entity is created with Spring and injected with an ICustomerClassificationCalculator
|
||||
which includes basic calculation algorithm that we can use to calculate customer's value to us.
|
||||
</p>
|
||||
<br />
|
||||
<asp:DataGrid id="customerList" runat="server"
|
||||
AllowPaging="true"
|
||||
AllowSorting="false"
|
||||
BorderColor="black"
|
||||
BorderWidth="1"
|
||||
CellPadding="3"
|
||||
AutoGenerateColumns="false"
|
||||
ShowFooter="true"
|
||||
>
|
||||
<Columns>
|
||||
|
||||
<asp:BoundColumn HeaderText="Id" DataField="ID" />
|
||||
<asp:ButtonColumn HeaderText="Name" DataTextField="ContactName" CommandName="ViewCustomer" />
|
||||
<asp:BoundColumn HeaderText="Company" DataField="CompanyName"/>
|
||||
<asp:BoundColumn HeaderText="Classification" DataField="Classification"/>
|
||||
<asp:ButtonColumn CommandName="ViewOrders" Text="Orders" />
|
||||
<asp:TemplateColumn>
|
||||
<ItemTemplate>
|
||||
<asp:Button ID="BtnShowOrders" runat="server" Text="+" OnClick="BtnShowOrders_Click" />
|
||||
<div style="position:relative">
|
||||
<div id="DivCustomerOrderList" runat="server" visible="false">
|
||||
<asp:DataGrid ID="DtgCustomerOrderList" runat="server" Visible="False"
|
||||
AutoGenerateColumns="false" Width="400px">
|
||||
<Columns>
|
||||
<asp:BoundColumn HeaderText="Id" DataField="Id" />
|
||||
<asp:BoundColumn HeaderText="ShipName" DataField="ShipName" />
|
||||
<asp:BoundColumn HeaderText="ShipAddress" DataField="ShipAddress" />
|
||||
</Columns>
|
||||
</asp:DataGrid>
|
||||
</div>
|
||||
</div>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateColumn>
|
||||
</Columns>
|
||||
</asp:DataGrid>
|
||||
</asp:Content>
|
||||
@@ -0,0 +1,151 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Web.UI.WebControls;
|
||||
using Spring.Northwind.Dao;
|
||||
using Spring.Northwind.Domain;
|
||||
using System.Collections.Generic;
|
||||
using System.Web.UI.HtmlControls;
|
||||
using System.Web.UI;
|
||||
|
||||
public partial class CustomerList : ConversationPage
|
||||
{
|
||||
private ICustomerEditController customerEditController;
|
||||
private ICustomerDao customerDao;
|
||||
|
||||
public ICustomerDao CustomerDao
|
||||
{
|
||||
set { this.customerDao = value; }
|
||||
}
|
||||
|
||||
public ICustomerEditController CustomerEditController
|
||||
{
|
||||
set { this.customerEditController = value; }
|
||||
}
|
||||
|
||||
public Customer SelectedCustomer
|
||||
{
|
||||
get
|
||||
{
|
||||
return (Customer) this.customerList.SelectedItem.DataItem;
|
||||
}
|
||||
}
|
||||
|
||||
public CustomerList()
|
||||
{
|
||||
this.InitializeControls+=new EventHandler(Page_InitializeControls);
|
||||
this.DataBound+=new EventHandler(Page_DataBound);
|
||||
this.DataUnbound+=new EventHandler(Page_DataUnbound);
|
||||
}
|
||||
|
||||
override protected void InitializeDataBindings()
|
||||
{
|
||||
base.InitializeDataBindings();
|
||||
|
||||
// do the "one time" setup for databinding
|
||||
}
|
||||
|
||||
private void Page_DataBound(object sender, EventArgs e)
|
||||
{
|
||||
// perform custom tasks for binding data from model to the form
|
||||
}
|
||||
|
||||
private void Page_DataUnbound(object sender, EventArgs e)
|
||||
{
|
||||
// perform custom tasks for unbinding data from form to the model
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// List not attached. This page will make searching the database only once per conversation.
|
||||
/// </summary>
|
||||
private IList<Customer> CustomersLoadedOncePerConvList
|
||||
{
|
||||
get
|
||||
{
|
||||
return (IList<Customer>)this.Conversation["CustomersLoadedOncePerConvList"];
|
||||
}
|
||||
set
|
||||
{
|
||||
this.Conversation["CustomersLoadedOncePerConvList"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
private void Page_InitializeControls(object sender, EventArgs e)
|
||||
{
|
||||
//searching the database only once per conversation.
|
||||
if (this.CustomersLoadedOncePerConvList == null)
|
||||
{
|
||||
// create/initialize controls here
|
||||
this.CustomersLoadedOncePerConvList = customerDao.GetAll();
|
||||
}
|
||||
|
||||
customerList.DataSource = this.CustomersLoadedOncePerConvList;
|
||||
customerList.ItemCommand+=new DataGridCommandEventHandler(CustomerList_ItemCommand);
|
||||
customerList.PageIndexChanged+=new DataGridPageChangedEventHandler(CustomerList_PageIndexChanged);
|
||||
if (!IsPostBack)
|
||||
{
|
||||
customerList.DataBind();
|
||||
}
|
||||
else
|
||||
{
|
||||
customerList.ItemCreated+=new DataGridItemEventHandler(this.CustomerList_ItemCreated);
|
||||
}
|
||||
}
|
||||
|
||||
private void CustomerList_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
|
||||
{
|
||||
customerList.CurrentPageIndex = e.NewPageIndex;
|
||||
customerList.DataBind();
|
||||
}
|
||||
|
||||
private void CustomerList_ItemCommand(object source, DataGridCommandEventArgs e)
|
||||
{
|
||||
switch(e.CommandName)
|
||||
{
|
||||
case "ViewOrders":
|
||||
case "ViewCustomer":
|
||||
customerList.SelectedIndex = e.Item.ItemIndex;
|
||||
customerEditController.EditCustomer(this.SelectedCustomer);
|
||||
SetResult(e.CommandName);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void CustomerList_ItemCreated(object sender, DataGridItemEventArgs e)
|
||||
{
|
||||
if(e.Item.DataSetIndex > -1)
|
||||
{
|
||||
e.Item.DataItem = ((IList) customerList.DataSource)[e.Item.DataSetIndex];
|
||||
}
|
||||
}
|
||||
|
||||
protected void BtnShowOrders_Click(object sender, EventArgs e)
|
||||
{
|
||||
Button BtnShowOrders = (Button)sender;
|
||||
DataGridItem dgi = (DataGridItem)BtnShowOrders.NamingContainer;
|
||||
DataGrid DtgCustomerOrderList = (DataGrid)dgi.FindControl("DtgCustomerOrderList");
|
||||
HtmlControl DivCustomerOrderList = (HtmlControl)dgi.FindControl("DivCustomerOrderList");
|
||||
if (BtnShowOrders.Text == "+")
|
||||
{
|
||||
//discovery index for Customer
|
||||
int customerIndex;
|
||||
customerIndex = (this.customerList.PageSize * this.customerList.CurrentPageIndex) + dgi.ItemIndex;
|
||||
Customer customerFromLine = this.CustomersLoadedOncePerConvList[customerIndex];
|
||||
DtgCustomerOrderList.DataSource = customerFromLine.Orders;
|
||||
DtgCustomerOrderList.DataBind();
|
||||
DtgCustomerOrderList.Visible = true;
|
||||
DivCustomerOrderList.Visible = true;
|
||||
//background-color:White; position:absolute; left:-180px. Positioning, just visual.
|
||||
DivCustomerOrderList.Style[HtmlTextWriterStyle.BackgroundColor] = "White";
|
||||
DivCustomerOrderList.Style[HtmlTextWriterStyle.Position] = "absolute";
|
||||
DivCustomerOrderList.Style[HtmlTextWriterStyle.Left] = "-380px";
|
||||
|
||||
BtnShowOrders.Text = "-";
|
||||
}
|
||||
else
|
||||
{
|
||||
DtgCustomerOrderList.Visible = false;
|
||||
DivCustomerOrderList.Visible = false;
|
||||
BtnShowOrders.Text = "+";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.5448
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
public partial class CustomerList {
|
||||
|
||||
/// <summary>
|
||||
/// customerList control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.DataGrid customerList;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<%@ Page Language="C#" MasterPageFile="~/Shared/MasterPage.master" AutoEventWireup="true" Inherits="CustomerOrders" Codebehind="CustomerOrders.aspx.cs" %>
|
||||
|
||||
<asp:Content ID="content" ContentPlaceHolderID="content" runat="server">
|
||||
|
||||
<h1>Orders for customer <strong><asp:Literal ID="customerName" runat="server" /></strong></h1>
|
||||
|
||||
<p>
|
||||
On this screen you can see all orders that customer has. By clicking "Process Orders" you
|
||||
can send service request to ship all unshipped orders for that customer. Behind the scenes
|
||||
Spring.NET will begin service level transaction that propagates to DAO layer which then
|
||||
automatically participates int the existing transaction.
|
||||
</p>
|
||||
|
||||
<div align="center">
|
||||
<asp:DataGrid ID="customerOrders" runat="server" AllowPaging="false" AllowSorting="false"
|
||||
BorderColor="black" BorderWidth="1" CellPadding="3" AutoGenerateColumns="false"
|
||||
ShowFooter="true">
|
||||
<HeaderStyle CssClass="" />
|
||||
<ItemStyle CssClass="" />
|
||||
<AlternatingItemStyle CssClass="" />
|
||||
<Columns>
|
||||
<asp:BoundColumn HeaderText="OrderID" DataField="ID" />
|
||||
<asp:BoundColumn HeaderText="OrderDate" DataFormatString="{0:d}" DataField="OrderDate" />
|
||||
<asp:BoundColumn HeaderText="ShippedDate" DataFormatString="{0:d}" DataField="ShippedDate" />
|
||||
</Columns>
|
||||
</asp:DataGrid>
|
||||
|
||||
<p>
|
||||
<asp:Button ID="processOrders" runat="server" Text="Process Orders"
|
||||
onclick="processOrders_Click" />
|
||||
</p>
|
||||
<div class="actionPanel">
|
||||
<asp:LinkButton ID="customerList" runat="server" onclick="customerList_Click">« Back to customer list</asp:LinkButton>
|
||||
</div>
|
||||
</div>
|
||||
</asp:Content>
|
||||
@@ -0,0 +1,77 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Web.UI.WebControls;
|
||||
|
||||
using NHibernate;
|
||||
|
||||
using Spring.Northwind.Domain;
|
||||
|
||||
public partial class CustomerOrders : ConversationPage
|
||||
{
|
||||
private ICustomerEditController customerEditController;
|
||||
|
||||
public ICustomerEditController CustomerEditController
|
||||
{
|
||||
set { customerEditController = value; }
|
||||
}
|
||||
|
||||
public Customer SelectedCustomer
|
||||
{
|
||||
get { return customerEditController.CurrentCustomer; }
|
||||
}
|
||||
|
||||
public CustomerOrders()
|
||||
{
|
||||
InitializeControls += Page_InitializeControls;
|
||||
DataBound += Page_DataBound;
|
||||
DataUnbound += Page_DataUnbound;
|
||||
}
|
||||
|
||||
protected override void InitializeDataBindings()
|
||||
{
|
||||
base.InitializeDataBindings();
|
||||
|
||||
// do the "one time" setup for databinding
|
||||
}
|
||||
|
||||
private void Page_DataBound(object sender, EventArgs e)
|
||||
{
|
||||
// perform custom tasks for binding data from model to the form
|
||||
}
|
||||
|
||||
private void Page_DataUnbound(object sender, EventArgs e)
|
||||
{
|
||||
// perform custom tasks for unbinding data from form to the model
|
||||
}
|
||||
|
||||
private void Page_InitializeControls(object sender, EventArgs e)
|
||||
{
|
||||
// create/initialize controls here
|
||||
customerOrders.DataSource = SelectedCustomer.Orders;
|
||||
customerName.Text = SelectedCustomer.CompanyName;
|
||||
if (!IsPostBack)
|
||||
{
|
||||
customerOrders.DataBind();
|
||||
}
|
||||
else
|
||||
{
|
||||
customerOrders.ItemCreated += CustomerList_ItemCreated;
|
||||
}
|
||||
}
|
||||
|
||||
private void CustomerList_ItemCreated(object sender, DataGridItemEventArgs e)
|
||||
{
|
||||
if (e.Item.DataSetIndex > -1)
|
||||
{
|
||||
e.Item.DataItem = ((IList) customerOrders.DataSource)[e.Item.DataSetIndex];
|
||||
}
|
||||
}
|
||||
protected void customerList_Click(object sender, EventArgs e)
|
||||
{
|
||||
SetResult("CustomerList");
|
||||
}
|
||||
protected void processOrders_Click(object sender, EventArgs e)
|
||||
{
|
||||
SetResult("ProcessOrders");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.5448
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
public partial class CustomerOrders {
|
||||
|
||||
/// <summary>
|
||||
/// customerName control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Literal customerName;
|
||||
|
||||
/// <summary>
|
||||
/// customerOrders control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.DataGrid customerOrders;
|
||||
|
||||
/// <summary>
|
||||
/// processOrders control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button processOrders;
|
||||
|
||||
/// <summary>
|
||||
/// customerList control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.LinkButton customerList;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<%@ Page Language="C#" MasterPageFile="~/Shared/MasterPage.master"
|
||||
Inherits="CustomerView" Codebehind="CustomerView.aspx.cs" %>
|
||||
|
||||
<asp:Content ID="content" ContentPlaceHolderID="content" runat="server">
|
||||
<div align="center">
|
||||
<spring:DataBindingPanel runat="server" ID="panel">
|
||||
<fieldset>
|
||||
<legend>Customer details</legend>
|
||||
<table>
|
||||
<tr>
|
||||
<td class="formLabelCell">
|
||||
ID:</td>
|
||||
<td class="formValueCell">
|
||||
<%= CurrentCustomer.Id %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="formLabelCell">
|
||||
Contact:</td>
|
||||
<td class="formValueCell">
|
||||
<%= CurrentCustomer.ContactName %>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</spring:DataBindingPanel>
|
||||
<div class="actionPanel">
|
||||
<asp:LinkButton ID="customerList" runat="server" onclick="customerList_Click">« Back to customer list</asp:LinkButton> |
|
||||
<asp:LinkButton ID="editCustomer" runat="server" onclick="editCustomer_Click">Edit Customer »</asp:LinkButton>
|
||||
</div>
|
||||
</div>
|
||||
</asp:Content>
|
||||
@@ -0,0 +1,69 @@
|
||||
using System;
|
||||
using System.Web;
|
||||
using Spring.Northwind.Dao;
|
||||
using Spring.Northwind.Domain;
|
||||
using Spring.Web.UI;
|
||||
|
||||
public partial class CustomerView : ConversationPage
|
||||
{
|
||||
private ICustomerEditController customerEditController;
|
||||
private ICustomerDao customerDao;
|
||||
|
||||
public ICustomerDao CustomerDao
|
||||
{
|
||||
set { this.customerDao = value; }
|
||||
}
|
||||
|
||||
public ICustomerEditController CustomerEditController
|
||||
{
|
||||
set { this.customerEditController = value; }
|
||||
}
|
||||
|
||||
public Customer CurrentCustomer
|
||||
{
|
||||
get { return customerEditController.CurrentCustomer; }
|
||||
}
|
||||
|
||||
// public static void Edit( Customer customer )
|
||||
// {
|
||||
// HttpContext.Current.Session[typeof(CustomerEditor).FullName + ".Customer"] = customer;
|
||||
// }
|
||||
|
||||
public CustomerView()
|
||||
{
|
||||
this.InitializeControls += new EventHandler(Page_InitializeControls);
|
||||
this.DataBound += new EventHandler(Page_DataBound);
|
||||
this.DataUnbound += new EventHandler(Page_DataUnbound);
|
||||
}
|
||||
|
||||
override protected void InitializeDataBindings()
|
||||
{
|
||||
base.InitializeDataBindings();
|
||||
|
||||
// do the "one time" setup for databinding
|
||||
}
|
||||
|
||||
private void Page_DataBound(object sender, EventArgs e)
|
||||
{
|
||||
// perform custom tasks for binding data from model to the form
|
||||
}
|
||||
|
||||
private void Page_DataUnbound(object sender, EventArgs e)
|
||||
{
|
||||
// perform custom tasks for unbinding data from form to the model
|
||||
}
|
||||
|
||||
private void Page_InitializeControls(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected void customerList_Click(object sender, EventArgs e)
|
||||
{
|
||||
SetResult("CustomerList");
|
||||
}
|
||||
protected void editCustomer_Click(object sender, EventArgs e)
|
||||
{
|
||||
SetResult("EditCustomer");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.5448
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
public partial class CustomerView {
|
||||
|
||||
/// <summary>
|
||||
/// panel control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::Spring.Web.UI.Controls.DataBindingPanel panel;
|
||||
|
||||
/// <summary>
|
||||
/// customerList control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.LinkButton customerList;
|
||||
|
||||
/// <summary>
|
||||
/// editCustomer control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.LinkButton editCustomer;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
<%@ Page Language="C#" MasterPageFile="~/Shared/MasterPage.master" AutoEventWireup="true" Inherits="_Default" Codebehind="Default.aspx.cs" %>
|
||||
|
||||
<asp:Content ID="content" ContentPlaceHolderID="content" runat="server">
|
||||
|
||||
<h1>Welcome to Spring.NET Northwind sample application!</h1>
|
||||
|
||||
<p>
|
||||
This sample demostrates Spring.NET NHibernate integration and concepts. All data access is done using NHibernate and
|
||||
all transactions are automatically handled by Spring.NET.
|
||||
</p>
|
||||
|
||||
<asp:LinkButton ID="customerList" runat="server" onclick="customerList_Click">Proceed to customer listing »</asp:LinkButton>
|
||||
</asp:Content>
|
||||
@@ -0,0 +1,53 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using Spring.Northwind.Dao;
|
||||
using Spring.Northwind.Domain;
|
||||
using Spring.Northwind.Service;
|
||||
|
||||
public partial class _Default : ConversationPage
|
||||
{
|
||||
private ICustomerDao customerDao;
|
||||
private IFulfillmentService fulfillmentService;
|
||||
|
||||
public IFulfillmentService FulfillmentService
|
||||
{
|
||||
set { this.fulfillmentService = value; }
|
||||
}
|
||||
|
||||
public ICustomerDao CustomerDao
|
||||
{
|
||||
set { this.customerDao = value; }
|
||||
}
|
||||
|
||||
protected void Button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
ProcessCustomer();
|
||||
}
|
||||
|
||||
public void ProcessCustomer()
|
||||
{
|
||||
string customerId = "ERNSH";
|
||||
|
||||
// check, if exists
|
||||
Customer customer = customerDao.Get(customerId);
|
||||
|
||||
//Find all orders for customer and ship them
|
||||
this.fulfillmentService.ProcessCustomer(customer.Id);
|
||||
//assertions....
|
||||
|
||||
// prepare for display - note that OrderDetails are loaded lazy here!
|
||||
foreach (Order order in customer.Orders)
|
||||
{
|
||||
Debug.Assert(order.OrderDetails.Count > 0);
|
||||
foreach(OrderDetail details in order.OrderDetails)
|
||||
{
|
||||
details.Quantity = details.Quantity - 1;
|
||||
// do something here
|
||||
}
|
||||
}
|
||||
}
|
||||
protected void customerList_Click(object sender, EventArgs e)
|
||||
{
|
||||
SetResult("CustomerList");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.5448
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
public partial class _Default {
|
||||
|
||||
/// <summary>
|
||||
/// customerList control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.LinkButton customerList;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<%@ Page Language="C#" MasterPageFile="~/Shared/MasterPage.master" AutoEventWireup="true" Inherits="FullfillmentResult" Codebehind="FulfillmentResult.aspx.cs" %>
|
||||
|
||||
<%@ Register Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
|
||||
Namespace="System.Web.UI" TagPrefix="asp" %>
|
||||
<asp:Content ID="content" ContentPlaceHolderID="content" runat="server">
|
||||
<h1>Order processing results</h1>
|
||||
|
||||
<p>
|
||||
Below you can see the results from order fullfilment.
|
||||
</p>
|
||||
|
||||
<div align="center">
|
||||
<div class="actionResultWindow">
|
||||
<asp:Label ID="results" runat="server" Text=""></asp:Label>
|
||||
</div>
|
||||
<div class="actionPanel">
|
||||
<asp:LinkButton ID="customerOrders" runat="server" OnClick="customerOrders_Click">« Back to customer order list</asp:LinkButton>
|
||||
</div>
|
||||
</div>
|
||||
</asp:Content>
|
||||
@@ -0,0 +1,65 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
using log4net.Appender;
|
||||
using log4net.Core;
|
||||
using log4net.Layout;
|
||||
using log4net.Repository;
|
||||
|
||||
using Spring.Northwind.Service;
|
||||
using Spring.Web.UI;
|
||||
|
||||
using LogManager=log4net.LogManager;
|
||||
|
||||
public partial class FullfillmentResult : ConversationPage
|
||||
{
|
||||
private IFulfillmentService fulfillmentService;
|
||||
private ICustomerEditController customerEditController;
|
||||
|
||||
public IFulfillmentService FulfillmentService
|
||||
{
|
||||
set { fulfillmentService = value; }
|
||||
}
|
||||
|
||||
public ICustomerEditController CustomerEditController
|
||||
{
|
||||
set { customerEditController = value; }
|
||||
}
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
// gather log4net output with small hack to get results...
|
||||
ILoggerRepository repository = LogManager.GetRepository();
|
||||
IAppender[] appenders = repository.GetAppenders();
|
||||
MemoryAppender appender = null;
|
||||
foreach (IAppender a in appenders)
|
||||
{
|
||||
if (a is MemoryAppender)
|
||||
{
|
||||
// we found our appender to look results from
|
||||
appender = a as MemoryAppender;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (appender != null)
|
||||
{
|
||||
appender.Clear();
|
||||
fulfillmentService.ProcessCustomer(customerEditController.CurrentCustomer.Id);
|
||||
LoggingEvent[] events = appender.GetEvents();
|
||||
StringWriter stringWriter = new StringWriter();
|
||||
PatternLayout layout = new PatternLayout("%date{HH:mm:ss} %-5level %logger{1}: %message<br />");
|
||||
foreach (LoggingEvent loggingEvent in events)
|
||||
{
|
||||
layout.Format(stringWriter, loggingEvent);
|
||||
}
|
||||
|
||||
results.Text = stringWriter.ToString();
|
||||
}
|
||||
|
||||
}
|
||||
protected void customerOrders_Click(object sender, EventArgs e)
|
||||
{
|
||||
SetResult("Back");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.5448
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
public partial class FullfillmentResult {
|
||||
|
||||
/// <summary>
|
||||
/// results control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Label results;
|
||||
|
||||
/// <summary>
|
||||
/// customerOrders control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.LinkButton customerOrders;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<%@ Application Language="C#" %>
|
||||
|
||||
<script runat="server">
|
||||
|
||||
void Application_Start(object sender, EventArgs e)
|
||||
{
|
||||
// Code that runs on application startup
|
||||
}
|
||||
|
||||
void Application_End(object sender, EventArgs e)
|
||||
{
|
||||
// Code that runs on application shutdown
|
||||
}
|
||||
|
||||
void Application_Error(object sender, EventArgs e)
|
||||
{
|
||||
// Code that runs when an unhandled error occurs
|
||||
|
||||
}
|
||||
|
||||
void Session_Start(object sender, EventArgs e)
|
||||
{
|
||||
// Code that runs when a new session is started
|
||||
|
||||
}
|
||||
|
||||
void Session_End(object sender, EventArgs e)
|
||||
{
|
||||
// Code that runs when a session ends.
|
||||
// Note: The Session_End event is raised only when the sessionstate mode
|
||||
// is set to InProc in the Web.config file. If session mode is set to StateServer
|
||||
// or SQLServer, the event is not raised.
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 540 B |
|
After Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 22 KiB |
@@ -0,0 +1,45 @@
|
||||
<%@ Master Language="C#" AutoEventWireup="true" Inherits="Shared_MasterPage" Codebehind="MasterPage.master.cs" %>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head runat="server">
|
||||
<title>Spring.NET NHibernate Northwind Example</title>
|
||||
<link type="text/css" rel="Stylesheet" href="../CSS/style.css" />
|
||||
</head>
|
||||
<body>
|
||||
<form id="form1" runat="server">
|
||||
<a name="top" />
|
||||
<div align="center">
|
||||
<div style="position: relative; top: 0px; width: 719px;">
|
||||
<table border="0" cellpadding="0" cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td id="headerCell">
|
||||
<div class="logo">
|
||||
<a href="~/Default.aspx" runat="server">
|
||||
<img src="img/logo.png" border="0" height="84" width="271"></a>
|
||||
</div>
|
||||
<div class="headerText">
|
||||
Goes Northwind <br /> with NHibernate
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="contentCell">
|
||||
<div style="margin: 20px;">
|
||||
|
||||
<asp:ContentPlaceHolder ID="content" runat="server">
|
||||
</asp:ContentPlaceHolder>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="footerCell">
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,9 @@
|
||||
using System;
|
||||
|
||||
public partial class Shared_MasterPage : System.Web.UI.MasterPage
|
||||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.5448
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
public partial class Shared_MasterPage {
|
||||
|
||||
/// <summary>
|
||||
/// form1 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
|
||||
|
||||
/// <summary>
|
||||
/// content control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.ContentPlaceHolder content;
|
||||
}
|
||||
@@ -0,0 +1,238 @@
|
||||
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{8DCDA20D-DF9F-4723-9649-BC6934B36DC4}</ProjectGuid>
|
||||
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Spring.Northwind.Web</RootNamespace>
|
||||
<AssemblyName>Spring.Northwind.Web</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Common.Logging, Version=1.2.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Common.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Common.Logging.Log4Net, Version=1.2.0.2, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\Common.Logging.Log4Net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\lib\NHibernate32\net\3.5\Iesi.Collections.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\lib\NHibernate32\net\3.5\NHibernate.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Aop, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Spring.Aop.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.ConversationWA.NH32, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Spring.ConversationWA.NH32.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Core, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Spring.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Data, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Spring.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Data.NHibernate32, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Spring.Data.NHibernate32.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Web, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Spring.Web.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\System.Data.SQLite.DLL</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Extensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Web.Services" />
|
||||
<Reference Include="System.EnterpriseServices" />
|
||||
<Reference Include="System.Web.Mobile" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="CSS\style.css" />
|
||||
<Content Include="CustomerEditor.aspx" />
|
||||
<Content Include="CustomerList.aspx" />
|
||||
<Content Include="CustomerOrders.aspx" />
|
||||
<Content Include="CustomerView.aspx" />
|
||||
<Content Include="Default.aspx" />
|
||||
<Content Include="FulfillmentResult.aspx" />
|
||||
<Content Include="Global.asax" />
|
||||
<Content Include="Img\bg-spring.png" />
|
||||
<Content Include="Img\footern.gif" />
|
||||
<Content Include="Img\header-spring.png" />
|
||||
<Content Include="Img\logo.png" />
|
||||
<Content Include="Img\springNet_release.png" />
|
||||
<Content Include="Logs\log.txt" />
|
||||
<Content Include="Web.net40.config" />
|
||||
<Content Include="Web.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ConversationPage.cs">
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerEditor.aspx.designer.cs">
|
||||
<DependentUpon>CustomerEditor.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerList.aspx.designer.cs">
|
||||
<DependentUpon>CustomerList.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerOrders.aspx.designer.cs">
|
||||
<DependentUpon>CustomerOrders.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerView.aspx.designer.cs">
|
||||
<DependentUpon>CustomerView.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Default.aspx.designer.cs">
|
||||
<DependentUpon>Default.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FulfillmentResult.aspx.designer.cs">
|
||||
<DependentUpon>FulfillmentResult.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controller\ICustomerEditController.cs" />
|
||||
<Compile Include="Controller\NHibernateCustomerEditController.cs" />
|
||||
<Compile Include="CustomerEditor.aspx.cs">
|
||||
<DependentUpon>CustomerEditor.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerList.aspx.cs">
|
||||
<DependentUpon>CustomerList.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerOrders.aspx.cs">
|
||||
<DependentUpon>CustomerOrders.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerView.aspx.cs">
|
||||
<DependentUpon>CustomerView.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Default.aspx.cs">
|
||||
<DependentUpon>Default.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FulfillmentResult.aspx.cs">
|
||||
<DependentUpon>FulfillmentResult.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Shared\MasterPage.master.cs">
|
||||
<DependentUpon>MasterPage.master</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Shared\MasterPage.master.designer.cs">
|
||||
<DependentUpon>MasterPage.master</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="App_Themes\Spring\Spring.skin" />
|
||||
<Content Include="Config\Aspects.xml" />
|
||||
<Content Include="Config\Log4Net.xml" />
|
||||
<Content Include="Shared\MasterPage.master" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Spring.Northwind.Dao.NHibernate\Spring.Northwind.Dao.NHibernate.2008.csproj">
|
||||
<Project>{6E4F55A0-C281-4706-A08B-BDEC2D2FBDA4}</Project>
|
||||
<Name>Spring.Northwind.Dao.NHibernate.2008</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Spring.Northwind.Dao\Spring.Northwind.Dao.2008.csproj">
|
||||
<Project>{7F45EEA2-50AC-44E2-85A6-2FFB02E38C44}</Project>
|
||||
<Name>Spring.Northwind.Dao.2008</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Spring.Northwind.Service\Spring.Northwind.Service.2008.csproj">
|
||||
<Project>{9E15876F-E9E0-43B7-9874-B54F163757D6}</Project>
|
||||
<Name>Spring.Northwind.Service.2008</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Web.net30.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Web.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="App_Data\" />
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>False</UseIIS>
|
||||
<AutoAssignPort>True</AutoAssignPort>
|
||||
<DevelopmentServerPort>60934</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
<IISUrl>
|
||||
</IISUrl>
|
||||
<NTLMAuthentication>False</NTLMAuthentication>
|
||||
<UseCustomServer>False</UseCustomServer>
|
||||
<CustomServerUrl>
|
||||
</CustomServerUrl>
|
||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||
</WebProjectProperties>
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>copy "$(ProjectDir)Web.net30.config" "$(ProjectDir)Web.config" /Y</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,235 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{8EEAB62E-DBAF-4C5F-9906-77B2A817F945}</ProjectGuid>
|
||||
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Spring.Northwind.Web</RootNamespace>
|
||||
<AssemblyName>Spring.Northwind.Web</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation />
|
||||
<TargetFrameworkProfile />
|
||||
<UseIISExpress>false</UseIISExpress>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Common.Logging, Version=1.2.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Common.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Common.Logging.Log4Net, Version=1.2.0.2, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\Common.Logging.Log4Net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\lib\NHibernate32\net\4.0\Iesi.Collections.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NHibernate">
|
||||
<HintPath>..\..\..\..\..\lib\NHibernate32\net\4.0\NHibernate.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Aop, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Spring.Aop.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.ConversationWA.NH32">
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Spring.ConversationWA.NH32.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Core, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Spring.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Data, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Spring.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Data.NHibernate32, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Spring.Data.NHibernate32.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Web, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Spring.Web.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\System.Data.SQLite.DLL</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.ApplicationServices" />
|
||||
<Reference Include="System.Web.DynamicData" />
|
||||
<Reference Include="System.Web.Entity" />
|
||||
<Reference Include="System.Web.Extensions" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Web.Services" />
|
||||
<Reference Include="System.EnterpriseServices" />
|
||||
<Reference Include="System.Web.Mobile" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="CSS\style.css" />
|
||||
<Content Include="CustomerEditor.aspx" />
|
||||
<Content Include="CustomerList.aspx" />
|
||||
<Content Include="CustomerOrders.aspx" />
|
||||
<Content Include="CustomerView.aspx" />
|
||||
<Content Include="Default.aspx" />
|
||||
<Content Include="FulfillmentResult.aspx" />
|
||||
<Content Include="Global.asax" />
|
||||
<Content Include="Img\bg-spring.png" />
|
||||
<Content Include="Img\footern.gif" />
|
||||
<Content Include="Img\header-spring.png" />
|
||||
<Content Include="Img\logo.png" />
|
||||
<Content Include="Img\springNet_release.png" />
|
||||
<Content Include="Logs\log.txt" />
|
||||
<Content Include="Web.config" />
|
||||
<Content Include="Web.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ConversationPage.cs">
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerEditor.aspx.designer.cs">
|
||||
<DependentUpon>CustomerEditor.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerList.aspx.designer.cs">
|
||||
<DependentUpon>CustomerList.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerOrders.aspx.designer.cs">
|
||||
<DependentUpon>CustomerOrders.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerView.aspx.designer.cs">
|
||||
<DependentUpon>CustomerView.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Default.aspx.designer.cs">
|
||||
<DependentUpon>Default.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FulfillmentResult.aspx.designer.cs">
|
||||
<DependentUpon>FulfillmentResult.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controller\ICustomerEditController.cs" />
|
||||
<Compile Include="Controller\NHibernateCustomerEditController.cs" />
|
||||
<Compile Include="CustomerEditor.aspx.cs">
|
||||
<DependentUpon>CustomerEditor.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerList.aspx.cs">
|
||||
<DependentUpon>CustomerList.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerOrders.aspx.cs">
|
||||
<DependentUpon>CustomerOrders.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerView.aspx.cs">
|
||||
<DependentUpon>CustomerView.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Default.aspx.cs">
|
||||
<DependentUpon>Default.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FulfillmentResult.aspx.cs">
|
||||
<DependentUpon>FulfillmentResult.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Shared\MasterPage.master.cs">
|
||||
<DependentUpon>MasterPage.master</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Shared\MasterPage.master.designer.cs">
|
||||
<DependentUpon>MasterPage.master</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="App_Themes\Spring\Spring.skin" />
|
||||
<Content Include="Config\Aspects.xml" />
|
||||
<Content Include="Config\Log4Net.xml" />
|
||||
<Content Include="Shared\MasterPage.master" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Spring.Northwind.Dao.NHibernate\Spring.Northwind.Dao.NHibernate.2010.csproj">
|
||||
<Project>{6E4F55A0-C281-4706-A08B-BDEC2D2FBDA4}</Project>
|
||||
<Name>Spring.Northwind.Dao.NHibernate.2010</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Spring.Northwind.Dao\Spring.Northwind.Dao.2010.csproj">
|
||||
<Project>{7F45EEA2-50AC-44E2-85A6-2FFB02E38C44}</Project>
|
||||
<Name>Spring.Northwind.Dao.2010</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Spring.Northwind.Service\Spring.Northwind.Service.2010.csproj">
|
||||
<Project>{9E15876F-E9E0-43B7-9874-B54F163757D6}</Project>
|
||||
<Name>Spring.Northwind.Service.2010</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="App_Data\" />
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Web.net30.config" />
|
||||
<Content Include="Web.net40.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>False</UseIIS>
|
||||
<AutoAssignPort>True</AutoAssignPort>
|
||||
<DevelopmentServerPort>60934</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
<IISUrl>
|
||||
</IISUrl>
|
||||
<NTLMAuthentication>False</NTLMAuthentication>
|
||||
<UseCustomServer>False</UseCustomServer>
|
||||
<CustomServerUrl>
|
||||
</CustomServerUrl>
|
||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||
</WebProjectProperties>
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>copy "$(ProjectDir)Web.net40.config" "$(ProjectDir)Web.config" /Y</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,73 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Note: As an alternative to hand editing this file you can use the
|
||||
web admin tool to configure settings for your application. Use
|
||||
the Website->Asp.Net Configuration option in Visual Studio.
|
||||
A full list of settings and comments can be found in
|
||||
machine.config.comments usually located in
|
||||
\Windows\Microsoft.Net\Framework\v2.x\Config
|
||||
-->
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="common">
|
||||
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/>
|
||||
</sectionGroup>
|
||||
<sectionGroup name="spring">
|
||||
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
|
||||
<section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
|
||||
</sectionGroup>
|
||||
<section name="databaseSettings" type="System.Configuration.NameValueSectionHandler"/>
|
||||
</configSections>
|
||||
<common>
|
||||
<logging>
|
||||
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
|
||||
<!-- choices are INLINE, FILE, FILE-WATCH, EXTERNAL-->
|
||||
<!-- otherwise BasicConfigurer.Configure is used -->
|
||||
<!-- log4net configuration file is specified with key configFile-->
|
||||
<arg key="configType" value="FILE-WATCH"/>
|
||||
<arg key="configFile" value="~/Config/Log4Net.xml"/>
|
||||
</factoryAdapter>
|
||||
</logging>
|
||||
</common>
|
||||
<spring>
|
||||
<parsers>
|
||||
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/>
|
||||
<parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data"/>
|
||||
</parsers>
|
||||
<context>
|
||||
<resource uri="~/Config/Aspects.xml"/>
|
||||
<resource uri="assembly://Spring.Northwind.Dao.NHibernate/Spring.Northwind.Dao/DaoConvWA.xml"/>
|
||||
<resource uri="assembly://Spring.Northwind.Service/Spring.Northwind.Service/Services.xml"/>
|
||||
<resource uri="~/Web.xml"/>
|
||||
</context>
|
||||
</spring>
|
||||
<!-- These properties are referenced in Dao.xml -->
|
||||
<databaseSettings>
|
||||
<add key="db.datasource" value=".\SQLEXPRESS; Integrated Security=true; AttachDbFilename=|DataDirectory|northwnd.mdf; User Instance=true;"/>
|
||||
<add key="db.user" value="springqa"/>
|
||||
<add key="db.password" value="springqa"/>
|
||||
<add key="db.database" value="Northwind"/>
|
||||
</databaseSettings>
|
||||
<appSettings>
|
||||
<add key="Spring.Data.NHibernate.Support.OpenSessionInViewModule.SessionFactoryObjectName" value="NHibernateSessionFactory"/>
|
||||
</appSettings>
|
||||
<connectionStrings/>
|
||||
<system.web>
|
||||
<httpModules>
|
||||
<add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
|
||||
<!--<add name="OpenSessionInView" type="Spring.Data.NHibernate.Support.OpenSessionInViewModule, Spring.Data.NHibernate21"/>-->
|
||||
<!--Module that controls the conversations at the end of the request. Ends the Conversations in timeout and pause the conversations at the end of the request.-->
|
||||
<add name="ConversationModule" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH32"/>
|
||||
</httpModules>
|
||||
<httpHandlers>
|
||||
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
|
||||
<add verb="*" path="ContextMonitor.ashx" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
|
||||
</httpHandlers>
|
||||
<compilation debug="true" targetFramework="4.0"/>
|
||||
<pages theme="Spring" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
|
||||
<controls>
|
||||
<add tagPrefix="spring" namespace="Spring.Web.UI.Controls" assembly="Spring.Web"/>
|
||||
</controls>
|
||||
</pages>
|
||||
</system.web>
|
||||
</configuration>
|
||||
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Note: As an alternative to hand editing this file you can use the
|
||||
web admin tool to configure settings for your application. Use
|
||||
the Website->Asp.Net Configuration option in Visual Studio.
|
||||
A full list of settings and comments can be found in
|
||||
machine.config.comments usually located in
|
||||
\Windows\Microsoft.Net\Framework\v2.x\Config
|
||||
-->
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="common">
|
||||
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/>
|
||||
</sectionGroup>
|
||||
<sectionGroup name="spring">
|
||||
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
|
||||
<section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
|
||||
</sectionGroup>
|
||||
<section name="databaseSettings" type="System.Configuration.NameValueSectionHandler"/>
|
||||
</configSections>
|
||||
<common>
|
||||
<logging>
|
||||
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
|
||||
<!-- choices are INLINE, FILE, FILE-WATCH, EXTERNAL-->
|
||||
<!-- otherwise BasicConfigurer.Configure is used -->
|
||||
<!-- log4net configuration file is specified with key configFile-->
|
||||
<arg key="configType" value="FILE-WATCH"/>
|
||||
<arg key="configFile" value="~/Config/Log4Net.xml"/>
|
||||
</factoryAdapter>
|
||||
</logging>
|
||||
</common>
|
||||
<spring>
|
||||
<parsers>
|
||||
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/>
|
||||
<parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data"/>
|
||||
</parsers>
|
||||
<context>
|
||||
<resource uri="~/Config/Aspects.xml"/>
|
||||
<resource uri="assembly://Spring.Northwind.Dao.NHibernate/Spring.Northwind.Dao/DaoConvWA.xml"/>
|
||||
<resource uri="assembly://Spring.Northwind.Service/Spring.Northwind.Service/Services.xml"/>
|
||||
<resource uri="~/Web.xml"/>
|
||||
</context>
|
||||
</spring>
|
||||
<!-- These properties are referenced in Dao.xml -->
|
||||
<databaseSettings>
|
||||
<add key="db.datasource" value=".\SQLEXPRESS; Integrated Security=true; AttachDbFilename=|DataDirectory|northwnd.mdf; User Instance=true;"/>
|
||||
<add key="db.user" value="springqa"/>
|
||||
<add key="db.password" value="springqa"/>
|
||||
<add key="db.database" value="Northwind"/>
|
||||
</databaseSettings>
|
||||
<appSettings>
|
||||
<add key="Spring.Data.NHibernate.Support.OpenSessionInViewModule.SessionFactoryObjectName" value="NHibernateSessionFactory"/>
|
||||
</appSettings>
|
||||
<connectionStrings/>
|
||||
<system.web>
|
||||
<httpModules>
|
||||
<add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
|
||||
<!--<add name="OpenSessionInView" type="Spring.Data.NHibernate.Support.OpenSessionInViewModule, Spring.Data.NHibernate21"/>-->
|
||||
<!--Module that controls the conversations at the end of the request. Ends the Conversations in timeout and pause the conversations at the end of the request.-->
|
||||
<add name="ConversationModule" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH32"/>
|
||||
</httpModules>
|
||||
<httpHandlers>
|
||||
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
|
||||
<add verb="*" path="*.asmx" type="Spring.Web.Services.WebServiceHandlerFactory, Spring.Web"/>
|
||||
<add verb="*" path="ContextMonitor.ashx" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
|
||||
</httpHandlers>
|
||||
<compilation debug="true"/>
|
||||
<pages theme="Spring">
|
||||
<controls>
|
||||
<add tagPrefix="spring" namespace="Spring.Web.UI.Controls" assembly="Spring.Web"/>
|
||||
</controls>
|
||||
</pages>
|
||||
</system.web>
|
||||
</configuration>
|
||||
@@ -0,0 +1,73 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Note: As an alternative to hand editing this file you can use the
|
||||
web admin tool to configure settings for your application. Use
|
||||
the Website->Asp.Net Configuration option in Visual Studio.
|
||||
A full list of settings and comments can be found in
|
||||
machine.config.comments usually located in
|
||||
\Windows\Microsoft.Net\Framework\v2.x\Config
|
||||
-->
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="common">
|
||||
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/>
|
||||
</sectionGroup>
|
||||
<sectionGroup name="spring">
|
||||
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
|
||||
<section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
|
||||
</sectionGroup>
|
||||
<section name="databaseSettings" type="System.Configuration.NameValueSectionHandler"/>
|
||||
</configSections>
|
||||
<common>
|
||||
<logging>
|
||||
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
|
||||
<!-- choices are INLINE, FILE, FILE-WATCH, EXTERNAL-->
|
||||
<!-- otherwise BasicConfigurer.Configure is used -->
|
||||
<!-- log4net configuration file is specified with key configFile-->
|
||||
<arg key="configType" value="FILE-WATCH"/>
|
||||
<arg key="configFile" value="~/Config/Log4Net.xml"/>
|
||||
</factoryAdapter>
|
||||
</logging>
|
||||
</common>
|
||||
<spring>
|
||||
<parsers>
|
||||
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/>
|
||||
<parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data"/>
|
||||
</parsers>
|
||||
<context>
|
||||
<resource uri="~/Config/Aspects.xml"/>
|
||||
<resource uri="assembly://Spring.Northwind.Dao.NHibernate/Spring.Northwind.Dao/DaoConvWA.xml"/>
|
||||
<resource uri="assembly://Spring.Northwind.Service/Spring.Northwind.Service/Services.xml"/>
|
||||
<resource uri="~/Web.xml"/>
|
||||
</context>
|
||||
</spring>
|
||||
<!-- These properties are referenced in Dao.xml -->
|
||||
<databaseSettings>
|
||||
<add key="db.datasource" value=".\SQLEXPRESS; Integrated Security=true; AttachDbFilename=|DataDirectory|northwnd.mdf; User Instance=true;"/>
|
||||
<add key="db.user" value="springqa"/>
|
||||
<add key="db.password" value="springqa"/>
|
||||
<add key="db.database" value="Northwind"/>
|
||||
</databaseSettings>
|
||||
<appSettings>
|
||||
<add key="Spring.Data.NHibernate.Support.OpenSessionInViewModule.SessionFactoryObjectName" value="NHibernateSessionFactory"/>
|
||||
</appSettings>
|
||||
<connectionStrings/>
|
||||
<system.web>
|
||||
<httpModules>
|
||||
<add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
|
||||
<!--<add name="OpenSessionInView" type="Spring.Data.NHibernate.Support.OpenSessionInViewModule, Spring.Data.NHibernate21"/>-->
|
||||
<!--Module that controls the conversations at the end of the request. Ends the Conversations in timeout and pause the conversations at the end of the request.-->
|
||||
<add name="ConversationModule" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA.NH32"/>
|
||||
</httpModules>
|
||||
<httpHandlers>
|
||||
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
|
||||
<add verb="*" path="ContextMonitor.ashx" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
|
||||
</httpHandlers>
|
||||
<compilation debug="true" targetFramework="4.0"/>
|
||||
<pages theme="Spring" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
|
||||
<controls>
|
||||
<add tagPrefix="spring" namespace="Spring.Web.UI.Controls" assembly="Spring.Web"/>
|
||||
</controls>
|
||||
</pages>
|
||||
</system.web>
|
||||
</configuration>
|
||||
@@ -0,0 +1,135 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<objects xmlns="http://www.springframework.net">
|
||||
|
||||
<!-- Referenced by main application context configuration file -->
|
||||
|
||||
<description>
|
||||
The Northwind web layer definitions
|
||||
</description>
|
||||
|
||||
<object name="CustomerEditController" type="NHibernateCustomerEditController" singleton="false">
|
||||
<constructor-arg name="sessionFactory" ref="NHibernateSessionFactory"/>
|
||||
</object>
|
||||
|
||||
<object type="Default.aspx">
|
||||
<property name="Conversation" ref="convDefault"/>
|
||||
<property name="FulfillmentService" ref="FulfillmentService" />
|
||||
<property name="CustomerDao" ref="CustomerDao" />
|
||||
<property name="Results">
|
||||
<dictionary>
|
||||
<entry key="CustomerList" value="redirect:CustomerList.aspx" />
|
||||
</dictionary>
|
||||
</property>
|
||||
</object>
|
||||
|
||||
<!--Conversation for 'Default.aspx'-->
|
||||
<!--"convDefault" will have only one functionality: trigger the release of other conversations when started (StartResumeConversation())-->
|
||||
<object name="convDefault" type="Spring.ConversationWA.Imple.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
|
||||
<property name="Id" value="convDefault"></property>
|
||||
<property name="TimeOut" value="0"></property>
|
||||
<property name="ConversationManager" ref="conversationManager"></property>
|
||||
<property name="SessionFactory" ref="NHibernateSessionFactory"/>
|
||||
<property name="DbProvider" ref="DbProvider"/>
|
||||
</object>
|
||||
|
||||
|
||||
<!--Using workaround for 'conversation scope' to reference for 'CustomerEditController'. It is not as volatile as "request scope" not as durable as the "session scope"-->
|
||||
<object name="CustomerEditPage" abstract="true">
|
||||
<property name="CustomerEditController" expression="@(convCustomer)['CustomerEditController']"/>
|
||||
<property name="Conversation" ref="convCustomer"/>
|
||||
</object>
|
||||
|
||||
<!--Using workaround for 'conversation scope' to reference for 'CustomerEditController'. It is not as volatile as "request scope" not as durable as the "session scope"-->
|
||||
<object type="CustomerList.aspx" parent="CustomerEditPage">
|
||||
<property name="CustomerDao" ref="CustomerDao" />
|
||||
<property name="Results">
|
||||
<dictionary>
|
||||
<entry key="ViewCustomer" value="redirect:CustomerView.aspx" />
|
||||
<entry key="ViewOrders" value="redirect:CustomerOrders.aspx" />
|
||||
</dictionary>
|
||||
</property>
|
||||
</object>
|
||||
|
||||
<object type="CustomerEditor.aspx" parent="CustomerEditPage">
|
||||
<property name="CustomerDao" ref="CustomerDao" />
|
||||
<property name="Results">
|
||||
<dictionary>
|
||||
<entry key="CustomerList" value="redirect:CustomerList.aspx" />
|
||||
<entry key="ViewCustomer" value="redirect:CustomerView.aspx" />
|
||||
<entry key="CancelEdit" value="redirect:CustomerView.aspx" />
|
||||
</dictionary>
|
||||
</property>
|
||||
</object>
|
||||
|
||||
<!--Using workaround for 'conversation scope' to reference for 'CustomerEditController'. It is not as volatile as "request scope" not as durable as the "session scope"-->
|
||||
<object type="CustomerView.aspx">
|
||||
<property name="CustomerDao" ref="CustomerDao" />
|
||||
<property name="CustomerEditController" expression="@(convCustomer)['CustomerEditController']" />
|
||||
<property name="Conversation" ref="convCustomer"/>
|
||||
<property name="Results">
|
||||
<dictionary>
|
||||
<entry key="EditCustomer" value="redirect:CustomerEditor.aspx" />
|
||||
<entry key="CustomerList" value="redirect:CustomerList.aspx" />
|
||||
</dictionary>
|
||||
</property>
|
||||
</object>
|
||||
|
||||
<object type="CustomerOrders.aspx" parent="CustomerEditPage">
|
||||
<property name="Results">
|
||||
<dictionary>
|
||||
<entry key="CustomerList" value="redirect:CustomerList.aspx" />
|
||||
<entry key="ProcessOrders" value="redirect:FulfillmentResult.aspx" />
|
||||
</dictionary>
|
||||
</property>
|
||||
</object>
|
||||
|
||||
<!--Using workaround for 'conversation scope' to reference for 'CustomerEditController'. It is not as volatile as "request scope" not as durable as the "session scope"-->
|
||||
<object type="FulfillmentResult.aspx">
|
||||
<property name="FulfillmentService" ref="FulfillmentService" />
|
||||
<property name="CustomerEditController" expression="@(convCustomer)['CustomerEditController']" />
|
||||
<property name="Conversation" ref="convCustomer"/>
|
||||
<property name="Results">
|
||||
<dictionary>
|
||||
<entry key="Back" value="redirect:CustomerOrders.aspx" />
|
||||
</dictionary>
|
||||
</property>
|
||||
</object>
|
||||
|
||||
<!--Conversation for 'CustomerEditor.aspx', 'CustomerList.aspx', 'CustomerOrders.aspx', 'CustomerView.aspx', and 'FulfillmentResult.aspx'-->
|
||||
<!--Important: If the application had other parties ("management employees" for example), they should use another conversation.-->
|
||||
<object name="convCustomer" type="Spring.ConversationWA.Imple.WebConversationSpringState, Spring.ConversationWA.NH32" scope="session">
|
||||
<property name="Id" value="convCustomer"></property>
|
||||
<property name="TimeOut" value="0"></property>
|
||||
<property name="ConversationManager" ref="conversationManager"></property>
|
||||
<property name="SessionFactory" ref="NHibernateSessionFactory"/>
|
||||
<property name="DbProvider" ref="DbProvider"/>
|
||||
<!--Using workaround for 'conversation scope' to reference for 'CustomerEditController'. It is not as volatile as "request scope" not as durable as the "session scope"-->
|
||||
<property name="['CustomerEditController']" ref="CustomerEditController"></property>
|
||||
</object>
|
||||
|
||||
<!--Conversation Manager-->
|
||||
<object name="conversationManager" type="Spring.ConversationWA.Imple.WebConversationManager, Spring.ConversationWA.NH32" scope="session">
|
||||
<property name="SessionFactory" ref="NHibernateSessionFactory"/>
|
||||
<property name="EndPaused" value="true"/>
|
||||
</object>
|
||||
|
||||
<!--Configuration for Spring HttpModule interceptor's-->
|
||||
<object name="HttpApplicationConfigurer" type="Spring.Context.Support.HttpApplicationConfigurer, Spring.Web">
|
||||
<property name="ModuleTemplates">
|
||||
<dictionary>
|
||||
<entry key="ConversationModule">
|
||||
<!-- this name must match the module name -->
|
||||
<object>
|
||||
<!-- select "view source" in your browser on any page to see the appended html comment -->
|
||||
<property name="ConversationManagerNameList">
|
||||
<list element-type="string">
|
||||
<value>conversationManager</value>
|
||||
</list>
|
||||
</property>
|
||||
</object>
|
||||
</entry>
|
||||
</dictionary>
|
||||
</property>
|
||||
</object>
|
||||
|
||||
</objects>
|
||||
@@ -0,0 +1,196 @@
|
||||
I prepared the sample application and posted in
|
||||
https://jira.springsource.org/browse/SPRNET-1431 as the file
|
||||
"Spring.ConversationWA.example.zip.".
|
||||
Below explanations to clarify (or not) what I did.
|
||||
|
||||
This "sample application" is a modification of "Spring.Data.NHibernate.Northwind"
|
||||
contained in the version "1.3.0" of "Spring.NET" to use Conversation.
|
||||
Currently, the "Spring.Net" has no "conversation scope" or implements the
|
||||
concept of "Extended Persistence Context" ("session per conversation strategy").
|
||||
|
||||
In this Sample Application the objective is demonstrate:
|
||||
1) How to keep instances of objects in a mimicry of "conversation scope".
|
||||
Shown in [expression="@(convCustomer)['CustomerEditController']"].
|
||||
2) How to enjoy the "extended persistence context". "Lazy load errors" do not happen
|
||||
anymore and repeated calls of "ISession.Get" to a "same record" do not cause
|
||||
numerous visits to the database, we take advantage of NHibernatecache.
|
||||
The modifications on "CustomerList.aspx" demonstrate this.
|
||||
To verify the effectiveness of Conversation, comment on
|
||||
"App_Code\ConversationPage.cs" the line
|
||||
"this.Conversation.StartResumeConversation ();" then you will see the error
|
||||
"failed to lazily initialize a collection of role" occurring at the click
|
||||
of the button "+" on "CustomerList.aspx".
|
||||
|
||||
|
||||
IMPORTANT: Never use a single conversation for the entire application (with the
|
||||
same duration of the "HTTP Session"). Remember, NHibernate keeps a cache of all
|
||||
loaded objects, if the conversation is held for a long time this cache tends to
|
||||
grow indefinitely (the limit is the amount of database records). That is, each
|
||||
conversation should be limited to a subset of the application pages, and must
|
||||
be discarded at the end of interaction with this subset
|
||||
(IConversationState.EndConversation()).
|
||||
In "Spring.ConversationWA.Imple.WebConversationManager" keep
|
||||
[<property name="EndPaused" value="true"/>] is recommended, so when you start
|
||||
a conversation the others are discarded.
|
||||
|
||||
ADDITIONAL INFORMATION: The unit tests ("Spring.Northwind.IntegrationTests.2008")
|
||||
are not working. But there is no problem because it is not related to the
|
||||
changes made to support conversation, in fact they were already resulting in
|
||||
errors even before that.
|
||||
|
||||
|
||||
List of changes in "Spring.Data.NHibernate.Northwind":
|
||||
|
||||
-Spring.Northwind.Web.References.2008
|
||||
Adding links to schemes to enable auto complete.
|
||||
-web.config
|
||||
-module, added:
|
||||
<!--Module that controls the conversations at the end of the request. Ends the Conversations in timeout and pause the conversations at the end of the request.-->
|
||||
<add name="ConversationModule" type="Spring.ConversationWA.HttpModule.ConversationModule, Spring.ConversationWA"/>
|
||||
-module, removed:
|
||||
<add name="OpenSessionInView" type="Spring.Data.NHibernate.Support.OpenSessionInViewModule, Spring.Data.NHibernate21"/>
|
||||
|
||||
-web.xml
|
||||
-module configurations
|
||||
<!--Configuration for Spring HttpModule interceptor's-->
|
||||
<object name="HttpApplicationConfigurer" type="Spring.Context.Support.HttpApplicationConfigurer, Spring.Web">
|
||||
<property name="ModuleTemplates">
|
||||
<dictionary>
|
||||
<entry key="ConversationModule">
|
||||
<!-- this name must match the module name -->
|
||||
<object>
|
||||
<!-- select "view source" in your browser on any page to see the appended html comment -->
|
||||
<property name="ConversationManagerNameList">
|
||||
<list element-type="string">
|
||||
<value>conversationManager</value>
|
||||
</list>
|
||||
</property>
|
||||
</object>
|
||||
</entry>
|
||||
</dictionary>
|
||||
</property>
|
||||
</object>
|
||||
|
||||
-conversation manager
|
||||
<!--Conversation Manager-->
|
||||
<object name="conversationManager" type="Spring.ConversationWA.Imple.WebConversationManager, Spring.ConversationWA" scope="session">
|
||||
<property name="SessionFactory" ref="NHibernateSessionFactory"/>
|
||||
<property name="EndPaused" value="true"/>
|
||||
</object>
|
||||
-Customer Conversation
|
||||
<!--Conversation for 'CustomerEditor.aspx', 'CustomerList.aspx', 'CustomerOrders.aspx', 'CustomerView.aspx', and 'FulfillmentResult.aspx'-->
|
||||
<!--Important: If the application had other parties ("management employees" for example), they should use another conversation.-->
|
||||
<object name="convCustomer" type="Spring.ConversationWA.Imple.WebConversationSpringState, Spring.ConversationWA" scope="session">
|
||||
<property name="Id" value="convCustomer"></property>
|
||||
<property name="TimeOut" value="0"></property>
|
||||
<property name="ConversationManager" ref="conversationManager"></property>
|
||||
<property name="SessionFactory" ref="NHibernateSessionFactory"/>
|
||||
<property name="DbProvider" ref="DbProvider"/>
|
||||
<!--Using workaround for 'conversation scope' to reference for 'CustomerEditController'. It is not as volatile as "request scope" not as durable as the "session scope"-->
|
||||
<property name="['CustomerEditController']" ref="CustomerEditController"></property>
|
||||
</object>
|
||||
|
||||
-Change "CustomerEditController" scope, remove [scope="session"] and put [singleton="false"]:
|
||||
<object name="CustomerEditController" type="NHibernateCustomerEditController" singleton="false">
|
||||
<constructor-arg name="sessionFactory" ref="NHibernateSessionFactory"/>
|
||||
</object>
|
||||
...
|
||||
|
||||
-Change reference for 'CustomerEditController' remove [ref="CustomerEditController"] and put [expression="@(convCustomer)['CustomerEditController']"]
|
||||
<!--Using workaround for 'conversation scope' to reference for 'CustomerEditController'. It is not as volatile as "request scope" not as durable as the "session scope"-->
|
||||
<object name="CustomerEditPage" abstract="true">
|
||||
<property name="CustomerEditController" expression="@(convCustomer)['CustomerEditController']"/>
|
||||
<property name="Conversation" ref="convCustomer"/>
|
||||
</object>
|
||||
...
|
||||
<!--Using workaround for 'conversation scope' to reference for 'CustomerEditController'. It is not as volatile as "request scope" not as durable as the "session scope"-->
|
||||
<object type="CustomerView.aspx">
|
||||
<property name="CustomerDao" ref="CustomerDao" />
|
||||
<property name="CustomerEditController" expression="@(convCustomer)['CustomerEditController']" />
|
||||
<property name="Conversation" ref="convCustomer"/>
|
||||
<property name="Results">
|
||||
<dictionary>
|
||||
<entry key="EditCustomer" value="redirect:CustomerEditor.aspx" />
|
||||
<entry key="CustomerList" value="redirect:CustomerList.aspx" />
|
||||
</dictionary>
|
||||
</property>
|
||||
</object>
|
||||
...
|
||||
<!--Using workaround for 'conversation scope' to reference for 'CustomerEditController'. It is not as volatile as "request scope" not as durable as the "session scope"-->
|
||||
<object type="FulfillmentResult.aspx">
|
||||
<property name="FulfillmentService" ref="FulfillmentService" />
|
||||
<property name="CustomerEditController" expression="@(convCustomer)['CustomerEditController']" />
|
||||
<property name="Conversation" ref="convCustomer"/>
|
||||
<property name="Results">
|
||||
<dictionary>
|
||||
<entry key="Back" value="redirect:CustomerOrders.aspx" />
|
||||
</dictionary>
|
||||
</property>
|
||||
</object>
|
||||
...
|
||||
<object type="Default.aspx">
|
||||
<property name="Conversation" ref="convDefault"/>
|
||||
<property name="Results">
|
||||
<dictionary>
|
||||
<entry key="CustomerList" value="redirect:CustomerList.aspx" />
|
||||
</dictionary>
|
||||
</property>
|
||||
</object>
|
||||
...
|
||||
<!--Conversation for 'Default.aspx'-->
|
||||
<!--"convDefault" will have the unique functionality: trigger the release of other conversations when started (StartResumeConversation())-->
|
||||
<object name="convDefault" type="Spring.ConversationWA.Imple.WebConversationSpringState, Spring.ConversationWA" scope="session">
|
||||
<property name="Id" value="convDefault"></property>
|
||||
<property name="TimeOut" value="0"></property>
|
||||
<property name="ConversationManager" ref="conversationManager"></property>
|
||||
<property name="SessionFactory" ref="NHibernateSessionFactory"/>
|
||||
<property name="DbProvider" ref="DbProvider"/>
|
||||
</object>
|
||||
|
||||
-Added "ConversationPage.cs"
|
||||
-Base page with support for conversation.
|
||||
-CustomerList.aspx
|
||||
-Allow list the "Order's" on the same page without lazy initialization error
|
||||
occurs. All objects stay attached to ISession (NHibernate).
|
||||
-CustomerList.aspx.cs:
|
||||
-Added property "IList<Customer> CustomersDetachedList". List not attached.
|
||||
Searching the database only once per conversation.
|
||||
-Changing the "Page_InitializeControls" for consider "CustomersDetachedList".
|
||||
-Change "Page_InitializeControls" to "Page_Init".
|
||||
-The method "BtnShowOrders_Click" performe a implicitly a "lazy load" on
|
||||
"Customer.Orders".
|
||||
-Change [CustomerEditor : Spring.Web.UI.Page] to [CustomerEditor : Spring.Web.UI.Page] on:
|
||||
-CustomerEditor.aspx.cs
|
||||
-CustomerList.aspx.cs
|
||||
-CustomerOrders.aspx.cs
|
||||
-CustomerView.aspx.cs
|
||||
-FullfillmentResult.aspx.cs
|
||||
-Default.aspx.cs
|
||||
-Dao.xml
|
||||
- Added [<entry key="connection.release_mode" value="on_close"/>] to avoid
|
||||
disconnection and reconnection before and after each IDbCommand execution.
|
||||
This is important because we will do more lazyload outside the transaction
|
||||
boundaries.
|
||||
- Added:
|
||||
...
|
||||
<entry key="show_sql" value="true"/>
|
||||
<entry key="format_sql" value="true"/>
|
||||
...
|
||||
-Default.aspx.cs
|
||||
-Remove (they are never used):
|
||||
-customerDao;
|
||||
-fulfillmentService;
|
||||
-CustomerDao;
|
||||
-Button1_Click(object sender, EventArgs e);
|
||||
-ProcessCustomer();
|
||||
-Config\Log4Net.xml.
|
||||
...
|
||||
<!--detail's about SQL's. For view sql commands on Logs\log.txt-->
|
||||
<logger name="NHibernate.SQL">
|
||||
<level value="DEBUG" />
|
||||
</logger>
|
||||
...
|
||||
<!--detail's about Conversation-->
|
||||
<logger name="Spring.ConversationWA">
|
||||
<level value="DEBUG" />
|
||||
</logger>
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 745 B |
@@ -0,0 +1 @@
|
||||
function cssLoad(css){var s=document.createElement('style');document.getElementsByTagName('head')[0].appendChild(s);if(!!window.ActiveXObject){document.styleSheets[document.styleSheets.length-1].cssText=css;}else{stylenode=document.createTextNode(css);s.appendChild(stylenode);}}function azHtmlLoad(div,content){var azDiv=document.getElementById(div);azDiv.innerHTML=content;}function azScriptSRCLoad(div,script){var newScript=document.createElement('script');newScript.type='text/javascript';newScript.src=script;var azDiv=document.getElementById(div);azDiv.appendChild(newScript);}function azScriptInlineLoad(div,script,interval){var newScript=document.createElement('script');newScript.type='text/javascript';if(/msie/.test(navigator.userAgent.toLowerCase())){newScript.text=script;}else{newScript.innerHTML=script;}var azDiv=document.getElementById(div);azDiv.appendChild(newScript);}function azLoad(div,code){var azDiv=document.getElementById(div);if(azDiv){code();}else {setTimeout(function(){azLoad(div,code)},100);}}var zItems=[];function zshow(div){if(zItems[div]){document.write(zItems[div]);}}function ados_frameLoaded(x, y) {};function ados_loadFIframe(a,b,c,d,e){adzerkDiv=document.getElementById(a);ifrm=document.createElement("iframe");ifrm.frameBorder=0;ifrm.scrolling="no";ifrm.noresize="noresize";ifrm.marginheight=0;ifrm.marginwidth=0;if(d!=0){ifrm.height=d}if(e!=0){ifrm.width=e}ifrm.onload=function(){ados_frameLoaded(a,c)};adzerkDiv.innerHtml="";adzerkDiv.appendChild(ifrm);ifrm.contentWindow.contents='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><body style="margin:0px;"><script type="text/javascript">var divName = "'+a+'";var inDapIF = true;<\/script>'+unescape(b)+"</body></html>";ifrm.src='javascript:window["contents"]'}var adzerk1func = function() { ados_loadFIframe('adzerk1', '%3Cscript%20type%3D%22text/javascript%22%20src%3D%22http%3A//static.adzerk.net/ados.js%22%3E%3C/script%3E%0A%3Cscript%20type%3D%22text/javascript%22%3E%0A%3C%21--%20load%20placement%20for%20account%3A%20New%20Relic%2C%20campaign%3A%20StackOverflow%2C%20flight%3A%20Q2%20Ads%2C%20creative%3A%20DOTNET%20728%2C%20site%3A%20StackOverflow%2C%20size%3A%20Leaderboard%20-%20728px%20by%2090px%20--%3E%0Aados_loadInline%28451%2C%2013178%2C%204%29.setFlightCreativeId%2818206%29.setClickUrl%28%27-optional-click-macro-%27%29%3B%0Aados_load%28%29%3B%0A%3C/script%3E', 11966, 90, 728); }; setTimeout(function() { azLoad('adzerk1', adzerk1func) }, 100);var adzerk2code = '<div id=\"careersadsdoublehigh\" style=\"display:none;\"></div>';var adzerk2func = function() { azHtmlLoad('adzerk2', adzerk2code); }; setTimeout(function() { azLoad('adzerk2', adzerk2func) }, 100);
|
||||
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 865 B |
@@ -0,0 +1,94 @@
|
||||
'use strict';(function(e){function c(){this._events={};this._maxListeners=10}function b(a,b,d,c,e){this.type=a;this.listener=b;this.scope=d;this.once=c;this.instance=e}b.prototype.fire=function(a){this.listener.apply(this.scope||this.instance,a);if(this.once)return this.instance.removeListener(this.type,this.listener,this.scope),!1};c.prototype.eachListener=function(a,b){var d=null,c=null,e=null;if(this._events.hasOwnProperty(a)){c=this._events[a];for(d=0;d<c.length;d+=1)if(e=b.call(this,c[d],d),
|
||||
!1===e)d-=1;else if(!0===e)break}return this};c.prototype.addListener=function(a,f,d,c){this._events.hasOwnProperty(a)||(this._events[a]=[]);this._events[a].push(new b(a,f,d,c,this));this.emit("newListener",a,f,d,c);this._maxListeners&&!this._events[a].warned&&this._events[a].length>this._maxListeners&&("undefined"!==typeof console&&console.warn("Possible EventEmitter memory leak detected. "+this._events[a].length+" listeners added. Use emitter.setMaxListeners() to increase limit."),this._events[a].warned=
|
||||
!0);return this};c.prototype.on=c.prototype.addListener;c.prototype.once=function(a,b,d){return this.addListener(a,b,d,!0)};c.prototype.removeListener=function(a,b,d){this.eachListener(a,function(c,e){c.listener===b&&(!d||c.scope===d)&&this._events[a].splice(e,1)});this._events[a]&&0===this._events[a].length&&delete this._events[a];return this};c.prototype.off=c.prototype.removeListener;c.prototype.removeAllListeners=function(a){a&&this._events.hasOwnProperty(a)?delete this._events[a]:a||(this._events=
|
||||
{});return this};c.prototype.listeners=function(a){if(this._events.hasOwnProperty(a)){var b=[];this.eachListener(a,function(a){b.push(a.listener)});return b}return[]};c.prototype.emit=function(a){for(var b=[],d=null,d=1;d<arguments.length;d+=1)b.push(arguments[d]);this.eachListener(a,function(a){return a.fire(b)});return this};c.prototype.setMaxListeners=function(a){this._maxListeners=a;return this};"function"===typeof define&&define.amd?define(function(){return c}):e.EventEmitter=c})(this);
|
||||
StackExchange.realtime=function(){function e(a){StackExchange.options.user.isDeveloper&&console.log(a)}function c(){p.on("hb",function(a){l.send(a)})}function b(a){v?(e("sending: "+a),l.send(a)):u.push(a)}function a(a,b){1!=$("#vote-accepted-"+a.answerid).length&&($(".vote-accepted-on").remove(),b||$('.vote input[value="'+a.answerid+'"]').parent().append('<span class="vote-accepted-on" title="The question owner accepted this as the best answer">accepted</span>'))}function f(){$("#new-post-activity").remove();
|
||||
$("#answers-header").prepend(q)}function d(a){var b=$(".question[data-questionid="+a.id+"], .answer[data-answerid="+a.id+"]").find(".postcell, .answercell");0<b.find("#new-post-activity").length||b.prepend('<div id="new-post-activity">an edit has been made to this post: show the <a href="/posts/'+a.id+'/revisions">revision</a></div>').click(function(){$.get("/posts/"+a.id+"/ajax-load-mini",r(b,a))})}function h(a,b){return a.index<b.index?-1:a.index>b.index?1:0}function j(){$("#new-post-activity").remove();
|
||||
var a=o.sort(h),b;for(b in a){var d=a[b];$("#question-summary-"+d.id).remove();$(d.body).prependTo("#question-mini-list, #questions").hide().fadeIn()}i(0);null!=StackExchange.options.user.accountId&&StackExchange.tagPreferences.applyPrefs(!0,t);"undefined"!=typeof MathJax&&MathJax.Hub.Queue(["Typeset",MathJax.Hub]);k();o=[]}function i(a){var b=document.title.replace(/^\(\d*\*?\) /,"");0<a&&(b="("+a+") "+b);window.setTimeout(function(){$(document).attr("title",b)},200)}function k(){for(var a=$("span.relativetime"),
|
||||
b=0;b<a.length;b++)if(a[b].title){var d;d=new Date(a[b].title);d=((new Date).getTime()-d.getTime())/1E3;var c=Math.floor(d/86400);if(d=isNaN(c)||0>c||31<=c?void 0:0==c&&(2>d&&"just now"||60>d&&Math.floor(d)+(s?"s ago":" secs ago")||120>d&&(s?"1m ago":"1 min ago")||3600>d&&Math.floor(d/60)+(s?"m ago":" mins ago")||7200>d&&(s?"1h ago":"1 hour ago")||86400>d&&Math.floor(d/3600)+(s?"h ago":" hours ago")))a[b].innerHTML=d}}var g,l,o=[],n=[],m=0,u=[],v=!1,s=!1,t,p=new EventEmitter,q=function(){var a=Object.keys(n).length;
|
||||
return $('<div id="new-post-activity">'+a+" new answer"+(1<a?"s":"")+" to this question</div>").click(function(){StackExchange.realtime.expandAnswers()})},r=function(a,b){return function(d){d=$(d).find(".postcell, .answercell");a.replaceWith(d);d.hide().fadeIn(400,function(){"undefined"!=typeof MathJax&&MathJax.Hub.Queue(["Typeset",MathJax.Hub]);StackExchange.question.canViewVoteCounts()&&StackExchange.vote.bindFetchVoteCounts()});StackExchange.comments.init({post:d});StackExchange.vote.init(b.id);
|
||||
StackExchange.vote||StackExchange.question.bindAnonymousVoteDisclaimers();a.find("a[id^='link-post-']").click(function(a){if(!a.ctrlKey&&!a.metaKey)return StackExchange.question.showShareTip($(this),options.showCitation),!1});StackExchange.question.bindSuggestedEditPopupLinks();StackExchange.question.initShareLinks();window.history.pushState(b,"new post","#"+b.id)}},w=function(){var a=Object.keys(o).length;i(a);return $('<div id="new-post-activity">'+a+" question"+(1<a?"s":"")+" with new activity</div>").click(function(){StackExchange.realtime.expandActiveQuestions()})};
|
||||
return{init:function(a){g=a;if("WebSocket"in window||"MozWebSocket"in window){if(l)try{e("closing WebSocket"),l.close()}catch(b){}l||(e("opening WebSocket"),l="WebSocket"in window?new WebSocket(g):new MozWebSocket(g),l.onopen=function(){if(!v){v=!0;for(var a=0,b=u.length;a<b;a++)e("sending: "+u[a]),l.send(u[a]);u=[]}e("WebSocket opened");c();setInterval(k,6E4)},l.onmessage=function(a){a=$.parseJSON(a.data);p.emit(a.action,a.data)},l.onclose=function(){l=null;e("WebSocket closed");5>m&&(m++,e("reconnect attempt:"+
|
||||
m),setTimeout('StackExchange.realtime.init("'+g+'")',500))},l.onerror=function(){e("WebSocket failed");l=null})}},expandActiveQuestions:j,expandAnswers:function(){var a=$("#answers #answers-header .answers-subheader h2"),b=parseInt(a.text().match(/^\d*\*?/))+n.length;isNaN(b)&&(b=n.length);a.text(b+" Answer"+(1<b?"s":""));$("#new-post-activity").remove();var d=$("#answers #answers-header");$.each(n,function(a,b){$.get("/posts/"+b+"/ajax-load-mini",function(a){a=$(a);a.insertAfter(d).hide().fadeIn(400,
|
||||
function(){"undefined"!=typeof MathJax&&MathJax.Hub.Queue(["Typeset",MathJax.Hub]);StackExchange.question.canViewVoteCounts()&&StackExchange.vote.bindFetchVoteCounts()});StackExchange.comments.init({post:a});StackExchange.vote.init(b)})});StackExchange.vote||StackExchange.question.bindAnonymousVoteDisclaimers();d.find("a[id^='link-post-']").click(function(a){if(!a.ctrlKey&&!a.metaKey)return StackExchange.question.showShareTip($(this),options.showCitation),!1});StackExchange.question.bindSuggestedEditPopupLinks();
|
||||
StackExchange.question.initShareLinks();n=[]},subscribeToActiveQuestions:function(a,d,c,g,f,e,i){a=a+"-"+d;t=c;s=e;b(a);p.on(a,function(a){a=$.parseJSON(a);if(null!=f)for(var b=0;b<f.length;b++)if(-1==$.inArray(f[b],a.tags))return;null!=StackExchange.options.user.accountId&&StackExchange.tagPreferences.isIgnored(a.body)||(o[a.id]={id:a.id,body:a.body,index:(new Date).getTime(),siteid:a.siteid},$("#new-post-activity").remove(),$("#question-mini-list, #questions").prepend(w),g&&j());null!=i&&i(a)})},
|
||||
subscribeToInboxNotifications:function(){if(null!=StackExchange.options.user.accountId){var a=StackExchange.options.user.accountId+"-inbox";b(a);p.on(a,function(a){$(".unreadCount").remove();var b=$('<a class="unreadCount" title="unread messages in your inbox">'+a+"</a>").insertAfter(".genu");$("#portalLink .unreadCount").css({marginTop:b.css("margin-top"),opacity:1},2E3);genuwine.setUnreadCount(a)})}},subscribeToQuestion:function(c,g){var e=c+"-question-"+g;b(e);p.on(e,function(b){b=$.parseJSON(b);
|
||||
switch(b.a){case "score":var c=$('.vote input[value="'+b.id+'"]').siblings(".vote-count-post");c.text()!=b.score&&(c.text(b.score),0==$(":animated").length&&c.fadeTo("fast",0.7).fadeTo("fast",1),StackExchange.question.canViewVoteCounts()&&StackExchange.vote.bindFetchVoteCounts());break;case "comment-add":0==$("#comment-"+b.commentid).length&&(b=$("#comments-link-"+b.id),c=b.data("comments-count")||0,c++,b.data("comments-count",c),b.html("add / show <b>"+c+"</b> more comment"+(1<c?"s":"")).show().fadeTo("fast",
|
||||
0.7).fadeTo("fast",1));break;case "answer-add":0==$("#answer-"+b.answerid).length&&(n.push(b.answerid),StackExchange.cardiologist.isHeartBeating()?StackExchange.helpers.DelayedReaction(f,5E3).trigger():f(),StackExchange.cardiologist.notifiedOfNewAnswer());break;case "accept":a(b);break;case "unaccept":a(b,!0);break;case "post-edit":d(b)}})},subscribeToReputationNotifications:function(a){null!=StackExchange.options.user.accountId&&(a=a+"-"+StackExchange.options.user.userId+"-reputation",b(a),p.on(a,
|
||||
function(a){var b=$("#hlinks .reputation-score");b.text()!=a.score&&(0==$(":animated").length&&b.fadeTo("fast",0.8).fadeTo("fast",1),b.text(a))}))},updateRelativeDates:k}}();"use strict";StackExchange.anonymous={};
|
||||
var gauth=function(){return{informStackAuth:function(e){if(gauth.enabled()){var c=document.domain;"meta."==c.substr(0,5)&&(c=c.substr(4,c.length-4));var b=$.cookie("gauth");if(null==b)$.cookie("gauth",null,{path:"/",domain:c}),$.cookie("gauth",null,{path:"/",domain:document.domain});else{"."!=c.charAt(0)&&(c="."+c);$.cookie("gauth",null,{path:"/",domain:c});$.cookie("gauth",null,{path:"/",domain:document.domain});var a=b.indexOf(":"),c=b.substr(0,a),b=b.substr(a+1),f=e+"/auth/global/write?authToken="+
|
||||
encodeURIComponent(c)+"&nonce="+encodeURIComponent(b);$(document).ready(function(){$("#footer").append("<iframe style='display:none' src='"+f+"'></iframe>")})}}},checkStackAuth:function(e){if(gauth.enabled()&&null==$.cookie("gauthed")){$.cookie("gauthed","1",{path:"/"});var c=function(b){if(b.origin==e)if("No Local Storage"==b.data)gauth.noGAuthStorage();else if("No Session"==b.data)gauth.noGAuthSession();else{var a=b.data.substr(0,b.data.indexOf(",")),b=b.data.substr(b.data.indexOf(",")+1);$.post("/users/login/global",
|
||||
{authToken:a,nonce:b},function(a){gauth.globallyAuthed(a)},"json")}};window.attachEvent?window.attachEvent("onmessage",c):window.addEventListener("message",c,!1);$.post("/users/login/global/request","",function(b){var a=e+"/auth/global/read?request="+encodeURIComponent(b.token)+"&nonce="+encodeURIComponent(b.nonce);$(document).ready(function(){$("#footer").append("<iframe id='global-auth-frame' style='display:none' src='"+a+"'></iframe>")})},"json")}},enabled:function(){$.cookie("enabledCheck","1");
|
||||
if(null==$.cookie("enabledCheck"))return!1;$.cookie("enabledCheck",null);return"undefined"==typeof localStorage?!1:!0},noGAuthStorage:function(){},noGAuthSession:function(){},globallyAuthed:function(e){if(e&&e.Message){var e=e.Message+" ",c,b=!1,a=""+window.location,f=a.indexOf("returnurl=");if(-1!=f){var d=a.indexOf("&",f);-1==d&&(d=a.length);c=decodeURIComponent(a.substring(f+10,d));c=/^(?:http:\/\/|\/)/.test(c)?c.replace(/[^-a-z0-9+&@#\/%?=~_|!:,.;()]/g,""):null}-1!=a.indexOf("/users/login")&&
|
||||
(b=!0,c=c||"/");StackExchange.helpers.showFancyOverlay({message:b?e+"<br>You are being redirected...":e+(c?"<a href=\"javascript:window.location='"+c+"'\">Click here</a> to return to your last location.":'<a href="javascript:location.reload(true)">Click here</a> to refresh the page.'),showClose:!b,complete:function(){b&&(window.location=c)}})}}}}(),genuwine=function(){var e,c="",b,a,f=function(){return $(".genu").hasClass("genu-on")},d=function(){var d=$(".genu"),c=$("#seWrapper");if(0==c.length){j();
|
||||
var c=$("#seWrapper"),g;0<b?(g=$("#seTabInbox"),u(g)):a?(g=$("#seTabNotices"),i(g)):(g=$("#seTabHot"),l(g));g.addClass("seCurrent")}(g=d.hasClass("genu-on"))?($(".unreadCountTab").hide(),$(".itemBoxNew").removeClass("itemBoxNew"),c.fadeOut("fast")):(c.fadeIn("fast"),$(".unreadCount").hide());d.toggleClass("genu-on",!g);-1==b&&$(d).ready(function(){$("#seTabInbox").hide()});h($("#seTabInbox"),$("#seTabNotices"))},h=function(d,c){StackExchange.options.site.isNoticesTabEnabled&&a&&0==c.find(".unreadCountTab").length&&
|
||||
c.prepend('<span class="unreadCountTab newNotices">'+a+"</span>");0<b&&0==d.find(".unreadCountTab").length&&d.prepend('<span class="unreadCountTab">'+b+"</span>")},j=function(){var a='<div id="seWrapper" style="position:absolute; display:none;"><div class="seIntro"><a href="'+c+'">Stack Exchange</a> is a network of free, community-driven Q&A sites.</div><div class="seNav"><ul class="seNavLinks"><li><a id="seTabHot">Hot Questions</a></li><li><a id="seTabSites">All Sites</a></li><li><a id="seTabInbox">Inbox</a></li>'+
|
||||
(StackExchange.options.site.isNoticesTabEnabled?'<li><a id="seTabNotices">Notifications</a></li>':"")+'</ul></div><div class="seContainer"></div><div class="seFooter"><div id="seTabEmail" class="seEmailAccount"><a>email settings</a></div><a id="seClose">close</a></div></div>',b=$("#hlinks"),b=b.height()+b.offset().top+5;$(a).appendTo("#portalLink").css({top:b}).find("ul.seNavLinks a, #seTabEmail").click(function(){var a=$(this);$(".seNavLinks a").removeClass("seCurrent");a.addClass("seCurrent");switch(a.attr("id")){case "seTabHot":l(a);
|
||||
$("#seContainerSites, #seContainerInbox, #seContainerEmail, #seContainerNotices").hide();$("#seContainerHot").fadeIn("fast");break;case "seTabSites":0==$("#seContainerSites").length&&g(a);$("#seContainerHot, #seContainerInbox, #seContainerEmail, #seContainerNotices").hide();$("#seContainerSites").fadeIn("fast");break;case "seTabInbox":u(a);$("#seContainerHot, #seContainerSites, #seContainerEmail, #seContainerNotices").hide();$("#seContainerInbox").fadeIn("fast");break;case "seTabEmail":0==$("#seContainerEmail").length&&
|
||||
o(a);$("#seContainerHot, #seContainerSites, #seContainerInbox, #seContainerNotices").hide();$("#seContainerEmail").fadeIn("fast");break;case "seTabNotices":i(a),$("#seContainerHot, #seContainerSites, #seContainerInbox, #seContainerEmail").hide(),$("#seContainerNotices").fadeIn("fast")}});$("#seClose").live("click",d)},i=function(a){0==$("#seContainerNotices").length&&t(a,"/notices/genuwine?userId="+StackExchange.options.user.id,"jsonp",k,!0)},k=function(a,b){for(var d='<div id="seContainerNotices" style="display:none">',
|
||||
c=0;c<b.length;c++)var g=b[c],d=d+('<div class="noticeBox'+(g.is_unread?" itemBoxNew":"")+'"><a href="'+g.site_url+'" class="siteLinkFavicon"><img src="'+g.icon+'"></a><div class="siteInfo"><p>'+g.text+"</p></div></div>");p(a,d+"</div>")},g=function(a){t(a,c+"/genuwine/sites?callback=?&host="+document.location.host+(e?"&accountId="+e:""),"jsonp",m)},l=function(a){0==$("#seContainerHot").length&&t(a,c+"/genuwine?callback=?","jsonp",n)},o=function(a){t(a,"/accounts/email-settings","json",function(a,
|
||||
b){function d(){$("#email-save").removeAttr("disabled");$("#email-confirmation").html("")}p(a,'<div id="seContainerEmail" style="display:none; font-size:11px;"><div class="itemBox" style="border-bottom: 0px"><p>Would you like to receive unread inbox messages via email?</p><div>Email: <input id="email-notify" name="email-notify" style="width:300px;" value="'+b.verifiedEmail+'"></input></div><div><input type="radio" name="optIn" value="true" id="email-enable"'+(!0==b.optIn?'checked="checked"':"")+'"> <label for="email-enable">Email me my unread inbox messages </label> <select id="email-freq"><option value="3">every 3 hours</option><option value="24">daily</option><option value="168">weekly</option></select> </div><div><input type="radio" name="optIn" value="false" id="email-disable"'+
|
||||
(!0!=b.optIn?'checked="checked"':"")+'"> <label for="email-disable">Do not email me inbox messages</label></input></div><div><input type="button" name="save" id="email-save" value="Save" disabled="disabled"></input></div><div id="email-confirmation" style="display:none;"></div></div></div>');$("#email-freq").val(b.freq).on("click focus",function(){$("#email-enable").prop("checked",!0)});$("#email-notify").focus().keyup(d);$("#email-enable, #email-disable, #email-freq").change(d);$("#email-save").click(function(){q();
|
||||
$.post("/accounts/verified-email-set",{email:$("#email-notify").val(),fkey:StackExchange.options.user.fkey,optin:$("input[name=optIn]:checked").val(),freq:$("#email-freq").val()},function(a){StackExchange.helpers.removeSpinner();$("#email-confirmation").html(a.message).fadeIn();a.success&&$("#email-save").attr("disabled","disabled")},"json")})},!0)},n=function(a,b){for(var d=$("<div/>"),c='<div id="seContainerHot" style="display:none">',g=0;g<b.length;g++)var f=b[g],e=f.SiteId,i='href="http://'+e+
|
||||
"/q/"+f.Id+'?hq=1"',h=parseInt(f.DisplayScore,10),c=c+('<div class="itemBox"><a '+i+' class="seNumAnswer">'+h+'</a><div class="siteInfo"><p><a '+i+">"+d.text(f.Title).html()+'</a></p><a href="http://'+e+'" class="siteLink">'+e+"</a></div></div>");p(a,c+"</div>")},g=function(a){t(a,c+"/genuwine/sites?callback=?&host="+document.location.host+(e?"&accountId="+e:""),"jsonp",m)},m=function(a,b){for(var d='<div id="seContainerSites" style="display:none">',c=0;c<b.length;c++)var g=b[c],f=g.Name,e='href="http://'+
|
||||
g.Id+'?as=1"',d=d+('<div class="itemBox"><a '+e+' class="siteFavicon"><img src="'+g.FaviconUrl+'" alt="'+f+'"></a><div class="siteInfo"><p><a '+e+">"+f+"</a></p><a "+e+' class="siteLink">'+g.Description+"</a></div></div>");p(a,d+"</div>")},u=function(a){-1!=b&&0==$("#seContainerInbox").length&&t(a,"/inbox/genuwine","json",v,!0)},v=function(a,b){for(var d='<div id="seContainerInbox" style="display:none">',c=0;c<b.length;c++){var g=b[c],f='href="'+g.Url+'"',i='title="'+g.CreationDate+'"',h=g.Count,
|
||||
d=d+('<div class="itemBox'+(g.IsNew?" itemBoxNew":"")+'"><a '+f+' class="siteLinkFavicon"><img src="'+g.FaviconUrl+'" alt="'+g.SiteUrl+'"></a><div class="siteInfo">');"careers message"==g.Type?d+="<p><a "+f+' style="font-weight:normal"><b>'+g.Title+"</b> wants to contact you on <b>Stack Overflow Careers</b></a></p>":"invitation"==g.Type?(i=g.Count,d+="<p><a "+f+' style="font-weight:normal"><b>'+i+"</b> "+("invitation"+(1<i?"s":""))+" awarded on <b>Stack Overflow Careers</b></a></p>"):d+="<p>"+(1<
|
||||
h?h+" ":"")+g.Type+" on <a "+f+" "+i+">"+g.Title+"</a></p>";d+='<p class="inboxSummary">'+(g.Summary||"")+"</p></div></div>"}e&&5<=b.length&&(d+='<div class="itemMoreContainer"><div class="seIntro"><a href="http://stackexchange.com/users/'+e+'?tab=inbox">more inbox messages …</a></div></div>');p(a,d+"</div>")},s={},t=function(a,b,d,c,g){var f=a.attr("id");if(s[f])q();else{s[f]=!0;q();var e=function(){s[f]=!1;StackExchange.helpers.showErrorPopup($(".seContainer"),"An error occurred while loading - please try again.")};
|
||||
$.ajax({type:"GET",url:b,dataType:d,success:function(b){b&&(0<b.length||g)?c(a,b):e()},error:e,complete:StackExchange.helpers.removeSpinner()})}},p=function(a,b){var d=$(b);d.appendTo(".seContainer");a.hasClass("seCurrent")&&d.fadeIn("fast")},q=function(){StackExchange.helpers.removeSpinner();StackExchange.helpers.addSpinner(".seContainer",{position:"relative",left:"10px",top:"10px"})},r=function(){var a=$("#portalLink .unreadCount"),b=a.css("margin-top");a.css({marginTop:-20,opacity:0}).show().animate({marginTop:b,
|
||||
opacity:1},2E3)},w=function(d){a=d;!(0<b)&&StackExchange.options.site.isNoticesTabEnabled&&(99<a&&(a=99),0<a&&$("#portalLink .unreadCount").text(""+a).addClass("newNotices").click(function(){$(".genu").click()}).show())};return{isVisible:f,click:d,setUnreadCount:function(a){b=a;0<a?($("#portalLink .unreadCount").text(b).click(function(){$(".genu").click()}).show(),r()):$("#portalLink .unreadCount").text("").hide();$("#portalLink .unreadCount").removeClass("newNotices")},animateInbox:r,init:function(a,
|
||||
g,i){var h=$(".genu");1<=h.length&&(h[0].onclick=null);e=a;c=h.attr("href");b=g;w(i);h.removeAttr("href").add(".unreadCount").click(d);$(document).click(function(a){f()&&!$.contains($("#portalLink")[0],a.target)&&d()})}}}();
|
||||
StackExchange.notify=function(){function e(a,b){var d=$("#dismissed-messages");d.val(d.val()+"~"+a+(b?" "+b:"")+"~")}function c(a,b){var d=$("#dismissed-messages").val();return!d?!1:RegExp("~"+a+(b?" "+b:"")+"~").test(d)}function b(a,b,d){var c=parseInt($("body").css("margin-top").match(/\d+/)),a=b*c/a;d?$("body:not(.no-message-slide)").animate({marginTop:a+"px"},"fast","linear"):$("body:not(.no-message-slide)").css("marginTop",a+"px")}var a=0,f=function(d,c){var g=$("#notify-"+d+(c?"-"+c:""));-1==
|
||||
d?$.cookie("m","0",{expires:90,path:"/"}):-1<d&&$.post("/messages/mark-as-read",{messagetypeid:d,id:c?c:null});e(d,c);a--;g.fadeOut("fast",function(){b(a+1,a,!0);g.remove()})},d=function(b){if(StackExchange.options.site.isNoticesTabEnabled)return!0;a++;if(c(b.messageTypeId,b.id))return!1;var d="";b.messageTypeId&&(d=' id="notify-'+b.messageTypeId+(b.id?"-"+b.id:"")+'"');d="<div"+d+' style="display:none"><span class="notify-close"><a title="dismiss this notification">×</a></span><span class="notify-text">'+
|
||||
b.text+"</span>";if(b.showProfile)var g=encodeURIComponent("/users/"+b.userId+"?tab=badges&sort=recent"),d=d+(' See your <a href="/messages/mark-as-read?messagetypeid='+b.messageTypeId+"&returnurl="+g+'">profile</a>.');d=$(d+"</div>");d.find(".notify-close").click(function(){b.close&&b.close();f(b.messageTypeId,b.id)});$("#notify-container").append(d);return!0},h=function(){$("#notify-container div").fadeIn("slow")},j=function(a,b){var c=$('<div class="link-more"><a>view '+a+" more notification"+
|
||||
(1!=a?"s":"")+"</a></div>");$("#notify-container").append(c);c.click(function(){c.detach();for(var a=0;a<b.length;a++)d(b[a]);h()})};return{showMessages:function(c,f){for(var g=0,e=f?2:c.length,o=0;o<e&&o<c.length;o++)d(c[o])&&g++;b(a,g,!1);h();f&&g<c.length&&(e=c.slice(e),j(c.length-g,e))},show:function(a,b){$("body:not(.no-message-slide)").animate({marginTop:"2.5em"},"fast","linear");d({text:a,messageTypeId:b});h()},close:f,getMessageText:function(a){return $("#notify-"+a+" .notify-text").text()}}}();
|
||||
function moveScroller(){var e=$("#scroller").width(),c=function(){var b=$(window).scrollTop(),a=$("#scroller-anchor").offset().top,c=$("#scroller");b>a?c.height()>$(window).height()?c.css({position:"fixed",top:"",bottom:"0px",width:e}):c.css({position:"fixed",top:"0px",bottom:"",width:e}):b<=a&&c.css({position:"relative",top:"",bottom:""})};$(window).scroll(c).resize(c);c()}
|
||||
var styleCode=function(){return function(){"undefined"!=typeof MathJax&&MathJax.Hub.Queue(["Typeset",MathJax.Hub]);var e=!1;$("pre code").parent().each(function(){$(this).hasClass("prettyprint-override")&&($(this).removeClass("prettyprint-override").addClass("prettyprint"),e=!0);var c;if(c=!$(this).hasClass("prettyprint")){c=$(this);var b=$("#prettify-lang").text();""!=b?(c.addClass(b),c=!0):c=!1}c&&($(this).addClass("prettyprint"),e=!0)});e&&("undefined"!=typeof jtab?jtab.renderimplicit():StackExchange.using("prettify",
|
||||
function(){StackExchange.prettify.applyCodeStyling()}))}}();
|
||||
StackExchange.helpers.MagicPopup=function(e){function c(a,d){var c=$("<div id='"+e.id+"'/>").html(d),h=$("<div />").css({overflow:"hidden",position:"absolute",width:1,height:1,top:0,left:0}).append(c).appendTo("body"),j=e.showing(a,c),n={left:j.left};j.hasOwnProperty("bottom")?(n.bottom=j.bottom,n.top="auto"):n.top=j.top;var m;e.shown&&(m=function(){e.shown(a,c)});h.css(n).animate({height:c.outerHeight()+8,width:c.outerWidth()+8},300,m);b=function(){h.stop().remove();e.removed&&e.removed(a,c);b=f=
|
||||
null};f=StackExchange.helpers.DelayedReaction(b,5);n=h;j.additional&&(n=n.add(j.additional));n.hover(f.cancel,f.trigger)}var b,a,f,d,h={},j=StackExchange.helpers.DelayedReaction(function(a,f){if(!d&&a){var g;e.cache&&"c_"+a in h?g=$.Deferred().resolve(h["c_"+a]):(g=$.ajax({type:"GET",url:a,dataType:"html"}),e.cache&&g.done(function(b){h["c_"+a]=b}));g.done(function(a){b&&b();""!=a&&c(f,a)})}},500);$(document).delegate(e.selector,{mouseenter:function(){if(f&&this===a)f.cancel();else return a=this,
|
||||
j.trigger(e.getUrl(this),this),d=!1},mouseleave:function(){d=!0;j.cancel();f&&f.trigger()}})};
|
||||
StackExchange.tagmenu=function(){function e(a){var a=$(a),b=a.attr("href");if(!b||"/"!=b.charAt(0))return null;b=a.text();if(-1<b.indexOf("*"))return null;a.attr("title","");return"/tags/"+encodeURIComponent(b)+"/subscriber-info"}function c(a,b){var c=$(a),e=c.offset(),i=c.outerHeight(),c={left:e.left},k=e.top+i,i=e.left+b.outerWidth();b.height()+k>$(window).height()+$(window).scrollTop()?c.bottom=$(window).height()-e.top-8:c.top=k;e=Math.max(1024,$(window).width());i>e&&(c.left-=i-e);return c}var b,
|
||||
a;return{init:function(f){b=f;a||(a=!0,StackExchange.options.isMobile||(StackExchange.helpers.MagicPopup({selector:".post-tag:not(.user-tag)",id:"tag-menu",getUrl:e,showing:c,shown:function(a,c){b&&b(c,$(a).text())}}),$("#interesting-tags .post-tag").addClass("user-tag")))}}}();
|
||||
StackExchange.usermenu=function(){function e(b,d){var c=$(b).find("img:first"),e=c.offset(),i=c.height(),k=c.width(),g=Math.max(k,i),l=64*i/g,g=64*k/g,o=d.find("img:first").css({width:g,height:l}),n=o.offset();o.css("visibility","hidden");a=c.clone().css({position:"absolute",zIndex:300,left:e.left,top:e.top,width:k,height:i}).appendTo("body");var m=function(){o[0].complete?(o.css("visibility","visible"),a.fadeOutAndRemove()):setTimeout(m,500)};a.animate({width:g,height:l,top:e.top+n.top},200,m);return{top:e.top,
|
||||
left:e.left-n.left,additional:a}}function c(){a.remove()}var b,a;return{init:function(){b||(b=!0,StackExchange.options.isMobile||StackExchange.helpers.MagicPopup({selector:".user-hover .user-gravatar48, .user-hover .user-gravatar32",getUrl:function(a){a=/\/users\/([^/]+).*$/.exec($(a).closest(".user-hover").find(".user-details a").attr("href"));return!a?null:"/users/user-info/"+a[1]},cache:!0,id:"user-menu",showing:e,removed:c}))}}}();
|
||||
StackExchange.chatAd=function(){function e(){var a=$(".question .post-taglist .post-tag");return!a.length?null:a.map(function(a,b){return $(b).text()}).get().join(" ")}function c(a){return 10>a?"0"+a:a}function b(a){var b=new Date;b.setTime(1E3*a);return[b.getUTCFullYear(),"-",c(b.getUTCMonth()+1),"-",c(b.getUTCDate())," ",c(b.getUTCHours()),":",c(b.getUTCMinutes()),":",c(b.getUTCSeconds()),"Z"].join("")}function a(a){var b=Math.floor((new Date).getTime()/1E3)-a,d=b%60,g=Math.floor(b/60),e=Math.floor(b/
|
||||
3600);if(1>b)return"just now";if(60>b)return 1==d?"1 sec ago":d+" secs ago";if(3600>b)return 1==g?"1 min ago":g+" mins ago";if(86400>b)return 1==e?"1 hour ago":e+" hours ago";b=Math.floor(b/86400);if(1==b)return"yesterday";if(2>=b)return b+" days ago";a=new Date(1E3*a);return m[a.getMonth()]+" "+a.getDate()+" at "+a.getHours()+":"+c(a.getMinutes())}function f(a){var b=$("<div />");b.text(a);return b.html().replace('"',""")}function d(){$.get(g,null,function(a,b,d){i(a,b,d)})}function h(b){for(var d=
|
||||
$('<div class="ad502-users" />'),c=0;c<b.length&&7>c;c++){var g=b[c],e=g.name;g.lastPost&&(e+=": "+a(g.lastPost));var f="http://www.gravatar.com/avatar/"+g.emailhash+"?s=23&d=identicon&r=PG",g=$('<a href="'+(k+"/users/"+g.id)+'" />');$("<img />").attr("title",e).attr("src",f).appendTo(g);d.append(g)}return d}function j(a){var b=a.user;return(a=a.userid)?'<a href="'+k+"/users/"+a+'">'+f(b)+"</a>":f(b)}function i(c){var g=$("#ad502-rooms");if(!c.error){g.html("");for(var e=c.rooms,i=0;i<e.length&&2>
|
||||
i;i++){var m=e[i],q=k+"/rooms/"+m.id,r=$('<div class="ad502-room"></div>');r.append($('<h3 class="ad502-room-h3"><span class="ad502-room-title" title="'+f(m.name)+'"><a href="'+q+'">'+f(m.name)+"</a></span></h3>"));m.messages&&0<m.messages.length&&r.append($('<span title="'+b(m.lastPost)+'" class="ad502-last-message">'+a(m.lastPost)+" - "+j(m.messages[0])+"</span><br>"));m.singleImage?r.append($('<div class="ad502-users"><img src="'+k+"/rooms/users/"+m.id+'.jpeg" /></div>')):r.append(h(m.users));
|
||||
g.append(r)}1<c.activeUsers?$("#h-chat-link").text(c.activeUsers+" People Chatting"):$("#h-chat-link").text("Visit Chat");$("#h-chat-link").attr("title",c.activeUsers+" users active in "+c.activeRooms+" rooms the last 60 minutes")}l<=n&&window.setTimeout(d,1E3*l);l+=o}var k,g,l=180,o=30,n=480,m="Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(",");/^\/questions\/\d+/i.test(window.location.pathname)&&(n=0);return{init:function(a){k=a.chatUrl;g=a.reloadUrl;if(a.tagBased){var b=e();if(!b)return;
|
||||
g+=(/\?/.test(g)?"&":"?")+"tags="+encodeURIComponent(b)}null===a.preloadData?d():i(a.preloadData,null,null)}}}();
|
||||
StackExchange.helpers.noDiacritics=function(){var e={"\u00e0\u00e5\u00e1\u00e2\u00e4\u00e3\u00e5\u0105":"a","\u00e8\u00e9\u00ea\u00eb\u0119":"e","\u00ec\u00ed\u00ee\u00ef\u0131":"i","\u00f2\u00f3\u00f4\u00f5\u00f6\u00f8\u0151":"o","\u00f9\u00fa\u00fb\u00fc":"u","\u00e7\u0107\u010d":"c","\u017c\u017a\u017e":"z","\u015b\u015f\u0161":"s","\u00f1\u0144":"n","\u00fd\u0178":"y","\u0142":"l","\u0111":"d","\u00df":"ss","\u011f":"g","\u00de":"th"};return function(c){for(var b in e)e.hasOwnProperty(b)&&(c=
|
||||
c.replace(RegExp("["+b+"]"),e[b]));return c}}();function sanitizeAndSplitTags(e,c){for(var e=$.trim(e).replace(/([A-Za-z0-9])\+(?=[A-Za-z0-9])/g,"$1 "),b=e.split(/[\s|,;]+/),a=[],f=0;f<b.length;f++){var d=StackExchange.helpers.noDiacritics(b[f].toLowerCase()).replace(/_/g,"-"),d=d.replace(RegExp("[^a-z0-9.#+"+(c?"*":"")+"-]","g"),""),d=d.replace(/^[#+-]+/,""),d=d.replace(/[.-]+$/,"");0<d.length&&-1==$.inArray(d,a)&&a.push(d)}return a}
|
||||
StackExchange.question=function(){var e=function(a,b){var c=null!=a;a||(a=$('div.question div.post-menu a:contains("link")'));var d=a.closest(".post-menu, .help-menu");if(a.hasClass("share-link"))d.find(".close-share-tip").click();else{a.addClass("share-link");var e=a.attr("id").substring(10),f=a.closest(".col-section").length?"section":a.closest("div.question").length?"question":"answer",h=$('<div class="share-tip" style="display:none">share a link to this '+f+'<input type="text" value="http://'+
|
||||
document.location.host+a.attr("href")+'" style="display:block; width:292px;"><a class="close-share-tip" style="float:right">close</a></div>');b&&h.find(".close-share-tip").before('<a id="link-post-'+e+'" style="float:left">cite</a>');h.appendTo(d).fadeIn(c?"fast":0).bind("removing",function(){a.removeClass("share-link")}).find(".close-share-tip").click(function(){h.fadeOutAndRemove()}).end().find("input[type=text]").select()}},c=function(a){var b=$("#post-form h2:first"),c=b.wrap("<div />").parent(),
|
||||
d=c.wrap("<div />").parent(),e=$("<div />").prependTo(d),f=d.height(),h=$("<div />"),a=$(a),j=parseInt(b.css("margin-bottom")),i=$("#content"),k=$("#wmd-input").outerWidth(),q=i.offset().left>b.offset().left-5&&"visible"!=i.css("overflow-x");h.css({height:0,overflowY:"hidden"}).appendTo(c).append(a);d.css({height:f,position:"relative"});c.css({position:"absolute",bottom:-j,width:k});e.addClass("answer-help-background").css({position:"absolute",bottom:-j,height:0,width:k});q&&(e.css("left",0),c.animate({paddingLeft:5},
|
||||
1E3));h.animate({height:a.height()+j+10},1E3);e.animate({height:a.height()+j+10+f},1E3);$("<div style='float:right;margin-top:10px;'><a href='#'>ok</a></div>").hide().prependTo(c).fadeIn(1E3).find("a").one("click",function(a){var d=$(this).parent();setTimeout(function(){d.remove()},1);h.animate({height:0},1E3,function(){h.add(e).remove();b.unwrap().unwrap()});e.animate({height:0},1E3);q&&c.animate({paddingLeft:0},1E3);a.preventDefault()})},b=function(){$.get("/posts/answer-help").then(c)},a,f,d,h=
|
||||
function(){var a=window.location.href;0>a.indexOf("#")||(a=a.match(/#(\d+|comment(\d+)_(\d+))/i))&&(a[2]?j(a[2],a[3]):i($(".answer[data-answerid="+a[1]+"]")))},j=function(a,b){var c="#comment-"+a,d=$(c);d.length?i(d):StackExchange.comments.loadAll($("#comments-link-"+b)).done(function(){i($(c))})},i=function(b){var c=d;b.css({backgroundColor:a}).animate({backgroundColor:c},2E3,"linear",function(){$(this).css("background-color","")});b.is(".comment")&&b[0].scrollIntoView(!0)},k=function(a){a=a||{};
|
||||
$('.post-menu a:contains("link")').live("click",function(b){if(!b.ctrlKey&&!b.metaKey)return e($(this),a.showCitation),!1})};return{showShareTip:e,getQuestionId:function(a){a=(a?a.closest(".question"):$(".question")).data("questionid");if(!a)throw Error("getQuestionId could not find an id");return a},highlightComment:j,initShareLinks:k,canViewVoteCounts:function(){return f},init:function(c){StackExchange.question.fullInit?StackExchange.question.fullInit(c):StackExchange.question.bindAnonymousVoteDisclaimers();
|
||||
StackExchange.comments.init({autoShowCommentHelp:c.autoShowCommentHelp});c.showShareTip&&e();$("input.anon-vote").live("click",function(){var a=$(this),b=a.postId(),c=a.parent();c.closest(".question,.answer").unbind("mouseenter.helpful").unbind("mouseleave.helpful");c.text("sending feedback ...");setTimeout(function(){c.text("Thank you for your feedback.")},500);$.ajax({type:"POST",url:"/vote/anon/"+b,data:{votetypeid:"Yes"==a.val()?2:3},complete:function(){}})});var j=$(".was-this-helpful"),i=j.css("color"),
|
||||
n=$(".post-text").css("color");j.each(function(){var a=$(this),b=a.text();a.closest(".answer, .question").bind("mouseenter.helpful",function(){a.html("Was this post useful to you? <input style='display:none;' class='anon-vote' type='button' value='Yes'/> <input style='display:none;' class='anon-vote' type='button' value='No'/>").animate({color:n},"fast","linear").find("input").fadeIn("fast")}).bind("mouseleave.helpful",function(){a.text(b).animate({color:i},"fast","linear")})});
|
||||
k(c);if(c.showAnswerHelp)$("#wmd-input").one("focus",b);c.showCitation&&$("div.share-tip a[id^='link-post-']").live("click",function(){$(this).closest(".post-menu").find(".close-share-tip").click();citation.show($(this))});d=c.backgroundColor;a=c.highlightColor;f=c.canViewVoteCounts;h(c)}}}();
|
||||
StackExchange.question.bindAnonymousVoteDisclaimers=function(){function e(c){return function(b){var a='Please <a href="/users/login?returnurl='+escape(document.location)+'">login or register</a> to '+c+" this post.";StackExchange.helpers.showErrorPopup($(this).parent(),a);var a="",e=$(this).prop("className"),d=$(this).closest(".answer").length?"answer":"question";/vote-up/.test(e)?a="?vote=up&type="+d:/vote-down/.test(e)?a="?vote=down&type="+d:/star/.test(e)&&(a="?vote=favorite");StackExchange.helpers.fireAndForget("/analytics/user/try-vote"+
|
||||
a);b.preventDefault()}}$(".vote-up-off, .vote-down-off").click(e("vote for"));$("div.post-menu a[id^='flag-post-']").unbind("click").click(e("flag"));$(".star-off:not(.disabled)").live("click",e("favorite"))};
|
||||
StackExchange.comments=function(){function e(a,b){this.postId=a;this.jDiv=b;this.jCommentsLink=$("#comments-link-"+a)}function c(b){var c=(b.constructor===$?b:$(b)).closest(".question, .answer, div[id^='post-']").find(".comments"),b=c.attr("id").replace(/^comments-/,"");if(a[b])return a[b];c=new e(b,c);return a[b]=c}function b(){if(0!=$(".question[data-questionid]").length){var a=StackExchange.question.getQuestionId();$(".comment .comment-date > span").each(function(){var b=$(this),c=b.closest(".answer"),
|
||||
c=c&&c.length?c.data("answerid"):0,e=b.closest(".comment").attr("id").substr(8);b.wrap('<a class="comment-link" onclick="StackExchange.question.highlightComment({cid}, {aid})" href="{hash}"></a>'.format({hash:"#comment"+e+"_"+(c?c:a),cid:e,aid:c}))})}}var a={},f=function(){};e.prototype={checkDiscussion:f,ensureInput:f,commentsShown:function(){this.jCommentsLink.hide();this.jCommentsLink.data("comments-count",0)},addShow:function(a){var b=this;this.loadAllComments().done(function(){b.jCommentsLink.hide();
|
||||
b.checkDiscussion()});var c=this.ensureInput();c&&!a&&c.focus()},ajax:function(a,b,c,e){c&&!e&&StackExchange.helpers.addSpinner(c,{"margin-left":"10px"});var f=this;return $.ajax(a).fail(function(a){$(".error-notification").fadeOut("fast",function(){$(this).remove()});a=a.responseText;if(!a||100<=a.length)a="An error occured"+(b?" "+b:"");StackExchange.helpers.showErrorPopup(c||f.jDiv,a);c&&!e&&StackExchange.helpers.removeSpinner()}).done(StackExchange.helpers.removeSpinner).promise()},showComments:function(a){this.jDiv.find(" > table > tbody").html(a);
|
||||
this.jCommentsLink.text("add comment");"undefined"!=typeof MathJax&&MathJax.Hub.Queue(["Typeset",MathJax.Hub]);b();this.commentsShown()},loadAllComments:function(a){this.jDiv.removeClass("dno");if(!a&&!/more comment/.test($("#comments-link-"+this.postId).text()))return $.Deferred().resolve().promise();var b=this;return this.ajax({type:"GET",url:"/posts/"+this.postId+"/comments",dataType:"html"},"while fetching comments").done(function(a){b.showComments(a)}).promise()}};return{init:function(a){a=a&&
|
||||
a.post||document;$("a[id^='comments-link-']",a).click(function(){var a=/more comment/.test($(this).text());c(this).addShow(a)});a==document&&b()},loadAll:function(a){return c(a).loadAllComments(!0)},extendPostUi:function(a){for(var b in a)a.hasOwnProperty(b)&&(e.prototype[b]=a[b])},uiForPost:c}}();
|
||||
StackExchange.share=function(){function e(b,a,c){window.open(b,a,c)||(window.location.href=b)}function c(b,a){var c=b.indexOf("?"),d=b.indexOf("#");return-1==c?-1==d?b+"?"+a:b.substring(0,d)+"?"+a+b.substring(d):-1==d?b+"&"+a:b.substring(0,d)+"&"+a+b.substring(d)}return{gplus:function(b,a){a=c(a,"sgp=1");b.click(function(){e("https://plus.google.com/share?url="+a,"sharegplus","toolbar=1,status=1,resizable=1,scrollbars=1,width=600,height=500")})},twitter:function(b,a,f){a=c(a,"stw=1");b.click(function(){e("http://twitter.com/share?url="+
|
||||
a+"&ref=twitbtn&text="+f,"sharetwitter","toolbar=1,status=1,resizable=1,scrollbars=1,width=800,height=526")})},facebook:function(b,a,f){a=c(a,"sfb=1");b.click(function(){e("http://www.facebook.com/sharer.php?u="+a+"&ref=fbshare&t="+f,"sharefacebook","toolbar=1,status=1,resizable=1,scrollbars=1,width=626,height=436")})}}}();
|
||||
function initTagRenderer(e,c){window.tagRenderer||(window.tagRendererRaw=function(b,a){var a=a||"",f="";a||(e&&-1<$.inArray(b,e)?f=" required-tag":c&&-1<$.inArray(b,c)&&(f=" moderator-tag"));return"<a class='post-tag"+f+"' href='"+a+"/questions/tagged/"+encodeURIComponent(b)+"' title=\"show questions tagged '"+b+"'\" rel='tag'>"+b+"</a>"},window.tagRenderer=function(b,a){return $(tagRendererRaw(b,a))})}
|
||||
function showFadingHelpText(e){e.wrap('<div class="dno" />').show().parent().fadeIn("slow",function(){$(this).children().unwrap()})}
|
||||
function initFadingHelpText(){var e={"wmd-input":"#how-to-format",tagnames:"#how-to-tag","tag-editor":"#how-to-tag",title:"#how-to-title"},c=$("#wmd-input, #tagnames, #title, .tag-editor input"),b=function(a){return $(a).parent().hasClass("tag-editor")?e["tag-editor"]:e[$(a).attr("id")]};c.focus(function(){var a=b(this);c.each(function(){var c=b(this);c!=a&&$(c).hide()});var e=$(a);e.is(":visible")||showFadingHelpText(e)})}
|
||||
$.fn.extend({postId:function(){var e=this.first();if(!e.hasClass("answer")||!e.hasClass("question"))e=e.closest(".answer, .question");return parseInt(e.find(".vote input")[0].value)}});
|
||||
StackExchange.newsletterAd=function(){function e(b){b=$('<div id="lightbox-panel" class="popup" style="display:block"></div>').append('<div class="popup-close"><a title="close this popup (or hit Esc)">×</a></div>').append(b);$('<div id="lightbox"></div>').appendTo($("body")).css("height",$(document).height()).fadeIn("fast");b.appendTo($("body")).center().fadeIn("fast").find(".popup-close").click(function(){$("#lightbox, #lightbox-panel").fadeOutAndRemove()})}function c(){var b=StackExchange.options.site.name,
|
||||
a=$(['<div style="text-align: left;">','<h2 style="margin-bottom: 15px;">Subscribe to the '+b+" weekly newsletter</h2>",'<p><strong><a href="/users/login?returnurl=/newsletter/signup/redirect">Create an account on '+b+'</a> or <a href="/users/login?returnurl=/newsletter/signup/redirect">log in</a> if you already have one.</strong></p>','<form><label for="newsletter-email-input">Or, send newsletter emails to:</label> <input type="text" id="newsletter-email-input" maxlength="100" title="your email address" /> <input type="submit" value="Subscribe" id="newsletter-email-submit" /></form></div>'].join(""));
|
||||
a.find("form").submit(function(){var b=$(this),c=$.trim(a.find("#newsletter-email-input").val());if(0==c.length)return!1;StackExchange.helpers.addSpinner(b);$.ajax({url:"/newsletter/signup/anon",type:"POST",dataType:"json",data:{email:c},success:function(a){"confirmed"==a.status&&!a.error?(b.find("#newsletter-email-input").attr("disabled",!0),b.find("#newsletter-email-submit").replaceWith('<span style="line-height: 120%; text-align: center;"><strong>Subscribed!</strong></span>'),$("#newsletter-signup-container").replaceWith('<div style="line-height: 200%; text-align: center;"><strong>Subscribed!</strong></div>')):
|
||||
"unconfirmed"==a.status&&!a.error?(b.find("#newsletter-email-input").attr("disabled",!0),b.find("#newsletter-email-submit").replaceWith('<span style="line-height: 120%; text-align: center;"><strong>Subscribed!</strong></span>'),b.append("<br /><br/><p><em>Please click the link in the confirmation email to activate your subscription.</em></p>"),$("#newsletter-signup-container").replaceWith('<span style="line-height: 120%;"><strong>Success!</strong> Please click the link in the confirmation email to activate your subscription.</span>')):
|
||||
b.showErrorPopup(a.error||"there was a problem signing up for the newsletter<br />please try again later")},error:function(){b.showErrorPopup("there was a problem signing up for the newsletter<br />please try again later")},complete:function(){StackExchange.helpers.removeSpinner(b)}});return!1});e(a)}return{init:function(){$("#newsletter-signup").click(function(){var b=$(this);if(StackExchange.options.user.isAnonymous)return c(),!1;StackExchange.helpers.addSpinner("#newsletter-signup-container");
|
||||
$.ajax({url:"/newsletter/signup",type:"POST",dataType:"json",success:function(a){a.url?window.location.href=a.url:"confirmed"==a.status?$("#newsletter-signup-container").replaceWith('<div style="line-height: 200%; text-align: center;"><strong>Subscribed!</strong></div>'):"unconfirmed"==a.status?$("#newsletter-signup-container").replaceWith('<span style="line-height: 120%;"><strong>Success!</strong> Please click the link in the confirmation email to activate your subscription.</span>'):b.parent().showErrorPopup("there was a problem signing up for the newsletter<br />please try again later")},
|
||||
error:function(){b.parent().showErrorPopup("there was a problem signing up for the newsletter<br />please try again later")},complete:function(){StackExchange.helpers.removeSpinner("#newsletter-signup-container")}})});$("#newsletter-preview").click(function(){var b=$(window).height(),b=Math.min(600,b-100),b=['<div id="newsleter-preview-pane" style="overflow: hidden; width: 660px; height: ',b,'px;"><iframe src="',$(this).attr("href"),'" width="660" height="',b,'" frameborder="0"></iframe></div>'].join("");
|
||||
e(b);return!1})},loader:function(b,a){var b=a||b,c=$(".newuser-greeting");$.ajax({url:"/newsletter/targetted/ajax",data:{domain:b},success:function(a){$("#newsletter-ad").remove();c.empty().append($(a))},complete:function(){c.attr("class","").attr("style","")}});a||(window.sessionStorage.tNewsletter=b+"-continued")}}}();
|
||||
(function(e,c,b,a){e.fn.caret=function(f,d){var h,j,i=this[0],k=e.browser.msie;"object"===typeof f&&"number"===typeof f.start&&"number"===typeof f.end?(h=f.start,j=f.end):"number"===typeof f&&"number"===typeof d?(h=f,j=d):"string"===typeof f?-1<(h=i.value.indexOf(f))?j=h+f[c]:h=null:"[object RegExp]"===Object.prototype.toString.call(f)&&(f=f.exec(i.value),null!=f&&(h=f.index,j=h+f[0][c]));if("undefined"!=typeof h)return k?(k=this[0].createTextRange(),k.collapse(!0),k.moveStart("character",h),k.moveEnd("character",
|
||||
j-h),k.select()):(this[0].selectionStart=h,this[0].selectionEnd=j),this[0].focus(),this;if(k)if(j=document.selection,"textarea"!=this[0].tagName.toLowerCase()){k=this.val();h=j[b]()[a]();h.moveEnd("character",k[c]);var g=""==h.text?k[c]:k.lastIndexOf(h.text);h=j[b]()[a]();h.moveStart("character",-k[c]);var l=h.text[c]}else h=j[b](),j=h[a](),j.moveToElementText(this[0]),j.setEndPoint("EndToEnd",h),g=j.text[c]-h.text[c],l=g+h.text[c];else g=i.selectionStart,l=i.selectionEnd;h=i.value.substring(g,l);
|
||||
return{start:g,end:l,text:h,replace:function(a){return i.value.substring(0,g)+a+i.value.substring(l,i.value[c])}}}})(jQuery,"length","createRange","duplicate");
|
||||
@@ -0,0 +1,94 @@
|
||||
'use strict';(function(e){function c(){this._events={};this._maxListeners=10}function b(a,b,d,c,e){this.type=a;this.listener=b;this.scope=d;this.once=c;this.instance=e}b.prototype.fire=function(a){this.listener.apply(this.scope||this.instance,a);if(this.once)return this.instance.removeListener(this.type,this.listener,this.scope),!1};c.prototype.eachListener=function(a,b){var d=null,c=null,e=null;if(this._events.hasOwnProperty(a)){c=this._events[a];for(d=0;d<c.length;d+=1)if(e=b.call(this,c[d],d),
|
||||
!1===e)d-=1;else if(!0===e)break}return this};c.prototype.addListener=function(a,f,d,c){this._events.hasOwnProperty(a)||(this._events[a]=[]);this._events[a].push(new b(a,f,d,c,this));this.emit("newListener",a,f,d,c);this._maxListeners&&!this._events[a].warned&&this._events[a].length>this._maxListeners&&("undefined"!==typeof console&&console.warn("Possible EventEmitter memory leak detected. "+this._events[a].length+" listeners added. Use emitter.setMaxListeners() to increase limit."),this._events[a].warned=
|
||||
!0);return this};c.prototype.on=c.prototype.addListener;c.prototype.once=function(a,b,d){return this.addListener(a,b,d,!0)};c.prototype.removeListener=function(a,b,d){this.eachListener(a,function(c,e){c.listener===b&&(!d||c.scope===d)&&this._events[a].splice(e,1)});this._events[a]&&0===this._events[a].length&&delete this._events[a];return this};c.prototype.off=c.prototype.removeListener;c.prototype.removeAllListeners=function(a){a&&this._events.hasOwnProperty(a)?delete this._events[a]:a||(this._events=
|
||||
{});return this};c.prototype.listeners=function(a){if(this._events.hasOwnProperty(a)){var b=[];this.eachListener(a,function(a){b.push(a.listener)});return b}return[]};c.prototype.emit=function(a){for(var b=[],d=null,d=1;d<arguments.length;d+=1)b.push(arguments[d]);this.eachListener(a,function(a){return a.fire(b)});return this};c.prototype.setMaxListeners=function(a){this._maxListeners=a;return this};"function"===typeof define&&define.amd?define(function(){return c}):e.EventEmitter=c})(this);
|
||||
StackExchange.realtime=function(){function e(a){StackExchange.options.user.isDeveloper&&console.log(a)}function c(){p.on("hb",function(a){l.send(a)})}function b(a){v?(e("sending: "+a),l.send(a)):u.push(a)}function a(a,b){1!=$("#vote-accepted-"+a.answerid).length&&($(".vote-accepted-on").remove(),b||$('.vote input[value="'+a.answerid+'"]').parent().append('<span class="vote-accepted-on" title="The question owner accepted this as the best answer">accepted</span>'))}function f(){$("#new-post-activity").remove();
|
||||
$("#answers-header").prepend(q)}function d(a){var b=$(".question[data-questionid="+a.id+"], .answer[data-answerid="+a.id+"]").find(".postcell, .answercell");0<b.find("#new-post-activity").length||b.prepend('<div id="new-post-activity">an edit has been made to this post: show the <a href="/posts/'+a.id+'/revisions">revision</a></div>').click(function(){$.get("/posts/"+a.id+"/ajax-load-mini",r(b,a))})}function h(a,b){return a.index<b.index?-1:a.index>b.index?1:0}function j(){$("#new-post-activity").remove();
|
||||
var a=o.sort(h),b;for(b in a){var d=a[b];$("#question-summary-"+d.id).remove();$(d.body).prependTo("#question-mini-list, #questions").hide().fadeIn()}i(0);null!=StackExchange.options.user.accountId&&StackExchange.tagPreferences.applyPrefs(!0,t);"undefined"!=typeof MathJax&&MathJax.Hub.Queue(["Typeset",MathJax.Hub]);k();o=[]}function i(a){var b=document.title.replace(/^\(\d*\*?\) /,"");0<a&&(b="("+a+") "+b);window.setTimeout(function(){$(document).attr("title",b)},200)}function k(){for(var a=$("span.relativetime"),
|
||||
b=0;b<a.length;b++)if(a[b].title){var d;d=new Date(a[b].title);d=((new Date).getTime()-d.getTime())/1E3;var c=Math.floor(d/86400);if(d=isNaN(c)||0>c||31<=c?void 0:0==c&&(2>d&&"just now"||60>d&&Math.floor(d)+(s?"s ago":" secs ago")||120>d&&(s?"1m ago":"1 min ago")||3600>d&&Math.floor(d/60)+(s?"m ago":" mins ago")||7200>d&&(s?"1h ago":"1 hour ago")||86400>d&&Math.floor(d/3600)+(s?"h ago":" hours ago")))a[b].innerHTML=d}}var g,l,o=[],n=[],m=0,u=[],v=!1,s=!1,t,p=new EventEmitter,q=function(){var a=Object.keys(n).length;
|
||||
return $('<div id="new-post-activity">'+a+" new answer"+(1<a?"s":"")+" to this question</div>").click(function(){StackExchange.realtime.expandAnswers()})},r=function(a,b){return function(d){d=$(d).find(".postcell, .answercell");a.replaceWith(d);d.hide().fadeIn(400,function(){"undefined"!=typeof MathJax&&MathJax.Hub.Queue(["Typeset",MathJax.Hub]);StackExchange.question.canViewVoteCounts()&&StackExchange.vote.bindFetchVoteCounts()});StackExchange.comments.init({post:d});StackExchange.vote.init(b.id);
|
||||
StackExchange.vote||StackExchange.question.bindAnonymousVoteDisclaimers();a.find("a[id^='link-post-']").click(function(a){if(!a.ctrlKey&&!a.metaKey)return StackExchange.question.showShareTip($(this),options.showCitation),!1});StackExchange.question.bindSuggestedEditPopupLinks();StackExchange.question.initShareLinks();window.history.pushState(b,"new post","#"+b.id)}},w=function(){var a=Object.keys(o).length;i(a);return $('<div id="new-post-activity">'+a+" question"+(1<a?"s":"")+" with new activity</div>").click(function(){StackExchange.realtime.expandActiveQuestions()})};
|
||||
return{init:function(a){g=a;if("WebSocket"in window||"MozWebSocket"in window){if(l)try{e("closing WebSocket"),l.close()}catch(b){}l||(e("opening WebSocket"),l="WebSocket"in window?new WebSocket(g):new MozWebSocket(g),l.onopen=function(){if(!v){v=!0;for(var a=0,b=u.length;a<b;a++)e("sending: "+u[a]),l.send(u[a]);u=[]}e("WebSocket opened");c();setInterval(k,6E4)},l.onmessage=function(a){a=$.parseJSON(a.data);p.emit(a.action,a.data)},l.onclose=function(){l=null;e("WebSocket closed");5>m&&(m++,e("reconnect attempt:"+
|
||||
m),setTimeout('StackExchange.realtime.init("'+g+'")',500))},l.onerror=function(){e("WebSocket failed");l=null})}},expandActiveQuestions:j,expandAnswers:function(){var a=$("#answers #answers-header .answers-subheader h2"),b=parseInt(a.text().match(/^\d*\*?/))+n.length;isNaN(b)&&(b=n.length);a.text(b+" Answer"+(1<b?"s":""));$("#new-post-activity").remove();var d=$("#answers #answers-header");$.each(n,function(a,b){$.get("/posts/"+b+"/ajax-load-mini",function(a){a=$(a);a.insertAfter(d).hide().fadeIn(400,
|
||||
function(){"undefined"!=typeof MathJax&&MathJax.Hub.Queue(["Typeset",MathJax.Hub]);StackExchange.question.canViewVoteCounts()&&StackExchange.vote.bindFetchVoteCounts()});StackExchange.comments.init({post:a});StackExchange.vote.init(b)})});StackExchange.vote||StackExchange.question.bindAnonymousVoteDisclaimers();d.find("a[id^='link-post-']").click(function(a){if(!a.ctrlKey&&!a.metaKey)return StackExchange.question.showShareTip($(this),options.showCitation),!1});StackExchange.question.bindSuggestedEditPopupLinks();
|
||||
StackExchange.question.initShareLinks();n=[]},subscribeToActiveQuestions:function(a,d,c,g,f,e,i){a=a+"-"+d;t=c;s=e;b(a);p.on(a,function(a){a=$.parseJSON(a);if(null!=f)for(var b=0;b<f.length;b++)if(-1==$.inArray(f[b],a.tags))return;null!=StackExchange.options.user.accountId&&StackExchange.tagPreferences.isIgnored(a.body)||(o[a.id]={id:a.id,body:a.body,index:(new Date).getTime(),siteid:a.siteid},$("#new-post-activity").remove(),$("#question-mini-list, #questions").prepend(w),g&&j());null!=i&&i(a)})},
|
||||
subscribeToInboxNotifications:function(){if(null!=StackExchange.options.user.accountId){var a=StackExchange.options.user.accountId+"-inbox";b(a);p.on(a,function(a){$(".unreadCount").remove();var b=$('<a class="unreadCount" title="unread messages in your inbox">'+a+"</a>").insertAfter(".genu");$("#portalLink .unreadCount").css({marginTop:b.css("margin-top"),opacity:1},2E3);genuwine.setUnreadCount(a)})}},subscribeToQuestion:function(c,g){var e=c+"-question-"+g;b(e);p.on(e,function(b){b=$.parseJSON(b);
|
||||
switch(b.a){case "score":var c=$('.vote input[value="'+b.id+'"]').siblings(".vote-count-post");c.text()!=b.score&&(c.text(b.score),0==$(":animated").length&&c.fadeTo("fast",0.7).fadeTo("fast",1),StackExchange.question.canViewVoteCounts()&&StackExchange.vote.bindFetchVoteCounts());break;case "comment-add":0==$("#comment-"+b.commentid).length&&(b=$("#comments-link-"+b.id),c=b.data("comments-count")||0,c++,b.data("comments-count",c),b.html("add / show <b>"+c+"</b> more comment"+(1<c?"s":"")).show().fadeTo("fast",
|
||||
0.7).fadeTo("fast",1));break;case "answer-add":0==$("#answer-"+b.answerid).length&&(n.push(b.answerid),StackExchange.cardiologist.isHeartBeating()?StackExchange.helpers.DelayedReaction(f,5E3).trigger():f(),StackExchange.cardiologist.notifiedOfNewAnswer());break;case "accept":a(b);break;case "unaccept":a(b,!0);break;case "post-edit":d(b)}})},subscribeToReputationNotifications:function(a){null!=StackExchange.options.user.accountId&&(a=a+"-"+StackExchange.options.user.userId+"-reputation",b(a),p.on(a,
|
||||
function(a){var b=$("#hlinks .reputation-score");b.text()!=a.score&&(0==$(":animated").length&&b.fadeTo("fast",0.8).fadeTo("fast",1),b.text(a))}))},updateRelativeDates:k}}();"use strict";StackExchange.anonymous={};
|
||||
var gauth=function(){return{informStackAuth:function(e){if(gauth.enabled()){var c=document.domain;"meta."==c.substr(0,5)&&(c=c.substr(4,c.length-4));var b=$.cookie("gauth");if(null==b)$.cookie("gauth",null,{path:"/",domain:c}),$.cookie("gauth",null,{path:"/",domain:document.domain});else{"."!=c.charAt(0)&&(c="."+c);$.cookie("gauth",null,{path:"/",domain:c});$.cookie("gauth",null,{path:"/",domain:document.domain});var a=b.indexOf(":"),c=b.substr(0,a),b=b.substr(a+1),f=e+"/auth/global/write?authToken="+
|
||||
encodeURIComponent(c)+"&nonce="+encodeURIComponent(b);$(document).ready(function(){$("#footer").append("<iframe style='display:none' src='"+f+"'></iframe>")})}}},checkStackAuth:function(e){if(gauth.enabled()&&null==$.cookie("gauthed")){$.cookie("gauthed","1",{path:"/"});var c=function(b){if(b.origin==e)if("No Local Storage"==b.data)gauth.noGAuthStorage();else if("No Session"==b.data)gauth.noGAuthSession();else{var a=b.data.substr(0,b.data.indexOf(",")),b=b.data.substr(b.data.indexOf(",")+1);$.post("/users/login/global",
|
||||
{authToken:a,nonce:b},function(a){gauth.globallyAuthed(a)},"json")}};window.attachEvent?window.attachEvent("onmessage",c):window.addEventListener("message",c,!1);$.post("/users/login/global/request","",function(b){var a=e+"/auth/global/read?request="+encodeURIComponent(b.token)+"&nonce="+encodeURIComponent(b.nonce);$(document).ready(function(){$("#footer").append("<iframe id='global-auth-frame' style='display:none' src='"+a+"'></iframe>")})},"json")}},enabled:function(){$.cookie("enabledCheck","1");
|
||||
if(null==$.cookie("enabledCheck"))return!1;$.cookie("enabledCheck",null);return"undefined"==typeof localStorage?!1:!0},noGAuthStorage:function(){},noGAuthSession:function(){},globallyAuthed:function(e){if(e&&e.Message){var e=e.Message+" ",c,b=!1,a=""+window.location,f=a.indexOf("returnurl=");if(-1!=f){var d=a.indexOf("&",f);-1==d&&(d=a.length);c=decodeURIComponent(a.substring(f+10,d));c=/^(?:http:\/\/|\/)/.test(c)?c.replace(/[^-a-z0-9+&@#\/%?=~_|!:,.;()]/g,""):null}-1!=a.indexOf("/users/login")&&
|
||||
(b=!0,c=c||"/");StackExchange.helpers.showFancyOverlay({message:b?e+"<br>You are being redirected...":e+(c?"<a href=\"javascript:window.location='"+c+"'\">Click here</a> to return to your last location.":'<a href="javascript:location.reload(true)">Click here</a> to refresh the page.'),showClose:!b,complete:function(){b&&(window.location=c)}})}}}}(),genuwine=function(){var e,c="",b,a,f=function(){return $(".genu").hasClass("genu-on")},d=function(){var d=$(".genu"),c=$("#seWrapper");if(0==c.length){j();
|
||||
var c=$("#seWrapper"),g;0<b?(g=$("#seTabInbox"),u(g)):a?(g=$("#seTabNotices"),i(g)):(g=$("#seTabHot"),l(g));g.addClass("seCurrent")}(g=d.hasClass("genu-on"))?($(".unreadCountTab").hide(),$(".itemBoxNew").removeClass("itemBoxNew"),c.fadeOut("fast")):(c.fadeIn("fast"),$(".unreadCount").hide());d.toggleClass("genu-on",!g);-1==b&&$(d).ready(function(){$("#seTabInbox").hide()});h($("#seTabInbox"),$("#seTabNotices"))},h=function(d,c){StackExchange.options.site.isNoticesTabEnabled&&a&&0==c.find(".unreadCountTab").length&&
|
||||
c.prepend('<span class="unreadCountTab newNotices">'+a+"</span>");0<b&&0==d.find(".unreadCountTab").length&&d.prepend('<span class="unreadCountTab">'+b+"</span>")},j=function(){var a='<div id="seWrapper" style="position:absolute; display:none;"><div class="seIntro"><a href="'+c+'">Stack Exchange</a> is a network of free, community-driven Q&A sites.</div><div class="seNav"><ul class="seNavLinks"><li><a id="seTabHot">Hot Questions</a></li><li><a id="seTabSites">All Sites</a></li><li><a id="seTabInbox">Inbox</a></li>'+
|
||||
(StackExchange.options.site.isNoticesTabEnabled?'<li><a id="seTabNotices">Notifications</a></li>':"")+'</ul></div><div class="seContainer"></div><div class="seFooter"><div id="seTabEmail" class="seEmailAccount"><a>email settings</a></div><a id="seClose">close</a></div></div>',b=$("#hlinks"),b=b.height()+b.offset().top+5;$(a).appendTo("#portalLink").css({top:b}).find("ul.seNavLinks a, #seTabEmail").click(function(){var a=$(this);$(".seNavLinks a").removeClass("seCurrent");a.addClass("seCurrent");switch(a.attr("id")){case "seTabHot":l(a);
|
||||
$("#seContainerSites, #seContainerInbox, #seContainerEmail, #seContainerNotices").hide();$("#seContainerHot").fadeIn("fast");break;case "seTabSites":0==$("#seContainerSites").length&&g(a);$("#seContainerHot, #seContainerInbox, #seContainerEmail, #seContainerNotices").hide();$("#seContainerSites").fadeIn("fast");break;case "seTabInbox":u(a);$("#seContainerHot, #seContainerSites, #seContainerEmail, #seContainerNotices").hide();$("#seContainerInbox").fadeIn("fast");break;case "seTabEmail":0==$("#seContainerEmail").length&&
|
||||
o(a);$("#seContainerHot, #seContainerSites, #seContainerInbox, #seContainerNotices").hide();$("#seContainerEmail").fadeIn("fast");break;case "seTabNotices":i(a),$("#seContainerHot, #seContainerSites, #seContainerInbox, #seContainerEmail").hide(),$("#seContainerNotices").fadeIn("fast")}});$("#seClose").live("click",d)},i=function(a){0==$("#seContainerNotices").length&&t(a,"/notices/genuwine?userId="+StackExchange.options.user.id,"jsonp",k,!0)},k=function(a,b){for(var d='<div id="seContainerNotices" style="display:none">',
|
||||
c=0;c<b.length;c++)var g=b[c],d=d+('<div class="noticeBox'+(g.is_unread?" itemBoxNew":"")+'"><a href="'+g.site_url+'" class="siteLinkFavicon"><img src="'+g.icon+'"></a><div class="siteInfo"><p>'+g.text+"</p></div></div>");p(a,d+"</div>")},g=function(a){t(a,c+"/genuwine/sites?callback=?&host="+document.location.host+(e?"&accountId="+e:""),"jsonp",m)},l=function(a){0==$("#seContainerHot").length&&t(a,c+"/genuwine?callback=?","jsonp",n)},o=function(a){t(a,"/accounts/email-settings","json",function(a,
|
||||
b){function d(){$("#email-save").removeAttr("disabled");$("#email-confirmation").html("")}p(a,'<div id="seContainerEmail" style="display:none; font-size:11px;"><div class="itemBox" style="border-bottom: 0px"><p>Would you like to receive unread inbox messages via email?</p><div>Email: <input id="email-notify" name="email-notify" style="width:300px;" value="'+b.verifiedEmail+'"></input></div><div><input type="radio" name="optIn" value="true" id="email-enable"'+(!0==b.optIn?'checked="checked"':"")+'"> <label for="email-enable">Email me my unread inbox messages </label> <select id="email-freq"><option value="3">every 3 hours</option><option value="24">daily</option><option value="168">weekly</option></select> </div><div><input type="radio" name="optIn" value="false" id="email-disable"'+
|
||||
(!0!=b.optIn?'checked="checked"':"")+'"> <label for="email-disable">Do not email me inbox messages</label></input></div><div><input type="button" name="save" id="email-save" value="Save" disabled="disabled"></input></div><div id="email-confirmation" style="display:none;"></div></div></div>');$("#email-freq").val(b.freq).on("click focus",function(){$("#email-enable").prop("checked",!0)});$("#email-notify").focus().keyup(d);$("#email-enable, #email-disable, #email-freq").change(d);$("#email-save").click(function(){q();
|
||||
$.post("/accounts/verified-email-set",{email:$("#email-notify").val(),fkey:StackExchange.options.user.fkey,optin:$("input[name=optIn]:checked").val(),freq:$("#email-freq").val()},function(a){StackExchange.helpers.removeSpinner();$("#email-confirmation").html(a.message).fadeIn();a.success&&$("#email-save").attr("disabled","disabled")},"json")})},!0)},n=function(a,b){for(var d=$("<div/>"),c='<div id="seContainerHot" style="display:none">',g=0;g<b.length;g++)var f=b[g],e=f.SiteId,i='href="http://'+e+
|
||||
"/q/"+f.Id+'?hq=1"',h=parseInt(f.DisplayScore,10),c=c+('<div class="itemBox"><a '+i+' class="seNumAnswer">'+h+'</a><div class="siteInfo"><p><a '+i+">"+d.text(f.Title).html()+'</a></p><a href="http://'+e+'" class="siteLink">'+e+"</a></div></div>");p(a,c+"</div>")},g=function(a){t(a,c+"/genuwine/sites?callback=?&host="+document.location.host+(e?"&accountId="+e:""),"jsonp",m)},m=function(a,b){for(var d='<div id="seContainerSites" style="display:none">',c=0;c<b.length;c++)var g=b[c],f=g.Name,e='href="http://'+
|
||||
g.Id+'?as=1"',d=d+('<div class="itemBox"><a '+e+' class="siteFavicon"><img src="'+g.FaviconUrl+'" alt="'+f+'"></a><div class="siteInfo"><p><a '+e+">"+f+"</a></p><a "+e+' class="siteLink">'+g.Description+"</a></div></div>");p(a,d+"</div>")},u=function(a){-1!=b&&0==$("#seContainerInbox").length&&t(a,"/inbox/genuwine","json",v,!0)},v=function(a,b){for(var d='<div id="seContainerInbox" style="display:none">',c=0;c<b.length;c++){var g=b[c],f='href="'+g.Url+'"',i='title="'+g.CreationDate+'"',h=g.Count,
|
||||
d=d+('<div class="itemBox'+(g.IsNew?" itemBoxNew":"")+'"><a '+f+' class="siteLinkFavicon"><img src="'+g.FaviconUrl+'" alt="'+g.SiteUrl+'"></a><div class="siteInfo">');"careers message"==g.Type?d+="<p><a "+f+' style="font-weight:normal"><b>'+g.Title+"</b> wants to contact you on <b>Stack Overflow Careers</b></a></p>":"invitation"==g.Type?(i=g.Count,d+="<p><a "+f+' style="font-weight:normal"><b>'+i+"</b> "+("invitation"+(1<i?"s":""))+" awarded on <b>Stack Overflow Careers</b></a></p>"):d+="<p>"+(1<
|
||||
h?h+" ":"")+g.Type+" on <a "+f+" "+i+">"+g.Title+"</a></p>";d+='<p class="inboxSummary">'+(g.Summary||"")+"</p></div></div>"}e&&5<=b.length&&(d+='<div class="itemMoreContainer"><div class="seIntro"><a href="http://stackexchange.com/users/'+e+'?tab=inbox">more inbox messages …</a></div></div>');p(a,d+"</div>")},s={},t=function(a,b,d,c,g){var f=a.attr("id");if(s[f])q();else{s[f]=!0;q();var e=function(){s[f]=!1;StackExchange.helpers.showErrorPopup($(".seContainer"),"An error occurred while loading - please try again.")};
|
||||
$.ajax({type:"GET",url:b,dataType:d,success:function(b){b&&(0<b.length||g)?c(a,b):e()},error:e,complete:StackExchange.helpers.removeSpinner()})}},p=function(a,b){var d=$(b);d.appendTo(".seContainer");a.hasClass("seCurrent")&&d.fadeIn("fast")},q=function(){StackExchange.helpers.removeSpinner();StackExchange.helpers.addSpinner(".seContainer",{position:"relative",left:"10px",top:"10px"})},r=function(){var a=$("#portalLink .unreadCount"),b=a.css("margin-top");a.css({marginTop:-20,opacity:0}).show().animate({marginTop:b,
|
||||
opacity:1},2E3)},w=function(d){a=d;!(0<b)&&StackExchange.options.site.isNoticesTabEnabled&&(99<a&&(a=99),0<a&&$("#portalLink .unreadCount").text(""+a).addClass("newNotices").click(function(){$(".genu").click()}).show())};return{isVisible:f,click:d,setUnreadCount:function(a){b=a;0<a?($("#portalLink .unreadCount").text(b).click(function(){$(".genu").click()}).show(),r()):$("#portalLink .unreadCount").text("").hide();$("#portalLink .unreadCount").removeClass("newNotices")},animateInbox:r,init:function(a,
|
||||
g,i){var h=$(".genu");1<=h.length&&(h[0].onclick=null);e=a;c=h.attr("href");b=g;w(i);h.removeAttr("href").add(".unreadCount").click(d);$(document).click(function(a){f()&&!$.contains($("#portalLink")[0],a.target)&&d()})}}}();
|
||||
StackExchange.notify=function(){function e(a,b){var d=$("#dismissed-messages");d.val(d.val()+"~"+a+(b?" "+b:"")+"~")}function c(a,b){var d=$("#dismissed-messages").val();return!d?!1:RegExp("~"+a+(b?" "+b:"")+"~").test(d)}function b(a,b,d){var c=parseInt($("body").css("margin-top").match(/\d+/)),a=b*c/a;d?$("body:not(.no-message-slide)").animate({marginTop:a+"px"},"fast","linear"):$("body:not(.no-message-slide)").css("marginTop",a+"px")}var a=0,f=function(d,c){var g=$("#notify-"+d+(c?"-"+c:""));-1==
|
||||
d?$.cookie("m","0",{expires:90,path:"/"}):-1<d&&$.post("/messages/mark-as-read",{messagetypeid:d,id:c?c:null});e(d,c);a--;g.fadeOut("fast",function(){b(a+1,a,!0);g.remove()})},d=function(b){if(StackExchange.options.site.isNoticesTabEnabled)return!0;a++;if(c(b.messageTypeId,b.id))return!1;var d="";b.messageTypeId&&(d=' id="notify-'+b.messageTypeId+(b.id?"-"+b.id:"")+'"');d="<div"+d+' style="display:none"><span class="notify-close"><a title="dismiss this notification">×</a></span><span class="notify-text">'+
|
||||
b.text+"</span>";if(b.showProfile)var g=encodeURIComponent("/users/"+b.userId+"?tab=badges&sort=recent"),d=d+(' See your <a href="/messages/mark-as-read?messagetypeid='+b.messageTypeId+"&returnurl="+g+'">profile</a>.');d=$(d+"</div>");d.find(".notify-close").click(function(){b.close&&b.close();f(b.messageTypeId,b.id)});$("#notify-container").append(d);return!0},h=function(){$("#notify-container div").fadeIn("slow")},j=function(a,b){var c=$('<div class="link-more"><a>view '+a+" more notification"+
|
||||
(1!=a?"s":"")+"</a></div>");$("#notify-container").append(c);c.click(function(){c.detach();for(var a=0;a<b.length;a++)d(b[a]);h()})};return{showMessages:function(c,f){for(var g=0,e=f?2:c.length,o=0;o<e&&o<c.length;o++)d(c[o])&&g++;b(a,g,!1);h();f&&g<c.length&&(e=c.slice(e),j(c.length-g,e))},show:function(a,b){$("body:not(.no-message-slide)").animate({marginTop:"2.5em"},"fast","linear");d({text:a,messageTypeId:b});h()},close:f,getMessageText:function(a){return $("#notify-"+a+" .notify-text").text()}}}();
|
||||
function moveScroller(){var e=$("#scroller").width(),c=function(){var b=$(window).scrollTop(),a=$("#scroller-anchor").offset().top,c=$("#scroller");b>a?c.height()>$(window).height()?c.css({position:"fixed",top:"",bottom:"0px",width:e}):c.css({position:"fixed",top:"0px",bottom:"",width:e}):b<=a&&c.css({position:"relative",top:"",bottom:""})};$(window).scroll(c).resize(c);c()}
|
||||
var styleCode=function(){return function(){"undefined"!=typeof MathJax&&MathJax.Hub.Queue(["Typeset",MathJax.Hub]);var e=!1;$("pre code").parent().each(function(){$(this).hasClass("prettyprint-override")&&($(this).removeClass("prettyprint-override").addClass("prettyprint"),e=!0);var c;if(c=!$(this).hasClass("prettyprint")){c=$(this);var b=$("#prettify-lang").text();""!=b?(c.addClass(b),c=!0):c=!1}c&&($(this).addClass("prettyprint"),e=!0)});e&&("undefined"!=typeof jtab?jtab.renderimplicit():StackExchange.using("prettify",
|
||||
function(){StackExchange.prettify.applyCodeStyling()}))}}();
|
||||
StackExchange.helpers.MagicPopup=function(e){function c(a,d){var c=$("<div id='"+e.id+"'/>").html(d),h=$("<div />").css({overflow:"hidden",position:"absolute",width:1,height:1,top:0,left:0}).append(c).appendTo("body"),j=e.showing(a,c),n={left:j.left};j.hasOwnProperty("bottom")?(n.bottom=j.bottom,n.top="auto"):n.top=j.top;var m;e.shown&&(m=function(){e.shown(a,c)});h.css(n).animate({height:c.outerHeight()+8,width:c.outerWidth()+8},300,m);b=function(){h.stop().remove();e.removed&&e.removed(a,c);b=f=
|
||||
null};f=StackExchange.helpers.DelayedReaction(b,5);n=h;j.additional&&(n=n.add(j.additional));n.hover(f.cancel,f.trigger)}var b,a,f,d,h={},j=StackExchange.helpers.DelayedReaction(function(a,f){if(!d&&a){var g;e.cache&&"c_"+a in h?g=$.Deferred().resolve(h["c_"+a]):(g=$.ajax({type:"GET",url:a,dataType:"html"}),e.cache&&g.done(function(b){h["c_"+a]=b}));g.done(function(a){b&&b();""!=a&&c(f,a)})}},500);$(document).delegate(e.selector,{mouseenter:function(){if(f&&this===a)f.cancel();else return a=this,
|
||||
j.trigger(e.getUrl(this),this),d=!1},mouseleave:function(){d=!0;j.cancel();f&&f.trigger()}})};
|
||||
StackExchange.tagmenu=function(){function e(a){var a=$(a),b=a.attr("href");if(!b||"/"!=b.charAt(0))return null;b=a.text();if(-1<b.indexOf("*"))return null;a.attr("title","");return"/tags/"+encodeURIComponent(b)+"/subscriber-info"}function c(a,b){var c=$(a),e=c.offset(),i=c.outerHeight(),c={left:e.left},k=e.top+i,i=e.left+b.outerWidth();b.height()+k>$(window).height()+$(window).scrollTop()?c.bottom=$(window).height()-e.top-8:c.top=k;e=Math.max(1024,$(window).width());i>e&&(c.left-=i-e);return c}var b,
|
||||
a;return{init:function(f){b=f;a||(a=!0,StackExchange.options.isMobile||(StackExchange.helpers.MagicPopup({selector:".post-tag:not(.user-tag)",id:"tag-menu",getUrl:e,showing:c,shown:function(a,c){b&&b(c,$(a).text())}}),$("#interesting-tags .post-tag").addClass("user-tag")))}}}();
|
||||
StackExchange.usermenu=function(){function e(b,d){var c=$(b).find("img:first"),e=c.offset(),i=c.height(),k=c.width(),g=Math.max(k,i),l=64*i/g,g=64*k/g,o=d.find("img:first").css({width:g,height:l}),n=o.offset();o.css("visibility","hidden");a=c.clone().css({position:"absolute",zIndex:300,left:e.left,top:e.top,width:k,height:i}).appendTo("body");var m=function(){o[0].complete?(o.css("visibility","visible"),a.fadeOutAndRemove()):setTimeout(m,500)};a.animate({width:g,height:l,top:e.top+n.top},200,m);return{top:e.top,
|
||||
left:e.left-n.left,additional:a}}function c(){a.remove()}var b,a;return{init:function(){b||(b=!0,StackExchange.options.isMobile||StackExchange.helpers.MagicPopup({selector:".user-hover .user-gravatar48, .user-hover .user-gravatar32",getUrl:function(a){a=/\/users\/([^/]+).*$/.exec($(a).closest(".user-hover").find(".user-details a").attr("href"));return!a?null:"/users/user-info/"+a[1]},cache:!0,id:"user-menu",showing:e,removed:c}))}}}();
|
||||
StackExchange.chatAd=function(){function e(){var a=$(".question .post-taglist .post-tag");return!a.length?null:a.map(function(a,b){return $(b).text()}).get().join(" ")}function c(a){return 10>a?"0"+a:a}function b(a){var b=new Date;b.setTime(1E3*a);return[b.getUTCFullYear(),"-",c(b.getUTCMonth()+1),"-",c(b.getUTCDate())," ",c(b.getUTCHours()),":",c(b.getUTCMinutes()),":",c(b.getUTCSeconds()),"Z"].join("")}function a(a){var b=Math.floor((new Date).getTime()/1E3)-a,d=b%60,g=Math.floor(b/60),e=Math.floor(b/
|
||||
3600);if(1>b)return"just now";if(60>b)return 1==d?"1 sec ago":d+" secs ago";if(3600>b)return 1==g?"1 min ago":g+" mins ago";if(86400>b)return 1==e?"1 hour ago":e+" hours ago";b=Math.floor(b/86400);if(1==b)return"yesterday";if(2>=b)return b+" days ago";a=new Date(1E3*a);return m[a.getMonth()]+" "+a.getDate()+" at "+a.getHours()+":"+c(a.getMinutes())}function f(a){var b=$("<div />");b.text(a);return b.html().replace('"',""")}function d(){$.get(g,null,function(a,b,d){i(a,b,d)})}function h(b){for(var d=
|
||||
$('<div class="ad502-users" />'),c=0;c<b.length&&7>c;c++){var g=b[c],e=g.name;g.lastPost&&(e+=": "+a(g.lastPost));var f="http://www.gravatar.com/avatar/"+g.emailhash+"?s=23&d=identicon&r=PG",g=$('<a href="'+(k+"/users/"+g.id)+'" />');$("<img />").attr("title",e).attr("src",f).appendTo(g);d.append(g)}return d}function j(a){var b=a.user;return(a=a.userid)?'<a href="'+k+"/users/"+a+'">'+f(b)+"</a>":f(b)}function i(c){var g=$("#ad502-rooms");if(!c.error){g.html("");for(var e=c.rooms,i=0;i<e.length&&2>
|
||||
i;i++){var m=e[i],q=k+"/rooms/"+m.id,r=$('<div class="ad502-room"></div>');r.append($('<h3 class="ad502-room-h3"><span class="ad502-room-title" title="'+f(m.name)+'"><a href="'+q+'">'+f(m.name)+"</a></span></h3>"));m.messages&&0<m.messages.length&&r.append($('<span title="'+b(m.lastPost)+'" class="ad502-last-message">'+a(m.lastPost)+" - "+j(m.messages[0])+"</span><br>"));m.singleImage?r.append($('<div class="ad502-users"><img src="'+k+"/rooms/users/"+m.id+'.jpeg" /></div>')):r.append(h(m.users));
|
||||
g.append(r)}1<c.activeUsers?$("#h-chat-link").text(c.activeUsers+" People Chatting"):$("#h-chat-link").text("Visit Chat");$("#h-chat-link").attr("title",c.activeUsers+" users active in "+c.activeRooms+" rooms the last 60 minutes")}l<=n&&window.setTimeout(d,1E3*l);l+=o}var k,g,l=180,o=30,n=480,m="Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(",");/^\/questions\/\d+/i.test(window.location.pathname)&&(n=0);return{init:function(a){k=a.chatUrl;g=a.reloadUrl;if(a.tagBased){var b=e();if(!b)return;
|
||||
g+=(/\?/.test(g)?"&":"?")+"tags="+encodeURIComponent(b)}null===a.preloadData?d():i(a.preloadData,null,null)}}}();
|
||||
StackExchange.helpers.noDiacritics=function(){var e={"\u00e0\u00e5\u00e1\u00e2\u00e4\u00e3\u00e5\u0105":"a","\u00e8\u00e9\u00ea\u00eb\u0119":"e","\u00ec\u00ed\u00ee\u00ef\u0131":"i","\u00f2\u00f3\u00f4\u00f5\u00f6\u00f8\u0151":"o","\u00f9\u00fa\u00fb\u00fc":"u","\u00e7\u0107\u010d":"c","\u017c\u017a\u017e":"z","\u015b\u015f\u0161":"s","\u00f1\u0144":"n","\u00fd\u0178":"y","\u0142":"l","\u0111":"d","\u00df":"ss","\u011f":"g","\u00de":"th"};return function(c){for(var b in e)e.hasOwnProperty(b)&&(c=
|
||||
c.replace(RegExp("["+b+"]"),e[b]));return c}}();function sanitizeAndSplitTags(e,c){for(var e=$.trim(e).replace(/([A-Za-z0-9])\+(?=[A-Za-z0-9])/g,"$1 "),b=e.split(/[\s|,;]+/),a=[],f=0;f<b.length;f++){var d=StackExchange.helpers.noDiacritics(b[f].toLowerCase()).replace(/_/g,"-"),d=d.replace(RegExp("[^a-z0-9.#+"+(c?"*":"")+"-]","g"),""),d=d.replace(/^[#+-]+/,""),d=d.replace(/[.-]+$/,"");0<d.length&&-1==$.inArray(d,a)&&a.push(d)}return a}
|
||||
StackExchange.question=function(){var e=function(a,b){var c=null!=a;a||(a=$('div.question div.post-menu a:contains("link")'));var d=a.closest(".post-menu, .help-menu");if(a.hasClass("share-link"))d.find(".close-share-tip").click();else{a.addClass("share-link");var e=a.attr("id").substring(10),f=a.closest(".col-section").length?"section":a.closest("div.question").length?"question":"answer",h=$('<div class="share-tip" style="display:none">share a link to this '+f+'<input type="text" value="http://'+
|
||||
document.location.host+a.attr("href")+'" style="display:block; width:292px;"><a class="close-share-tip" style="float:right">close</a></div>');b&&h.find(".close-share-tip").before('<a id="link-post-'+e+'" style="float:left">cite</a>');h.appendTo(d).fadeIn(c?"fast":0).bind("removing",function(){a.removeClass("share-link")}).find(".close-share-tip").click(function(){h.fadeOutAndRemove()}).end().find("input[type=text]").select()}},c=function(a){var b=$("#post-form h2:first"),c=b.wrap("<div />").parent(),
|
||||
d=c.wrap("<div />").parent(),e=$("<div />").prependTo(d),f=d.height(),h=$("<div />"),a=$(a),j=parseInt(b.css("margin-bottom")),i=$("#content"),k=$("#wmd-input").outerWidth(),q=i.offset().left>b.offset().left-5&&"visible"!=i.css("overflow-x");h.css({height:0,overflowY:"hidden"}).appendTo(c).append(a);d.css({height:f,position:"relative"});c.css({position:"absolute",bottom:-j,width:k});e.addClass("answer-help-background").css({position:"absolute",bottom:-j,height:0,width:k});q&&(e.css("left",0),c.animate({paddingLeft:5},
|
||||
1E3));h.animate({height:a.height()+j+10},1E3);e.animate({height:a.height()+j+10+f},1E3);$("<div style='float:right;margin-top:10px;'><a href='#'>ok</a></div>").hide().prependTo(c).fadeIn(1E3).find("a").one("click",function(a){var d=$(this).parent();setTimeout(function(){d.remove()},1);h.animate({height:0},1E3,function(){h.add(e).remove();b.unwrap().unwrap()});e.animate({height:0},1E3);q&&c.animate({paddingLeft:0},1E3);a.preventDefault()})},b=function(){$.get("/posts/answer-help").then(c)},a,f,d,h=
|
||||
function(){var a=window.location.href;0>a.indexOf("#")||(a=a.match(/#(\d+|comment(\d+)_(\d+))/i))&&(a[2]?j(a[2],a[3]):i($(".answer[data-answerid="+a[1]+"]")))},j=function(a,b){var c="#comment-"+a,d=$(c);d.length?i(d):StackExchange.comments.loadAll($("#comments-link-"+b)).done(function(){i($(c))})},i=function(b){var c=d;b.css({backgroundColor:a}).animate({backgroundColor:c},2E3,"linear",function(){$(this).css("background-color","")});b.is(".comment")&&b[0].scrollIntoView(!0)},k=function(a){a=a||{};
|
||||
$('.post-menu a:contains("link")').live("click",function(b){if(!b.ctrlKey&&!b.metaKey)return e($(this),a.showCitation),!1})};return{showShareTip:e,getQuestionId:function(a){a=(a?a.closest(".question"):$(".question")).data("questionid");if(!a)throw Error("getQuestionId could not find an id");return a},highlightComment:j,initShareLinks:k,canViewVoteCounts:function(){return f},init:function(c){StackExchange.question.fullInit?StackExchange.question.fullInit(c):StackExchange.question.bindAnonymousVoteDisclaimers();
|
||||
StackExchange.comments.init({autoShowCommentHelp:c.autoShowCommentHelp});c.showShareTip&&e();$("input.anon-vote").live("click",function(){var a=$(this),b=a.postId(),c=a.parent();c.closest(".question,.answer").unbind("mouseenter.helpful").unbind("mouseleave.helpful");c.text("sending feedback ...");setTimeout(function(){c.text("Thank you for your feedback.")},500);$.ajax({type:"POST",url:"/vote/anon/"+b,data:{votetypeid:"Yes"==a.val()?2:3},complete:function(){}})});var j=$(".was-this-helpful"),i=j.css("color"),
|
||||
n=$(".post-text").css("color");j.each(function(){var a=$(this),b=a.text();a.closest(".answer, .question").bind("mouseenter.helpful",function(){a.html("Was this post useful to you? <input style='display:none;' class='anon-vote' type='button' value='Yes'/> <input style='display:none;' class='anon-vote' type='button' value='No'/>").animate({color:n},"fast","linear").find("input").fadeIn("fast")}).bind("mouseleave.helpful",function(){a.text(b).animate({color:i},"fast","linear")})});
|
||||
k(c);if(c.showAnswerHelp)$("#wmd-input").one("focus",b);c.showCitation&&$("div.share-tip a[id^='link-post-']").live("click",function(){$(this).closest(".post-menu").find(".close-share-tip").click();citation.show($(this))});d=c.backgroundColor;a=c.highlightColor;f=c.canViewVoteCounts;h(c)}}}();
|
||||
StackExchange.question.bindAnonymousVoteDisclaimers=function(){function e(c){return function(b){var a='Please <a href="/users/login?returnurl='+escape(document.location)+'">login or register</a> to '+c+" this post.";StackExchange.helpers.showErrorPopup($(this).parent(),a);var a="",e=$(this).prop("className"),d=$(this).closest(".answer").length?"answer":"question";/vote-up/.test(e)?a="?vote=up&type="+d:/vote-down/.test(e)?a="?vote=down&type="+d:/star/.test(e)&&(a="?vote=favorite");StackExchange.helpers.fireAndForget("/analytics/user/try-vote"+
|
||||
a);b.preventDefault()}}$(".vote-up-off, .vote-down-off").click(e("vote for"));$("div.post-menu a[id^='flag-post-']").unbind("click").click(e("flag"));$(".star-off:not(.disabled)").live("click",e("favorite"))};
|
||||
StackExchange.comments=function(){function e(a,b){this.postId=a;this.jDiv=b;this.jCommentsLink=$("#comments-link-"+a)}function c(b){var c=(b.constructor===$?b:$(b)).closest(".question, .answer, div[id^='post-']").find(".comments"),b=c.attr("id").replace(/^comments-/,"");if(a[b])return a[b];c=new e(b,c);return a[b]=c}function b(){if(0!=$(".question[data-questionid]").length){var a=StackExchange.question.getQuestionId();$(".comment .comment-date > span").each(function(){var b=$(this),c=b.closest(".answer"),
|
||||
c=c&&c.length?c.data("answerid"):0,e=b.closest(".comment").attr("id").substr(8);b.wrap('<a class="comment-link" onclick="StackExchange.question.highlightComment({cid}, {aid})" href="{hash}"></a>'.format({hash:"#comment"+e+"_"+(c?c:a),cid:e,aid:c}))})}}var a={},f=function(){};e.prototype={checkDiscussion:f,ensureInput:f,commentsShown:function(){this.jCommentsLink.hide();this.jCommentsLink.data("comments-count",0)},addShow:function(a){var b=this;this.loadAllComments().done(function(){b.jCommentsLink.hide();
|
||||
b.checkDiscussion()});var c=this.ensureInput();c&&!a&&c.focus()},ajax:function(a,b,c,e){c&&!e&&StackExchange.helpers.addSpinner(c,{"margin-left":"10px"});var f=this;return $.ajax(a).fail(function(a){$(".error-notification").fadeOut("fast",function(){$(this).remove()});a=a.responseText;if(!a||100<=a.length)a="An error occured"+(b?" "+b:"");StackExchange.helpers.showErrorPopup(c||f.jDiv,a);c&&!e&&StackExchange.helpers.removeSpinner()}).done(StackExchange.helpers.removeSpinner).promise()},showComments:function(a){this.jDiv.find(" > table > tbody").html(a);
|
||||
this.jCommentsLink.text("add comment");"undefined"!=typeof MathJax&&MathJax.Hub.Queue(["Typeset",MathJax.Hub]);b();this.commentsShown()},loadAllComments:function(a){this.jDiv.removeClass("dno");if(!a&&!/more comment/.test($("#comments-link-"+this.postId).text()))return $.Deferred().resolve().promise();var b=this;return this.ajax({type:"GET",url:"/posts/"+this.postId+"/comments",dataType:"html"},"while fetching comments").done(function(a){b.showComments(a)}).promise()}};return{init:function(a){a=a&&
|
||||
a.post||document;$("a[id^='comments-link-']",a).click(function(){var a=/more comment/.test($(this).text());c(this).addShow(a)});a==document&&b()},loadAll:function(a){return c(a).loadAllComments(!0)},extendPostUi:function(a){for(var b in a)a.hasOwnProperty(b)&&(e.prototype[b]=a[b])},uiForPost:c}}();
|
||||
StackExchange.share=function(){function e(b,a,c){window.open(b,a,c)||(window.location.href=b)}function c(b,a){var c=b.indexOf("?"),d=b.indexOf("#");return-1==c?-1==d?b+"?"+a:b.substring(0,d)+"?"+a+b.substring(d):-1==d?b+"&"+a:b.substring(0,d)+"&"+a+b.substring(d)}return{gplus:function(b,a){a=c(a,"sgp=1");b.click(function(){e("https://plus.google.com/share?url="+a,"sharegplus","toolbar=1,status=1,resizable=1,scrollbars=1,width=600,height=500")})},twitter:function(b,a,f){a=c(a,"stw=1");b.click(function(){e("http://twitter.com/share?url="+
|
||||
a+"&ref=twitbtn&text="+f,"sharetwitter","toolbar=1,status=1,resizable=1,scrollbars=1,width=800,height=526")})},facebook:function(b,a,f){a=c(a,"sfb=1");b.click(function(){e("http://www.facebook.com/sharer.php?u="+a+"&ref=fbshare&t="+f,"sharefacebook","toolbar=1,status=1,resizable=1,scrollbars=1,width=626,height=436")})}}}();
|
||||
function initTagRenderer(e,c){window.tagRenderer||(window.tagRendererRaw=function(b,a){var a=a||"",f="";a||(e&&-1<$.inArray(b,e)?f=" required-tag":c&&-1<$.inArray(b,c)&&(f=" moderator-tag"));return"<a class='post-tag"+f+"' href='"+a+"/questions/tagged/"+encodeURIComponent(b)+"' title=\"show questions tagged '"+b+"'\" rel='tag'>"+b+"</a>"},window.tagRenderer=function(b,a){return $(tagRendererRaw(b,a))})}
|
||||
function showFadingHelpText(e){e.wrap('<div class="dno" />').show().parent().fadeIn("slow",function(){$(this).children().unwrap()})}
|
||||
function initFadingHelpText(){var e={"wmd-input":"#how-to-format",tagnames:"#how-to-tag","tag-editor":"#how-to-tag",title:"#how-to-title"},c=$("#wmd-input, #tagnames, #title, .tag-editor input"),b=function(a){return $(a).parent().hasClass("tag-editor")?e["tag-editor"]:e[$(a).attr("id")]};c.focus(function(){var a=b(this);c.each(function(){var c=b(this);c!=a&&$(c).hide()});var e=$(a);e.is(":visible")||showFadingHelpText(e)})}
|
||||
$.fn.extend({postId:function(){var e=this.first();if(!e.hasClass("answer")||!e.hasClass("question"))e=e.closest(".answer, .question");return parseInt(e.find(".vote input")[0].value)}});
|
||||
StackExchange.newsletterAd=function(){function e(b){b=$('<div id="lightbox-panel" class="popup" style="display:block"></div>').append('<div class="popup-close"><a title="close this popup (or hit Esc)">×</a></div>').append(b);$('<div id="lightbox"></div>').appendTo($("body")).css("height",$(document).height()).fadeIn("fast");b.appendTo($("body")).center().fadeIn("fast").find(".popup-close").click(function(){$("#lightbox, #lightbox-panel").fadeOutAndRemove()})}function c(){var b=StackExchange.options.site.name,
|
||||
a=$(['<div style="text-align: left;">','<h2 style="margin-bottom: 15px;">Subscribe to the '+b+" weekly newsletter</h2>",'<p><strong><a href="/users/login?returnurl=/newsletter/signup/redirect">Create an account on '+b+'</a> or <a href="/users/login?returnurl=/newsletter/signup/redirect">log in</a> if you already have one.</strong></p>','<form><label for="newsletter-email-input">Or, send newsletter emails to:</label> <input type="text" id="newsletter-email-input" maxlength="100" title="your email address" /> <input type="submit" value="Subscribe" id="newsletter-email-submit" /></form></div>'].join(""));
|
||||
a.find("form").submit(function(){var b=$(this),c=$.trim(a.find("#newsletter-email-input").val());if(0==c.length)return!1;StackExchange.helpers.addSpinner(b);$.ajax({url:"/newsletter/signup/anon",type:"POST",dataType:"json",data:{email:c},success:function(a){"confirmed"==a.status&&!a.error?(b.find("#newsletter-email-input").attr("disabled",!0),b.find("#newsletter-email-submit").replaceWith('<span style="line-height: 120%; text-align: center;"><strong>Subscribed!</strong></span>'),$("#newsletter-signup-container").replaceWith('<div style="line-height: 200%; text-align: center;"><strong>Subscribed!</strong></div>')):
|
||||
"unconfirmed"==a.status&&!a.error?(b.find("#newsletter-email-input").attr("disabled",!0),b.find("#newsletter-email-submit").replaceWith('<span style="line-height: 120%; text-align: center;"><strong>Subscribed!</strong></span>'),b.append("<br /><br/><p><em>Please click the link in the confirmation email to activate your subscription.</em></p>"),$("#newsletter-signup-container").replaceWith('<span style="line-height: 120%;"><strong>Success!</strong> Please click the link in the confirmation email to activate your subscription.</span>')):
|
||||
b.showErrorPopup(a.error||"there was a problem signing up for the newsletter<br />please try again later")},error:function(){b.showErrorPopup("there was a problem signing up for the newsletter<br />please try again later")},complete:function(){StackExchange.helpers.removeSpinner(b)}});return!1});e(a)}return{init:function(){$("#newsletter-signup").click(function(){var b=$(this);if(StackExchange.options.user.isAnonymous)return c(),!1;StackExchange.helpers.addSpinner("#newsletter-signup-container");
|
||||
$.ajax({url:"/newsletter/signup",type:"POST",dataType:"json",success:function(a){a.url?window.location.href=a.url:"confirmed"==a.status?$("#newsletter-signup-container").replaceWith('<div style="line-height: 200%; text-align: center;"><strong>Subscribed!</strong></div>'):"unconfirmed"==a.status?$("#newsletter-signup-container").replaceWith('<span style="line-height: 120%;"><strong>Success!</strong> Please click the link in the confirmation email to activate your subscription.</span>'):b.parent().showErrorPopup("there was a problem signing up for the newsletter<br />please try again later")},
|
||||
error:function(){b.parent().showErrorPopup("there was a problem signing up for the newsletter<br />please try again later")},complete:function(){StackExchange.helpers.removeSpinner("#newsletter-signup-container")}})});$("#newsletter-preview").click(function(){var b=$(window).height(),b=Math.min(600,b-100),b=['<div id="newsleter-preview-pane" style="overflow: hidden; width: 660px; height: ',b,'px;"><iframe src="',$(this).attr("href"),'" width="660" height="',b,'" frameborder="0"></iframe></div>'].join("");
|
||||
e(b);return!1})},loader:function(b,a){var b=a||b,c=$(".newuser-greeting");$.ajax({url:"/newsletter/targetted/ajax",data:{domain:b},success:function(a){$("#newsletter-ad").remove();c.empty().append($(a))},complete:function(){c.attr("class","").attr("style","")}});a||(window.sessionStorage.tNewsletter=b+"-continued")}}}();
|
||||
(function(e,c,b,a){e.fn.caret=function(f,d){var h,j,i=this[0],k=e.browser.msie;"object"===typeof f&&"number"===typeof f.start&&"number"===typeof f.end?(h=f.start,j=f.end):"number"===typeof f&&"number"===typeof d?(h=f,j=d):"string"===typeof f?-1<(h=i.value.indexOf(f))?j=h+f[c]:h=null:"[object RegExp]"===Object.prototype.toString.call(f)&&(f=f.exec(i.value),null!=f&&(h=f.index,j=h+f[0][c]));if("undefined"!=typeof h)return k?(k=this[0].createTextRange(),k.collapse(!0),k.moveStart("character",h),k.moveEnd("character",
|
||||
j-h),k.select()):(this[0].selectionStart=h,this[0].selectionEnd=j),this[0].focus(),this;if(k)if(j=document.selection,"textarea"!=this[0].tagName.toLowerCase()){k=this.val();h=j[b]()[a]();h.moveEnd("character",k[c]);var g=""==h.text?k[c]:k.lastIndexOf(h.text);h=j[b]()[a]();h.moveStart("character",-k[c]);var l=h.text[c]}else h=j[b](),j=h[a](),j.moveToElementText(this[0]),j.setEndPoint("EndToEnd",h),g=j.text[c]-h.text[c],l=g+h.text[c];else g=i.selectionStart,l=i.selectionEnd;h=i.value.substring(g,l);
|
||||
return{start:g,end:l,text:h,replace:function(a){return i.value.substring(0,g)+a+i.value.substring(l,i.value[c])}}}})(jQuery,"length","createRange","duplicate");
|
||||
@@ -0,0 +1,61 @@
|
||||
(function(){var g=void 0,h=!0,i=null,k=!1,aa=encodeURIComponent,ba=Infinity,ea=setTimeout,fa=decodeURIComponent,l=Math;function ga(a,b){return a.name=b}
|
||||
var m="push",ha="slice",n="replace",ia="load",ja="floor",ka="charAt",la="value",p="indexOf",ma="match",na="port",oa="createElement",pa="path",q="name",t="host",u="toString",v="length",w="prototype",qa="clientWidth",x="split",ra="stopPropagation",ta="scope",y="location",ua="search",z="protocol",va="clientHeight",wa="href",A="substring",xa="apply",ya="navigator",B="join",C="toLowerCase",D;function za(a,b){switch(b){case 0:return""+a;case 1:return 1*a;case 2:return!!a;case 3:return 1E3*a}return a}function Aa(a){return"function"==typeof a}function Ba(a){return a!=g&&-1<(a.constructor+"")[p]("String")}function E(a,b){return g==a||"-"==a&&!b||""==a}function Ca(a){if(!a||""==a)return"";for(;a&&-1<" \n\r\t"[p](a[ka](0));)a=a[A](1);for(;a&&-1<" \n\r\t"[p](a[ka](a[v]-1));)a=a[A](0,a[v]-1);return a}
|
||||
function F(a){var b=1,c=0,d;if(!E(a)){b=0;for(d=a[v]-1;0<=d;d--)c=a.charCodeAt(d),b=(b<<6&268435455)+c+(c<<14),c=b&266338304,b=0!=c?b^c>>21:b}return b}function Da(){return l.round(2147483647*l.random())}function Ea(){}function G(a,b){if(aa instanceof Function)return b?encodeURI(a):aa(a);H(68);return escape(a)}function I(a){a=a[x]("+")[B](" ");if(fa instanceof Function)try{return fa(a)}catch(b){H(17)}else H(68);return unescape(a)}
|
||||
var Fa=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent&&a.attachEvent("on"+b,c)},Ga=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,!!d):a.detachEvent&&a.detachEvent("on"+b,c)};function Ha(a,b){if(a){var c=J[oa]("script");c.type="text/javascript";c.async=h;c.src=a;c.id=b;var d=J.getElementsByTagName("script")[0];d.parentNode.insertBefore(c,d);return c}}function K(a){return a&&0<a[v]?a[0]:""}function Ia(a){var b=a?a[v]:0;return 0<b?a[b-1]:""}
|
||||
var Ja=function(){this.prefix="ga.";this.R={}};Ja[w].set=function(a,b){this.R[this.prefix+a]=b};Ja[w].get=function(a){return this.R[this.prefix+a]};Ja[w].contains=function(a){return this.get(a)!==g};function Ka(a){0==a[p]("www.")&&(a=a[A](4));return a[C]()}function La(a,b){var c,d={url:a,protocol:"http",host:"",path:"",d:new Ja,anchor:""};if(!a)return d;c=a[p]("://");0<=c&&(d.protocol=a[A](0,c),a=a[A](c+3));c=a[ua]("/|\\?|#");if(0<=c)d.host=a[A](0,c)[C](),a=a[A](c);else return d.host=a[C](),d;c=a[p]("#");0<=c&&(d.anchor=a[A](c+1),a=a[A](0,c));c=a[p]("?");0<=c&&(Ma(d.d,a[A](c+1)),a=a[A](0,c));d.anchor&&b&&Ma(d.d,d.anchor);a&&"/"==a[ka](0)&&(a=a[A](1));d.path=a;return d}
|
||||
function Na(a,b){function c(a){var b=(a.hostname||"")[x](":")[0][C](),c=(a[z]||"")[C](),c=1*a[na]||("http:"==c?80:"https:"==c?443:""),a=a.pathname||"";0==a[p]("/")||(a="/"+a);return[b,""+c,a]}var d=b||J[oa]("a");d.href=J[y][wa];var e=(d[z]||"")[C](),f=c(d),j=d[ua]||"",o=e+"//"+f[0]+(f[1]?":"+f[1]:"");0==a[p]("//")?a=e+a:0==a[p]("/")?a=o+a:!a||0==a[p]("?")?a=o+f[2]+(a||j):0>a[x]("/")[0][p](":")&&(a=o+f[2][A](0,f[2].lastIndexOf("/"))+"/"+a);d.href=a;e=c(d);return{protocol:(d[z]||"")[C](),host:e[0],
|
||||
port:e[1],path:e[2],Ia:d[ua]||"",url:a||""}}function Ma(a,b){function c(b,c){a.contains(b)||a.set(b,[]);a.get(b)[m](c)}for(var d=Ca(b)[x]("&"),e=0;e<d[v];e++)if(d[e]){var f=d[e][p]("=");0>f?c(d[e],"1"):c(d[e][A](0,f),d[e][A](f+1))}}function Oa(a,b){if(E(a)||"["==a[ka](0)&&"]"==a[ka](a[v]-1))return"-";var c=J.domain;return a[p](c+(b&&"/"!=b?b:""))==(0==a[p]("http://")?7:0==a[p]("https://")?8:0)?"0":a};var Pa=0;function Ra(a,b,c){!(1<=Pa)&&!(1<=100*l.random())&&(a=["utmt=error","utmerr="+a,"utmwv=5.2.9","utmn="+Da(),"utmsp=1"],b&&a[m]("api="+b),c&&a[m]("msg="+G(c[A](0,100))),L.A&&a[m]("aip=1"),Sa(a[B]("&")),Pa++)};var Ta=0,Ua={};function M(a){return Va("x"+Ta++,a)}function Va(a,b){Ua[a]=!!b;return a}
|
||||
var N=M(),Wa=M(),Xa=M(),Ya=M(),Za=M(),O=M(),P=M(),$a=M(),ab=M(),bb=M(),cb=M(),db=M(),eb=M(),fb=M(),gb=M(),hb=M(),ib=M(),jb=M(),kb=M(),lb=M(),mb=M(),nb=M(),ob=M(),pb=M(),qb=M(),rb=M(),sb=M(),tb=M(),ub=M(),vb=M(),wb=M(),xb=M(),yb=M(),zb=M(),Ab=M(),Q=M(h),Bb=Va("page"),Cb=Va("title"),Db=M(),Eb=M(),Fb=M(),Gb=M(),Hb=M(),Ib=M(),Jb=M(),Kb=M(),Lb=M(),R=M(h),Mb=M(h),Nb=M(h),Qb=M(h),Rb=M(h),Sb=M(h),Tb=M(h),Ub=M(h),Vb=M(h),Wb=M(h),Xb=M(h),S=M(h),Yb=M(h),Zb=M(h),$b=M(h),ac=M(h),bc=M(h),cc=M(h),dc=M(h),ec=M(h),
|
||||
fc=M(h),gc=M(h),hc=M(h),ic=M(h),jc=M(h),kc=Va("campaignParams"),lc=M(),mc=Va("hitCallback"),nc=M();M();var oc=M(),pc=M(),qc=M(),rc=M(),sc=M(),tc=M(),uc=M(),vc=M(),wc=M(),xc=M(),yc=M(),Cc=M();M();var Dc=M(),Ec=M(),Fc=M();var Ic=function(){function a(a,c,d){T(U[w],a,c,d)}Gc("_getName",Xa,58);Gc("_getAccount",N,64);Gc("_visitCode",R,54);Gc("_getClientInfo",fb,53,1);Gc("_getDetectTitle",ib,56,1);Gc("_getDetectFlash",gb,65,1);Gc("_getLocalGifPath",sb,57);Gc("_getServiceMode",tb,59);V("_setClientInfo",fb,66,2);V("_setAccount",N,3);V("_setNamespace",Wa,48);V("_setAllowLinker",cb,11,2);V("_setDetectFlash",gb,61,2);V("_setDetectTitle",ib,62,2);V("_setLocalGifPath",sb,46,0);V("_setLocalServerMode",tb,92,g,0);V("_setRemoteServerMode",
|
||||
tb,63,g,1);V("_setLocalRemoteServerMode",tb,47,g,2);V("_setSampleRate",rb,45,1);V("_setCampaignTrack",hb,36,2);V("_setAllowAnchor",db,7,2);V("_setCampNameKey",kb,41);V("_setCampContentKey",pb,38);V("_setCampIdKey",jb,39);V("_setCampMediumKey",nb,40);V("_setCampNOKey",qb,42);V("_setCampSourceKey",mb,43);V("_setCampTermKey",ob,44);V("_setCampCIdKey",lb,37);V("_setCookiePath",P,9,0);V("_setMaxCustomVariables",ub,0,1);V("_setVisitorCookieTimeout",$a,28,1);V("_setSessionCookieTimeout",ab,26,1);V("_setCampaignCookieTimeout",
|
||||
bb,29,1);V("_setReferrerOverride",Db,49);V("_setSiteSpeedSampleRate",wc,132);a("_trackPageview",U[w].ya,1);a("_trackEvent",U[w].D,4);a("_trackPageLoadTime",U[w].xa,100);a("_trackSocial",U[w].za,104);a("_trackTrans",U[w].Ba,18);a("_sendXEvent",U[w].t,78);a("_createEventTracker",U[w].ea,74);a("_getVersion",U[w].ja,60);a("_setDomainName",U[w].C,6);a("_setAllowHash",U[w].oa,8);a("_getLinkerUrl",U[w].ia,52);a("_link",U[w].link,101);a("_linkByPost",U[w].na,102);a("_setTrans",U[w].sa,20);a("_addTrans",U[w].Y,
|
||||
21);a("_addItem",U[w].W,19);a("_setTransactionDelim",U[w].ta,82);a("_setCustomVar",U[w].pa,10);a("_deleteCustomVar",U[w].ga,35);a("_getVisitorCustomVar",U[w].ka,50);a("_setXKey",U[w].va,83);a("_setXValue",U[w].wa,84);a("_getXKey",U[w].la,76);a("_getXValue",U[w].ma,77);a("_clearXKey",U[w].ba,72);a("_clearXValue",U[w].ca,73);a("_createXObj",U[w].fa,75);a("_addIgnoredOrganic",U[w].U,15);a("_clearIgnoredOrganic",U[w].Z,97);a("_addIgnoredRef",U[w].V,31);a("_clearIgnoredRef",U[w].$,32);a("_addOrganic",
|
||||
U[w].X,14);a("_clearOrganic",U[w].aa,70);a("_cookiePathCopy",U[w].da,30);a("_get",U[w].ha,106);a("_set",U[w].qa,107);a("_addEventListener",U[w].addEventListener,108);a("_removeEventListener",U[w].removeEventListener,109);a("_addDevId",U[w].T);a("_getPlugin",Hc,122);a("_setPageGroup",U[w].ra,126);a("_trackTiming",U[w].Aa,124);a("_initData",U[w].u,2);a("_setVar",U[w].ua,22);V("_setSessionTimeout",ab,27,3);V("_setCookieTimeout",bb,25,3);V("_setCookiePersistence",$a,24,1);a("_setAutoTrackOutbound",Ea,
|
||||
79);a("_setTrackOutboundSubdomains",Ea,81);a("_setHrefExamineLimit",Ea,80)};function Hc(a){var b=this.plugins_;if(b)return b.get(a)}
|
||||
var T=function(a,b,c,d){a[b]=function(){try{return d!=g&&H(d),c[xa](this,arguments)}catch(a){throw Ra("exc",b,a&&a[q]),a;}}},Gc=function(a,b,c,d){U[w][a]=function(){try{return H(c),za(this.a.get(b),d)}catch(e){throw Ra("exc",a,e&&e[q]),e;}}},V=function(a,b,c,d,e){U[w][a]=function(f){try{H(c),e==g?this.a.set(b,za(f,d)):this.a.set(b,e)}catch(j){throw Ra("exc",a,j&&j[q]),j;}}},Jc=function(a,b){return{type:b,target:a,stopPropagation:function(){throw"aborted";}}};var Kc=function(a,b){return"/"!==b?k:(0==a[p]("www.google.")||0==a[p](".google.")||0==a[p]("google."))&&!(-1<a[p]("google.org"))?h:k},Lc=function(a){var b=a.get(Za),c=a.c(P,"/");Kc(b,c)&&a[ra]()};var Qc=function(){var a={},b={},c=new Mc;this.j=function(a,b){c.add(a,b)};var d=new Mc;this.e=function(a,b){d.add(a,b)};var e=k,f=k,j=h;this.S=function(){e=h};this.i=function(a){this[ia]();this.set(lc,a,h);a=new Nc(this);e=k;d.execute(this);e=h;b={};this.n();a.Ca()};this.load=function(){e&&(e=k,this.Da(),Oc(this),f||(f=h,c.execute(this),Pc(this),Oc(this)),e=h)};this.n=function(){if(e)if(f)e=k,Pc(this),e=h;else this[ia]()};this.get=function(c){Ua[c]&&this[ia]();return b[c]!==g?b[c]:a[c]};this.set=
|
||||
function(c,d,e){Ua[c]&&this[ia]();e?b[c]=d:a[c]=d;Ua[c]&&this.n()};this.v=function(b){a[b]=this.b(b,0)+1};this.b=function(a,b){var c=this.get(a);return c==g||""===c?b:1*c};this.c=function(a,b){var c=this.get(a);return c==g?b:c+""};this.Da=function(){if(j){var b=this.c(Za,""),c=this.c(P,"/");Kc(b,c)||(a[O]=a[eb]&&""!=b?F(b):1,j=k)}}};Qc[w].stopPropagation=function(){throw"aborted";};
|
||||
var Nc=function(a){var b=this;this.q=0;var c=a.get(mc);this.Sa=function(){0<b.q&&c&&(b.q--,b.q||c())};this.Ca=function(){!b.q&&c&&ea(c,10)};a.set(nc,b,h)};function Rc(a,b){for(var b=b||[],c=0;c<b[v];c++){var d=b[c];if(""+a==d||0==d[p](a+"."))return d}return"-"}
|
||||
var Tc=function(a,b,c){c=c?"":a.c(O,"1");b=b[x](".");if(6!==b[v]||Sc(b[0],c))return k;var c=1*b[1],d=1*b[2],e=1*b[3],f=1*b[4],b=1*b[5];if(!(0<=c&&0<d&&0<e&&0<f&&0<=b))return H(110),k;a.set(R,c);a.set(Rb,d);a.set(Sb,e);a.set(Tb,f);a.set(Ub,b);return h},Uc=function(a){var b=a.get(R),c=a.get(Rb),d=a.get(Sb),e=a.get(Tb),f=a.b(Ub,1);b==g?H(113):NaN==b&&H(114);0<=b&&0<c&&0<d&&0<e&&0<=f||H(115);return[a.b(O,1),b!=g?b:"-",c||"-",d||"-",e||"-",f][B](".")},Vc=function(a){return[a.b(O,1),a.b(Xb,0),a.b(S,1),
|
||||
a.b(Yb,0)][B](".")},Wc=function(a,b,c){var c=c?"":a.c(O,"1"),d=b[x](".");if(4!==d[v]||Sc(d[0],c))d=i;a.set(Xb,d?1*d[1]:0);a.set(S,d?1*d[2]:10);a.set(Yb,d?1*d[3]:a.get(Ya));return d!=i||!Sc(b,c)},Xc=function(a,b){var c=G(a.c(Nb,"")),d=[],e=a.get(Q);if(!b&&e){for(var f=0;f<e[v];f++){var j=e[f];j&&1==j[ta]&&d[m](f+"="+G(j[q])+"="+G(j[la])+"=1")}0<d[v]&&(c+="|"+d[B]("^"))}return c?a.b(O,1)+"."+c:i},Yc=function(a,b,c){c=c?"":a.c(O,"1");b=b[x](".");if(2>b[v]||Sc(b[0],c))return k;b=b[ha](1)[B](".")[x]("|");
|
||||
0<b[v]&&a.set(Nb,I(b[0]));if(1>=b[v])return h;b=b[1][x](-1==b[1][p](",")?"^":",");for(c=0;c<b[v];c++){var d=b[c][x]("=");if(4==d[v]){var e={};ga(e,I(d[1]));e.value=I(d[2]);e.scope=1;a.get(Q)[d[0]]=e}}return h},$c=function(a,b){var c=Zc(a,b);return c?[a.b(O,1),a.b(Zb,0),a.b($b,1),a.b(ac,1),c][B]("."):""},Zc=function(a){function b(b,e){if(!E(a.get(b))){var f=a.c(b,""),f=f[x](" ")[B]("%20"),f=f[x]("+")[B]("%20");c[m](e+"="+f)}}var c=[];b(cc,"utmcid");b(gc,"utmcsr");b(ec,"utmgclid");b(fc,"utmdclid");
|
||||
b(dc,"utmccn");b(hc,"utmcmd");b(ic,"utmctr");b(jc,"utmcct");return c[B]("|")},bd=function(a,b,c){c=c?"":a.c(O,"1");b=b[x](".");if(5>b[v]||Sc(b[0],c))return a.set(Zb,g),a.set($b,g),a.set(ac,g),a.set(cc,g),a.set(dc,g),a.set(gc,g),a.set(hc,g),a.set(ic,g),a.set(jc,g),a.set(ec,g),a.set(fc,g),k;a.set(Zb,1*b[1]);a.set($b,1*b[2]);a.set(ac,1*b[3]);ad(a,b[ha](4)[B]("."));return h},ad=function(a,b){function c(a){return(a=b[ma](a+"=(.*?)(?:\\|utm|$)"))&&2==a[v]?a[1]:g}function d(b,c){c&&(c=e?I(c):c[x]("%20")[B](" "),
|
||||
a.set(b,c))}-1==b[p]("=")&&(b=I(b));var e="2"==c("utmcvr");d(cc,c("utmcid"));d(dc,c("utmccn"));d(gc,c("utmcsr"));d(hc,c("utmcmd"));d(ic,c("utmctr"));d(jc,c("utmcct"));d(ec,c("utmgclid"));d(fc,c("utmdclid"))},Sc=function(a,b){return b?a!=b:!/^\d+$/.test(a)};var Mc=function(){this.B=[]};Mc[w].add=function(a,b){this.B[m]({name:a,r:b})};Mc[w].execute=function(a){try{for(var b=0;b<this.B[v];b++)this.B[b].r.call(W,a)}catch(c){}};function cd(a){100!=a.get(rb)&&a.get(R)%1E4>=100*a.get(rb)&&a[ra]()}function dd(a){ed(a.get(N))&&a[ra]()}function fd(a){"file:"==J[y][z]&&a[ra]()}function gd(a){a.get(Cb)||a.set(Cb,J.title,h);a.get(Bb)||a.set(Bb,J[y].pathname+J[y][ua],h)};var hd=new function(){var a=[];this.set=function(b){a[b]=h};this.Va=function(){for(var b=[],c=0;c<a[v];c++)a[c]&&(b[l[ja](c/6)]=b[l[ja](c/6)]^1<<c%6);for(c=0;c<b[v];c++)b[c]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"[ka](b[c]||0);return b[B]("")+"~"}};function H(a){hd.set(a)};var W=window,J=document,ed=function(a){var b=W._gaUserPrefs;return b&&b.ioo&&b.ioo()||!!a&&W["ga-disable-"+a]===h},id=function(a,b){ea(a,b)},jd=function(a){for(var b=[],c=J.cookie[x](";"),a=RegExp("^\\s*"+a+"=\\s*(.*?)\\s*$"),d=0;d<c[v];d++){var e=c[d][ma](a);e&&b[m](e[1])}return b},X=function(a,b,c,d,e,f){e=ed(e)?k:Kc(d,c)?k:h;if(e){if(b&&0<=W[ya].userAgent[p]("Firefox"))for(var b=b[n](/\n|\r/g," "),e=0,j=b[v];e<j;++e){var o=b.charCodeAt(e)&255;if(10==o||13==o)b=b[A](0,e)+"?"+b[A](e+1)}b&&2E3<b[v]&&
|
||||
(b=b[A](0,2E3),H(69));a=a+"="+b+"; path="+c+"; ";f&&(a+="expires="+(new Date((new Date).getTime()+f)).toGMTString()+"; ");d&&(a+="domain="+d+";");J.cookie=a}};var kd,ld,md=function(){if(!kd){var a={},b=W[ya],c=W.screen;a.Q=c?c.width+"x"+c.height:"-";a.P=c?c.colorDepth+"-bit":"-";a.language=(b&&(b.language||b.browserLanguage)||"-")[C]();a.javaEnabled=b&&b.javaEnabled()?1:0;a.characterSet=J.characterSet||J.charset||"-";try{var d=J.documentElement,e=J.body,f=e&&e[qa]&&e[va],b=[];d&&(d[qa]&&d[va])&&("CSS1Compat"===J.compatMode||!f)?b=[d[qa],d[va]]:f&&(b=[e[qa],e[va]]);a.Ua=b[B]("x")}catch(j){H(135)}kd=a}},nd=function(){md();for(var a=kd,b=W[ya],a=b.appName+
|
||||
b.version+a.language+b.platform+b.userAgent+a.javaEnabled+a.Q+a.P+(J.cookie?J.cookie:"")+(J.referrer?J.referrer:""),b=a[v],c=W.history[v];0<c;)a+=c--^b++;return F(a)},od=function(a){md();var b=kd;a.set(Fb,b.Q);a.set(Gb,b.P);a.set(Jb,b.language);a.set(Kb,b.characterSet);a.set(Hb,b.javaEnabled);a.set(Lb,b.Ua);if(a.get(fb)&&a.get(gb)){if(!(b=ld)){var c,d,e;d="ShockwaveFlash";if((b=(b=W[ya])?b.plugins:g)&&0<b[v])for(c=0;c<b[v]&&!e;c++)d=b[c],-1<d[q][p]("Shockwave Flash")&&(e=d.description[x]("Shockwave Flash ")[1]);
|
||||
else{d=d+"."+d;try{c=new ActiveXObject(d+".7"),e=c.GetVariable("$version")}catch(f){}if(!e)try{c=new ActiveXObject(d+".6"),e="WIN 6,0,21,0",c.AllowScriptAccess="always",e=c.GetVariable("$version")}catch(j){}if(!e)try{c=new ActiveXObject(d),e=c.GetVariable("$version")}catch(o){}e&&(e=e[x](" ")[1][x](","),e=e[0]+"."+e[1]+" r"+e[2])}b=e?e:"-"}ld=b;a.set(Ib,ld)}else a.set(Ib,"-")};var pd=function(a){if(Aa(a))this.r=a;else{var b=a[0],c=b.lastIndexOf(":"),d=b.lastIndexOf(".");this.g=this.h=this.l="";-1==c&&-1==d?this.g=b:-1==c&&-1!=d?(this.h=b[A](0,d),this.g=b[A](d+1)):-1!=c&&-1==d?(this.l=b[A](0,c),this.g=b[A](c+1)):c>d?(this.h=b[A](0,d),this.l=b[A](d+1,c),this.g=b[A](c+1)):(this.h=b[A](0,d),this.g=b[A](d+1));this.k=a[ha](1);this.Fa=!this.l&&"_require"==this.g;this.H=!this.h&&!this.l&&"_provide"==this.g}},Y=function(){T(Y[w],"push",Y[w][m],5);T(Y[w],"_getPlugin",Hc,121);T(Y[w],
|
||||
"_createAsyncTracker",Y[w].Qa,33);T(Y[w],"_getAsyncTracker",Y[w].Ra,34);this.G=new Ja;this.p=[]};D=Y[w];D.Ha=function(a,b,c){var d=this.G.get(a);if(!Aa(d))return k;b.plugins_=b.plugins_||new Ja;b.plugins_.set(a,new d(b,c||{}));return h};D.push=function(a){var b=Z.Ta[xa](this,arguments),b=Z.p.concat(b);for(Z.p=[];0<b[v]&&!Z.O(b[0])&&!(b.shift(),0<Z.p[v]););Z.p=Z.p.concat(b);return 0};D.Ta=function(a){for(var b=[],c=0;c<arguments[v];c++)try{var d=new pd(arguments[c]);d.H?this.O(d):b[m](d)}catch(e){}return b};
|
||||
D.O=function(a){try{if(a.r)a.r[xa](W);else if(a.H)this.G.set(a.k[0],a.k[1]);else{var b="_gat"==a.h?L:"_gaq"==a.h?Z:L.w(a.h);if(a.Fa){if(!this.Ha(a.k[0],b,a.k[2])){if(!a.Ja){var c=Na(""+a.k[1]);var d=c[z],e=J[y][z];var f;if(f="https:"==d||d==e?h:"http:"!=d?k:"http:"==e){var j;a:{var o=Na(J[y][wa]);if(!(c.Ia||0<=c.url[p]("?")||0<=c[pa][p]("://")||c[t]==o[t]&&c[na]==o[na]))for(var r="http:"==c[z]?80:443,s=L.Ea,b=0;b<s[v];b++)if(c[t]==s[b][0]&&(c[na]||r)==(s[b][1]||r)&&0==c[pa][p](s[b][2])){j=h;break a}j=
|
||||
k}f=j&&!ed()}f&&(a.Ja=Ha(c.url))}return h}}else a.l&&(b=b.plugins_.get(a.l)),b[a.g][xa](b,a.k)}}catch(Qa){}};D.Qa=function(a,b){return L.s(a,b||"")};D.Ra=function(a){return L.w(a)};var td=function(){function a(a,b,c,d){g==f[a]&&(f[a]={});g==f[a][b]&&(f[a][b]=[]);f[a][b][c]=d}function b(a,b,c){if(g!=f[a]&&g!=f[a][b])return f[a][b][c]}function c(a,b){if(g!=f[a]&&g!=f[a][b]){f[a][b]=g;var c=h,d;for(d=0;d<j[v];d++)if(g!=f[a][j[d]]){c=k;break}c&&(f[a]=g)}}function d(a){var b="",c=k,d,e;for(d=0;d<j[v];d++)if(e=a[j[d]],g!=e){c&&(b+=j[d]);for(var c=[],f=g,da=g,da=0;da<e[v];da++)if(g!=e[da]){f="";da!=Ob&&g==e[da-1]&&(f+=da[u]()+Qa);for(var sd=e[da],zc="",Pb=g,Ac=g,Bc=g,Pb=0;Pb<sd[v];Pb++)Ac=
|
||||
sd[ka](Pb),Bc=sa[Ac],zc+=g!=Bc?Bc:Ac;f+=zc;c[m](f)}b+=o+c[B](s)+r;c=k}else c=h;return b}var e=this,f=[],j=["k","v"],o="(",r=")",s="*",Qa="!",sa={"'":"'0"};sa[r]="'1";sa[s]="'2";sa[Qa]="'3";var Ob=1;e.La=function(a){return g!=f[a]};e.z=function(){for(var a="",b=0;b<f[v];b++)g!=f[b]&&(a+=b[u]()+d(f[b]));return a};e.Ka=function(a){if(a==g)return e.z();for(var b=a.z(),c=0;c<f[v];c++)g!=f[c]&&!a.La(c)&&(b+=c[u]()+d(f[c]));return b};e.f=function(b,c,d){if(!qd(d))return k;a(b,"k",c,d);return h};e.o=function(b,
|
||||
c,d){if(!rd(d))return k;a(b,"v",c,d[u]());return h};e.getKey=function(a,c){return b(a,"k",c)};e.L=function(a,c){return b(a,"v",c)};e.J=function(a){c(a,"k")};e.K=function(a){c(a,"v")};T(e,"_setKey",e.f,89);T(e,"_setValue",e.o,90);T(e,"_getKey",e.getKey,87);T(e,"_getValue",e.L,88);T(e,"_clearKey",e.J,85);T(e,"_clearValue",e.K,86)};function qd(a){return"string"==typeof a}function rd(a){return"number"!=typeof a&&(g==Number||!(a instanceof Number))||l.round(a)!=a||NaN==a||a==ba?k:h};var ud=function(a){var b=W.gaGlobal;a&&!b&&(W.gaGlobal=b={});return b},vd=function(){var a=ud(h).hid;a==i&&(a=Da(),ud(h).hid=a);return a},wd=function(a){a.set(Eb,vd());var b=ud();if(b&&b.dh==a.get(O)){var c=b.sid;c&&("0"==c&&H(112),a.set(Tb,c),a.get(Mb)&&a.set(Sb,c));b=b.vid;a.get(Mb)&&b&&(b=b[x]("."),1*b[1]||H(112),a.set(R,1*b[0]),a.set(Rb,1*b[1]))}};var xd,yd=function(a,b,c){var d=a.c(Za,""),e=a.c(P,"/"),f=a.b($a,0),a=a.c(N,"");X(b,c,e,d,a,f)},Pc=function(a){var b=a.c(Za,"");a.b(O,1);var c=a.c(P,"/"),d=a.c(N,"");X("__utma",Uc(a),c,b,d,a.get($a));X("__utmb",Vc(a),c,b,d,a.get(ab));X("__utmc",""+a.b(O,1),c,b,d);var e=$c(a,h);e?X("__utmz",e,c,b,d,a.get(bb)):X("__utmz","",c,b,"",-1);(e=Xc(a,k))?X("__utmv",e,c,b,d,a.get($a)):X("__utmv","",c,b,"",-1)},Oc=function(a){var b=a.b(O,1);if(!Tc(a,Rc(b,jd("__utma"))))return a.set(Qb,h),k;var c=!Wc(a,Rc(b,jd("__utmb")));
|
||||
a.set(Wb,c);bd(a,Rc(b,jd("__utmz")));Yc(a,Rc(b,jd("__utmv")));xd=!c;return h},zd=function(a){!xd&&!(0<jd("__utmb")[v])&&(X("__utmd","1",a.c(P,"/"),a.c(Za,""),a.c(N,""),1E4),0==jd("__utmd")[v]&&a[ra]())};var Cd=function(a){a.get(R)==g?Ad(a):a.get(Qb)&&!a.get(Dc)?Ad(a):a.get(Wb)&&Bd(a)},Dd=function(a){a.get(bc)&&!a.get(Vb)&&(Bd(a),a.set($b,a.get(Ub)))},Ad=function(a){var b=a.get(Ya);a.set(Mb,h);a.set(R,Da()^nd(a)&2147483647);a.set(Nb,"");a.set(Rb,b);a.set(Sb,b);a.set(Tb,b);a.set(Ub,1);a.set(Vb,h);a.set(Xb,0);a.set(S,10);a.set(Yb,b);a.set(Q,[]);a.set(Qb,k);a.set(Wb,k)},Bd=function(a){a.set(Sb,a.get(Tb));a.set(Tb,a.get(Ya));a.v(Ub);a.set(Vb,h);a.set(Xb,0);a.set(S,10);a.set(Yb,a.get(Ya));a.set(Wb,k)};var Ed="daum:q,eniro:search_word,naver:query,pchome:q,images.google:q,google:q,yahoo:p,yahoo:q,msn:q,bing:q,aol:query,aol:q,lycos:q,lycos:query,ask:q,netscape:query,cnn:query,about:terms,mamma:q,voila:rdata,virgilio:qs,live:q,baidu:wd,alice:qs,yandex:text,najdi:q,seznam:q,rakuten:qt,biglobe:q,goo.ne:MT,wp:szukaj,onet:qt,yam:k,kvasir:q,ozu:q,terra:query,rambler:query,conduit:q,babylon:q,search-results:q,avg:q,comcast:q,incredimail:q,startsiden:q".split(","),Kd=function(a){if(a.get(hb)&&!a.get(Dc)){for(var b=
|
||||
!E(a.get(cc))||!E(a.get(gc))||!E(a.get(ec))||!E(a.get(fc)),c={},d=0;d<Fd[v];d++){var e=Fd[d];c[e]=a.get(e)}(d=a.get(kc))?(H(149),e=new Ja,Ma(e,d),d=e):d=La(J[y][wa],a.get(db)).d;if(!("1"==Ia(d.get(a.get(qb)))&&b)&&(d=Gd(a,d)||Hd(a),!d&&(!b&&a.get(Vb))&&(Id(a,g,"(direct)",g,g,"(direct)","(none)",g,g),d=h),d))if(a.set(bc,Jd(a,c)),b="(direct)"==a.get(gc)&&"(direct)"==a.get(dc)&&"(none)"==a.get(hc),a.get(bc)||a.get(Vb)&&!b)a.set(Zb,a.get(Ya)),a.set($b,a.get(Ub)),a.v(ac)}},Gd=function(a,b){function c(c,
|
||||
d){var d=d||"-",e=Ia(b.get(a.get(c)));return e&&"-"!=e?I(e):d}var d=Ia(b.get(a.get(jb)))||"-",e=Ia(b.get(a.get(mb)))||"-",f=Ia(b.get(a.get(lb)))||"-",j=Ia(b.get("dclid"))||"-",o=c(kb,"(not set)"),r=c(nb,"(not set)"),s=c(ob),Qa=c(pb);if(E(d)&&E(f)&&E(j)&&E(e))return k;var sa=!E(j)&&E(e),Ob=E(s);if(sa||Ob){var ca=Ld(a),ca=La(ca,h);if((ca=Md(a,ca))&&!E(ca[1]&&!ca[2]))sa&&(e=ca[0]),Ob&&(s=ca[1])}Id(a,d,e,f,j,o,r,s,Qa);return h},Hd=function(a){var b=Ld(a),c=La(b,h);if(!(b!=g&&b!=i&&""!=b&&"0"!=b&&"-"!=
|
||||
b&&0<=b[p]("://"))||c&&-1<c[t][p]("google")&&c.d.contains("q")&&"cse"==c[pa])return k;if((b=Md(a,c))&&!b[2])return Id(a,g,b[0],g,g,"(organic)","organic",b[1],g),h;if(b||!a.get(Vb))return k;a:{for(var b=a.get(xb),d=Ka(c[t]),e=0;e<b[v];++e)if(-1<d[p](b[e])){a=k;break a}Id(a,g,d,g,g,"(referral)","referral",g,"/"+c[pa]);a=h}return a},Md=function(a,b){for(var c=a.get(vb),d=0;d<c[v];++d){var e=c[d][x](":");if(-1<b[t][p](e[0][C]())){var f=b.d.get(e[1]);if(f&&(f=K(f),!f&&-1<b[t][p]("google.")&&(f="(not provided)"),
|
||||
!e[3]||-1<b.url[p](e[3]))){a:{for(var c=f,d=a.get(wb),c=I(c)[C](),j=0;j<d[v];++j)if(c==d[j]){c=h;break a}c=k}return[e[2]||e[0],f,c]}}}return i},Id=function(a,b,c,d,e,f,j,o,r){a.set(cc,b);a.set(gc,c);a.set(ec,d);a.set(fc,e);a.set(dc,f);a.set(hc,j);a.set(ic,o);a.set(jc,r)},Fd=[dc,cc,ec,fc,gc,hc,ic,jc],Jd=function(a,b){function c(a){a=(""+a)[x]("+")[B]("%20");return a=a[x](" ")[B]("%20")}function d(c){var d=""+(a.get(c)||""),c=""+(b[c]||"");return 0<d[v]&&d==c}if(d(ec)||d(fc))return H(131),k;for(var e=
|
||||
0;e<Fd[v];e++){var f=Fd[e],j=b[f]||"-",f=a.get(f)||"-";if(c(j)!=c(f))return h}return k},Nd=RegExp(/^https:\/\/(www\.)?google(\.com?)?(\.[a-z]{2}t?)?\/?$/i),Ld=function(a){a=Oa(a.get(Db),a.get(P));try{if(Nd.test(a))return H(136),a+"?q="}catch(b){H(145)}return a};var Pd=function(a){Od(a,J[y][wa])?(a.set(Dc,h),H(12)):a.set(Dc,k)},Od=function(a,b){if(!a.get(cb))return k;var c=La(b,a.get(db)),d=K(c.d.get("__utma")),e=K(c.d.get("__utmb")),f=K(c.d.get("__utmc")),j=K(c.d.get("__utmx")),o=K(c.d.get("__utmz")),r=K(c.d.get("__utmv")),c=K(c.d.get("__utmk"));if(F(""+d+e+f+j+o+r)!=c){d=I(d);e=I(e);f=I(f);j=I(j);f=Qd(d+e+f+j,o,r,c);if(!f)return k;o=f[0];r=f[1]}if(!Tc(a,d,h))return k;Wc(a,e,h);bd(a,o,h);Yc(a,r,h);Rd(a,j,h);return h},Td=function(a,b,c){var d;d=Uc(a)||"-";
|
||||
var e=Vc(a)||"-",f=""+a.b(O,1)||"-",j=Sd(a)||"-",o=$c(a,k)||"-",a=Xc(a,k)||"-",r=F(""+d+e+f+j+o+a),s=[];s[m]("__utma="+d);s[m]("__utmb="+e);s[m]("__utmc="+f);s[m]("__utmx="+j);s[m]("__utmz="+o);s[m]("__utmv="+a);s[m]("__utmk="+r);d=s[B]("&");if(!d)return b;e=b[p]("#");if(c)return 0>e?b+"#"+d:b+"&"+d;c="";f=b[p]("?");0<e&&(c=b[A](e),b=b[A](0,e));return 0>f?b+"?"+d+c:b+"&"+d+c},Qd=function(a,b,c,d){for(var e=0;3>e;e++){for(var f=0;3>f;f++){if(d==F(a+b+c))return H(127),[b,c];var j=b[n](/ /g,"%20"),o=
|
||||
c[n](/ /g,"%20");if(d==F(a+j+o))return H(128),[j,o];j=j[n](/\+/g,"%20");o=o[n](/\+/g,"%20");if(d==F(a+j+o))return H(129),[j,o];try{var r=b[ma]("utmctr=(.*?)(?:\\|utm|$)");if(r&&2==r[v]&&(j=b[n](r[1],G(I(r[1]))),d==F(a+j+c)))return H(139),[j,c]}catch(s){}b=I(b)}c=I(c)}};var Ud="|",Wd=function(a,b,c,d,e,f,j,o,r){var s=Vd(a,b);s||(s={},a.get(yb)[m](s));s.id_=b;s.affiliation_=c;s.total_=d;s.tax_=e;s.shipping_=f;s.city_=j;s.state_=o;s.country_=r;s.items_=s.items_||[];return s},Xd=function(a,b,c,d,e,f,j){var a=Vd(a,b)||Wd(a,b,"",0,0,0,"","",""),o;a:{if(a&&a.items_){o=a.items_;for(var r=0;r<o[v];r++)if(o[r].sku_==c){o=o[r];break a}}o=i}r=o||{};r.transId_=b;r.sku_=c;r.name_=d;r.category_=e;r.price_=f;r.quantity_=j;o||a.items_[m](r);return r},Vd=function(a,b){for(var c=
|
||||
a.get(yb),d=0;d<c[v];d++)if(c[d].id_==b)return c[d];return i};var Yd,Zd=function(a){if(!Yd){var b;b=J[y].hash;var c=W[q],d=/^#?gaso=([^&]*)/;if(c=(b=(b=b&&b[ma](d)||c&&c[ma](d))?b[1]:K(jd("GASO")))&&b[ma](/^(?:[|!]([-0-9a-z.]{1,40})[|!])?([-.\w]{10,1200})$/i))yd(a,"GASO",""+b),L._gasoDomain=a.get(Za),L._gasoCPath=a.get(P),a=c[1],Ha("https://www.google.com/analytics/web/inpage/pub/inpage.js?"+(a?"prefix="+a+"&":"")+Da(),"_gasojs");Yd=h}};var Rd=function(a,b,c){c&&(b=I(b));c=a.b(O,1);b=b[x](".");!(2>b[v])&&/^\d+$/.test(b[0])&&(b[0]=""+c,yd(a,"__utmx",b[B](".")))},Sd=function(a,b){var c=Rc(a.get(O),jd("__utmx"));"-"==c&&(c="");return b?G(c):c},$d=function(a){try{var b=La(J[y][wa],k),c=fa(Ia(b.d.get("utm_referrer")))||"";c&&a.set(Db,c);var d=fa(K(b.d.get("utm_expid")));d&&a.set(Fc,d)}catch(e){H(146)}};var ee=function(a,b){var c=l.min(a.b(wc,0),100);if(a.b(R,0)%100>=c)return k;c=ae()||be();if(c==g)return k;var d=c[0];if(d==g||d==ba||isNaN(d))return k;0<d?ce(c)?b(de(c)):b(de(c[ha](0,1))):Fa(W,"load",function(){ee(a,b)},k);return h},ge=function(a,b,c,d){var e=new td;e.f(14,90,b[A](0,64));e.f(14,91,a[A](0,64));e.f(14,92,""+fe(c));d!=g&&e.f(14,93,d[A](0,64));e.o(14,90,c);return e},ce=function(a){for(var b=1;b<a[v];b++)if(isNaN(a[b])||a[b]==ba||0>a[b])return k;return h},fe=function(a){return isNaN(a)||
|
||||
0>a?0:5E3>a?10*l[ja](a/10):5E4>a?100*l[ja](a/100):41E5>a?1E3*l[ja](a/1E3):41E5},de=function(a){for(var b=new td,c=0;c<a[v];c++)b.f(14,c+1,""+fe(a[c])),b.o(14,c+1,a[c]);return b},ae=function(){var a=W.performance||W.webkitPerformance;if(a=a&&a.timing){var b=a.navigationStart;if(0==b)H(133);else return[a.loadEventStart-b,a.domainLookupEnd-a.domainLookupStart,a.connectEnd-a.connectStart,a.responseStart-a.requestStart,a.responseEnd-a.responseStart,a.fetchStart-b]}},be=function(){if(W.top==W){var a=W.external,
|
||||
b=a&&a.onloadT;a&&!a.isValidLoadTime&&(b=g);2147483648<b&&(b=g);0<b&&a.setPageReadyTime();return b==g?g:[b]}};var U=function(a,b,c){function d(a){return function(b){if((b=b.get(Ec)[a])&&b[v])for(var c=Jc(e,a),d=0;d<b[v];d++)b[d].call(e,c)}}var e=this;this.a=new Qc;this.get=function(a){return this.a.get(a)};this.set=function(a,b,c){this.a.set(a,b,c)};this.set(N,b||"UA-XXXXX-X");this.set(Xa,a||"");this.set(Wa,c||"");this.set(Ya,l.round((new Date).getTime()/1E3));this.set(P,"/");this.set($a,63072E6);this.set(bb,15768E6);this.set(ab,18E5);this.set(cb,k);this.set(ub,50);this.set(db,k);this.set(eb,h);this.set(fb,
|
||||
h);this.set(gb,h);this.set(hb,h);this.set(ib,h);this.set(kb,"utm_campaign");this.set(jb,"utm_id");this.set(lb,"gclid");this.set(mb,"utm_source");this.set(nb,"utm_medium");this.set(ob,"utm_term");this.set(pb,"utm_content");this.set(qb,"utm_nooverride");this.set(rb,100);this.set(wc,1);this.set(xc,k);this.set(sb,"/__utm.gif");this.set(tb,1);this.set(yb,[]);this.set(Q,[]);this.set(vb,Ed[ha](0));this.set(wb,[]);this.set(xb,[]);this.C("auto");this.set(Db,J.referrer);$d(this.a);this.set(Ec,{hit:[],load:[]});
|
||||
this.a.j("0",Pd);this.a.j("1",Cd);this.a.j("2",Kd);this.a.j("3",Dd);this.a.j("4",d("load"));this.a.j("5",Zd);this.a.e("A",dd);this.a.e("B",fd);this.a.e("C",Cd);this.a.e("D",cd);this.a.e("E",Lc);this.a.e("F",he);this.a.e("G",zd);this.a.e("H",gd);this.a.e("I",od);this.a.e("J",wd);this.a.e("K",d("hit"));this.a.e("L",ie);this.a.e("M",je);0===this.get(Ya)&&H(111);this.a.S();this.F=g};D=U[w];D.m=function(){var a=this.get(zb);a||(a=new td,this.set(zb,a));return a};
|
||||
D.Ga=function(a){for(var b in a){var c=a[b];a.hasOwnProperty(b)&&this.set(b,c,h)}};D.I=function(a){if(this.get(xc))return k;var b=this,c=ee(this.a,function(c){b.set(Bb,a,h);b.t(c)});this.set(xc,c);return c};D.ya=function(a){a&&Ba(a)?(H(13),this.set(Bb,a,h)):"object"===typeof a&&a!==i&&this.Ga(a);this.F=a=this.get(Bb);this.a.i("page");this.I(a)};
|
||||
D.D=function(a,b,c,d,e){if(""==a||(!qd(a)||""==b||!qd(b))||c!=g&&!qd(c)||d!=g&&!rd(d))return k;this.set(pc,a,h);this.set(qc,b,h);this.set(rc,c,h);this.set(sc,d,h);this.set(oc,!!e,h);this.a.i("event");return h};D.Aa=function(a,b,c,d,e){var f=this.a.b(wc,0);1*e===e&&(f=e);if(this.a.b(R,0)%100>=f)return k;c=1*(""+c);if(""==a||(!qd(a)||""==b||!qd(b)||!rd(c)||isNaN(c)||0>c||0>f||100<f)||d!=g&&(""==d||!qd(d)))return k;this.t(ge(a,b,c,d));return h};
|
||||
D.za=function(a,b,c,d){if(!a||!b)return k;this.set(tc,a,h);this.set(uc,b,h);this.set(vc,c||J[y][wa],h);d&&this.set(Bb,d,h);this.a.i("social");return h};D.xa=function(){this.set(wc,10);this.I(this.F)};D.Ba=function(){this.a.i("trans")};D.t=function(a){this.set(Ab,a,h);this.a.i("event")};D.ea=function(a){this.u();var b=this;return{_trackEvent:function(c,d,e){H(91);b.D(a,c,d,e)}}};D.ha=function(a){return this.get(a)};
|
||||
D.qa=function(a,b){if(a)if(Ba(a))this.set(a,b);else if("object"==typeof a)for(var c in a)a.hasOwnProperty(c)&&this.set(c,a[c])};D.addEventListener=function(a,b){var c=this.get(Ec)[a];c&&c[m](b)};D.removeEventListener=function(a,b){for(var c=this.get(Ec)[a],d=0;c&&d<c[v];d++)if(c[d]==b){c.splice(d,1);break}};D.ja=function(){return"5.2.9"};D.C=function(a){this.get(eb);a="auto"==a?Ka(J.domain):!a||"-"==a||"none"==a?"":a[C]();this.set(Za,a)};D.oa=function(a){this.set(eb,!!a)};
|
||||
D.ia=function(a,b){return Td(this.a,a,b)};D.link=function(a,b){if(this.a.get(cb)&&a){var c=Td(this.a,a,b);J[y].href=c}};D.na=function(a,b){this.a.get(cb)&&(a&&a.action)&&(a.action=Td(this.a,a.action,b))};
|
||||
D.sa=function(){this.u();var a=this.a,b=J.getElementById?J.getElementById("utmtrans"):J.utmform&&J.utmform.utmtrans?J.utmform.utmtrans:i;if(b&&b[la]){a.set(yb,[]);for(var b=b[la][x]("UTM:"),c=0;c<b[v];c++){b[c]=Ca(b[c]);for(var d=b[c][x](Ud),e=0;e<d[v];e++)d[e]=Ca(d[e]);"T"==d[0]?Wd(a,d[1],d[2],d[3],d[4],d[5],d[6],d[7],d[8]):"I"==d[0]&&Xd(a,d[1],d[2],d[3],d[4],d[5],d[6])}}};D.Y=function(a,b,c,d,e,f,j,o){return Wd(this.a,a,b,c,d,e,f,j,o)};D.W=function(a,b,c,d,e,f){return Xd(this.a,a,b,c,d,e,f)};
|
||||
D.ta=function(a){Ud=a||"|"};D.pa=function(a,b,c,d){var e=this.a;if(0>=a||a>e.get(ub))a=k;else if(!b||!c||128<b[v]+c[v])a=k;else{1!=d&&2!=d&&(d=3);var f={};ga(f,b);f.value=c;f.scope=d;e.get(Q)[a]=f;a=h}a&&this.a.n();return a};D.ga=function(a){this.a.get(Q)[a]=g;this.a.n()};D.ka=function(a){return(a=this.a.get(Q)[a])&&1==a[ta]?a[la]:g};D.va=function(a,b,c){this.m().f(a,b,c)};D.wa=function(a,b,c){this.m().o(a,b,c)};D.la=function(a,b){return this.m().getKey(a,b)};
|
||||
D.ma=function(a,b){return this.m().L(a,b)};D.ba=function(a){this.m().J(a)};D.ca=function(a){this.m().K(a)};D.fa=function(){return new td};D.U=function(a){a&&this.get(wb)[m](a[C]())};D.Z=function(){this.set(wb,[])};D.V=function(a){a&&this.get(xb)[m](a[C]())};D.$=function(){this.set(xb,[])};D.X=function(a,b,c,d,e){if(a&&b){a=[a,b[C]()][B](":");if(d||e)a=[a,d,e][B](":");d=this.get(vb);d.splice(c?0:d[v],0,a)}};D.aa=function(){this.set(vb,[])};
|
||||
D.da=function(a){this.a[ia]();var b=this.get(P),c=Sd(this.a);this.set(P,a);this.a.n();Rd(this.a,c);this.set(P,b)};D.ra=function(a,b){if(0<a&&5>=a&&Ba(b)&&""!=b){var c=this.get(yc)||[];c[a]=b;this.set(yc,c)}};D.T=function(a){a=""+a;if(a[ma](/^[A-Za-z0-9]{1,5}$/)){var b=this.get(Cc)||[];b[m](a);this.set(Cc,b)}};D.u=function(){this.a[ia]()};D.ua=function(a){a&&""!=a&&(this.set(Nb,a),this.a.i("var"))};var he=function(a){"trans"!==a.get(lc)&&500<=a.b(Xb,0)&&a[ra]();if("event"===a.get(lc)){var b=(new Date).getTime(),c=a.b(Yb,0),d=a.b(Tb,0),c=l[ja](1*((b-(c!=d?c:1E3*c))/1E3));0<c&&(a.set(Yb,b),a.set(S,l.min(10,a.b(S,0)+c)));0>=a.b(S,0)&&a[ra]()}},je=function(a){"event"===a.get(lc)&&a.set(S,l.max(0,a.b(S,10)-1))};var ke=function(){var a=[];this.add=function(b,c,d){d&&(c=G(""+c));a[m](b+"="+c)};this.toString=function(){return a[B]("&")}},le=function(a,b){(b||2!=a.get(tb))&&a.v(Xb)},me=function(a,b){b.add("utmwv","5.2.9");b.add("utms",a.get(Xb));b.add("utmn",Da());var c=J[y].hostname;E(c)||b.add("utmhn",c,h);c=a.get(rb);100!=c&&b.add("utmsp",c,h)},oe=function(a,b){b.add("utmac",Ca(a.get(N)));a.get(Fc)&&b.add("utmxkey",a.get(Fc),h);a.get(oc)&&b.add("utmni",1);var c=a.get(Cc);c&&0<c[v]&&b.add("utmdid",c[B]("."));
|
||||
ne(a,b);L.A&&b.add("aip",1);b.add("utmu",hd.Va())},pe=function(a,b){for(var c=a.get(yc)||[],d=[],e=1;e<c[v];e++)c[e]&&d[m](e+":"+G(c[e][n](/%/g,"%25")[n](/:/g,"%3A")[n](/,/g,"%2C")));d[v]&&b.add("utmpg",d[B](","))},ne=function(a,b){function c(a,b){b&&d[m](a+"="+b+";")}var d=[];c("__utma",Uc(a));c("__utmz",$c(a,k));c("__utmv",Xc(a,h));c("__utmx",Sd(a));b.add("utmcc",d[B]("+"),h)},qe=function(a,b){a.get(fb)&&(b.add("utmcs",a.get(Kb),h),b.add("utmsr",a.get(Fb)),a.get(Lb)&&b.add("utmvp",a.get(Lb)),b.add("utmsc",
|
||||
a.get(Gb)),b.add("utmul",a.get(Jb)),b.add("utmje",a.get(Hb)),b.add("utmfl",a.get(Ib),h))},re=function(a,b){a.get(ib)&&a.get(Cb)&&b.add("utmdt",a.get(Cb),h);b.add("utmhid",a.get(Eb));b.add("utmr",Oa(a.get(Db),a.get(P)),h);b.add("utmp",G(a.get(Bb),h),h)},se=function(a,b){for(var c=a.get(zb),d=a.get(Ab),e=a.get(Q)||[],f=0;f<e[v];f++){var j=e[f];j&&(c||(c=new td),c.f(8,f,j[q]),c.f(9,f,j[la]),3!=j[ta]&&c.f(11,f,""+j[ta]))}!E(a.get(pc))&&!E(a.get(qc),h)&&(c||(c=new td),c.f(5,1,a.get(pc)),c.f(5,2,a.get(qc)),
|
||||
e=a.get(rc),e!=g&&c.f(5,3,e),e=a.get(sc),e!=g&&c.o(5,1,e));c?b.add("utme",c.Ka(d),h):d&&b.add("utme",d.z(),h)},te=function(a,b,c){var d=new ke;le(a,c);me(a,d);d.add("utmt","tran");d.add("utmtid",b.id_,h);d.add("utmtst",b.affiliation_,h);d.add("utmtto",b.total_,h);d.add("utmttx",b.tax_,h);d.add("utmtsp",b.shipping_,h);d.add("utmtci",b.city_,h);d.add("utmtrg",b.state_,h);d.add("utmtco",b.country_,h);c||(pe(a,d),oe(a,d));return d[u]()},ue=function(a,b,c){var d=new ke;le(a,c);me(a,d);d.add("utmt","item");
|
||||
d.add("utmtid",b.transId_,h);d.add("utmipc",b.sku_,h);d.add("utmipn",b.name_,h);d.add("utmiva",b.category_,h);d.add("utmipr",b.price_,h);d.add("utmiqt",b.quantity_,h);c||(pe(a,d),oe(a,d));return d[u]()},ve=function(a,b){var c=a.get(lc);if("page"==c)c=new ke,le(a,b),me(a,c),se(a,c),qe(a,c),re(a,c),b||(pe(a,c),oe(a,c)),c=[c[u]()];else if("event"==c)c=new ke,le(a,b),me(a,c),c.add("utmt","event"),se(a,c),qe(a,c),re(a,c),b||(pe(a,c),oe(a,c)),c=[c[u]()];else if("var"==c)c=new ke,le(a,b),me(a,c),c.add("utmt",
|
||||
"var"),!b&&oe(a,c),c=[c[u]()];else if("trans"==c)for(var c=[],d=a.get(yb),e=0;e<d[v];++e){c[m](te(a,d[e],b));for(var f=d[e].items_,j=0;j<f[v];++j)c[m](ue(a,f[j],b))}else"social"==c?b?c=[]:(c=new ke,le(a,b),me(a,c),c.add("utmt","social"),c.add("utmsn",a.get(tc),h),c.add("utmsa",a.get(uc),h),c.add("utmsid",a.get(vc),h),se(a,c),qe(a,c),re(a,c),pe(a,c),oe(a,c),c=[c[u]()]):c=[];return c},ie=function(a){var b,c=a.get(tb),d=a.get(nc),e=d&&d.Sa,f=0;if(0==c||2==c){var j=a.get(sb)+"?";b=ve(a,h);for(var o=0,
|
||||
r=b[v];o<r;o++)Sa(b[o],e,j,h),f++}if(1==c||2==c){b=ve(a);o=0;for(r=b[v];o<r;o++)try{Sa(b[o],e),f++}catch(s){s&&Ra(s[q],g,s.message)}}d&&(d.q=f)};var we="https:"==J[y][z]?"https://ssl.google-analytics.com":"http://www.google-analytics.com",xe=function(a){ga(this,"len");this.message=a+"-8192"},ye=function(a){ga(this,"ff2post");this.message=a+"-2036"},Sa=function(a,b,c,d){b=b||Ea;if(d||2036>=a[v])ze(a,b,c);else if(8192>=a[v]){if(0<=W[ya].userAgent[p]("Firefox")&&![].reduce)throw new ye(a[v]);Ae(a,b)||Be(a,b)}else throw new xe(a[v]);},ze=function(a,b,c){var c=c||we+"/__utm.gif?",d=new Image(1,1);d.src=c+a;d.onload=function(){d.onload=i;d.onerror=
|
||||
i;b()};d.onerror=function(){d.onload=i;d.onerror=i;b()}},Ae=function(a,b){var c,d=we+"/p/__utm.gif",e=W.XDomainRequest;if(e)c=new e,c.open("POST",d);else if(e=W.XMLHttpRequest)e=new e,"withCredentials"in e&&(c=e,c.open("POST",d,h),c.setRequestHeader("Content-Type","text/plain"));if(c)return c.onreadystatechange=function(){4==c.readyState&&(b(),c=i)},c.send(a),h},Be=function(a,b){if(J.body){a=aa(a);try{var c=J[oa]('<iframe name="'+a+'"></iframe>')}catch(d){c=J[oa]("iframe"),ga(c,a)}c.height="0";c.width=
|
||||
"0";c.style.display="none";c.style.visibility="hidden";var e=J[y],e=we+"/u/post_iframe.html#"+aa(e[z]+"//"+e[t]+"/favicon.ico"),f=function(){c.src="";c.parentNode&&c.parentNode.removeChild(c)};Fa(W,"beforeunload",f);var j=k,o=0,r=function(){if(!j){try{if(9<o||c.contentWindow[y][t]==J[y][t]){j=h;f();Ga(W,"beforeunload",f);b();return}}catch(a){}o++;ea(r,200)}};Fa(c,"load",r);J.body.appendChild(c);c.src=e}else id(function(){Be(a,b)},100)};var $=function(){this.A=k;this.M={};this.N=[];this.Ma=0;this.Ea=[["www.google-analytics.com","","/plugins/"]];this._gasoCPath=this._gasoDomain=g;T($[w],"_createTracker",$[w].s,55);T($[w],"_getTracker",$[w].Oa,0);T($[w],"_getTrackerByName",$[w].w,51);T($[w],"_getTrackers",$[w].Pa,130);T($[w],"_anonymizeIp",$[w].Na,16);T($[w],"_getPlugin",Hc,120);Ic()};D=$[w];D.Oa=function(a,b){return this.s(a,g,b)};D.s=function(a,b,c){b&&H(23);c&&H(67);b==g&&(b="~"+L.Ma++);a=new U(b,a,c);L.M[b]=a;L.N[m](a);return a};
|
||||
D.w=function(a){a=a||"";return L.M[a]||L.s(g,a)};D.Pa=function(){return L.N[ha](0)};D.Na=function(){this.A=h};var Ce=function(a){if("prerender"==J.webkitVisibilityState)return k;a();return h};var L=new $;var De=W._gat;De&&Aa(De._getTracker)?L=De:W._gat=L;var Z=new Y;(function(a){if(!Ce(a)){H(123);var b=k,c=function(){!b&&Ce(a)&&(b=h,Ga(J,"webkitvisibilitychange",c))};Fa(J,"webkitvisibilitychange",c)}})(function(){var a=W._gaq,b=k;if(a&&Aa(a[m])&&(b="[object Array]"==Object[w][u].call(Object(a)),!b)){Z=a;return}W._gaq=Z;b&&Z[m][xa](Z,a)});})();
|
||||
@@ -0,0 +1,61 @@
|
||||
(function(){var g=void 0,h=!0,i=null,k=!1,aa=encodeURIComponent,ba=Infinity,ea=setTimeout,fa=decodeURIComponent,l=Math;function ga(a,b){return a.name=b}
|
||||
var m="push",ha="slice",n="replace",ia="load",ja="floor",ka="charAt",la="value",p="indexOf",ma="match",na="port",oa="createElement",pa="path",q="name",t="host",u="toString",v="length",w="prototype",qa="clientWidth",x="split",ra="stopPropagation",ta="scope",y="location",ua="search",z="protocol",va="clientHeight",wa="href",A="substring",xa="apply",ya="navigator",B="join",C="toLowerCase",D;function za(a,b){switch(b){case 0:return""+a;case 1:return 1*a;case 2:return!!a;case 3:return 1E3*a}return a}function Aa(a){return"function"==typeof a}function Ba(a){return a!=g&&-1<(a.constructor+"")[p]("String")}function E(a,b){return g==a||"-"==a&&!b||""==a}function Ca(a){if(!a||""==a)return"";for(;a&&-1<" \n\r\t"[p](a[ka](0));)a=a[A](1);for(;a&&-1<" \n\r\t"[p](a[ka](a[v]-1));)a=a[A](0,a[v]-1);return a}
|
||||
function F(a){var b=1,c=0,d;if(!E(a)){b=0;for(d=a[v]-1;0<=d;d--)c=a.charCodeAt(d),b=(b<<6&268435455)+c+(c<<14),c=b&266338304,b=0!=c?b^c>>21:b}return b}function Da(){return l.round(2147483647*l.random())}function Ea(){}function G(a,b){if(aa instanceof Function)return b?encodeURI(a):aa(a);H(68);return escape(a)}function I(a){a=a[x]("+")[B](" ");if(fa instanceof Function)try{return fa(a)}catch(b){H(17)}else H(68);return unescape(a)}
|
||||
var Fa=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent&&a.attachEvent("on"+b,c)},Ga=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,!!d):a.detachEvent&&a.detachEvent("on"+b,c)};function Ha(a,b){if(a){var c=J[oa]("script");c.type="text/javascript";c.async=h;c.src=a;c.id=b;var d=J.getElementsByTagName("script")[0];d.parentNode.insertBefore(c,d);return c}}function K(a){return a&&0<a[v]?a[0]:""}function Ia(a){var b=a?a[v]:0;return 0<b?a[b-1]:""}
|
||||
var Ja=function(){this.prefix="ga.";this.R={}};Ja[w].set=function(a,b){this.R[this.prefix+a]=b};Ja[w].get=function(a){return this.R[this.prefix+a]};Ja[w].contains=function(a){return this.get(a)!==g};function Ka(a){0==a[p]("www.")&&(a=a[A](4));return a[C]()}function La(a,b){var c,d={url:a,protocol:"http",host:"",path:"",d:new Ja,anchor:""};if(!a)return d;c=a[p]("://");0<=c&&(d.protocol=a[A](0,c),a=a[A](c+3));c=a[ua]("/|\\?|#");if(0<=c)d.host=a[A](0,c)[C](),a=a[A](c);else return d.host=a[C](),d;c=a[p]("#");0<=c&&(d.anchor=a[A](c+1),a=a[A](0,c));c=a[p]("?");0<=c&&(Ma(d.d,a[A](c+1)),a=a[A](0,c));d.anchor&&b&&Ma(d.d,d.anchor);a&&"/"==a[ka](0)&&(a=a[A](1));d.path=a;return d}
|
||||
function Na(a,b){function c(a){var b=(a.hostname||"")[x](":")[0][C](),c=(a[z]||"")[C](),c=1*a[na]||("http:"==c?80:"https:"==c?443:""),a=a.pathname||"";0==a[p]("/")||(a="/"+a);return[b,""+c,a]}var d=b||J[oa]("a");d.href=J[y][wa];var e=(d[z]||"")[C](),f=c(d),j=d[ua]||"",o=e+"//"+f[0]+(f[1]?":"+f[1]:"");0==a[p]("//")?a=e+a:0==a[p]("/")?a=o+a:!a||0==a[p]("?")?a=o+f[2]+(a||j):0>a[x]("/")[0][p](":")&&(a=o+f[2][A](0,f[2].lastIndexOf("/"))+"/"+a);d.href=a;e=c(d);return{protocol:(d[z]||"")[C](),host:e[0],
|
||||
port:e[1],path:e[2],Ia:d[ua]||"",url:a||""}}function Ma(a,b){function c(b,c){a.contains(b)||a.set(b,[]);a.get(b)[m](c)}for(var d=Ca(b)[x]("&"),e=0;e<d[v];e++)if(d[e]){var f=d[e][p]("=");0>f?c(d[e],"1"):c(d[e][A](0,f),d[e][A](f+1))}}function Oa(a,b){if(E(a)||"["==a[ka](0)&&"]"==a[ka](a[v]-1))return"-";var c=J.domain;return a[p](c+(b&&"/"!=b?b:""))==(0==a[p]("http://")?7:0==a[p]("https://")?8:0)?"0":a};var Pa=0;function Ra(a,b,c){!(1<=Pa)&&!(1<=100*l.random())&&(a=["utmt=error","utmerr="+a,"utmwv=5.2.9","utmn="+Da(),"utmsp=1"],b&&a[m]("api="+b),c&&a[m]("msg="+G(c[A](0,100))),L.A&&a[m]("aip=1"),Sa(a[B]("&")),Pa++)};var Ta=0,Ua={};function M(a){return Va("x"+Ta++,a)}function Va(a,b){Ua[a]=!!b;return a}
|
||||
var N=M(),Wa=M(),Xa=M(),Ya=M(),Za=M(),O=M(),P=M(),$a=M(),ab=M(),bb=M(),cb=M(),db=M(),eb=M(),fb=M(),gb=M(),hb=M(),ib=M(),jb=M(),kb=M(),lb=M(),mb=M(),nb=M(),ob=M(),pb=M(),qb=M(),rb=M(),sb=M(),tb=M(),ub=M(),vb=M(),wb=M(),xb=M(),yb=M(),zb=M(),Ab=M(),Q=M(h),Bb=Va("page"),Cb=Va("title"),Db=M(),Eb=M(),Fb=M(),Gb=M(),Hb=M(),Ib=M(),Jb=M(),Kb=M(),Lb=M(),R=M(h),Mb=M(h),Nb=M(h),Qb=M(h),Rb=M(h),Sb=M(h),Tb=M(h),Ub=M(h),Vb=M(h),Wb=M(h),Xb=M(h),S=M(h),Yb=M(h),Zb=M(h),$b=M(h),ac=M(h),bc=M(h),cc=M(h),dc=M(h),ec=M(h),
|
||||
fc=M(h),gc=M(h),hc=M(h),ic=M(h),jc=M(h),kc=Va("campaignParams"),lc=M(),mc=Va("hitCallback"),nc=M();M();var oc=M(),pc=M(),qc=M(),rc=M(),sc=M(),tc=M(),uc=M(),vc=M(),wc=M(),xc=M(),yc=M(),Cc=M();M();var Dc=M(),Ec=M(),Fc=M();var Ic=function(){function a(a,c,d){T(U[w],a,c,d)}Gc("_getName",Xa,58);Gc("_getAccount",N,64);Gc("_visitCode",R,54);Gc("_getClientInfo",fb,53,1);Gc("_getDetectTitle",ib,56,1);Gc("_getDetectFlash",gb,65,1);Gc("_getLocalGifPath",sb,57);Gc("_getServiceMode",tb,59);V("_setClientInfo",fb,66,2);V("_setAccount",N,3);V("_setNamespace",Wa,48);V("_setAllowLinker",cb,11,2);V("_setDetectFlash",gb,61,2);V("_setDetectTitle",ib,62,2);V("_setLocalGifPath",sb,46,0);V("_setLocalServerMode",tb,92,g,0);V("_setRemoteServerMode",
|
||||
tb,63,g,1);V("_setLocalRemoteServerMode",tb,47,g,2);V("_setSampleRate",rb,45,1);V("_setCampaignTrack",hb,36,2);V("_setAllowAnchor",db,7,2);V("_setCampNameKey",kb,41);V("_setCampContentKey",pb,38);V("_setCampIdKey",jb,39);V("_setCampMediumKey",nb,40);V("_setCampNOKey",qb,42);V("_setCampSourceKey",mb,43);V("_setCampTermKey",ob,44);V("_setCampCIdKey",lb,37);V("_setCookiePath",P,9,0);V("_setMaxCustomVariables",ub,0,1);V("_setVisitorCookieTimeout",$a,28,1);V("_setSessionCookieTimeout",ab,26,1);V("_setCampaignCookieTimeout",
|
||||
bb,29,1);V("_setReferrerOverride",Db,49);V("_setSiteSpeedSampleRate",wc,132);a("_trackPageview",U[w].ya,1);a("_trackEvent",U[w].D,4);a("_trackPageLoadTime",U[w].xa,100);a("_trackSocial",U[w].za,104);a("_trackTrans",U[w].Ba,18);a("_sendXEvent",U[w].t,78);a("_createEventTracker",U[w].ea,74);a("_getVersion",U[w].ja,60);a("_setDomainName",U[w].C,6);a("_setAllowHash",U[w].oa,8);a("_getLinkerUrl",U[w].ia,52);a("_link",U[w].link,101);a("_linkByPost",U[w].na,102);a("_setTrans",U[w].sa,20);a("_addTrans",U[w].Y,
|
||||
21);a("_addItem",U[w].W,19);a("_setTransactionDelim",U[w].ta,82);a("_setCustomVar",U[w].pa,10);a("_deleteCustomVar",U[w].ga,35);a("_getVisitorCustomVar",U[w].ka,50);a("_setXKey",U[w].va,83);a("_setXValue",U[w].wa,84);a("_getXKey",U[w].la,76);a("_getXValue",U[w].ma,77);a("_clearXKey",U[w].ba,72);a("_clearXValue",U[w].ca,73);a("_createXObj",U[w].fa,75);a("_addIgnoredOrganic",U[w].U,15);a("_clearIgnoredOrganic",U[w].Z,97);a("_addIgnoredRef",U[w].V,31);a("_clearIgnoredRef",U[w].$,32);a("_addOrganic",
|
||||
U[w].X,14);a("_clearOrganic",U[w].aa,70);a("_cookiePathCopy",U[w].da,30);a("_get",U[w].ha,106);a("_set",U[w].qa,107);a("_addEventListener",U[w].addEventListener,108);a("_removeEventListener",U[w].removeEventListener,109);a("_addDevId",U[w].T);a("_getPlugin",Hc,122);a("_setPageGroup",U[w].ra,126);a("_trackTiming",U[w].Aa,124);a("_initData",U[w].u,2);a("_setVar",U[w].ua,22);V("_setSessionTimeout",ab,27,3);V("_setCookieTimeout",bb,25,3);V("_setCookiePersistence",$a,24,1);a("_setAutoTrackOutbound",Ea,
|
||||
79);a("_setTrackOutboundSubdomains",Ea,81);a("_setHrefExamineLimit",Ea,80)};function Hc(a){var b=this.plugins_;if(b)return b.get(a)}
|
||||
var T=function(a,b,c,d){a[b]=function(){try{return d!=g&&H(d),c[xa](this,arguments)}catch(a){throw Ra("exc",b,a&&a[q]),a;}}},Gc=function(a,b,c,d){U[w][a]=function(){try{return H(c),za(this.a.get(b),d)}catch(e){throw Ra("exc",a,e&&e[q]),e;}}},V=function(a,b,c,d,e){U[w][a]=function(f){try{H(c),e==g?this.a.set(b,za(f,d)):this.a.set(b,e)}catch(j){throw Ra("exc",a,j&&j[q]),j;}}},Jc=function(a,b){return{type:b,target:a,stopPropagation:function(){throw"aborted";}}};var Kc=function(a,b){return"/"!==b?k:(0==a[p]("www.google.")||0==a[p](".google.")||0==a[p]("google."))&&!(-1<a[p]("google.org"))?h:k},Lc=function(a){var b=a.get(Za),c=a.c(P,"/");Kc(b,c)&&a[ra]()};var Qc=function(){var a={},b={},c=new Mc;this.j=function(a,b){c.add(a,b)};var d=new Mc;this.e=function(a,b){d.add(a,b)};var e=k,f=k,j=h;this.S=function(){e=h};this.i=function(a){this[ia]();this.set(lc,a,h);a=new Nc(this);e=k;d.execute(this);e=h;b={};this.n();a.Ca()};this.load=function(){e&&(e=k,this.Da(),Oc(this),f||(f=h,c.execute(this),Pc(this),Oc(this)),e=h)};this.n=function(){if(e)if(f)e=k,Pc(this),e=h;else this[ia]()};this.get=function(c){Ua[c]&&this[ia]();return b[c]!==g?b[c]:a[c]};this.set=
|
||||
function(c,d,e){Ua[c]&&this[ia]();e?b[c]=d:a[c]=d;Ua[c]&&this.n()};this.v=function(b){a[b]=this.b(b,0)+1};this.b=function(a,b){var c=this.get(a);return c==g||""===c?b:1*c};this.c=function(a,b){var c=this.get(a);return c==g?b:c+""};this.Da=function(){if(j){var b=this.c(Za,""),c=this.c(P,"/");Kc(b,c)||(a[O]=a[eb]&&""!=b?F(b):1,j=k)}}};Qc[w].stopPropagation=function(){throw"aborted";};
|
||||
var Nc=function(a){var b=this;this.q=0;var c=a.get(mc);this.Sa=function(){0<b.q&&c&&(b.q--,b.q||c())};this.Ca=function(){!b.q&&c&&ea(c,10)};a.set(nc,b,h)};function Rc(a,b){for(var b=b||[],c=0;c<b[v];c++){var d=b[c];if(""+a==d||0==d[p](a+"."))return d}return"-"}
|
||||
var Tc=function(a,b,c){c=c?"":a.c(O,"1");b=b[x](".");if(6!==b[v]||Sc(b[0],c))return k;var c=1*b[1],d=1*b[2],e=1*b[3],f=1*b[4],b=1*b[5];if(!(0<=c&&0<d&&0<e&&0<f&&0<=b))return H(110),k;a.set(R,c);a.set(Rb,d);a.set(Sb,e);a.set(Tb,f);a.set(Ub,b);return h},Uc=function(a){var b=a.get(R),c=a.get(Rb),d=a.get(Sb),e=a.get(Tb),f=a.b(Ub,1);b==g?H(113):NaN==b&&H(114);0<=b&&0<c&&0<d&&0<e&&0<=f||H(115);return[a.b(O,1),b!=g?b:"-",c||"-",d||"-",e||"-",f][B](".")},Vc=function(a){return[a.b(O,1),a.b(Xb,0),a.b(S,1),
|
||||
a.b(Yb,0)][B](".")},Wc=function(a,b,c){var c=c?"":a.c(O,"1"),d=b[x](".");if(4!==d[v]||Sc(d[0],c))d=i;a.set(Xb,d?1*d[1]:0);a.set(S,d?1*d[2]:10);a.set(Yb,d?1*d[3]:a.get(Ya));return d!=i||!Sc(b,c)},Xc=function(a,b){var c=G(a.c(Nb,"")),d=[],e=a.get(Q);if(!b&&e){for(var f=0;f<e[v];f++){var j=e[f];j&&1==j[ta]&&d[m](f+"="+G(j[q])+"="+G(j[la])+"=1")}0<d[v]&&(c+="|"+d[B]("^"))}return c?a.b(O,1)+"."+c:i},Yc=function(a,b,c){c=c?"":a.c(O,"1");b=b[x](".");if(2>b[v]||Sc(b[0],c))return k;b=b[ha](1)[B](".")[x]("|");
|
||||
0<b[v]&&a.set(Nb,I(b[0]));if(1>=b[v])return h;b=b[1][x](-1==b[1][p](",")?"^":",");for(c=0;c<b[v];c++){var d=b[c][x]("=");if(4==d[v]){var e={};ga(e,I(d[1]));e.value=I(d[2]);e.scope=1;a.get(Q)[d[0]]=e}}return h},$c=function(a,b){var c=Zc(a,b);return c?[a.b(O,1),a.b(Zb,0),a.b($b,1),a.b(ac,1),c][B]("."):""},Zc=function(a){function b(b,e){if(!E(a.get(b))){var f=a.c(b,""),f=f[x](" ")[B]("%20"),f=f[x]("+")[B]("%20");c[m](e+"="+f)}}var c=[];b(cc,"utmcid");b(gc,"utmcsr");b(ec,"utmgclid");b(fc,"utmdclid");
|
||||
b(dc,"utmccn");b(hc,"utmcmd");b(ic,"utmctr");b(jc,"utmcct");return c[B]("|")},bd=function(a,b,c){c=c?"":a.c(O,"1");b=b[x](".");if(5>b[v]||Sc(b[0],c))return a.set(Zb,g),a.set($b,g),a.set(ac,g),a.set(cc,g),a.set(dc,g),a.set(gc,g),a.set(hc,g),a.set(ic,g),a.set(jc,g),a.set(ec,g),a.set(fc,g),k;a.set(Zb,1*b[1]);a.set($b,1*b[2]);a.set(ac,1*b[3]);ad(a,b[ha](4)[B]("."));return h},ad=function(a,b){function c(a){return(a=b[ma](a+"=(.*?)(?:\\|utm|$)"))&&2==a[v]?a[1]:g}function d(b,c){c&&(c=e?I(c):c[x]("%20")[B](" "),
|
||||
a.set(b,c))}-1==b[p]("=")&&(b=I(b));var e="2"==c("utmcvr");d(cc,c("utmcid"));d(dc,c("utmccn"));d(gc,c("utmcsr"));d(hc,c("utmcmd"));d(ic,c("utmctr"));d(jc,c("utmcct"));d(ec,c("utmgclid"));d(fc,c("utmdclid"))},Sc=function(a,b){return b?a!=b:!/^\d+$/.test(a)};var Mc=function(){this.B=[]};Mc[w].add=function(a,b){this.B[m]({name:a,r:b})};Mc[w].execute=function(a){try{for(var b=0;b<this.B[v];b++)this.B[b].r.call(W,a)}catch(c){}};function cd(a){100!=a.get(rb)&&a.get(R)%1E4>=100*a.get(rb)&&a[ra]()}function dd(a){ed(a.get(N))&&a[ra]()}function fd(a){"file:"==J[y][z]&&a[ra]()}function gd(a){a.get(Cb)||a.set(Cb,J.title,h);a.get(Bb)||a.set(Bb,J[y].pathname+J[y][ua],h)};var hd=new function(){var a=[];this.set=function(b){a[b]=h};this.Va=function(){for(var b=[],c=0;c<a[v];c++)a[c]&&(b[l[ja](c/6)]=b[l[ja](c/6)]^1<<c%6);for(c=0;c<b[v];c++)b[c]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"[ka](b[c]||0);return b[B]("")+"~"}};function H(a){hd.set(a)};var W=window,J=document,ed=function(a){var b=W._gaUserPrefs;return b&&b.ioo&&b.ioo()||!!a&&W["ga-disable-"+a]===h},id=function(a,b){ea(a,b)},jd=function(a){for(var b=[],c=J.cookie[x](";"),a=RegExp("^\\s*"+a+"=\\s*(.*?)\\s*$"),d=0;d<c[v];d++){var e=c[d][ma](a);e&&b[m](e[1])}return b},X=function(a,b,c,d,e,f){e=ed(e)?k:Kc(d,c)?k:h;if(e){if(b&&0<=W[ya].userAgent[p]("Firefox"))for(var b=b[n](/\n|\r/g," "),e=0,j=b[v];e<j;++e){var o=b.charCodeAt(e)&255;if(10==o||13==o)b=b[A](0,e)+"?"+b[A](e+1)}b&&2E3<b[v]&&
|
||||
(b=b[A](0,2E3),H(69));a=a+"="+b+"; path="+c+"; ";f&&(a+="expires="+(new Date((new Date).getTime()+f)).toGMTString()+"; ");d&&(a+="domain="+d+";");J.cookie=a}};var kd,ld,md=function(){if(!kd){var a={},b=W[ya],c=W.screen;a.Q=c?c.width+"x"+c.height:"-";a.P=c?c.colorDepth+"-bit":"-";a.language=(b&&(b.language||b.browserLanguage)||"-")[C]();a.javaEnabled=b&&b.javaEnabled()?1:0;a.characterSet=J.characterSet||J.charset||"-";try{var d=J.documentElement,e=J.body,f=e&&e[qa]&&e[va],b=[];d&&(d[qa]&&d[va])&&("CSS1Compat"===J.compatMode||!f)?b=[d[qa],d[va]]:f&&(b=[e[qa],e[va]]);a.Ua=b[B]("x")}catch(j){H(135)}kd=a}},nd=function(){md();for(var a=kd,b=W[ya],a=b.appName+
|
||||
b.version+a.language+b.platform+b.userAgent+a.javaEnabled+a.Q+a.P+(J.cookie?J.cookie:"")+(J.referrer?J.referrer:""),b=a[v],c=W.history[v];0<c;)a+=c--^b++;return F(a)},od=function(a){md();var b=kd;a.set(Fb,b.Q);a.set(Gb,b.P);a.set(Jb,b.language);a.set(Kb,b.characterSet);a.set(Hb,b.javaEnabled);a.set(Lb,b.Ua);if(a.get(fb)&&a.get(gb)){if(!(b=ld)){var c,d,e;d="ShockwaveFlash";if((b=(b=W[ya])?b.plugins:g)&&0<b[v])for(c=0;c<b[v]&&!e;c++)d=b[c],-1<d[q][p]("Shockwave Flash")&&(e=d.description[x]("Shockwave Flash ")[1]);
|
||||
else{d=d+"."+d;try{c=new ActiveXObject(d+".7"),e=c.GetVariable("$version")}catch(f){}if(!e)try{c=new ActiveXObject(d+".6"),e="WIN 6,0,21,0",c.AllowScriptAccess="always",e=c.GetVariable("$version")}catch(j){}if(!e)try{c=new ActiveXObject(d),e=c.GetVariable("$version")}catch(o){}e&&(e=e[x](" ")[1][x](","),e=e[0]+"."+e[1]+" r"+e[2])}b=e?e:"-"}ld=b;a.set(Ib,ld)}else a.set(Ib,"-")};var pd=function(a){if(Aa(a))this.r=a;else{var b=a[0],c=b.lastIndexOf(":"),d=b.lastIndexOf(".");this.g=this.h=this.l="";-1==c&&-1==d?this.g=b:-1==c&&-1!=d?(this.h=b[A](0,d),this.g=b[A](d+1)):-1!=c&&-1==d?(this.l=b[A](0,c),this.g=b[A](c+1)):c>d?(this.h=b[A](0,d),this.l=b[A](d+1,c),this.g=b[A](c+1)):(this.h=b[A](0,d),this.g=b[A](d+1));this.k=a[ha](1);this.Fa=!this.l&&"_require"==this.g;this.H=!this.h&&!this.l&&"_provide"==this.g}},Y=function(){T(Y[w],"push",Y[w][m],5);T(Y[w],"_getPlugin",Hc,121);T(Y[w],
|
||||
"_createAsyncTracker",Y[w].Qa,33);T(Y[w],"_getAsyncTracker",Y[w].Ra,34);this.G=new Ja;this.p=[]};D=Y[w];D.Ha=function(a,b,c){var d=this.G.get(a);if(!Aa(d))return k;b.plugins_=b.plugins_||new Ja;b.plugins_.set(a,new d(b,c||{}));return h};D.push=function(a){var b=Z.Ta[xa](this,arguments),b=Z.p.concat(b);for(Z.p=[];0<b[v]&&!Z.O(b[0])&&!(b.shift(),0<Z.p[v]););Z.p=Z.p.concat(b);return 0};D.Ta=function(a){for(var b=[],c=0;c<arguments[v];c++)try{var d=new pd(arguments[c]);d.H?this.O(d):b[m](d)}catch(e){}return b};
|
||||
D.O=function(a){try{if(a.r)a.r[xa](W);else if(a.H)this.G.set(a.k[0],a.k[1]);else{var b="_gat"==a.h?L:"_gaq"==a.h?Z:L.w(a.h);if(a.Fa){if(!this.Ha(a.k[0],b,a.k[2])){if(!a.Ja){var c=Na(""+a.k[1]);var d=c[z],e=J[y][z];var f;if(f="https:"==d||d==e?h:"http:"!=d?k:"http:"==e){var j;a:{var o=Na(J[y][wa]);if(!(c.Ia||0<=c.url[p]("?")||0<=c[pa][p]("://")||c[t]==o[t]&&c[na]==o[na]))for(var r="http:"==c[z]?80:443,s=L.Ea,b=0;b<s[v];b++)if(c[t]==s[b][0]&&(c[na]||r)==(s[b][1]||r)&&0==c[pa][p](s[b][2])){j=h;break a}j=
|
||||
k}f=j&&!ed()}f&&(a.Ja=Ha(c.url))}return h}}else a.l&&(b=b.plugins_.get(a.l)),b[a.g][xa](b,a.k)}}catch(Qa){}};D.Qa=function(a,b){return L.s(a,b||"")};D.Ra=function(a){return L.w(a)};var td=function(){function a(a,b,c,d){g==f[a]&&(f[a]={});g==f[a][b]&&(f[a][b]=[]);f[a][b][c]=d}function b(a,b,c){if(g!=f[a]&&g!=f[a][b])return f[a][b][c]}function c(a,b){if(g!=f[a]&&g!=f[a][b]){f[a][b]=g;var c=h,d;for(d=0;d<j[v];d++)if(g!=f[a][j[d]]){c=k;break}c&&(f[a]=g)}}function d(a){var b="",c=k,d,e;for(d=0;d<j[v];d++)if(e=a[j[d]],g!=e){c&&(b+=j[d]);for(var c=[],f=g,da=g,da=0;da<e[v];da++)if(g!=e[da]){f="";da!=Ob&&g==e[da-1]&&(f+=da[u]()+Qa);for(var sd=e[da],zc="",Pb=g,Ac=g,Bc=g,Pb=0;Pb<sd[v];Pb++)Ac=
|
||||
sd[ka](Pb),Bc=sa[Ac],zc+=g!=Bc?Bc:Ac;f+=zc;c[m](f)}b+=o+c[B](s)+r;c=k}else c=h;return b}var e=this,f=[],j=["k","v"],o="(",r=")",s="*",Qa="!",sa={"'":"'0"};sa[r]="'1";sa[s]="'2";sa[Qa]="'3";var Ob=1;e.La=function(a){return g!=f[a]};e.z=function(){for(var a="",b=0;b<f[v];b++)g!=f[b]&&(a+=b[u]()+d(f[b]));return a};e.Ka=function(a){if(a==g)return e.z();for(var b=a.z(),c=0;c<f[v];c++)g!=f[c]&&!a.La(c)&&(b+=c[u]()+d(f[c]));return b};e.f=function(b,c,d){if(!qd(d))return k;a(b,"k",c,d);return h};e.o=function(b,
|
||||
c,d){if(!rd(d))return k;a(b,"v",c,d[u]());return h};e.getKey=function(a,c){return b(a,"k",c)};e.L=function(a,c){return b(a,"v",c)};e.J=function(a){c(a,"k")};e.K=function(a){c(a,"v")};T(e,"_setKey",e.f,89);T(e,"_setValue",e.o,90);T(e,"_getKey",e.getKey,87);T(e,"_getValue",e.L,88);T(e,"_clearKey",e.J,85);T(e,"_clearValue",e.K,86)};function qd(a){return"string"==typeof a}function rd(a){return"number"!=typeof a&&(g==Number||!(a instanceof Number))||l.round(a)!=a||NaN==a||a==ba?k:h};var ud=function(a){var b=W.gaGlobal;a&&!b&&(W.gaGlobal=b={});return b},vd=function(){var a=ud(h).hid;a==i&&(a=Da(),ud(h).hid=a);return a},wd=function(a){a.set(Eb,vd());var b=ud();if(b&&b.dh==a.get(O)){var c=b.sid;c&&("0"==c&&H(112),a.set(Tb,c),a.get(Mb)&&a.set(Sb,c));b=b.vid;a.get(Mb)&&b&&(b=b[x]("."),1*b[1]||H(112),a.set(R,1*b[0]),a.set(Rb,1*b[1]))}};var xd,yd=function(a,b,c){var d=a.c(Za,""),e=a.c(P,"/"),f=a.b($a,0),a=a.c(N,"");X(b,c,e,d,a,f)},Pc=function(a){var b=a.c(Za,"");a.b(O,1);var c=a.c(P,"/"),d=a.c(N,"");X("__utma",Uc(a),c,b,d,a.get($a));X("__utmb",Vc(a),c,b,d,a.get(ab));X("__utmc",""+a.b(O,1),c,b,d);var e=$c(a,h);e?X("__utmz",e,c,b,d,a.get(bb)):X("__utmz","",c,b,"",-1);(e=Xc(a,k))?X("__utmv",e,c,b,d,a.get($a)):X("__utmv","",c,b,"",-1)},Oc=function(a){var b=a.b(O,1);if(!Tc(a,Rc(b,jd("__utma"))))return a.set(Qb,h),k;var c=!Wc(a,Rc(b,jd("__utmb")));
|
||||
a.set(Wb,c);bd(a,Rc(b,jd("__utmz")));Yc(a,Rc(b,jd("__utmv")));xd=!c;return h},zd=function(a){!xd&&!(0<jd("__utmb")[v])&&(X("__utmd","1",a.c(P,"/"),a.c(Za,""),a.c(N,""),1E4),0==jd("__utmd")[v]&&a[ra]())};var Cd=function(a){a.get(R)==g?Ad(a):a.get(Qb)&&!a.get(Dc)?Ad(a):a.get(Wb)&&Bd(a)},Dd=function(a){a.get(bc)&&!a.get(Vb)&&(Bd(a),a.set($b,a.get(Ub)))},Ad=function(a){var b=a.get(Ya);a.set(Mb,h);a.set(R,Da()^nd(a)&2147483647);a.set(Nb,"");a.set(Rb,b);a.set(Sb,b);a.set(Tb,b);a.set(Ub,1);a.set(Vb,h);a.set(Xb,0);a.set(S,10);a.set(Yb,b);a.set(Q,[]);a.set(Qb,k);a.set(Wb,k)},Bd=function(a){a.set(Sb,a.get(Tb));a.set(Tb,a.get(Ya));a.v(Ub);a.set(Vb,h);a.set(Xb,0);a.set(S,10);a.set(Yb,a.get(Ya));a.set(Wb,k)};var Ed="daum:q,eniro:search_word,naver:query,pchome:q,images.google:q,google:q,yahoo:p,yahoo:q,msn:q,bing:q,aol:query,aol:q,lycos:q,lycos:query,ask:q,netscape:query,cnn:query,about:terms,mamma:q,voila:rdata,virgilio:qs,live:q,baidu:wd,alice:qs,yandex:text,najdi:q,seznam:q,rakuten:qt,biglobe:q,goo.ne:MT,wp:szukaj,onet:qt,yam:k,kvasir:q,ozu:q,terra:query,rambler:query,conduit:q,babylon:q,search-results:q,avg:q,comcast:q,incredimail:q,startsiden:q".split(","),Kd=function(a){if(a.get(hb)&&!a.get(Dc)){for(var b=
|
||||
!E(a.get(cc))||!E(a.get(gc))||!E(a.get(ec))||!E(a.get(fc)),c={},d=0;d<Fd[v];d++){var e=Fd[d];c[e]=a.get(e)}(d=a.get(kc))?(H(149),e=new Ja,Ma(e,d),d=e):d=La(J[y][wa],a.get(db)).d;if(!("1"==Ia(d.get(a.get(qb)))&&b)&&(d=Gd(a,d)||Hd(a),!d&&(!b&&a.get(Vb))&&(Id(a,g,"(direct)",g,g,"(direct)","(none)",g,g),d=h),d))if(a.set(bc,Jd(a,c)),b="(direct)"==a.get(gc)&&"(direct)"==a.get(dc)&&"(none)"==a.get(hc),a.get(bc)||a.get(Vb)&&!b)a.set(Zb,a.get(Ya)),a.set($b,a.get(Ub)),a.v(ac)}},Gd=function(a,b){function c(c,
|
||||
d){var d=d||"-",e=Ia(b.get(a.get(c)));return e&&"-"!=e?I(e):d}var d=Ia(b.get(a.get(jb)))||"-",e=Ia(b.get(a.get(mb)))||"-",f=Ia(b.get(a.get(lb)))||"-",j=Ia(b.get("dclid"))||"-",o=c(kb,"(not set)"),r=c(nb,"(not set)"),s=c(ob),Qa=c(pb);if(E(d)&&E(f)&&E(j)&&E(e))return k;var sa=!E(j)&&E(e),Ob=E(s);if(sa||Ob){var ca=Ld(a),ca=La(ca,h);if((ca=Md(a,ca))&&!E(ca[1]&&!ca[2]))sa&&(e=ca[0]),Ob&&(s=ca[1])}Id(a,d,e,f,j,o,r,s,Qa);return h},Hd=function(a){var b=Ld(a),c=La(b,h);if(!(b!=g&&b!=i&&""!=b&&"0"!=b&&"-"!=
|
||||
b&&0<=b[p]("://"))||c&&-1<c[t][p]("google")&&c.d.contains("q")&&"cse"==c[pa])return k;if((b=Md(a,c))&&!b[2])return Id(a,g,b[0],g,g,"(organic)","organic",b[1],g),h;if(b||!a.get(Vb))return k;a:{for(var b=a.get(xb),d=Ka(c[t]),e=0;e<b[v];++e)if(-1<d[p](b[e])){a=k;break a}Id(a,g,d,g,g,"(referral)","referral",g,"/"+c[pa]);a=h}return a},Md=function(a,b){for(var c=a.get(vb),d=0;d<c[v];++d){var e=c[d][x](":");if(-1<b[t][p](e[0][C]())){var f=b.d.get(e[1]);if(f&&(f=K(f),!f&&-1<b[t][p]("google.")&&(f="(not provided)"),
|
||||
!e[3]||-1<b.url[p](e[3]))){a:{for(var c=f,d=a.get(wb),c=I(c)[C](),j=0;j<d[v];++j)if(c==d[j]){c=h;break a}c=k}return[e[2]||e[0],f,c]}}}return i},Id=function(a,b,c,d,e,f,j,o,r){a.set(cc,b);a.set(gc,c);a.set(ec,d);a.set(fc,e);a.set(dc,f);a.set(hc,j);a.set(ic,o);a.set(jc,r)},Fd=[dc,cc,ec,fc,gc,hc,ic,jc],Jd=function(a,b){function c(a){a=(""+a)[x]("+")[B]("%20");return a=a[x](" ")[B]("%20")}function d(c){var d=""+(a.get(c)||""),c=""+(b[c]||"");return 0<d[v]&&d==c}if(d(ec)||d(fc))return H(131),k;for(var e=
|
||||
0;e<Fd[v];e++){var f=Fd[e],j=b[f]||"-",f=a.get(f)||"-";if(c(j)!=c(f))return h}return k},Nd=RegExp(/^https:\/\/(www\.)?google(\.com?)?(\.[a-z]{2}t?)?\/?$/i),Ld=function(a){a=Oa(a.get(Db),a.get(P));try{if(Nd.test(a))return H(136),a+"?q="}catch(b){H(145)}return a};var Pd=function(a){Od(a,J[y][wa])?(a.set(Dc,h),H(12)):a.set(Dc,k)},Od=function(a,b){if(!a.get(cb))return k;var c=La(b,a.get(db)),d=K(c.d.get("__utma")),e=K(c.d.get("__utmb")),f=K(c.d.get("__utmc")),j=K(c.d.get("__utmx")),o=K(c.d.get("__utmz")),r=K(c.d.get("__utmv")),c=K(c.d.get("__utmk"));if(F(""+d+e+f+j+o+r)!=c){d=I(d);e=I(e);f=I(f);j=I(j);f=Qd(d+e+f+j,o,r,c);if(!f)return k;o=f[0];r=f[1]}if(!Tc(a,d,h))return k;Wc(a,e,h);bd(a,o,h);Yc(a,r,h);Rd(a,j,h);return h},Td=function(a,b,c){var d;d=Uc(a)||"-";
|
||||
var e=Vc(a)||"-",f=""+a.b(O,1)||"-",j=Sd(a)||"-",o=$c(a,k)||"-",a=Xc(a,k)||"-",r=F(""+d+e+f+j+o+a),s=[];s[m]("__utma="+d);s[m]("__utmb="+e);s[m]("__utmc="+f);s[m]("__utmx="+j);s[m]("__utmz="+o);s[m]("__utmv="+a);s[m]("__utmk="+r);d=s[B]("&");if(!d)return b;e=b[p]("#");if(c)return 0>e?b+"#"+d:b+"&"+d;c="";f=b[p]("?");0<e&&(c=b[A](e),b=b[A](0,e));return 0>f?b+"?"+d+c:b+"&"+d+c},Qd=function(a,b,c,d){for(var e=0;3>e;e++){for(var f=0;3>f;f++){if(d==F(a+b+c))return H(127),[b,c];var j=b[n](/ /g,"%20"),o=
|
||||
c[n](/ /g,"%20");if(d==F(a+j+o))return H(128),[j,o];j=j[n](/\+/g,"%20");o=o[n](/\+/g,"%20");if(d==F(a+j+o))return H(129),[j,o];try{var r=b[ma]("utmctr=(.*?)(?:\\|utm|$)");if(r&&2==r[v]&&(j=b[n](r[1],G(I(r[1]))),d==F(a+j+c)))return H(139),[j,c]}catch(s){}b=I(b)}c=I(c)}};var Ud="|",Wd=function(a,b,c,d,e,f,j,o,r){var s=Vd(a,b);s||(s={},a.get(yb)[m](s));s.id_=b;s.affiliation_=c;s.total_=d;s.tax_=e;s.shipping_=f;s.city_=j;s.state_=o;s.country_=r;s.items_=s.items_||[];return s},Xd=function(a,b,c,d,e,f,j){var a=Vd(a,b)||Wd(a,b,"",0,0,0,"","",""),o;a:{if(a&&a.items_){o=a.items_;for(var r=0;r<o[v];r++)if(o[r].sku_==c){o=o[r];break a}}o=i}r=o||{};r.transId_=b;r.sku_=c;r.name_=d;r.category_=e;r.price_=f;r.quantity_=j;o||a.items_[m](r);return r},Vd=function(a,b){for(var c=
|
||||
a.get(yb),d=0;d<c[v];d++)if(c[d].id_==b)return c[d];return i};var Yd,Zd=function(a){if(!Yd){var b;b=J[y].hash;var c=W[q],d=/^#?gaso=([^&]*)/;if(c=(b=(b=b&&b[ma](d)||c&&c[ma](d))?b[1]:K(jd("GASO")))&&b[ma](/^(?:[|!]([-0-9a-z.]{1,40})[|!])?([-.\w]{10,1200})$/i))yd(a,"GASO",""+b),L._gasoDomain=a.get(Za),L._gasoCPath=a.get(P),a=c[1],Ha("https://www.google.com/analytics/web/inpage/pub/inpage.js?"+(a?"prefix="+a+"&":"")+Da(),"_gasojs");Yd=h}};var Rd=function(a,b,c){c&&(b=I(b));c=a.b(O,1);b=b[x](".");!(2>b[v])&&/^\d+$/.test(b[0])&&(b[0]=""+c,yd(a,"__utmx",b[B](".")))},Sd=function(a,b){var c=Rc(a.get(O),jd("__utmx"));"-"==c&&(c="");return b?G(c):c},$d=function(a){try{var b=La(J[y][wa],k),c=fa(Ia(b.d.get("utm_referrer")))||"";c&&a.set(Db,c);var d=fa(K(b.d.get("utm_expid")));d&&a.set(Fc,d)}catch(e){H(146)}};var ee=function(a,b){var c=l.min(a.b(wc,0),100);if(a.b(R,0)%100>=c)return k;c=ae()||be();if(c==g)return k;var d=c[0];if(d==g||d==ba||isNaN(d))return k;0<d?ce(c)?b(de(c)):b(de(c[ha](0,1))):Fa(W,"load",function(){ee(a,b)},k);return h},ge=function(a,b,c,d){var e=new td;e.f(14,90,b[A](0,64));e.f(14,91,a[A](0,64));e.f(14,92,""+fe(c));d!=g&&e.f(14,93,d[A](0,64));e.o(14,90,c);return e},ce=function(a){for(var b=1;b<a[v];b++)if(isNaN(a[b])||a[b]==ba||0>a[b])return k;return h},fe=function(a){return isNaN(a)||
|
||||
0>a?0:5E3>a?10*l[ja](a/10):5E4>a?100*l[ja](a/100):41E5>a?1E3*l[ja](a/1E3):41E5},de=function(a){for(var b=new td,c=0;c<a[v];c++)b.f(14,c+1,""+fe(a[c])),b.o(14,c+1,a[c]);return b},ae=function(){var a=W.performance||W.webkitPerformance;if(a=a&&a.timing){var b=a.navigationStart;if(0==b)H(133);else return[a.loadEventStart-b,a.domainLookupEnd-a.domainLookupStart,a.connectEnd-a.connectStart,a.responseStart-a.requestStart,a.responseEnd-a.responseStart,a.fetchStart-b]}},be=function(){if(W.top==W){var a=W.external,
|
||||
b=a&&a.onloadT;a&&!a.isValidLoadTime&&(b=g);2147483648<b&&(b=g);0<b&&a.setPageReadyTime();return b==g?g:[b]}};var U=function(a,b,c){function d(a){return function(b){if((b=b.get(Ec)[a])&&b[v])for(var c=Jc(e,a),d=0;d<b[v];d++)b[d].call(e,c)}}var e=this;this.a=new Qc;this.get=function(a){return this.a.get(a)};this.set=function(a,b,c){this.a.set(a,b,c)};this.set(N,b||"UA-XXXXX-X");this.set(Xa,a||"");this.set(Wa,c||"");this.set(Ya,l.round((new Date).getTime()/1E3));this.set(P,"/");this.set($a,63072E6);this.set(bb,15768E6);this.set(ab,18E5);this.set(cb,k);this.set(ub,50);this.set(db,k);this.set(eb,h);this.set(fb,
|
||||
h);this.set(gb,h);this.set(hb,h);this.set(ib,h);this.set(kb,"utm_campaign");this.set(jb,"utm_id");this.set(lb,"gclid");this.set(mb,"utm_source");this.set(nb,"utm_medium");this.set(ob,"utm_term");this.set(pb,"utm_content");this.set(qb,"utm_nooverride");this.set(rb,100);this.set(wc,1);this.set(xc,k);this.set(sb,"/__utm.gif");this.set(tb,1);this.set(yb,[]);this.set(Q,[]);this.set(vb,Ed[ha](0));this.set(wb,[]);this.set(xb,[]);this.C("auto");this.set(Db,J.referrer);$d(this.a);this.set(Ec,{hit:[],load:[]});
|
||||
this.a.j("0",Pd);this.a.j("1",Cd);this.a.j("2",Kd);this.a.j("3",Dd);this.a.j("4",d("load"));this.a.j("5",Zd);this.a.e("A",dd);this.a.e("B",fd);this.a.e("C",Cd);this.a.e("D",cd);this.a.e("E",Lc);this.a.e("F",he);this.a.e("G",zd);this.a.e("H",gd);this.a.e("I",od);this.a.e("J",wd);this.a.e("K",d("hit"));this.a.e("L",ie);this.a.e("M",je);0===this.get(Ya)&&H(111);this.a.S();this.F=g};D=U[w];D.m=function(){var a=this.get(zb);a||(a=new td,this.set(zb,a));return a};
|
||||
D.Ga=function(a){for(var b in a){var c=a[b];a.hasOwnProperty(b)&&this.set(b,c,h)}};D.I=function(a){if(this.get(xc))return k;var b=this,c=ee(this.a,function(c){b.set(Bb,a,h);b.t(c)});this.set(xc,c);return c};D.ya=function(a){a&&Ba(a)?(H(13),this.set(Bb,a,h)):"object"===typeof a&&a!==i&&this.Ga(a);this.F=a=this.get(Bb);this.a.i("page");this.I(a)};
|
||||
D.D=function(a,b,c,d,e){if(""==a||(!qd(a)||""==b||!qd(b))||c!=g&&!qd(c)||d!=g&&!rd(d))return k;this.set(pc,a,h);this.set(qc,b,h);this.set(rc,c,h);this.set(sc,d,h);this.set(oc,!!e,h);this.a.i("event");return h};D.Aa=function(a,b,c,d,e){var f=this.a.b(wc,0);1*e===e&&(f=e);if(this.a.b(R,0)%100>=f)return k;c=1*(""+c);if(""==a||(!qd(a)||""==b||!qd(b)||!rd(c)||isNaN(c)||0>c||0>f||100<f)||d!=g&&(""==d||!qd(d)))return k;this.t(ge(a,b,c,d));return h};
|
||||
D.za=function(a,b,c,d){if(!a||!b)return k;this.set(tc,a,h);this.set(uc,b,h);this.set(vc,c||J[y][wa],h);d&&this.set(Bb,d,h);this.a.i("social");return h};D.xa=function(){this.set(wc,10);this.I(this.F)};D.Ba=function(){this.a.i("trans")};D.t=function(a){this.set(Ab,a,h);this.a.i("event")};D.ea=function(a){this.u();var b=this;return{_trackEvent:function(c,d,e){H(91);b.D(a,c,d,e)}}};D.ha=function(a){return this.get(a)};
|
||||
D.qa=function(a,b){if(a)if(Ba(a))this.set(a,b);else if("object"==typeof a)for(var c in a)a.hasOwnProperty(c)&&this.set(c,a[c])};D.addEventListener=function(a,b){var c=this.get(Ec)[a];c&&c[m](b)};D.removeEventListener=function(a,b){for(var c=this.get(Ec)[a],d=0;c&&d<c[v];d++)if(c[d]==b){c.splice(d,1);break}};D.ja=function(){return"5.2.9"};D.C=function(a){this.get(eb);a="auto"==a?Ka(J.domain):!a||"-"==a||"none"==a?"":a[C]();this.set(Za,a)};D.oa=function(a){this.set(eb,!!a)};
|
||||
D.ia=function(a,b){return Td(this.a,a,b)};D.link=function(a,b){if(this.a.get(cb)&&a){var c=Td(this.a,a,b);J[y].href=c}};D.na=function(a,b){this.a.get(cb)&&(a&&a.action)&&(a.action=Td(this.a,a.action,b))};
|
||||
D.sa=function(){this.u();var a=this.a,b=J.getElementById?J.getElementById("utmtrans"):J.utmform&&J.utmform.utmtrans?J.utmform.utmtrans:i;if(b&&b[la]){a.set(yb,[]);for(var b=b[la][x]("UTM:"),c=0;c<b[v];c++){b[c]=Ca(b[c]);for(var d=b[c][x](Ud),e=0;e<d[v];e++)d[e]=Ca(d[e]);"T"==d[0]?Wd(a,d[1],d[2],d[3],d[4],d[5],d[6],d[7],d[8]):"I"==d[0]&&Xd(a,d[1],d[2],d[3],d[4],d[5],d[6])}}};D.Y=function(a,b,c,d,e,f,j,o){return Wd(this.a,a,b,c,d,e,f,j,o)};D.W=function(a,b,c,d,e,f){return Xd(this.a,a,b,c,d,e,f)};
|
||||
D.ta=function(a){Ud=a||"|"};D.pa=function(a,b,c,d){var e=this.a;if(0>=a||a>e.get(ub))a=k;else if(!b||!c||128<b[v]+c[v])a=k;else{1!=d&&2!=d&&(d=3);var f={};ga(f,b);f.value=c;f.scope=d;e.get(Q)[a]=f;a=h}a&&this.a.n();return a};D.ga=function(a){this.a.get(Q)[a]=g;this.a.n()};D.ka=function(a){return(a=this.a.get(Q)[a])&&1==a[ta]?a[la]:g};D.va=function(a,b,c){this.m().f(a,b,c)};D.wa=function(a,b,c){this.m().o(a,b,c)};D.la=function(a,b){return this.m().getKey(a,b)};
|
||||
D.ma=function(a,b){return this.m().L(a,b)};D.ba=function(a){this.m().J(a)};D.ca=function(a){this.m().K(a)};D.fa=function(){return new td};D.U=function(a){a&&this.get(wb)[m](a[C]())};D.Z=function(){this.set(wb,[])};D.V=function(a){a&&this.get(xb)[m](a[C]())};D.$=function(){this.set(xb,[])};D.X=function(a,b,c,d,e){if(a&&b){a=[a,b[C]()][B](":");if(d||e)a=[a,d,e][B](":");d=this.get(vb);d.splice(c?0:d[v],0,a)}};D.aa=function(){this.set(vb,[])};
|
||||
D.da=function(a){this.a[ia]();var b=this.get(P),c=Sd(this.a);this.set(P,a);this.a.n();Rd(this.a,c);this.set(P,b)};D.ra=function(a,b){if(0<a&&5>=a&&Ba(b)&&""!=b){var c=this.get(yc)||[];c[a]=b;this.set(yc,c)}};D.T=function(a){a=""+a;if(a[ma](/^[A-Za-z0-9]{1,5}$/)){var b=this.get(Cc)||[];b[m](a);this.set(Cc,b)}};D.u=function(){this.a[ia]()};D.ua=function(a){a&&""!=a&&(this.set(Nb,a),this.a.i("var"))};var he=function(a){"trans"!==a.get(lc)&&500<=a.b(Xb,0)&&a[ra]();if("event"===a.get(lc)){var b=(new Date).getTime(),c=a.b(Yb,0),d=a.b(Tb,0),c=l[ja](1*((b-(c!=d?c:1E3*c))/1E3));0<c&&(a.set(Yb,b),a.set(S,l.min(10,a.b(S,0)+c)));0>=a.b(S,0)&&a[ra]()}},je=function(a){"event"===a.get(lc)&&a.set(S,l.max(0,a.b(S,10)-1))};var ke=function(){var a=[];this.add=function(b,c,d){d&&(c=G(""+c));a[m](b+"="+c)};this.toString=function(){return a[B]("&")}},le=function(a,b){(b||2!=a.get(tb))&&a.v(Xb)},me=function(a,b){b.add("utmwv","5.2.9");b.add("utms",a.get(Xb));b.add("utmn",Da());var c=J[y].hostname;E(c)||b.add("utmhn",c,h);c=a.get(rb);100!=c&&b.add("utmsp",c,h)},oe=function(a,b){b.add("utmac",Ca(a.get(N)));a.get(Fc)&&b.add("utmxkey",a.get(Fc),h);a.get(oc)&&b.add("utmni",1);var c=a.get(Cc);c&&0<c[v]&&b.add("utmdid",c[B]("."));
|
||||
ne(a,b);L.A&&b.add("aip",1);b.add("utmu",hd.Va())},pe=function(a,b){for(var c=a.get(yc)||[],d=[],e=1;e<c[v];e++)c[e]&&d[m](e+":"+G(c[e][n](/%/g,"%25")[n](/:/g,"%3A")[n](/,/g,"%2C")));d[v]&&b.add("utmpg",d[B](","))},ne=function(a,b){function c(a,b){b&&d[m](a+"="+b+";")}var d=[];c("__utma",Uc(a));c("__utmz",$c(a,k));c("__utmv",Xc(a,h));c("__utmx",Sd(a));b.add("utmcc",d[B]("+"),h)},qe=function(a,b){a.get(fb)&&(b.add("utmcs",a.get(Kb),h),b.add("utmsr",a.get(Fb)),a.get(Lb)&&b.add("utmvp",a.get(Lb)),b.add("utmsc",
|
||||
a.get(Gb)),b.add("utmul",a.get(Jb)),b.add("utmje",a.get(Hb)),b.add("utmfl",a.get(Ib),h))},re=function(a,b){a.get(ib)&&a.get(Cb)&&b.add("utmdt",a.get(Cb),h);b.add("utmhid",a.get(Eb));b.add("utmr",Oa(a.get(Db),a.get(P)),h);b.add("utmp",G(a.get(Bb),h),h)},se=function(a,b){for(var c=a.get(zb),d=a.get(Ab),e=a.get(Q)||[],f=0;f<e[v];f++){var j=e[f];j&&(c||(c=new td),c.f(8,f,j[q]),c.f(9,f,j[la]),3!=j[ta]&&c.f(11,f,""+j[ta]))}!E(a.get(pc))&&!E(a.get(qc),h)&&(c||(c=new td),c.f(5,1,a.get(pc)),c.f(5,2,a.get(qc)),
|
||||
e=a.get(rc),e!=g&&c.f(5,3,e),e=a.get(sc),e!=g&&c.o(5,1,e));c?b.add("utme",c.Ka(d),h):d&&b.add("utme",d.z(),h)},te=function(a,b,c){var d=new ke;le(a,c);me(a,d);d.add("utmt","tran");d.add("utmtid",b.id_,h);d.add("utmtst",b.affiliation_,h);d.add("utmtto",b.total_,h);d.add("utmttx",b.tax_,h);d.add("utmtsp",b.shipping_,h);d.add("utmtci",b.city_,h);d.add("utmtrg",b.state_,h);d.add("utmtco",b.country_,h);c||(pe(a,d),oe(a,d));return d[u]()},ue=function(a,b,c){var d=new ke;le(a,c);me(a,d);d.add("utmt","item");
|
||||
d.add("utmtid",b.transId_,h);d.add("utmipc",b.sku_,h);d.add("utmipn",b.name_,h);d.add("utmiva",b.category_,h);d.add("utmipr",b.price_,h);d.add("utmiqt",b.quantity_,h);c||(pe(a,d),oe(a,d));return d[u]()},ve=function(a,b){var c=a.get(lc);if("page"==c)c=new ke,le(a,b),me(a,c),se(a,c),qe(a,c),re(a,c),b||(pe(a,c),oe(a,c)),c=[c[u]()];else if("event"==c)c=new ke,le(a,b),me(a,c),c.add("utmt","event"),se(a,c),qe(a,c),re(a,c),b||(pe(a,c),oe(a,c)),c=[c[u]()];else if("var"==c)c=new ke,le(a,b),me(a,c),c.add("utmt",
|
||||
"var"),!b&&oe(a,c),c=[c[u]()];else if("trans"==c)for(var c=[],d=a.get(yb),e=0;e<d[v];++e){c[m](te(a,d[e],b));for(var f=d[e].items_,j=0;j<f[v];++j)c[m](ue(a,f[j],b))}else"social"==c?b?c=[]:(c=new ke,le(a,b),me(a,c),c.add("utmt","social"),c.add("utmsn",a.get(tc),h),c.add("utmsa",a.get(uc),h),c.add("utmsid",a.get(vc),h),se(a,c),qe(a,c),re(a,c),pe(a,c),oe(a,c),c=[c[u]()]):c=[];return c},ie=function(a){var b,c=a.get(tb),d=a.get(nc),e=d&&d.Sa,f=0;if(0==c||2==c){var j=a.get(sb)+"?";b=ve(a,h);for(var o=0,
|
||||
r=b[v];o<r;o++)Sa(b[o],e,j,h),f++}if(1==c||2==c){b=ve(a);o=0;for(r=b[v];o<r;o++)try{Sa(b[o],e),f++}catch(s){s&&Ra(s[q],g,s.message)}}d&&(d.q=f)};var we="https:"==J[y][z]?"https://ssl.google-analytics.com":"http://www.google-analytics.com",xe=function(a){ga(this,"len");this.message=a+"-8192"},ye=function(a){ga(this,"ff2post");this.message=a+"-2036"},Sa=function(a,b,c,d){b=b||Ea;if(d||2036>=a[v])ze(a,b,c);else if(8192>=a[v]){if(0<=W[ya].userAgent[p]("Firefox")&&![].reduce)throw new ye(a[v]);Ae(a,b)||Be(a,b)}else throw new xe(a[v]);},ze=function(a,b,c){var c=c||we+"/__utm.gif?",d=new Image(1,1);d.src=c+a;d.onload=function(){d.onload=i;d.onerror=
|
||||
i;b()};d.onerror=function(){d.onload=i;d.onerror=i;b()}},Ae=function(a,b){var c,d=we+"/p/__utm.gif",e=W.XDomainRequest;if(e)c=new e,c.open("POST",d);else if(e=W.XMLHttpRequest)e=new e,"withCredentials"in e&&(c=e,c.open("POST",d,h),c.setRequestHeader("Content-Type","text/plain"));if(c)return c.onreadystatechange=function(){4==c.readyState&&(b(),c=i)},c.send(a),h},Be=function(a,b){if(J.body){a=aa(a);try{var c=J[oa]('<iframe name="'+a+'"></iframe>')}catch(d){c=J[oa]("iframe"),ga(c,a)}c.height="0";c.width=
|
||||
"0";c.style.display="none";c.style.visibility="hidden";var e=J[y],e=we+"/u/post_iframe.html#"+aa(e[z]+"//"+e[t]+"/favicon.ico"),f=function(){c.src="";c.parentNode&&c.parentNode.removeChild(c)};Fa(W,"beforeunload",f);var j=k,o=0,r=function(){if(!j){try{if(9<o||c.contentWindow[y][t]==J[y][t]){j=h;f();Ga(W,"beforeunload",f);b();return}}catch(a){}o++;ea(r,200)}};Fa(c,"load",r);J.body.appendChild(c);c.src=e}else id(function(){Be(a,b)},100)};var $=function(){this.A=k;this.M={};this.N=[];this.Ma=0;this.Ea=[["www.google-analytics.com","","/plugins/"]];this._gasoCPath=this._gasoDomain=g;T($[w],"_createTracker",$[w].s,55);T($[w],"_getTracker",$[w].Oa,0);T($[w],"_getTrackerByName",$[w].w,51);T($[w],"_getTrackers",$[w].Pa,130);T($[w],"_anonymizeIp",$[w].Na,16);T($[w],"_getPlugin",Hc,120);Ic()};D=$[w];D.Oa=function(a,b){return this.s(a,g,b)};D.s=function(a,b,c){b&&H(23);c&&H(67);b==g&&(b="~"+L.Ma++);a=new U(b,a,c);L.M[b]=a;L.N[m](a);return a};
|
||||
D.w=function(a){a=a||"";return L.M[a]||L.s(g,a)};D.Pa=function(){return L.N[ha](0)};D.Na=function(){this.A=h};var Ce=function(a){if("prerender"==J.webkitVisibilityState)return k;a();return h};var L=new $;var De=W._gat;De&&Aa(De._getTracker)?L=De:W._gat=L;var Z=new Y;(function(a){if(!Ce(a)){H(123);var b=k,c=function(){!b&&Ce(a)&&(b=h,Ga(J,"webkitvisibilitychange",c))};Fa(J,"webkitvisibilitychange",c)}})(function(){var a=W._gaq,b=k;if(a&&Aa(a[m])&&(b="[object Array]"==Object[w][u].call(Object(a)),!b)){Z=a;return}W._gaq=Z;b&&Z[m][xa](Z,a)});})();
|
||||
@@ -0,0 +1,50 @@
|
||||
'use strict';window.PR_SHOULD_USE_CONTINUATION=!0;window.PR_TAB_WIDTH=8;window.PR_normalizedHtml=window.PR=window.prettyPrintOne=window.prettyPrint=void 0;window._pr_isIE6=function(){var y=navigator&&navigator.userAgent&&navigator.userAgent.match(/\bMSIE ([6789])\./),y=y?+y[1]:!1;window._pr_isIE6=function(){return y};return y};
|
||||
(function(){function y(a){return a.replace(H,"&").replace(I,"<").replace(J,">")}function D(a,c,h){switch(a.nodeType){case 1:var l=a.tagName.toLowerCase();c.push("<",l);var g=a.attributes,k=g.length;if(k){if(h){for(var s=[],j=k;0<=--j;)s[j]=g[j];s.sort(function(a,c){return a.name<c.name?-1:a.name===c.name?0:1});g=s}for(j=0;j<k;++j)s=g[j],s.specified&&c.push(" ",s.name.toLowerCase(),'="',s.value.replace(H,"&").replace(I,"<").replace(J,">").replace(S,"""),'"')}c.push(">");for(g=
|
||||
a.firstChild;g;g=g.nextSibling)D(g,c,h);(a.firstChild||!/^(?:br|link|img)$/.test(l))&&c.push("</",l,">");break;case 3:case 4:c.push(y(a.nodeValue))}}function K(a){function c(a){if("\\"!==a.charAt(0))return a.charCodeAt(0);switch(a.charAt(1)){case "b":return 8;case "t":return 9;case "n":return 10;case "v":return 11;case "f":return 12;case "r":return 13;case "u":case "x":return parseInt(a.substring(2),16)||a.charCodeAt(1);case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":return parseInt(a.substring(1),
|
||||
8);default:return a.charCodeAt(1)}}function h(a){if(32>a)return(16>a?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if("\\"===a||"-"===a||"["===a||"]"===a)a="\\"+a;return a}function l(a){for(var f=a.substring(1,a.length-1).match(/\\u[0-9A-Fa-f]{4}|\\x[0-9A-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\s\S]|-|[^-\\]/g),a=[],b=[],j="^"===f[0],e=j?1:0,n=f.length;e<n;++e){var i=f[e];switch(i){case "\\B":case "\\b":case "\\D":case "\\d":case "\\S":case "\\s":case "\\W":case "\\w":a.push(i);continue}var i=
|
||||
c(i),d;e+2<n&&"-"===f[e+1]?(d=c(f[e+2]),e+=2):d=i;b.push([i,d]);65>d||122<i||(65>d||90<i||b.push([Math.max(65,i)|32,Math.min(d,90)|32]),97>d||122<i||b.push([Math.max(97,i)&-33,Math.min(d,122)&-33]))}b.sort(function(a,b){return a[0]-b[0]||b[1]-a[1]});f=[];i=[NaN,NaN];for(e=0;e<b.length;++e)n=b[e],n[0]<=i[1]+1?i[1]=Math.max(i[1],n[1]):f.push(i=n);b=["["];j&&b.push("^");b.push.apply(b,a);for(e=0;e<f.length;++e)n=f[e],b.push(h(n[0])),n[1]>n[0]&&(n[1]+1>n[0]&&b.push("-"),b.push(h(n[1])));b.push("]");return b.join("")}
|
||||
function g(a){for(var f=a.source.match(RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g")),b=f.length,c=[],e=0,d=0;e<b;++e){var i=f[e];"("===i?++d:"\\"===i.charAt(0)&&(i=+i.substring(1))&&i<=d&&(c[i]=-1)}for(e=1;e<c.length;++e)-1===c[e]&&(c[e]=++k);for(d=e=0;e<b;++e)i=f[e],"("===i?(++d,void 0===c[d]&&(f[e]="(?:")):"\\"===i.charAt(0)&&(i=+i.substring(1))&&i<=d&&(f[e]="\\"+c[d]);for(d=
|
||||
e=0;e<b;++e)"^"===f[e]&&"^"!==f[e+1]&&(f[e]="");if(a.ignoreCase&&s)for(e=0;e<b;++e)i=f[e],a=i.charAt(0),2<=i.length&&"["===a?f[e]=l(i):"\\"!==a&&(f[e]=i.replace(/[a-zA-Z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var k=0,s=!1,j=!1,q=0,d=a.length;q<d;++q){var w=a[q];if(w.ignoreCase)j=!0;else if(/[a-z]/i.test(w.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi,""))){s=!0;j=!1;break}}for(var p=[],q=0,d=a.length;q<d;++q){w=a[q];if(w.global||
|
||||
w.multiline)throw Error(""+w);p.push("(?:"+g(w)+")")}return RegExp(p.join("|"),j?"gi":"g")}function T(a){var c=0;return function(h){for(var l=null,g=0,k=0,s=h.length;k<s;++k)switch(h.charAt(k)){case "\t":l||(l=[]);l.push(h.substring(g,k));g=a-c%a;for(c+=g;0<=g;g-=16)l.push(" ".substring(0,g));g=k+1;break;case "\n":c=0;break;default:++c}if(!l)return h;l.push(h.substring(g));return l.join("")}}function E(a,c,h,l){c&&(a={source:c,basePos:a},h(a),l.push.apply(l,a.decorations))}function A(a,
|
||||
c){var h={},l;(function(){for(var g=a.concat(c),j=[],k={},d=0,w=g.length;d<w;++d){var p=g[d],m=p[3];if(m)for(var f=m.length;0<=--f;)h[m.charAt(f)]=p;p=p[1];m=""+p;k.hasOwnProperty(m)||(j.push(p),k[m]=null)}j.push(/[\0-\uffff]/);l=K(j)})();var g=c.length,k=function(a){for(var j=a.basePos,q=[j,x],d=0,w=a.source.match(l)||[],p={},m=0,f=w.length;m<f;++m){var b=w[m],r=p[b],e=void 0,n;if("string"===typeof r)n=!1;else{var i=h[b.charAt(0)];if(i)e=b.match(i[1]),r=i[0];else{for(n=0;n<g;++n)if(i=c[n],e=b.match(i[1])){r=
|
||||
i[0];break}e||(r=x)}if((n=5<=r.length&&"lang-"===r.substring(0,5))&&!(e&&"string"===typeof e[1]))n=!1,r=L;n||(p[b]=r)}i=d;d+=b.length;if(n){n=e[1];var u=b.indexOf(n),o=u+n.length;e[2]&&(o=b.length-e[2].length,u=o-n.length);r=r.substring(5);E(j+i,b.substring(0,u),k,q);E(j+i+u,n,M(r,n),q);E(j+i+o,b.substring(o),k,q)}else q.push(j+i,r)}a.decorations=q};return k}function t(a){var c=[],h=[];a.tripleQuotedStrings?c.push([v,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
|
||||
null,"'\""]):a.multiLineStrings?c.push([v,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"]):c.push([v,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"]);a.verbatimStrings&&h.push([v,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);var l=a.hashComments;l&&(a.cStyleComments?(1<l?c.push([z,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"]):c.push([z,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
|
||||
null,"#"]),h.push([v,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])):c.push([z,/^#[^\r\n]*/,null,"#"]));a.cStyleComments&&(h.push([z,/^\/\/[^\r\n]*/,null]),h.push([z,/^\/\*[\s\S]*?(?:\*\/|$)/,null]));a.regexLiterals&&h.push(["lang-regex",RegExp("^"+U+"(/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/)")]);a=a.keywords.replace(/^\s+|\s+$/g,"");a.length&&h.push([N,RegExp("^(?:"+a.replace(/\s+/g,"|")+")\\b"),null]);c.push([x,
|
||||
/^\s+/,null," \r\n\t\u00a0"]);h.push([F,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/,null],[x,/^[a-z_$][a-z_$@0-9]*/i,null],[F,/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],[B,/^.[^\s\w\.$@\'\"\`\/\#]*/,null]);return A(c,h)}function V(a){function c(a){if(a>q){d&&d!==o&&(j.push("</span>"),d=null);!d&&o&&(d=o,j.push('<span class="',d,'">'));var c=y(f(h.substring(q,a))).replace(i?r:b,"$1 ");i=n.test(c);j.push(c.replace(e,t));
|
||||
q=a}}var h=a.source,l=a.extractedTags,g=a.decorations,k=a.numberLines,s=a.sourceNode,j=[],q=0,d=null,o=null,p=0,m=0,f=T(window.PR_TAB_WIDTH),b=/([\r\n ]) /g,r=/(^| ) /gm,e=/\r\n?|\n/g,n=/[ \r\n]$/,i=!0,u=window._pr_isIE6(),s=u?s&&"PRE"===s.tagName?6===u?" \r\n":7===u?" <br />\r":8===u?" <br />":" \r":" <br />":"<br />",t;if(k){for(var x=[],u=0;10>u;++u)x[u]=s+'</li><li class="L'+u+'">';var v="number"===typeof k?k-1:0;j.push('<ol class="linenums"><li class="L',v%10,'"');v&&
|
||||
j.push(' value="',v+1,'"');j.push(">");t=function(){var a=x[++v%10];return d?"</span>"+a+'<span class="'+d+'">':a}}else t=s;for(;;)if(p<l.length&&(m<g.length?l[p]<=g[m]:1))c(l[p]),d&&(j.push("</span>"),d=null),j.push(l[p+1]),p+=2;else if(m<g.length)c(g[m]),o=g[m+1],m+=2;else break;c(h.length);d&&j.push("</span>");k&&j.push("</li></ol>");a.prettyPrintedHtml=j.join("")}function o(a,c){for(var h=c.length;0<=--h;){var l=c[h];C.hasOwnProperty(l)?"console"in window&&console.warn("cannot override language handler %s",
|
||||
l):C[l]=a}}function M(a,c){if(!a||!C.hasOwnProperty(a))a=/^\s*</.test(c)?"default-markup":"default-code";return C[a]}function P(a){var c,h=a.sourceCodeHtml,l=a.langExtension;a.prettyPrintedHtml=h;try{var g=h.match(W),h=[],k=0,o=[];if(g)for(var j=0,q=g.length;j<q;++j){var d=g[j];if(1<d.length&&"<"===d.charAt(0)){if(!X.test(d))if(Y.test(d))h.push(d.substring(9,d.length-3)),k+=d.length-12;else if(Z.test(d))h.push("\n"),++k;else if(0<=d.indexOf(Q)&&d.replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,
|
||||
' $1="$2$3$4"').match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/)){var t=d.match(R)[2],p=1,m;m=j+1;a:for(;m<q;++m){var f=g[m].match(R);if(f&&f[2]===t)if("/"===f[1]){if(0===--p)break a}else++p}m<q?(o.push(k,g.slice(j,m+1).join("")),j=m):o.push(k,d)}else o.push(k,d)}else{var b;var p=d,r=p.indexOf("&");if(0>r)b=p;else{for(--r;0<=(r=p.indexOf("&#",r+1));){var e=p.indexOf(";",r);if(0<=e){var n=p.substring(r+3,e),i=10;n&&"x"===n.charAt(0)&&(n=n.substring(1),i=16);var u=parseInt(n,i);isNaN(u)||(p=p.substring(0,
|
||||
r)+String.fromCharCode(u)+p.substring(e+1))}}b=p.replace($,"<").replace(aa,">").replace(ba,"'").replace(ca,'"').replace(da," ").replace(ea,"&")}h.push(b);k+=b.length}}c=h.join("");a.source=c;a.basePos=0;a.extractedTags=o;M(l,c)(a);V(a)}catch(v){"console"in window&&console.log(v&&v.stack?v.stack:v)}}var v="str",N="kwd",z="com",O="typ",F="lit",B="pun",x="pln",L="src",Q="nocode",U=function(){for(var a="! != !== # % %= & && &&= &= ( * *= += , -= -> / /= : :: ; < << <<= <= = == === > >= >> >>= >>> >>>= ? @ [ ^ ^= ^^ ^^= { | |= || ||= ~ break case continue delete do else finally instanceof return throw try typeof".split(" "),
|
||||
c="(?:^^|[+-]",h=0;h<a.length;++h)c+="|"+a[h].replace(/([^=<>:&a-z])/g,"\\$1");return c+")\\s*"}(),H=/&/g,I=/</g,J=/>/g,S=/\"/g,$=/</g,aa=/>/g,ba=/'/g,ca=/"/g,ea=/&/g,da=/ /g,fa=/[\r\n]/g,G=null,W=/[^<]+|<\!--[\s\S]*?--\>|<!\[CDATA\[[\s\S]*?\]\]>|<\/?[a-zA-Z](?:[^>"']|'[^']*'|"[^"]*")*>|</g,X=/^<\!--/,Y=/^<!\[CDATA\[/,Z=/^<br\b/i,R=/^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/,ga=t({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending dynamic event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END break continue do else for if return while case done elif esac eval fi function in local set then until ",
|
||||
hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),C={};o(ga,["default-code"]);o(A([],[[x,/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],[z,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[B,/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),"default-markup,htm,html,mxml,xhtml,xml,xsl".split(","));
|
||||
o(A([[x,/^[\s]+/,null," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[B,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),
|
||||
["in.tag"]);o(A([],[["atv",/^[\s\S]+/]]),["uq.val"]);o(t({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where ",
|
||||
hashComments:!0,cStyleComments:!0}),"c,cc,cpp,cxx,cyc,m".split(","));o(t({keywords:"null true false"}),["json"]);o(t({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending dynamic event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var ",
|
||||
hashComments:!0,cStyleComments:!0,verbatimStrings:!0}),["cs"]);o(t({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient ",
|
||||
cStyleComments:!0}),["java"]);o(t({keywords:"break continue do else for if return while case done elif esac eval fi function in local set then until ",hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);o(t({keywords:"break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None ",hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py"]);o(t({keywords:"caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END ",
|
||||
hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);o(t({keywords:"break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END ",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);o(t({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN ",
|
||||
cStyleComments:!0,regexLiterals:!0}),["js"]);o(t({keywords:"all and by catch class else extends false finally for if in is isnt loop new no not null of off on or return super then true try unless until when while yes ",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);o(A([],[[v,/^[\s\S]+/]]),["regex"]);window.PR_normalizedHtml=D;window.prettyPrintOne=function(a,c,h){a={sourceCodeHtml:a,langExtension:c,numberLines:h};P(a);return a.prettyPrintedHtml};
|
||||
window.prettyPrint=function(a){function c(){for(var h=window.PR_SHOULD_USE_CONTINUATION?j.now()+250:Infinity;q<l.length&&j.now()<h;q++){var g=l[q];if(g.className&&0<=g.className.indexOf("prettyprint")){var m=g.className.match(/\blang-(\w+)\b/);m&&(m=m[1]);for(var f=!1,b=g.parentNode;b;b=b.parentNode)if(("pre"===b.tagName||"code"===b.tagName||"xmp"===b.tagName)&&b.className&&0<=b.className.indexOf("prettyprint")){f=!0;break}if(!f){b=g;null===G&&(f=document.createElement("PRE"),f.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />')),
|
||||
G=!/</.test(f.innerHTML));if(G)if(f=b.innerHTML,"XMP"===b.tagName)f=y(f);else{if("PRE"===b.tagName||!fa.test(f))b=!0;else{var k="";b.currentStyle?k=b.currentStyle.whiteSpace:window.getComputedStyle&&(k=window.getComputedStyle(b,null).whiteSpace);b=!k||"pre"===k}b||(f=f.replace(/(<br\s*\/?>)[\r\n]+/g,"$1").replace(/(?:[\r\n]+[ \t]*)+/g," "))}else{f=[];for(b=b.firstChild;b;b=b.nextSibling)D(b,f);f=f.join("")}f=f.replace(/(?:\r\n?|\n)$/,"");b=g.className.match(/\blinenums\b(?::(\d+))?/);d={sourceCodeHtml:f,
|
||||
langExtension:m,sourceNode:g,numberLines:b?b[1]&&b[1].length?+b[1]:!0:!1};P(d);if(g=d.prettyPrintedHtml)if(m=d.sourceNode,"XMP"===m.tagName){f=document.createElement("PRE");for(b=0;b<m.attributes.length;++b)k=m.attributes[b],k.specified&&("class"===k.name.toLowerCase()?f.className=k.value:f.setAttribute(k.name,k.value));f.innerHTML=g;m.parentNode.replaceChild(f,m)}else m.innerHTML=g}}}q<l.length?setTimeout(c,250):a&&a()}for(var h=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),
|
||||
document.getElementsByTagName("xmp")],l=[],g=0;g<h.length;++g)for(var k=0,o=h[g].length;k<o;++k)l.push(h[g][k]);var h=null,j=Date;j.now||(j={now:function(){return(new Date).getTime()}});var q=0,d;c()};window.PR={combinePrefixPatterns:K,createSimpleLexer:A,registerLangHandler:o,sourceDecorator:t,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:z,PR_DECLARATION:"dec",PR_KEYWORD:N,PR_LITERAL:F,PR_NOCODE:Q,PR_PLAIN:x,PR_PUNCTUATION:B,PR_SOURCE:L,PR_STRING:v,PR_TAG:"tag",PR_TYPE:O}})();
|
||||
PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\u000c"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],
|
||||
[PR.PR_COMMENT,/^(?:<\!--|--\>)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]);
|
||||
PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\x0B\x0C\r ]+/,null,"\t\n\x0B\u000c\r "],[PR.PR_STRING,/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],[PR.PR_STRING,/^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/,null,"'"],[PR.PR_LITERAL,/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[[PR.PR_COMMENT,/^(?:(?:--+(?:[^\r\n\x0C]*)?)|(?:\{-(?:[^-]|-+[^-\}])*-\}))/],[PR.PR_KEYWORD,/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/,
|
||||
null],[PR.PR_PLAIN,/^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],[PR.PR_PUNCTUATION,/^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]]),["hs"]);
|
||||
PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],[PR.PR_COMMENT,/^;[^\r\n]*/,null,";"],[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],[PR.PR_STRING,/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[[PR.PR_KEYWORD,/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,null],
|
||||
[PR.PR_LITERAL,/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],[PR.PR_LITERAL,/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],[PR.PR_PLAIN,/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],[PR.PR_PUNCTUATION,/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["cl","el","lisp","scm"]);
|
||||
PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],[PR.PR_STRING,/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[[PR.PR_COMMENT,/^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],[PR.PR_STRING,/^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],[PR.PR_KEYWORD,/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],[PR.PR_LITERAL,/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],
|
||||
[PR.PR_PLAIN,/^[a-z_]\w*/i],[PR.PR_PUNCTUATION,/^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]]),["lua"]);
|
||||
PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],[PR.PR_COMMENT,/^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i,null,"#"],[PR.PR_STRING,/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])(?:\'|$))/,null,"\"'"]],[[PR.PR_COMMENT,/^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/],[PR.PR_KEYWORD,/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],[PR.PR_LITERAL,
|
||||
/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],[PR.PR_PLAIN,/^(?:[a-z_][\w']*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],[PR.PR_PUNCTUATION,/^[^\t\n\r \xA0\"\'\w]+/]]),["fs","ml"]);PR.registerLangHandler(PR.createSimpleLexer([],[]),["none"]);
|
||||
PR.registerLangHandler(PR.sourceDecorator({keywords:"bool bytes default double enum extend extensions false fixed32 fixed64 float group import int32 int64 max message option optional package repeated required returns rpc service sfixed32 sfixed64 sint32 sint64 string syntax to true uint32 uint64",cStyleComments:!0}),["proto"]);
|
||||
PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],[PR.PR_STRING,/^(?:"(?:(?:""(?:""?(?!")|[^\\"]|\\.)*"{0,3})|(?:[^"\r\n\\]|\\.)*"?))/,null,'"'],[PR.PR_LITERAL,/^`(?:[^\r\n\\`]|\\.)*`?/,null,"`"],[PR.PR_PUNCTUATION,/^[!#%&()*+,\-:;<=>?@\[\\\]^{|}~]+/,null,"!#%&()*+,-:;<=>?@[\\]^{|}~"]],[[PR.PR_STRING,/^'(?:[^\r\n\\']|\\(?:'|[^\r\n']+))'/],[PR.PR_LITERAL,/^'[a-zA-Z_$][\w$]*(?!['$\w])/],[PR.PR_KEYWORD,/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/],
|
||||
[PR.PR_LITERAL,/^(?:true|false|null|this)\b/],[PR.PR_LITERAL,/^(?:(?:0(?:[0-7]+|X[0-9A-F]+))L?|(?:(?:0|[1-9][0-9]*)(?:(?:\.[0-9]+)?(?:E[+\-]?[0-9]+)?F?|L?))|\\.[0-9]+(?:E[+\-]?[0-9]+)?F?)/i],[PR.PR_TYPE,/^[$_]*[A-Z][_$A-Z0-9]*[a-z][\w$]*/],[PR.PR_PLAIN,/^[$a-zA-Z_][\w$]*/],[PR.PR_COMMENT,/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],[PR.PR_PUNCTUATION,/^(?:\.+|\/)/]]),["scala"]);
|
||||
PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],[PR.PR_STRING,/^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/,null,"\"'"]],[[PR.PR_COMMENT,/^(?:--[^\r\n]*|\/\*[\s\S]*?(?:\*\/|$))/],[PR.PR_KEYWORD,/^(?:ADD|ALL|ALTER|AND|ANY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|NATIONAL|NOCHECK|NONCLUSTERED|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PERCENT|PLAN|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNION|UNIQUE|UPDATE|UPDATETEXT|USE|USER|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WRITETEXT)(?=[^\w-]|$)/i,
|
||||
null],[PR.PR_LITERAL,/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],[PR.PR_PLAIN,/^[a-z_][\w-]*/i],[PR.PR_PUNCTUATION,/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0+\-\"\']*/]]),["sql"]);
|
||||
PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],[PR.PR_COMMENT,/^%[^\r\n]*/,null,"%"]],[[PR.PR_DECLARATION,/^\\([egx]?def|(new|renew|provide)(command|environment))\b/],[PR.PR_KEYWORD,/^\\[a-zA-Z@:]+/],[PR.PR_KEYWORD,/^\\./],[PR.PR_TYPE,/^[$&]/],[PR.PR_LITERAL,/[+-]?(?:\.\d+|\d+(?:\.\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],[PR.PR_PUNCTUATION,/^[{}()\[\]=]+/]]),["latex","tex"]);
|
||||
PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0\u2028\u2029]+/,null,"\t\n\r \u00a0\u2028\u2029"],[PR.PR_STRING,/^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D]c|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/i,null,'"\u201c\u201d'],[PR.PR_COMMENT,/^[\'\u2018\u2019][^\r\n\u2028\u2029]*/,null,"'\u2018\u2019"]],[[PR.PR_KEYWORD,/^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i,
|
||||
null],[PR.PR_COMMENT,/^REM[^\r\n\u2028\u2029]*/i],[PR.PR_LITERAL,/^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],[PR.PR_PLAIN,/^(?:(?:[a-z]|_\w)\w*|\[(?:[a-z]|_\w)\w*\])/i],[PR.PR_PUNCTUATION,/^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],[PR.PR_PUNCTUATION,/^(?:\[|\])/]]),["vb","vbs"]);
|
||||
StackExchange.prettify={applyCodeStyling:window.prettyPrint};
|
||||
@@ -0,0 +1,28 @@
|
||||
if(!__qc){var __qc={qcdst:function(){if(__qc.qctzoff(0)!=__qc.qctzoff(6))return 1;return 0;},qctzoff:function(m){var d1=new Date(2000,m,1,0,0,0,0);var t=d1.toGMTString();var d3=new Date(t.substring(0,t.lastIndexOf(" ")-1));return d1-d3;},qceuc:function(s){if(typeof(encodeURIComponent)=='function'){return encodeURIComponent(s);}
|
||||
else{return escape(s);}},qcrnd:function(){return Math.round(Math.random()*2147483647);},qcgc:function(n){var v='';var c=document.cookie;if(!c)return v;var i=c.indexOf(n+"=");var len=i+n.length+1;if(i>-1){var end=c.indexOf(";",len);if(end<0)end=c.length;v=c.substring(len,end);}
|
||||
return v;},qcdomain:function(){var d=document.domain;if(d.substring(0,4)=="www.")d=d.substring(4,d.length);var a=d.split(".");var len=a.length;if(len<3)return d;var e=a[len-1];if(e.length<3)return d;d=a[len-2]+"."+a[len-1];return d;},qhash2:function(h,s){for(var i=0;i<s.length;i++){h^=s.charCodeAt(i);h+=(h<<1)+(h<<4)+(h<<7)+(h<<8)+(h<<24);}
|
||||
return h;},qhash:function(s){var h1=0x811c9dc5,h2=0xc9dc5118;var hash1=__qc.qhash2(h1,s);var hash2=__qc.qhash2(h2,s);return(Math.round(Math.abs(hash1*hash2)/65536)).toString(16);},sd:["4dcfa7079941","127fdf7967f31","588ab9292a3f","32f92b0727e5","22f9aa38dfd3","a4abfe8f3e04","18b66bc1325c","958e70ea2f28","bdbf0cb4bbb","65118a0d557","40a1d9db1864","18ae3d985046","3b26460f55d"],qcsc:function(){var s="";var d=__qc.qcdomain();if(__qc.qad==1)return";fpan=u;fpa=";var qh=__qc.qhash(d);for(var i=0;i<__qc.sd.length;i++){if(__qc.sd[i]==qh)return";fpan=u;fpa=";}
|
||||
var u=document;var a=__qc.qcgc("__qca");if(a.length>0){s+=";fpan=0;fpa="+a;}
|
||||
else{var da=new Date();var db=new Date(da.getTime()+157680000000);a='P0-'+__qc.qcrnd()+'-'+da.getTime();u.cookie="__qca="+a+"; expires="+db.toGMTString()+"; path=/; domain="+d;a=__qc.qcgc("__qca");if(a.length>0){s+=";fpan=1;fpa="+a;}
|
||||
else{s+=";fpan=u;fpa=";}}
|
||||
return s;},qcdc:function(n){document.cookie=n+"=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/; domain="+__qc.qcdomain();},qpxload:function(img){if(img&&typeof(img.width)=="number"&&img.width==3){__qc.qcdc("__qca");}},qcp:function(p,myqo){var s='',a=null;var media='webpage',event='load';if(myqo!=null){for(var k in myqo){if(typeof(k)!='string'){continue;}
|
||||
if(typeof(myqo[k])!='string'){continue;}
|
||||
if(k=='qacct'){a=myqo[k];continue;}
|
||||
s+=';'+k+p+'='+__qc.qceuc(myqo[k]);if(k=='media'){media=myqo[k];}
|
||||
if(k=='event'){event=myqo[k];}}}
|
||||
if(typeof a!="string"){if((typeof _qacct=="undefined")||(_qacct.length==0))return'';a=_qacct;}
|
||||
if(media=='webpage'&&event=='load'){for(var i=0;i<__qc.qpixelsent.length;i++){if(__qc.qpixelsent[i]==a)return'';}
|
||||
__qc.qpixelsent.push(a);}
|
||||
if(media=='ad'){__qc.qad=1;}
|
||||
s=';a'+p+'='+a+s;return s;},qcesc:function(s){return s.replace(/\./g,'%2E').replace(/,/g,'%2C');},qcd:function(o){return(typeof(o)!="undefined"&&o!=null);},qcogl:function(){var m=document.getElementsByTagName('meta');var o='';for(var i=0;i<m.length;i++){if(o.length>=1000)return o;if(__qc.qcd(m[i])&&__qc.qcd(m[i].attributes)&&__qc.qcd(m[i].attributes.property)&&__qc.qcd(m[i].attributes.property.value)&&__qc.qcd(m[i].content)){var p=m[i].attributes.property.value;var c=m[i].content;if(p.length>3&&p.substring(0,3)=='og:'){if(o.length>0)o+=',';var l=(c.length>80)?80:c.length;o+=__qc.qcesc(p.substring(3,p.length))+'.'+__qc.qcesc(c.substring(0,l));}}}
|
||||
return __qc.qceuc(o);},firepixel:function(qoptions){var e=(typeof(encodeURIComponent)=='function')?"n":"s";var r=__qc.qcrnd();var sr='',qo='',qm='',url='',ref='',je='u',ns='1';var qocount=0;__qc.qad=0;if(typeof __qc.qpixelsent=="undefined"){__qc.qpixelsent=new Array();}
|
||||
if(typeof qoptions!="undefined"&&qoptions!=null){__qc.qopts=qoptions;for(var k in __qc.qopts){if(typeof(__qc.qopts[k])=='string'){qo=__qc.qcp("",__qc.qopts);break;}else if(typeof(__qc.qopts[k])=='object'&&__qc.qopts[k]!=null){++qocount;qo+=__qc.qcp("."+qocount,__qc.qopts[k]);}}}else if(typeof _qacct=="string"){qo=__qc.qcp("",null);}
|
||||
if(qo.length==0)return;var ce=(navigator.cookieEnabled)?"1":"0";if(typeof navigator.javaEnabled!='undefined')je=(navigator.javaEnabled())?"1":"0";if(typeof _qmeta!="undefined"&&_qmeta!=null){qm=';m='+__qc.qceuc(_qmeta);_qmeta=null;}
|
||||
if(self.screen){sr=screen.width+"x"+screen.height+"x"+screen.colorDepth;}
|
||||
var d=new Date();var dst=__qc.qcdst();var qs='http';if(window.location.protocol=='https:'){qs+='s';}
|
||||
qs+="://pixel.quantserve.com";var fp=__qc.qcsc();if(window.location&&window.location.href)url=__qc.qceuc(window.location.href);if(window.document&&window.document.referrer)ref=__qc.qceuc(window.document.referrer);if(self==top)ns='0';var ogl=__qc.qcogl();var img=new Image();img.alt="";img.src=qs+'/pixel'+';r='+r+qo+fp+';ns='+ns+';ce='+ce+';je='+je+';sr='+sr+';enc='+e+';dst='+dst+';et='+d.getTime()+';tzo='+d.getTimezoneOffset()+qm+';ref='+ref+';url='+url+';ogl='+ogl;img.onload=function(){__qc.qpxload(img);}},quantserve:function(){if(typeof _qevents=='undefined'){_qevents=[];}
|
||||
if(typeof _qoptions!="undefined"&&_qoptions!=null){__qc.firepixel(_qoptions);_qoptions=null;}else if(!_qevents.length&&typeof _qacct!="undefined"){__qc.firepixel(null);}
|
||||
if(!__qc.evts){for(var k in _qevents){__qc.firepixel(_qevents[k]);}
|
||||
_qevents={push:function(){var a=arguments;for(var i=0;i<a.length;i++){__qc.firepixel(a[i]);}}};__qc.evts=1;}}};}
|
||||
function quantserve(){__qc.quantserve();}
|
||||
quantserve();
|
||||
@@ -0,0 +1,28 @@
|
||||
if(!__qc){var __qc={qcdst:function(){if(__qc.qctzoff(0)!=__qc.qctzoff(6))return 1;return 0;},qctzoff:function(m){var d1=new Date(2000,m,1,0,0,0,0);var t=d1.toGMTString();var d3=new Date(t.substring(0,t.lastIndexOf(" ")-1));return d1-d3;},qceuc:function(s){if(typeof(encodeURIComponent)=='function'){return encodeURIComponent(s);}
|
||||
else{return escape(s);}},qcrnd:function(){return Math.round(Math.random()*2147483647);},qcgc:function(n){var v='';var c=document.cookie;if(!c)return v;var i=c.indexOf(n+"=");var len=i+n.length+1;if(i>-1){var end=c.indexOf(";",len);if(end<0)end=c.length;v=c.substring(len,end);}
|
||||
return v;},qcdomain:function(){var d=document.domain;if(d.substring(0,4)=="www.")d=d.substring(4,d.length);var a=d.split(".");var len=a.length;if(len<3)return d;var e=a[len-1];if(e.length<3)return d;d=a[len-2]+"."+a[len-1];return d;},qhash2:function(h,s){for(var i=0;i<s.length;i++){h^=s.charCodeAt(i);h+=(h<<1)+(h<<4)+(h<<7)+(h<<8)+(h<<24);}
|
||||
return h;},qhash:function(s){var h1=0x811c9dc5,h2=0xc9dc5118;var hash1=__qc.qhash2(h1,s);var hash2=__qc.qhash2(h2,s);return(Math.round(Math.abs(hash1*hash2)/65536)).toString(16);},sd:["4dcfa7079941","127fdf7967f31","588ab9292a3f","32f92b0727e5","22f9aa38dfd3","a4abfe8f3e04","18b66bc1325c","958e70ea2f28","bdbf0cb4bbb","65118a0d557","40a1d9db1864","18ae3d985046","3b26460f55d"],qcsc:function(){var s="";var d=__qc.qcdomain();if(__qc.qad==1)return";fpan=u;fpa=";var qh=__qc.qhash(d);for(var i=0;i<__qc.sd.length;i++){if(__qc.sd[i]==qh)return";fpan=u;fpa=";}
|
||||
var u=document;var a=__qc.qcgc("__qca");if(a.length>0){s+=";fpan=0;fpa="+a;}
|
||||
else{var da=new Date();var db=new Date(da.getTime()+157680000000);a='P0-'+__qc.qcrnd()+'-'+da.getTime();u.cookie="__qca="+a+"; expires="+db.toGMTString()+"; path=/; domain="+d;a=__qc.qcgc("__qca");if(a.length>0){s+=";fpan=1;fpa="+a;}
|
||||
else{s+=";fpan=u;fpa=";}}
|
||||
return s;},qcdc:function(n){document.cookie=n+"=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/; domain="+__qc.qcdomain();},qpxload:function(img){if(img&&typeof(img.width)=="number"&&img.width==3){__qc.qcdc("__qca");}},qcp:function(p,myqo){var s='',a=null;var media='webpage',event='load';if(myqo!=null){for(var k in myqo){if(typeof(k)!='string'){continue;}
|
||||
if(typeof(myqo[k])!='string'){continue;}
|
||||
if(k=='qacct'){a=myqo[k];continue;}
|
||||
s+=';'+k+p+'='+__qc.qceuc(myqo[k]);if(k=='media'){media=myqo[k];}
|
||||
if(k=='event'){event=myqo[k];}}}
|
||||
if(typeof a!="string"){if((typeof _qacct=="undefined")||(_qacct.length==0))return'';a=_qacct;}
|
||||
if(media=='webpage'&&event=='load'){for(var i=0;i<__qc.qpixelsent.length;i++){if(__qc.qpixelsent[i]==a)return'';}
|
||||
__qc.qpixelsent.push(a);}
|
||||
if(media=='ad'){__qc.qad=1;}
|
||||
s=';a'+p+'='+a+s;return s;},qcesc:function(s){return s.replace(/\./g,'%2E').replace(/,/g,'%2C');},qcd:function(o){return(typeof(o)!="undefined"&&o!=null);},qcogl:function(){var m=document.getElementsByTagName('meta');var o='';for(var i=0;i<m.length;i++){if(o.length>=1000)return o;if(__qc.qcd(m[i])&&__qc.qcd(m[i].attributes)&&__qc.qcd(m[i].attributes.property)&&__qc.qcd(m[i].attributes.property.value)&&__qc.qcd(m[i].content)){var p=m[i].attributes.property.value;var c=m[i].content;if(p.length>3&&p.substring(0,3)=='og:'){if(o.length>0)o+=',';var l=(c.length>80)?80:c.length;o+=__qc.qcesc(p.substring(3,p.length))+'.'+__qc.qcesc(c.substring(0,l));}}}
|
||||
return __qc.qceuc(o);},firepixel:function(qoptions){var e=(typeof(encodeURIComponent)=='function')?"n":"s";var r=__qc.qcrnd();var sr='',qo='',qm='',url='',ref='',je='u',ns='1';var qocount=0;__qc.qad=0;if(typeof __qc.qpixelsent=="undefined"){__qc.qpixelsent=new Array();}
|
||||
if(typeof qoptions!="undefined"&&qoptions!=null){__qc.qopts=qoptions;for(var k in __qc.qopts){if(typeof(__qc.qopts[k])=='string'){qo=__qc.qcp("",__qc.qopts);break;}else if(typeof(__qc.qopts[k])=='object'&&__qc.qopts[k]!=null){++qocount;qo+=__qc.qcp("."+qocount,__qc.qopts[k]);}}}else if(typeof _qacct=="string"){qo=__qc.qcp("",null);}
|
||||
if(qo.length==0)return;var ce=(navigator.cookieEnabled)?"1":"0";if(typeof navigator.javaEnabled!='undefined')je=(navigator.javaEnabled())?"1":"0";if(typeof _qmeta!="undefined"&&_qmeta!=null){qm=';m='+__qc.qceuc(_qmeta);_qmeta=null;}
|
||||
if(self.screen){sr=screen.width+"x"+screen.height+"x"+screen.colorDepth;}
|
||||
var d=new Date();var dst=__qc.qcdst();var qs='http';if(window.location.protocol=='https:'){qs+='s';}
|
||||
qs+="://pixel.quantserve.com";var fp=__qc.qcsc();if(window.location&&window.location.href)url=__qc.qceuc(window.location.href);if(window.document&&window.document.referrer)ref=__qc.qceuc(window.document.referrer);if(self==top)ns='0';var ogl=__qc.qcogl();var img=new Image();img.alt="";img.src=qs+'/pixel'+';r='+r+qo+fp+';ns='+ns+';ce='+ce+';je='+je+';sr='+sr+';enc='+e+';dst='+dst+';et='+d.getTime()+';tzo='+d.getTimezoneOffset()+qm+';ref='+ref+';url='+url+';ogl='+ogl;img.onload=function(){__qc.qpxload(img);}},quantserve:function(){if(typeof _qevents=='undefined'){_qevents=[];}
|
||||
if(typeof _qoptions!="undefined"&&_qoptions!=null){__qc.firepixel(_qoptions);_qoptions=null;}else if(!_qevents.length&&typeof _qacct!="undefined"){__qc.firepixel(null);}
|
||||
if(!__qc.evts){for(var k in _qevents){__qc.firepixel(_qevents[k]);}
|
||||
_qevents={push:function(){var a=arguments;for(var i=0;i<a.length;i++){__qc.firepixel(a[i]);}}};__qc.evts=1;}}};}
|
||||
function quantserve(){__qc.quantserve();}
|
||||
quantserve();
|
||||
@@ -0,0 +1 @@
|
||||
div.hireme,div#hireme{border:1px solid #b5b5b5;background:#fff url(img/careers2-ad-header-so-crop.png) 1px 1px no-repeat;color:#333;font-family:Arial,Helvetica,sans-serif;font-size:12px;text-align:left;line-height:130%;padding:0;margin:12px 0;width:218px;min-height:220px;clear:both}div.hireme.codinghorror,div#hireme.codinghorror{background-image:url(img/careers2-ad-header-so-crop-codinghorror.png);width:206px;min-height:200px}div.hireme>a.top,div#hireme>a.top{width:218px;height:45px;display:inline-block}div.hireme>ul,div#hireme>ul{margin:0;padding:0;list-style:none}div.hireme>ul>li,div#hireme>ul>li{padding:0;margin:12px!important}div.hireme>ul>li>a,div#hireme>ul>li>a{display:block;cursor:pointer;text-decoration:none}div.hireme>ul>li>a>span,div#hireme>ul>li>a>span{color:#666;float:none;display:block}div.hireme>ul>li>a>span.company,div#hireme>ul>li>a>span.company{font-weight:bold}div.hireme>ul>img.impression,div#hireme>ul>img.impression{display:none}div.hireme>ul>a>img.careers-hed,div#hireme>ul>a>img.careers-hed{width:100%;min-height:40px;border:0;margin-bottom:-2px}div.hireme span.post-tag,div#hireme span.post-tag{font:11px/24px Tahoma,Arial,Verdana,Sans-Serif;background-color:#e0eaf1;color:#3e6d8e;padding:3px 3px 3px 4px;border:0;border-bottom:1px solid #3e6d8e;border-right:1px solid #7f9fb6}div.hireme span.post-tag:hover,div#hireme span.post-tag:hover{background-color:#e0eaf1;color:#3e6d8e}
|
||||
@@ -0,0 +1,43 @@
|
||||
'use strict';window.StackExchange={};function CTIsPlayback(){try{return parent&&parent.WebPlayer}catch(g){return!1}}if(!CTIsPlayback()&&top!=self)throw top.location.replace(document.location),$(function(){$("head").add("body").remove()}),alert("For security reasons, framing is not allowed; click OK to remove the frames."),Error();
|
||||
StackExchange.init=function(){var g=function(a){if(!window.jQuery)if("complete"!=document.readyState)setTimeout(function(){g(a)},1E3);else{var d=document.createElement("div");d.id="noscript-padding";var c=document.createElement("div");c.id="noscript-warning";c.innerHTML=a+" requires external JavaScript from another domain, which is blocked or failed to load.";document.body.insertBefore(d,document.body.firstChild);document.body.appendChild(c)}},a=function(){$(document).keyup(function(a){27==a.which&&
|
||||
($("#lightbox:not(.no-esc-remove), .error-notification, .popup, .share-tip, .esc-remove").fadeOutAndRemove(),$(".esc-hide").fadeOut(),window.genuwine&&genuwine.isVisible()&&genuwine.click(),window.profileLink&&profileLink.hide())})},e=function(){var a=$("#hlinks"),d=$("#search input[name=q]"),c=d.width(),e=2.5*c,g,h=function(c){d.queue("expand",c)},k=!1,l=!("placeholder"in document.createElement("input"));l&&!StackExchange.options.isMobile&&(""==d[0].value&&(d[0].value="search"),d.bind({focus:function(){"search"==
|
||||
this.value&&(this.value="")}}));d.keydown(function(c){if(k||46>c.keyCode&&8!=c.keyCode&&32!=c.keyCode)return!0;k=!0;clearTimeout(g);d.clearQueue("expand");h(function(c){d[0].placeholder="";a.fadeOut(100,c)});h(function(c){d.animate({width:e,"max-width":e},100,c)});h(function(){0==d.parent().find(".search-prompt").length&&d.before('<span class="search-prompt">search:</span>')});3==d.queue("expand").length&&d.dequeue("expand")}).focusout(function(){g=setTimeout(function(){h(function(c){d.parent().find(".search-prompt").remove();
|
||||
c()});h(function(a){d.animate({width:c,"max-width":c},100,a)});h(function(c){l&&""==d[0].value&&(d[0].value="search");d[0].placeholder="search";a.fadeIn(100,c)});3==d.queue("expand").length&&d.dequeue("expand");k=!1},200)});$("#search").keydown(function(c){if(13==c.which&&c.ctrlKey&&d.val())return window.open("/search?q="+encodeURIComponent(d.val()),"_newtab"),!1})};return function(f){StackExchange.options=f;var d=f.serverTime-(new Date).getTime()/1E3;g(f.site.name);$.ajaxSetup({cache:!1});StackExchange.init.createJqueryExtensions();
|
||||
$(function(){a();e();StackExchange.using(StackExchange.options.user.isAnonymous?"anonymous":"loggedIn",function(){StackExchange.initialized.resolve()},!0,f.fullPostfix);StackExchange.ready(function(){genuwine.init(f.user.accountId||null,f.user.inboxUnviewedCount,f.user.notificationsUnviewedCount);f.user.messages&&StackExchange.notify.showMessages(f.user.messages,f.isMobile);f.site.globalAuthDisabled||(!f.site.isChildMeta&&f.user.isAnonymous&&gauth.checkStackAuth(f.stackAuthUrl),gauth.informStackAuth(f.stackAuthUrl));
|
||||
f.user.isAnonymous||profileLink.init(f.user.gravatar,f.isMobile,f.user.profileUrl+"?tab=activity",d);f.enableUserHovercards&&StackExchange.usermenu.init();StackExchange.tagPreferences?StackExchange.tagPreferences.init():StackExchange.tagmenu.init()})})}}();
|
||||
StackExchange.debug={log:function(){},init:function(){this.log=function(g){$(function(){var a=$("#debug-messages");a.length||(a=$("<div id='debug-messages' style='text-align:left;position:fixed;top:50px;left:50px;z-index:1000;background:white;border:2px solid black;width:300px;padding:10px;' />").append($("<span style='cursor:pointer;color:#999'>(close debug messages)</span>").click(function(){$("#debug-messages").remove()})).appendTo("body"));$("<div style='margin-top:10px' />").text(g).appendTo(a)})}}};
|
||||
StackExchange.initialized=$.Deferred();StackExchange.ready=function(g){StackExchange.initialized.done(g)};if(window.serq)for(var i=0;i<window.serq.length;i++)StackExchange.ready(window.serq[i]);
|
||||
(function(){var g={anonymous:"full-anon.js",loggedIn:"full.js",prettify:"prettify-full.js",pseudoModerator:"moderator.js",inlineEditing:"full.js",editor:"wmd.js",autocomplete:"third-party/jquery.autocomplete.min.js",tagAutocomplete:"tageditor.js",tagEditor:"tageditornew.js",mobile:"mobile.js",help:"help.js",inlineTagEditing:"inline-tag-editing.js",mathjaxEditing:"mathjax-editing.js",mathjaxEditingNew:"mathjax-editing-new.js",revisions:"revisions.js",suggestedEdits:"suggested-edits.js",mockups:"mockups.js"},
|
||||
a={},e={},f,d={},c=function(c,a){return function(d){var e=c[d];e||(e=c[d]=a(d));return e}},o=function(c){var c=a[c],d,e=$.Deferred(),f=$.when(e),g;if(c)for(d=0;d<c.length;d++)(g=c[d].call(null))&&$.isFunction(g.promise)&&(f=$.when(f,g));e.resolve();return f},j=function(){if(!f){var c=$("script[src*='/stub.js']:first");0==c.length?(StackExchange.debug.log("couldn't figure out location of stub.js"),f="/content/js/"):f=c.attr("src").replace(/\/stub\.js.*$/,"/")}return f},h=function(c){var a=d["js/"+
|
||||
c];return!a?(StackExchange.debug.log("no cache breaker for "+c),""):"?v="+a},k=function(c){c=g[c];return!c?$.Deferred().reject().promise():l(c)},l=c({},function(c){var a=$.Deferred(),d=document.createElement("script");d.async="async";d.type="text/javascript";d.src=j()+c+h(c);d.onload=d.onreadystatechange=function(c,e){if(!d.readyState||/loaded|complete/.test(d.readyState))e?a.reject():a.resolve()};d.onerror=function(){a.reject()};$("head")[0].appendChild(d);return a.promise()}),n=c({},function(c){function a(){(e=
|
||||
StackExchange[c])?o(c).done(function(){d.resolve()}):0<f?(f--,StackExchange.debug.log("retrying "+c),setTimeout(a,20)):(StackExchange.debug.log("object "+c+" not available although file was loaded"),d.reject())}var d=$.Deferred(),e=StackExchange[c],f=3;e?d.resolve():k(c).done(a).fail(d.reject);return d.promise()}),p=$.Deferred(),q=function(c,d,a,e){if(!a&&!p.isResolved())p.done(function(){q(c,d)});else{if(a)for(var f in g)g.hasOwnProperty(f)&&(g[f]=g[f].replace(/^(full(?:-anon)?).js$/,"$1"+(e||"")+
|
||||
".js"));e=n(c);a?p.resolve():e=$.when(e,StackExchange.initialized);e.done(function(){d()}).fail(function(){StackExchange.debug.log("failed to provide object "+c)});return e}};q.setCacheBreakers=function(c){for(var a in c)c.hasOwnProperty(a)&&(d[a]=c[a])};StackExchange.using=q;StackExchange.ifUsing=function(c,d,f){if("undefined"!==typeof f){if(e["u_"+f])return;e["u_"+f]=!0}StackExchange[c]?d():((f=a[c])||(f=a[c]=[]),f.push(d))}})();
|
||||
String.prototype.format=function(){var g=this.toString();if(!arguments.length)return g;var a="string"==typeof arguments[0]?arguments:arguments[0],e;for(e in a)g=g.replace(RegExp("\\{"+e+"\\}","gi"),a[e]);return g};String.prototype.truncate=function(g,a){var e=this.toString();g&&e.length>g&&(e=e.substr(0,g)+a);return e};
|
||||
StackExchange.init.createJqueryExtensions=function(){var g=StackExchange.helpers;$.fn.extend({fadeOutAndRemove:function(){return this.each(function(){var a=$(this);a.fadeOut("fast",function(){a.trigger("removing").remove()})})},charCounter:function(a){return this.each(function(){var e=a.target?$(a.target):$(this).parents("form").find("span.text-counter"),f=this;$(this).bind("blur focus keyup paste",g.DelayedReaction(function(){var d=a.min,c=a.max,g=a.setIsValid||function(){},j=f.value?f.value.length:
|
||||
0,h=j>0.8*c?"supernova":j>0.6*c?"hot":j>0.4*c?"warm":"cool",k="";0==j?(k="enter at least "+d+" characters",g(!1)):j<d?(k=d-j+" more to go...",g(!1)):(k=c-j+" character"+(1!=c-j?"s":"")+" left",g(j<=c));e.text(k);e.hasClass(h)||e.removeClass("supernova hot warm cool").addClass(h)},100,{sliding:!0}).trigger)})},selectRange:function(a,e){return this.each(function(){if(this.setSelectionRange)this.focus(),this.setSelectionRange(a,e);else if(this.createTextRange){var f=this.createTextRange();f.collapse(!0);
|
||||
f.moveEnd("character",e);f.moveStart("character",a);f.select()}})},addSpinner:function(a){return this.each(function(){g.addSpinner(this,a)})},addSpinnerAfter:function(a){return this.each(function(){$(this).after(g.getSpinnerImg(a))})},removeSpinner:function(){return this.each(function(){$(this).find("img.ajax-loader").remove()})},showErrorPopup:function(a,e,f){return this.each(function(){g.showErrorPopup(this,a,e,f)})},center:function(){var a=this.parent();"static"===a.css("position")&&(a=a.offsetParent());
|
||||
var a=a.offset(),e=$(window);this.css("position","absolute");this.css("top",(e.height()-this.height())/2+e.scrollTop()-a.top+"px");this.css("left",(e.width()-this.width())/2+e.scrollLeft()-a.left+"px");return this},helpOverlay:function(){g.bindHelpOverlayEvents(this);return this},hideHelpOverlay:function(){g.hideHelpOverlay(this);return this},enable:function(){0==arguments.length||arguments[0]?this.removeAttr("disabled").css("cursor","pointer"):this.attr("disabled","disabled").css("cursor","default");
|
||||
return this},disable:function(){return this.enable(!1)},loadPopup:function(a){var e=this;e.addSpinnerAfter({padding:"0 3px"});$.ajax({type:"GET",url:a.url,dataType:"html",success:function(f){var d=$(f);d.find(".popup-actions-cancel, .popup-close a").click(function(){d.fadeOutAndRemove()});d.find("input:radio[disabled=disabled] + label.action-label").addClass("action-disabled");a.hideDescriptions&&d.find("ul.action-list > li:not(.action-selected) .action-desc").hide();f=d.find("input:radio:not(.action-subform input)");
|
||||
f.closest("li").bind("hide-action",function(){var c=$(this),d=".action-subform"+(a.hideDescriptions?", .action-desc":"");c.removeClass("action-selected").find(d).slideUp("fast")}).bind("show-action",function(){var c=$(this);c.hasClass("action-selected")||(c.siblings(".action-selected").trigger("hide-action"),c.addClass("action-selected").find(".action-subform").slideDown("fast",function(){a.subformShow&&a.subformShow($(this));if(a.subformFocusInput){var c=$(this).find("input[type=text], textarea").not(".actual-edit-overlay").eq(0);
|
||||
c.length&&c.focus()}}),a.hideDescriptions&&c.find(".action-desc").slideDown("fast"),a.actionSelected&&a.actionSelected(c),d.find(".popup-submit").enable())});f.click(function(){$(this).closest("li").trigger("show-action")});d.appendTo(e.parent());a.loaded&&a.loaded(d);f=function(){};if(a.subformShow){var c=d.find("li.action-selected .action-subform");0<c.length&&(f=function(){c.each(function(){a.subformShow($(this))})})}a.dontCenter||d.center().fadeIn("fast",f)},error:function(){e.parent().showErrorPopup("Unable to load popup - please try again")},
|
||||
complete:g.removeSpinner});return e}})};
|
||||
StackExchange.helpers=function(){function g(c,d,a){for(var e=0;e<a.length;e++){var g=a[e];try{if(/\*/.test(g))for(var l=0;4>l;l++){var n=g.replace(/\*/g,f[l]),p=c.css(n);d.css(n,p)}else d.css(g,c.css(g))}catch(q){}}}function a(c,d,a,e){if(c.is(":visible")){var f=$.browser.msie?0:0.4;a()?(c.css("opacity",f+(e?0.2:0)),c.addClass("edit-field-overlayed"),a=c.prev(".actual-edit-overlay"),0==a.length&&(e=c.parent().find("span.edit-field-overlay").text(),a=c.width(),f=c.height(),a=c.clone().prop("className",
|
||||
"actual-edit-overlay").attr("name",null).attr("id",null).attr("disabled","disabled").css({position:"absolute",backgroundColor:"white",color:"black","-webkit-text-fill-color":"black",opacity:1,width:a,height:f}),a.is("textarea,input")?(a.val(e),g(d,a,["line-height"])):a.text(e).css("line-height",f+"px").prepend(" "),g(d,a,["font-family","font-size","text-align"]),g(c,a,["border-*-style","border-*-color","border-*-width"]),c.css({zIndex:1,position:"relative"}),a.insertBefore(c),e=c.offset().top-
|
||||
a.offset().top,0!=e&&(d=parseInt(a.css("margin-top")),e=d+e,c.is("textarea")||(e=parseInt(a.prevAll(":visible").eq(0).css("margin-bottom"))+d),a.css("margin-top",e)),c=c.offset().left-a.offset().left,0!=c&&(d=parseInt(a.css("margin-left")),a.css("margin-left",d+c)))):c.css("opacity",1).css("filter","").removeClass("edit-field-overlayed")}}function e(c,a){$(c).find("input[type='submit']").prop("disabled",a)}var f=["left","right","top","bottom"],d={genericBindOverlayEvents:function(c,e,f){StackExchange.options.isMobile||
|
||||
e.bind("keydown contextmenu",function(){d.hideHelpOverlay(c)}).focus(function(){a(c,e,f,!0)}).blur(function(){a(c,e,f)}).each(function(){a(c,e,f)})},bindHelpOverlayEvents:function(c){c.each(function(){var c=$(this);d.genericBindOverlayEvents(c,c,function(){return""===c.val()})})},hideHelpOverlay:function(c){c.css("opacity",1);c.css("filter","");c.removeClass("edit-field-overlayed")},onClickDraftSave:function(c){$(c).click(function(){var c=this.href;StackExchange.cardiologist.ensureDraftSaved(function(){window.onbeforeunload=
|
||||
null;window.location.href=c});return!1});return!0},showErrorPopup:function(c,a,d,e){$(".error-notification").remove();var f=$('<div class="error-notification supernovabg"><h2>'+a+"</h2>"+(d?"":'<span class="error-close">(click on this box to dismiss)</span>')+"</div>"),g=function(){f.fadeOutAndRemove();e&&e()};$(c).append(f);f.click(g).fadeIn("fast");setTimeout(g,d?Math.max(2500,40*a.length):3E4)},removeErrorPopup:function(){$(".error-notification").fadeOutAndRemove()},addSpinner:function(c,a){$(c).append(d.getSpinnerImg(a))},
|
||||
getSpinnerImg:function(c){var a=$('<img class="ajax-loader" src="/content/img/progress-dots.gif" title="loading..." alt="loading..." />');c&&a.css(c);return a},removeSpinner:function(){$("img.ajax-loader").remove()},enableSubmitButton:function(c){e(c,!1)},disableSubmitButton:function(c){e(c,!0)},loadTicks:function(c){var a;a=c?c.find(".edit-block"):$(".edit-block");0==a.find("input[name=i1l]").length&&!a.data("loading-ticks")&&(a.data("loading-ticks",!0),$.ajax({url:"/questions/ticks",cache:!1,success:function(c){a.append("<input type='hidden' name='i1l' value='"+
|
||||
c+"' />")},complete:function(){a.data("loading-ticks",!1)}}))},showFancyOverlay:function(c){var c=c||{},a=$("#overlay-header"),d=c.message||"",e=$.browser.msie?{background:"#fff",opacity:0}:{};!1!==c.showClose&&(d+='<br><a class="close-overlay">close this message</a>');a.html(d).css(e).animate({opacity:"1",height:"show"},"slow",c.complete).find(".close-overlay").click(function(){a.animate({opacity:"0",height:"hide"},"fast")})},DelayedReaction:function(c,a,d){var d=d||{},e,f,g=d.always,n=function(){e=
|
||||
null;c.apply(null,f)};return{trigger:function(){f=arguments;g&&g.apply(null,f);e?d.sliding&&(clearTimeout(e),e=setTimeout(n,a)):e=setTimeout(n,a)},cancel:function(){e&&(clearTimeout(e),e=null)}}},fireAndForget:function(c){$.ajax({type:"POST",url:c,async:!0})}};return d}();
|
||||
function prepareEditor(g){var a=g.postfix||"",e=function(){setTimeout(function(){StackExchange.editor.initIfShown(g)},1)};if(g.onDemand){for(var f="bold-button,italic-button,spacer1,link-button,quote-button,code-button,image-button,spacer2,olist-button,ulist-button,heading-button,hr-button,spacer3,undo-button,redo-button".split(","),d=$('<ul id="wmd-button-row'+a+'" class="wmd-button-row" />').appendTo(".wmd-button-bar"),c=0,o=0;o<f.length;o++){var j=f[o],h=/spacer/.test(j),j=$("<li id='wmd-"+j+a+
|
||||
"' />").prop("className","wmd-"+(h?"spacer":"button")).css("left",25*o).appendTo(d);$("<span />").css("background-position",c+"px -20px").appendTo(j);h||(c-=20)}var k=!1;$("#wmd-input, #title, #tagnames, #edit-comment, #m-address, #display-name").one("focus click keydown",function(){k||(k=!0,d.addSpinner({"float":"right"}),StackExchange.using("editor",function(){d.remove();g.autoShowMarkdownHelp&&(g.immediatelyShowMarkdownHelp=!0);e()}))})}else StackExchange.using("editor",e)}
|
||||
StackExchange.switchMobile=function(g,a){$.post("/mobile/"+g,{returnurl:a},function(a){window.location=a})};
|
||||
jQuery.cookie=function(g,a,e){if("undefined"!=typeof a){e=e||{};null===a&&(a="",e.expires=-1);var f="";if(e.expires&&("number"==typeof e.expires||e.expires.toUTCString))"number"==typeof e.expires?(f=new Date,f.setTime(f.getTime()+864E5*e.expires)):f=e.expires,f="; expires="+f.toUTCString();var d=e.path?"; path="+e.path:"",c=e.domain?"; domain="+e.domain:"",e=e.secure?"; secure":"";document.cookie=[g,"=",encodeURIComponent(a),f,d,c,e].join("")}else{a=null;if(document.cookie&&""!=document.cookie){e=
|
||||
document.cookie.split(";");for(f=0;f<e.length;f++)if(d=jQuery.trim(e[f]),d.substring(0,g.length+1)==g+"="){a=decodeURIComponent(d.substring(g.length+1));break}}return a}};jQuery.expr[":"].regex=function(g,a,e){var a=e[3].split(","),f=/^(data|css):/,e=a[0].match(f)?a[0].split(":")[0]:"attr",f=a.shift().replace(f,"");return RegExp(a.join("").replace(/^\s+|\s+$/g,""),"ig").test(jQuery(g)[e](f))};
|
||||
$.extend($.expr[":"],{containsExact:function(g,a,e){return $.trim(g.innerHTML.toLowerCase())===e[3].toLowerCase()},containsExactCase:function(g,a,e){return $.trim(g.innerHTML)===e[3]},containsRegex:function(g,a,e){a=/^\/((?:\\\/|[^\/])+)\/([mig]{0,3})$/.exec(e[3]);return RegExp(a[1],a[2]).test($.trim(g.innerHTML))}});
|
||||
$.extend({URLEncode:function(g){for(var a="",e=0,g=g.toString(),f=/(^[a-zA-Z0-9_.]*)/;e<g.length;){var d=f.exec(g.substr(e));null!=d&&1<d.length&&""!=d[1]?(a+=d[1],e+=d[1].length):(" "==g[e]?a+="+":(d=g.charCodeAt(e).toString(16),a+="%"+(2>d.length?"0":"")+d.toUpperCase()),e++)}return a},URLDecode:function(g){for(var a,e=/(%[^%]{2})/;null!=(m=e.exec(g))&&1<m.length&&""!=m[1];)b=parseInt(m[1].substr(1),16),a=String.fromCharCode(b),g=g.replace(m[1],a);return g}});
|
||||
(function(g){g.fn.typeWatch=function(a){function e(a){if("TEXT"==a.type.toUpperCase()||"TEXTAREA"==a.nodeName.toUpperCase()){var c={timer:null,text:g(a).val().toUpperCase(),cb:f.callback,el:a,wait:f.wait};f.highlight&&g(a).focus(function(){this.select()});var e=function(a){var d=c.wait,e=!1;13==a.keyCode&&"TEXT"==this.type.toUpperCase()&&(d=1,e=!0);clearTimeout(c.timer);c.timer=setTimeout(function(){var a=e,d=g(c.el).val();if(d.length>f.captureLength&&d.toUpperCase()!=c.text||a&&d.length>f.captureLength)c.text=
|
||||
d.toUpperCase(),c.cb(d)},d)};g(a).keydown(e).bind("paste",null,function(c){c.which||e(this)})}}var f=g.extend({wait:750,callback:function(){},highlight:!0,captureLength:2},a);return this.each(function(){e(this)})}})(jQuery);
|
||||
(function(g){function a(a){var d;return a&&a.constructor==Array&&3==a.length?a:(d=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(a))?[parseInt(d[1]),parseInt(d[2]),parseInt(d[3])]:(d=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(a))?[2.55*parseFloat(d[1]),2.55*parseFloat(d[2]),2.55*parseFloat(d[3])]:(d=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(a))?[parseInt(d[1],16),parseInt(d[2],16),parseInt(d[3],16)]:
|
||||
(d=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(a))?[parseInt(d[1]+d[1],16),parseInt(d[2]+d[2],16),parseInt(d[3]+d[3],16)]:/rgba\(0, 0, 0, 0\)/.exec(a)?e.transparent:e[g.trim(a).toLowerCase()]}g.each("backgroundColor,borderBottomColor,borderLeftColor,borderRightColor,borderTopColor,color,outlineColor".split(","),function(e,d){g.fx.step[d]=function(c){if(!c.colorInit){var e;e=c.elem;var f=d,h;do{h=g.curCSS(e,f);if(""!=h&&"transparent"!=h||g.nodeName(e,"body"))break;f="backgroundColor"}while(e=e.parentNode);
|
||||
e=a(h);c.start=e;c.end=a(c.end);c.colorInit=!0}c.elem.style[d]="rgb("+[Math.max(Math.min(parseInt(c.pos*(c.end[0]-c.start[0])+c.start[0]),255),0),Math.max(Math.min(parseInt(c.pos*(c.end[1]-c.start[1])+c.start[1]),255),0),Math.max(Math.min(parseInt(c.pos*(c.end[2]-c.start[2])+c.start[2]),255),0)].join()+")"}});var e={transparent:[255,255,255]}})(jQuery);
|
||||
@@ -1,222 +1,231 @@
|
||||
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{2967CA64-7352-46E3-89C0-6BB3A0A13FC1}</ProjectGuid>
|
||||
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Spring.Northwind.Web</RootNamespace>
|
||||
<AssemblyName>Spring.Northwind.Web</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Common.Logging, Version=1.2.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Common.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Common.Logging.Log4Net, Version=1.2.0.2, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\Common.Logging.Log4Net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\lib\NHibernate32\net\3.5\Iesi.Collections.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\lib\NHibernate32\net\3.5\NHibernate.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Aop, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Spring.Aop.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Core, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Spring.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Data, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Spring.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Data.NHibernate32, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Spring.Data.NHibernate32.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Web, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Spring.Web.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\System.Data.SQLite.DLL</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Extensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Web.Services" />
|
||||
<Reference Include="System.EnterpriseServices" />
|
||||
<Reference Include="System.Web.Mobile" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="CSS\style.css" />
|
||||
<Content Include="CustomerEditor.aspx" />
|
||||
<Content Include="CustomerList.aspx" />
|
||||
<Content Include="CustomerOrders.aspx" />
|
||||
<Content Include="CustomerView.aspx" />
|
||||
<Content Include="Default.aspx" />
|
||||
<Content Include="FulfillmentResult.aspx" />
|
||||
<Content Include="Global.asax" />
|
||||
<Content Include="Img\bg-spring.png" />
|
||||
<Content Include="Img\footern.gif" />
|
||||
<Content Include="Img\header-spring.png" />
|
||||
<Content Include="Img\logo.png" />
|
||||
<Content Include="Img\springNet_release.png" />
|
||||
<Content Include="Logs\log.txt" />
|
||||
<Content Include="Web.config" />
|
||||
<Content Include="Web.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CustomerEditor.aspx.designer.cs">
|
||||
<DependentUpon>CustomerEditor.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerList.aspx.designer.cs">
|
||||
<DependentUpon>CustomerList.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerOrders.aspx.designer.cs">
|
||||
<DependentUpon>CustomerOrders.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerView.aspx.designer.cs">
|
||||
<DependentUpon>CustomerView.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Default.aspx.designer.cs">
|
||||
<DependentUpon>Default.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FulfillmentResult.aspx.designer.cs">
|
||||
<DependentUpon>FulfillmentResult.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controller\ICustomerEditController.cs" />
|
||||
<Compile Include="Controller\NHibernateCustomerEditController.cs" />
|
||||
<Compile Include="CustomerEditor.aspx.cs">
|
||||
<DependentUpon>CustomerEditor.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerList.aspx.cs">
|
||||
<DependentUpon>CustomerList.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerOrders.aspx.cs">
|
||||
<DependentUpon>CustomerOrders.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerView.aspx.cs">
|
||||
<DependentUpon>CustomerView.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Default.aspx.cs">
|
||||
<DependentUpon>Default.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FulfillmentResult.aspx.cs">
|
||||
<DependentUpon>FulfillmentResult.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Shared\MasterPage.master.cs">
|
||||
<DependentUpon>MasterPage.master</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Shared\MasterPage.master.designer.cs">
|
||||
<DependentUpon>MasterPage.master</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="App_Themes\Spring\Spring.skin" />
|
||||
<Content Include="Config\Aspects.xml" />
|
||||
<Content Include="Config\Log4Net.xml" />
|
||||
<Content Include="Shared\MasterPage.master" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Spring.Northwind.Dao.NHibernate\Spring.Northwind.Dao.NHibernate.2008.csproj">
|
||||
<Project>{6E4F55A0-C281-4706-A08B-BDEC2D2FBDA4}</Project>
|
||||
<Name>Spring.Northwind.Dao.NHibernate.2008</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Spring.Northwind.Dao\Spring.Northwind.Dao.2008.csproj">
|
||||
<Project>{7F45EEA2-50AC-44E2-85A6-2FFB02E38C44}</Project>
|
||||
<Name>Spring.Northwind.Dao.2008</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Spring.Northwind.Service\Spring.Northwind.Service.2008.csproj">
|
||||
<Project>{9E15876F-E9E0-43B7-9874-B54F163757D6}</Project>
|
||||
<Name>Spring.Northwind.Service.2008</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="App_Data\" />
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />
|
||||
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{2967CA64-7352-46E3-89C0-6BB3A0A13FC1}</ProjectGuid>
|
||||
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Spring.Northwind.Web</RootNamespace>
|
||||
<AssemblyName>Spring.Northwind.Web</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Common.Logging, Version=1.2.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Common.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Common.Logging.Log4Net, Version=1.2.0.2, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\Common.Logging.Log4Net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\lib\NHibernate32\net\3.5\Iesi.Collections.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\lib\NHibernate32\net\3.5\NHibernate.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Aop, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Spring.Aop.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Core, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Spring.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Data, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Spring.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Data.NHibernate32, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Spring.Data.NHibernate32.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Web, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\3.5\debug\Spring.Web.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\System.Data.SQLite.DLL</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Extensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Web.Services" />
|
||||
<Reference Include="System.EnterpriseServices" />
|
||||
<Reference Include="System.Web.Mobile" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="CSS\style.css" />
|
||||
<Content Include="CustomerEditor.aspx" />
|
||||
<Content Include="CustomerList.aspx" />
|
||||
<Content Include="CustomerOrders.aspx" />
|
||||
<Content Include="CustomerView.aspx" />
|
||||
<Content Include="Default.aspx" />
|
||||
<Content Include="FulfillmentResult.aspx" />
|
||||
<Content Include="Global.asax" />
|
||||
<Content Include="Img\bg-spring.png" />
|
||||
<Content Include="Img\footern.gif" />
|
||||
<Content Include="Img\header-spring.png" />
|
||||
<Content Include="Img\logo.png" />
|
||||
<Content Include="Img\springNet_release.png" />
|
||||
<Content Include="Logs\log.txt" />
|
||||
<Content Include="Web.net40.config" />
|
||||
<Content Include="Web.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CustomerEditor.aspx.designer.cs">
|
||||
<DependentUpon>CustomerEditor.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerList.aspx.designer.cs">
|
||||
<DependentUpon>CustomerList.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerOrders.aspx.designer.cs">
|
||||
<DependentUpon>CustomerOrders.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerView.aspx.designer.cs">
|
||||
<DependentUpon>CustomerView.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Default.aspx.designer.cs">
|
||||
<DependentUpon>Default.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FulfillmentResult.aspx.designer.cs">
|
||||
<DependentUpon>FulfillmentResult.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controller\ICustomerEditController.cs" />
|
||||
<Compile Include="Controller\NHibernateCustomerEditController.cs" />
|
||||
<Compile Include="CustomerEditor.aspx.cs">
|
||||
<DependentUpon>CustomerEditor.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerList.aspx.cs">
|
||||
<DependentUpon>CustomerList.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerOrders.aspx.cs">
|
||||
<DependentUpon>CustomerOrders.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerView.aspx.cs">
|
||||
<DependentUpon>CustomerView.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Default.aspx.cs">
|
||||
<DependentUpon>Default.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FulfillmentResult.aspx.cs">
|
||||
<DependentUpon>FulfillmentResult.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Shared\MasterPage.master.cs">
|
||||
<DependentUpon>MasterPage.master</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Shared\MasterPage.master.designer.cs">
|
||||
<DependentUpon>MasterPage.master</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="App_Themes\Spring\Spring.skin" />
|
||||
<Content Include="Config\Aspects.xml" />
|
||||
<Content Include="Config\Log4Net.xml" />
|
||||
<Content Include="Shared\MasterPage.master" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Spring.Northwind.Dao.NHibernate\Spring.Northwind.Dao.NHibernate.2008.csproj">
|
||||
<Project>{6E4F55A0-C281-4706-A08B-BDEC2D2FBDA4}</Project>
|
||||
<Name>Spring.Northwind.Dao.NHibernate.2008</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Spring.Northwind.Dao\Spring.Northwind.Dao.2008.csproj">
|
||||
<Project>{7F45EEA2-50AC-44E2-85A6-2FFB02E38C44}</Project>
|
||||
<Name>Spring.Northwind.Dao.2008</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Spring.Northwind.Service\Spring.Northwind.Service.2008.csproj">
|
||||
<Project>{9E15876F-E9E0-43B7-9874-B54F163757D6}</Project>
|
||||
<Name>Spring.Northwind.Service.2008</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Web.net30.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Web.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="App_Data\" />
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>False</UseIIS>
|
||||
<AutoAssignPort>True</AutoAssignPort>
|
||||
<DevelopmentServerPort>60934</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
<IISUrl>
|
||||
</IISUrl>
|
||||
<NTLMAuthentication>False</NTLMAuthentication>
|
||||
<UseCustomServer>False</UseCustomServer>
|
||||
<CustomServerUrl>
|
||||
</CustomServerUrl>
|
||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||
</WebProjectProperties>
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
-->
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>False</UseIIS>
|
||||
<AutoAssignPort>True</AutoAssignPort>
|
||||
<DevelopmentServerPort>2937</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
<IISUrl>
|
||||
</IISUrl>
|
||||
<NTLMAuthentication>False</NTLMAuthentication>
|
||||
<UseCustomServer>False</UseCustomServer>
|
||||
<CustomServerUrl>
|
||||
</CustomServerUrl>
|
||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||
</WebProjectProperties>
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>copy "$(ProjectDir)Web.net30.config" "$(ProjectDir)Web.config" /Y</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -1,223 +1,223 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{2967CA64-7352-46E3-89C0-6BB3A0A13FC1}</ProjectGuid>
|
||||
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Spring.Northwind.Web</RootNamespace>
|
||||
<AssemblyName>Spring.Northwind.Web</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation />
|
||||
<TargetFrameworkProfile />
|
||||
<UseIISExpress>false</UseIISExpress>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Common.Logging, Version=1.2.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Common.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Common.Logging.Log4Net, Version=1.2.0.2, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\Common.Logging.Log4Net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\lib\NHibernate32\net\4.0\Iesi.Collections.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\lib\NHibernate32\net\4.0\NHibernate.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Aop, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Spring.Aop.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Core, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Spring.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Data, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Spring.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Data.NHibernate32, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Spring.Data.NHibernate32.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Web, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Spring.Web.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\System.Data.SQLite.DLL</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.ApplicationServices" />
|
||||
<Reference Include="System.Web.DynamicData" />
|
||||
<Reference Include="System.Web.Entity" />
|
||||
<Reference Include="System.Web.Extensions" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Web.Services" />
|
||||
<Reference Include="System.EnterpriseServices" />
|
||||
<Reference Include="System.Web.Mobile" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="CSS\style.css" />
|
||||
<Content Include="CustomerEditor.aspx" />
|
||||
<Content Include="CustomerList.aspx" />
|
||||
<Content Include="CustomerOrders.aspx" />
|
||||
<Content Include="CustomerView.aspx" />
|
||||
<Content Include="Default.aspx" />
|
||||
<Content Include="FulfillmentResult.aspx" />
|
||||
<Content Include="Global.asax" />
|
||||
<Content Include="Img\bg-spring.png" />
|
||||
<Content Include="Img\footern.gif" />
|
||||
<Content Include="Img\header-spring.png" />
|
||||
<Content Include="Img\logo.png" />
|
||||
<Content Include="Img\springNet_release.png" />
|
||||
<Content Include="Logs\log.txt" />
|
||||
<Content Include="Web.config" />
|
||||
<Content Include="Web.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CustomerEditor.aspx.designer.cs">
|
||||
<DependentUpon>CustomerEditor.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerList.aspx.designer.cs">
|
||||
<DependentUpon>CustomerList.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerOrders.aspx.designer.cs">
|
||||
<DependentUpon>CustomerOrders.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerView.aspx.designer.cs">
|
||||
<DependentUpon>CustomerView.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Default.aspx.designer.cs">
|
||||
<DependentUpon>Default.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FulfillmentResult.aspx.designer.cs">
|
||||
<DependentUpon>FulfillmentResult.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controller\ICustomerEditController.cs" />
|
||||
<Compile Include="Controller\NHibernateCustomerEditController.cs" />
|
||||
<Compile Include="CustomerEditor.aspx.cs">
|
||||
<DependentUpon>CustomerEditor.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerList.aspx.cs">
|
||||
<DependentUpon>CustomerList.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerOrders.aspx.cs">
|
||||
<DependentUpon>CustomerOrders.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerView.aspx.cs">
|
||||
<DependentUpon>CustomerView.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Default.aspx.cs">
|
||||
<DependentUpon>Default.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FulfillmentResult.aspx.cs">
|
||||
<DependentUpon>FulfillmentResult.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Shared\MasterPage.master.cs">
|
||||
<DependentUpon>MasterPage.master</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Shared\MasterPage.master.designer.cs">
|
||||
<DependentUpon>MasterPage.master</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="App_Themes\Spring\Spring.skin" />
|
||||
<Content Include="Config\Aspects.xml" />
|
||||
<Content Include="Config\Log4Net.xml" />
|
||||
<Content Include="Shared\MasterPage.master" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Spring.Northwind.Dao.NHibernate\Spring.Northwind.Dao.NHibernate.2010.csproj">
|
||||
<Project>{6E4F55A0-C281-4706-A08B-BDEC2D2FBDA4}</Project>
|
||||
<Name>Spring.Northwind.Dao.NHibernate.2010</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Spring.Northwind.Dao\Spring.Northwind.Dao.2010.csproj">
|
||||
<Project>{7F45EEA2-50AC-44E2-85A6-2FFB02E38C44}</Project>
|
||||
<Name>Spring.Northwind.Dao.2010</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Spring.Northwind.Service\Spring.Northwind.Service.2010.csproj">
|
||||
<Project>{9E15876F-E9E0-43B7-9874-B54F163757D6}</Project>
|
||||
<Name>Spring.Northwind.Service.2010</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="App_Data\" />
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{2967CA64-7352-46E3-89C0-6BB3A0A13FC1}</ProjectGuid>
|
||||
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Spring.Northwind.Web</RootNamespace>
|
||||
<AssemblyName>Spring.Northwind.Web</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation />
|
||||
<TargetFrameworkProfile />
|
||||
<UseIISExpress>false</UseIISExpress>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Common.Logging, Version=1.2.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Common.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Common.Logging.Log4Net, Version=1.2.0.2, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\Common.Logging.Log4Net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\lib\NHibernate32\net\4.0\Iesi.Collections.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\lib\NHibernate32\net\4.0\NHibernate.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Aop, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Spring.Aop.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Core, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Spring.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Data, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Spring.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Data.NHibernate32, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Spring.Data.NHibernate32.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Spring.Web, Version=0.0.0.35000, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\bin\net\4.0\debug\Spring.Web.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\lib\net\2.0\System.Data.SQLite.DLL</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.ApplicationServices" />
|
||||
<Reference Include="System.Web.DynamicData" />
|
||||
<Reference Include="System.Web.Entity" />
|
||||
<Reference Include="System.Web.Extensions" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Web.Services" />
|
||||
<Reference Include="System.EnterpriseServices" />
|
||||
<Reference Include="System.Web.Mobile" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="CSS\style.css" />
|
||||
<Content Include="CustomerEditor.aspx" />
|
||||
<Content Include="CustomerList.aspx" />
|
||||
<Content Include="CustomerOrders.aspx" />
|
||||
<Content Include="CustomerView.aspx" />
|
||||
<Content Include="Default.aspx" />
|
||||
<Content Include="FulfillmentResult.aspx" />
|
||||
<Content Include="Global.asax" />
|
||||
<Content Include="Img\bg-spring.png" />
|
||||
<Content Include="Img\footern.gif" />
|
||||
<Content Include="Img\header-spring.png" />
|
||||
<Content Include="Img\logo.png" />
|
||||
<Content Include="Img\springNet_release.png" />
|
||||
<Content Include="Logs\log.txt" />
|
||||
<Content Include="Web.config" />
|
||||
<Content Include="Web.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CustomerEditor.aspx.designer.cs">
|
||||
<DependentUpon>CustomerEditor.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerList.aspx.designer.cs">
|
||||
<DependentUpon>CustomerList.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerOrders.aspx.designer.cs">
|
||||
<DependentUpon>CustomerOrders.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CustomerView.aspx.designer.cs">
|
||||
<DependentUpon>CustomerView.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Default.aspx.designer.cs">
|
||||
<DependentUpon>Default.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FulfillmentResult.aspx.designer.cs">
|
||||
<DependentUpon>FulfillmentResult.aspx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controller\ICustomerEditController.cs" />
|
||||
<Compile Include="Controller\NHibernateCustomerEditController.cs" />
|
||||
<Compile Include="CustomerEditor.aspx.cs">
|
||||
<DependentUpon>CustomerEditor.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerList.aspx.cs">
|
||||
<DependentUpon>CustomerList.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerOrders.aspx.cs">
|
||||
<DependentUpon>CustomerOrders.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomerView.aspx.cs">
|
||||
<DependentUpon>CustomerView.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Default.aspx.cs">
|
||||
<DependentUpon>Default.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FulfillmentResult.aspx.cs">
|
||||
<DependentUpon>FulfillmentResult.aspx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Shared\MasterPage.master.cs">
|
||||
<DependentUpon>MasterPage.master</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Shared\MasterPage.master.designer.cs">
|
||||
<DependentUpon>MasterPage.master</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="App_Themes\Spring\Spring.skin" />
|
||||
<Content Include="Config\Aspects.xml" />
|
||||
<Content Include="Config\Log4Net.xml" />
|
||||
<Content Include="Shared\MasterPage.master" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Spring.Northwind.Dao.NHibernate\Spring.Northwind.Dao.NHibernate.2010.csproj">
|
||||
<Project>{6E4F55A0-C281-4706-A08B-BDEC2D2FBDA4}</Project>
|
||||
<Name>Spring.Northwind.Dao.NHibernate.2010</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Spring.Northwind.Dao\Spring.Northwind.Dao.2010.csproj">
|
||||
<Project>{7F45EEA2-50AC-44E2-85A6-2FFB02E38C44}</Project>
|
||||
<Name>Spring.Northwind.Dao.2010</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Spring.Northwind.Service\Spring.Northwind.Service.2010.csproj">
|
||||
<Project>{9E15876F-E9E0-43B7-9874-B54F163757D6}</Project>
|
||||
<Name>Spring.Northwind.Service.2010</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="App_Data\" />
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>False</UseIIS>
|
||||
<AutoAssignPort>True</AutoAssignPort>
|
||||
<DevelopmentServerPort>60934</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
<IISUrl>
|
||||
</IISUrl>
|
||||
<NTLMAuthentication>False</NTLMAuthentication>
|
||||
<UseCustomServer>False</UseCustomServer>
|
||||
<CustomServerUrl>
|
||||
</CustomServerUrl>
|
||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||
</WebProjectProperties>
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
-->
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>False</UseIIS>
|
||||
<AutoAssignPort>True</AutoAssignPort>
|
||||
<DevelopmentServerPort>2431</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
<IISUrl>
|
||||
</IISUrl>
|
||||
<NTLMAuthentication>False</NTLMAuthentication>
|
||||
<UseCustomServer>False</UseCustomServer>
|
||||
<CustomServerUrl>
|
||||
</CustomServerUrl>
|
||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||
</WebProjectProperties>
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
@@ -61,8 +61,8 @@
|
||||
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
|
||||
<add verb="*" path="ContextMonitor.ashx" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
|
||||
</httpHandlers>
|
||||
<compilation debug="true" targetFramework="4.0"/>
|
||||
<pages theme="Spring" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
|
||||
<compilation debug="true"/>
|
||||
<pages theme="Spring">
|
||||
<controls>
|
||||
<add tagPrefix="spring" namespace="Spring.Web.UI.Controls" assembly="Spring.Web"/>
|
||||
</controls>
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Note: As an alternative to hand editing this file you can use the
|
||||
web admin tool to configure settings for your application. Use
|
||||
the Website->Asp.Net Configuration option in Visual Studio.
|
||||
A full list of settings and comments can be found in
|
||||
machine.config.comments usually located in
|
||||
\Windows\Microsoft.Net\Framework\v2.x\Config
|
||||
-->
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="common">
|
||||
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/>
|
||||
</sectionGroup>
|
||||
<sectionGroup name="spring">
|
||||
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
|
||||
<section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
|
||||
</sectionGroup>
|
||||
<section name="databaseSettings" type="System.Configuration.NameValueSectionHandler"/>
|
||||
</configSections>
|
||||
<common>
|
||||
<logging>
|
||||
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
|
||||
<!-- choices are INLINE, FILE, FILE-WATCH, EXTERNAL-->
|
||||
<!-- otherwise BasicConfigurer.Configure is used -->
|
||||
<!-- log4net configuration file is specified with key configFile-->
|
||||
<arg key="configType" value="FILE-WATCH"/>
|
||||
<arg key="configFile" value="~/Config/Log4Net.xml"/>
|
||||
</factoryAdapter>
|
||||
</logging>
|
||||
</common>
|
||||
<spring>
|
||||
<parsers>
|
||||
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/>
|
||||
<parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data"/>
|
||||
</parsers>
|
||||
<context>
|
||||
<resource uri="~/Config/Aspects.xml"/>
|
||||
<resource uri="assembly://Spring.Northwind.Dao.NHibernate/Spring.Northwind.Dao/Dao.xml"/>
|
||||
<resource uri="assembly://Spring.Northwind.Service/Spring.Northwind.Service/Services.xml"/>
|
||||
<resource uri="~/Web.xml"/>
|
||||
</context>
|
||||
</spring>
|
||||
<!-- These properties are referenced in Dao.xml -->
|
||||
<databaseSettings>
|
||||
<add key="db.datasource" value=".\SQLEXPRESS; Integrated Security=true; AttachDbFilename=|DataDirectory|northwnd.mdf; User Instance=true;"/>
|
||||
<add key="db.user" value="springqa"/>
|
||||
<add key="db.password" value="springqa"/>
|
||||
<add key="db.database" value="Northwind"/>
|
||||
</databaseSettings>
|
||||
<appSettings>
|
||||
<add key="Spring.Data.NHibernate.Support.OpenSessionInViewModule.SessionFactoryObjectName" value="NHibernateSessionFactory"/>
|
||||
</appSettings>
|
||||
<connectionStrings/>
|
||||
<system.web>
|
||||
<httpModules>
|
||||
<add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
|
||||
<add name="OpenSessionInView" type="Spring.Data.NHibernate.Support.OpenSessionInViewModule, Spring.Data.NHibernate32"/>
|
||||
</httpModules>
|
||||
<httpHandlers>
|
||||
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
|
||||
<add verb="*" path="ContextMonitor.ashx" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
|
||||
</httpHandlers>
|
||||
<compilation debug="true"/>
|
||||
<pages theme="Spring">
|
||||
<controls>
|
||||
<add tagPrefix="spring" namespace="Spring.Web.UI.Controls" assembly="Spring.Web"/>
|
||||
</controls>
|
||||
</pages>
|
||||
</system.web>
|
||||
</configuration>
|
||||
@@ -0,0 +1,71 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Note: As an alternative to hand editing this file you can use the
|
||||
web admin tool to configure settings for your application. Use
|
||||
the Website->Asp.Net Configuration option in Visual Studio.
|
||||
A full list of settings and comments can be found in
|
||||
machine.config.comments usually located in
|
||||
\Windows\Microsoft.Net\Framework\v2.x\Config
|
||||
-->
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="common">
|
||||
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/>
|
||||
</sectionGroup>
|
||||
<sectionGroup name="spring">
|
||||
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
|
||||
<section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
|
||||
</sectionGroup>
|
||||
<section name="databaseSettings" type="System.Configuration.NameValueSectionHandler"/>
|
||||
</configSections>
|
||||
<common>
|
||||
<logging>
|
||||
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
|
||||
<!-- choices are INLINE, FILE, FILE-WATCH, EXTERNAL-->
|
||||
<!-- otherwise BasicConfigurer.Configure is used -->
|
||||
<!-- log4net configuration file is specified with key configFile-->
|
||||
<arg key="configType" value="FILE-WATCH"/>
|
||||
<arg key="configFile" value="~/Config/Log4Net.xml"/>
|
||||
</factoryAdapter>
|
||||
</logging>
|
||||
</common>
|
||||
<spring>
|
||||
<parsers>
|
||||
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/>
|
||||
<parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data"/>
|
||||
</parsers>
|
||||
<context>
|
||||
<resource uri="~/Config/Aspects.xml"/>
|
||||
<resource uri="assembly://Spring.Northwind.Dao.NHibernate/Spring.Northwind.Dao/Dao.xml"/>
|
||||
<resource uri="assembly://Spring.Northwind.Service/Spring.Northwind.Service/Services.xml"/>
|
||||
<resource uri="~/Web.xml"/>
|
||||
</context>
|
||||
</spring>
|
||||
<!-- These properties are referenced in Dao.xml -->
|
||||
<databaseSettings>
|
||||
<add key="db.datasource" value=".\SQLEXPRESS; Integrated Security=true; AttachDbFilename=|DataDirectory|northwnd.mdf; User Instance=true;"/>
|
||||
<add key="db.user" value="springqa"/>
|
||||
<add key="db.password" value="springqa"/>
|
||||
<add key="db.database" value="Northwind"/>
|
||||
</databaseSettings>
|
||||
<appSettings>
|
||||
<add key="Spring.Data.NHibernate.Support.OpenSessionInViewModule.SessionFactoryObjectName" value="NHibernateSessionFactory"/>
|
||||
</appSettings>
|
||||
<connectionStrings/>
|
||||
<system.web>
|
||||
<httpModules>
|
||||
<add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
|
||||
<add name="OpenSessionInView" type="Spring.Data.NHibernate.Support.OpenSessionInViewModule, Spring.Data.NHibernate32"/>
|
||||
</httpModules>
|
||||
<httpHandlers>
|
||||
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
|
||||
<add verb="*" path="ContextMonitor.ashx" type="Spring.Web.Support.ContextMonitor, Spring.Web"/>
|
||||
</httpHandlers>
|
||||
<compilation debug="true" targetFramework="4.0"/>
|
||||
<pages theme="Spring" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
|
||||
<controls>
|
||||
<add tagPrefix="spring" namespace="Spring.Web.UI.Controls" assembly="Spring.Web"/>
|
||||
</controls>
|
||||
</pages>
|
||||
</system.web>
|
||||
</configuration>
|
||||