﻿
/// <reference path="../../lib/jquery-1.4.2.min.js" />
/// <reference path="../sys/System.js" />
/// <reference path="../sys/System.Guid.js" />
/// <reference path="../sys/System.Web.setSourceIFrame.js" />
/// <reference path="../sys/System.ie_indexOf.js" />

/// <reference path="Controls.js" />

Controls.CrossDomainStorage = function (pagePath) {
    ///#region private fields

    var _thisRef = this;
    var _iframeid = null;
    var _iframe = null;
    var _domainDocument = null;
    var _iframeReady = false;

    ///#endregion
    this.onIFrameReady = function () { };//событие что iframe готов
    ///#region private methods

    function _getIFrame() {
        if (_iframeReady) {
            return $('#' + _iframeid);
        }
        else return null;
    }

    this.generateIFrame = function (clbck) {
        _iframeid = "ifCrossDomain";
        var ifStr = "<iframe style='display:none;' id='" + _iframeid + "' name=" + _iframeid + " ></iframe>";
        $('body').append(ifStr);
        _iframe = document.getElementById(_iframeid);
        System.Web.setSourceIframe(_iframe, _thisRef.pagePats, function () {
            _iframeReady = true;
            _thisRef.onIFrameReady();
        });
    }

    function _generateIFrame(data, clbck) {
        _iframeid = "ifCrossDomain";
        var ifStr = "<iframe style='display:none;' id='" + _iframeid + "' name=" + _iframeid + " ></iframe>";
        $('body').append(ifStr);
        _iframe = document.getElementById(_iframeid);
        System.Web.setSourceIframe(_iframe, _thisRef.pagePats, function () {
            _iframeReady = true;
            _sendData(data, clbck);
        });
    }

    function _sendData(d, clbck) {
        pm({
            target: window.frames["ifCrossDomain"],
            type: "get",
            data: d,
            success: clbck,
            url: pagePath
        });

    }

    ///#endregion

    ///#region public fields

    this.pagePats = pagePath || "";

    ///#endregion

    ///#region public methods 

    this.set = function (data, clbk) {
        ///<summary>передает данные в iframe c другого домена</summary>
        if (_iframeReady) _sendData(data, clbk);
        else _generateIFrame(data, clbk);
    }

}


