/* Gadu-Gadu Plugin Interface
 * version 0.1
 *
 * (c) 2009 GG Network S.A.
 * http://dev.gadu-gadu.pl/
 *--------------------------------------------------------------------------*/

function GaduGadu() {

    var IE = !!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1);
    var Gecko = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') === -1;
    
    this.pluginObject = null;

    /**
     * Check if Gadu-Gadu browser extension is installed and available
     * @member GaduGadu
     * @type Boolean
     */
    this.isPluginAvailable = function() {
    
        if (Gecko && navigator.mimeTypes) {
            var pluginEntry = navigator.mimeTypes["application/gadu-gadu"];
            return !!(pluginEntry && pluginEntry.enabledPlugin);
        } else if (IE) {
            return !!(this.pluginObject);
        }
        return false;
    };
    
    /**
     * Check if Gadu-Gadu IM is installed
     * @member GaduGadu
     * @type Boolean
     */
    this.isNewGaduGaduInstalled = function() {                 
    
        return this.isPluginAvailable() && this.pluginObject.isNewGaduGaduInstalled;
    };
    
    /**
     * Returns Gadu-Gadu browser extension instance
     * @private
     * @member GaduGadu
     * @type Object
     */
    var getPluginInstance = function() {
    
        if (Gecko) {
            var objectElement = document.createElement('object');
            objectElement.type = 'application/gadu-gadu';
            objectElement.width = 0;
            objectElement.height = 0;
            document.body.appendChild(objectElement);
            return objectElement;
        } else if (IE) {
            try {
                return new ActiveXObject('ggbho.GGClass');
            } catch (e) {
                return null;
            }
        }
        return null;
    };
    
    this.pluginObject = getPluginInstance();

}
