﻿var Html = { Timer: null };
var maxMessageLength = 10;

function createSilverlight()
{
    var scene = new NicoFanSite.Page();
    var windowlessEnabled = (/(MSIE|Firefox)/.test(Silverlight.ua.Browser)).toString();
    Silverlight.createObjectEx(
	{
		source: "Page.xaml",
		parentElement: document.getElementById("silverlightControlHost"),
		id: "SilverlightControl",
		properties: {
			width: "100%",
			height: "100%",
			inplaceInstallPrompt: true,
			version: "1.0",
			isWindowless: windowlessEnabled
		},
		events: 
		{
			onLoad: Silverlight.createDelegate(scene, scene.handleLoad),
			onError: function(sender, args) {}	
		}
	});
}


if (!window.Silverlight) 
	window.Silverlight = {};

Silverlight.createDelegate = function(instance, method)
{
    return function()
	{
		return method.apply(instance, arguments);
	}
}

function ChangeTextboxesVisibility(flag)
{
    if (Html.Timer) clearTimeout(Html.Timer);
    SetTextboxesVisibility("hidden");
    if (flag)
    {
        Html.Timer = setTimeout(function()
        {
            SetTextboxesVisibility("visible");
            document.getElementById("nickTextbox").focus();
        }, 2500);
    }
}

function SetTextboxesVisibility(visibility)
{
    document.getElementById("nickTextbox").className = visibility;
    document.getElementById("messageTextbox").className = visibility;
}

function XHRLoader(
    url,                //URL xml-файла
    params,             //параметры запроса
    method,             //метод запроса (GET или POST)
    successDel,         //функция, выполяемая при успешном завершении запроса
    failDel,            //функция, выполняемая при неудачном завершении запроса
    externalParams      //делегат функции, передаваемой в successDel
    )
{
    var xmlhttp = CreateXHRObject();
    if (xmlhttp != null)
    {
        if (/\.ashx$/.test(url))
        {
            xmlhttp.open(method, (method == "POST" || !params) ? url : url + "?" + params, true);
        }
        else
        {
            //handler-прослойка
            xmlhttp.open(method, "handlers/xmlloader.ashx?url=" + url, true);
        }
        xmlhttp.onreadystatechange = function()
        {
            if (xmlhttp.readyState == 4)
            {
                if (xmlhttp.status == 200)
                {
                    if (successDel) successDel(xmlhttp.responseXML, url, externalParams);
                }
                else
                {
                    if (failDel) failDel();
                    DownloadFailed();
                }
            }
        };
	try
	{
            xmlhttp.ontimeout = function()
            {
                if (failDel) failDel();
                DownloadFailed();
            };
	}
	catch (e) { }
        xmlhttp.send(method == "POST" ? params : null);
    }
    else { /*TODO: что делать?*/ }
}

function CreateXHRObject()
{
    var xmlhttp = null;
    if (window.XMLHttpRequest)
    {
        try
        {
            xmlhttp = new XMLHttpRequest();
        }
        catch (e) { }
    }
    else if (window.ActiveXObject)
    {
        try
        {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (E) { }
        }
    }
    return xmlhttp;
}
