function isBrowserIE() {
    return (! +"\v1");
}

// This function returns the appropriate reference, depending on the browser.
function getFlexApp(appName) {
    if (appName == undefined) appName = "ProductsApp";
    if (isBrowserIE()) {
        return window[appName];
    }
    else {
        return document[appName];
    }
}

// *** App Controller functions ***

var productsController = {
    currentProductId: 0,
    isInitialized: false,
    onProductSelected: function(productId) {
        if (productId != undefined)
            this.currentProductId = productId;
        if (this.isInitialized /*|| isBrowserIE()*/ || $.browser.safari) {
            var res = productsController.getApp('ProductsApp');
            try {
                res.onProductSelecting(this.currentProductId);
            }
            catch (e) { }
        }
    },
    getApp: function(appName) {
        if (appName == undefined) appName = "ProductsApp";
        var res = document[appName];
        if (!res)
            res = window[appName];
        return res;
    },
    onError: function(msg) {
        ShowWin(msg, 'Win');
    },
    onSendMessage: function(productName) {
        CRMJsEvent.sentEvent({ type: 'onSendMessage', attr: productName });
    },
    onAddProductToFavorites: function(param) {
        CRMJsEvent.sentEvent({ type: 'onAddProductToFavorites', attr: { id: param.id} });
    },
    onAddProductToCart: function(param) {
        CRMJsEvent.sentEvent({ type: 'evtProductAddToCart', attr: param });
    },
    onFlashInitialized: function() {
        this.isInitialized = true;
        if (this.currentProductId != 0) {
            this.onProductSelected(this.currentProductId);
        }
        //alert("Flash init");
    },
    onFlashHiding: function() {
        //this.currentProductId = 0;
        //this.isInitialized = false;
    },
    onShowSizesChart: function() {
    window.open(ApplicationUrl + 'sizes', null, 'width=600,height=600,toolbar=no,scrollbars=yes,location=no,status=no');
    },
    onClose: function() {
        CRMJsEvent.sentEvent({ type: 'evtOnProductHidded', attr: {} });
    }
}

function onFlashEventSending(param) {
    // Temporary region
    var msg = '';
    for (p in param) {
        msg += p + '=' + param[p] + '  ';
    }
    if (document.forms[0].output!=undefined)
        document.forms[0].output.value += msg + '\n';
    // endregion

    switch (param.evtType) {
        case 'onError': productsController.onError(param.msg); break;
        case 'onAddToCartEvent': productsController.onAddProductToCart(param); break;
        case 'onSendUserMessage': productsController.onSendMessage(param.productName); break;
        case 'onAddToFavoritesEvent': productsController.onAddProductToFavorites(param); break;
        case 'onInitialized': productsController.onFlashInitialized(); break;
        case 'onClose': productsController.onClose(); break;
        case 'onShowSizesChart':
            //productsController.onShowSizesChart();
            return "window.open('" + ApplicationUrl + "sizes', null, 'width=600,height=600,toolbar=no,scrollbars=yes,location=no,status=no')";
            break;
        default: break; // TODO : show error message
    }    
}
