function SkypeWidgetLaunch() {
    // constants
    var self = this;
    this.nocache = false;
    //this.DOMAIN = 'x-skypepbua.dev';
    this.DOMAIN = 'skype.privatbank.ua';
    this.URI =  '/js/widget/launch.js';
    this.SCRIPT =  null;
    this.ID = null;

    /**
     * get get param from any string or window location
     */
    function gup( name , string)
    {
        var string = string||window.location.href;
        name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
        var regexS = "[\\?&]"+name+"=([^&#]*)";
        var regex = new RegExp( regexS );
        var results = regex.exec( string );
        if( results == null )
            return "";
        else
            return results[1];
    }

    function getParam(name) {
        if(null == self.SCRIPT) return '';
        var res = null;
        if((res = self.SCRIPT.getAttribute(name)) == null) {
            res = gup(name, self.SCRIPT.src);
            return res;
        }
        return res;
    }
    /**
         * return random param scting for loaded external files like styles and scripts
         * depends this.nocache
         */
    function getRandParam() {
        if(self.nocache == true) return '';
        return "?rand=" + Math.random();
    };

    function linkScript(file){
        var s = document.createElement('script');
        s.setAttribute('type', 'text/javascript');
        s.setAttribute('charset', 'UTF-8');
        s.setAttribute('src', self.SERVER+file+getRandParam());

        var head = document.getElementsByTagName('head')[0];
        var container = (head) ? head : document.body;
        container.appendChild(s);
    }

    function checkScript(script) {
        if(script.className == 'used') return false;
        var item = script;
        
        var re = new RegExp('http://(.+?)'+self.URI, 'i');
        if((res = re.exec(item.src)) !== null) {
            var domain = res[1];
            self.SCRIPT = script;
            self.DOMAIN = domain;
            self.SERVER = 'http://'+self.DOMAIN;
            self.ID = getParam('wid');
            self.TEMPLATE = getParam('template');
            item.className = 'used';
            return true;
        }
        return false;
    }

    function findScript() {
        
        var scripts;
        scripts=document.getElementsByTagName("script");
        var find=false;
        self.scriptContainer = null;
        for(var i=0; i<scripts.length && !find; i++){
            var script = scripts[i];
            if(checkScript(script) ) {
                find = true;
            }
            // объект, в который будем вставлять код при embed-mode
            if(find){
                self.scriptContainer = script.parentNode;
            }
        }
        return self.scriptContainer;
    }

    function getDiv(){
        var el = findScript();
        if(null == el) return null;// место вставки не обнаружено
        var ah = document.createElement('div');
        el.appendChild(ah);
        self.ctr = ah;
        return self.ctr;
    }

    var div = getDiv();
    // определение места вставки
    if(null == div || self.ID == null) {
        return;
    }
    // загрузка основного скрипта
    if(typeof SkypeWidget != 'function') {
        linkScript('/js/widget/SkypeWidget.js');
    }

    // ожизание загрузки скрипта
    var interval = setInterval(function() {
        if(typeof SkypeWidget == 'function') {
            clearInterval(interval);
            var container = div;
            // инстанцирование объекта и размещение его в контейнере
            var widget = new SkypeWidget({
                'id': self.ID,
                'container': div,
                'template': getParam('template', 'simple'),
                'domain': self.DOMAIN
            });
            //запуск магазина
            widget.main();
        }
    }, 50);
    return this;
}
function $fce(name) {
    return document.createElement(name);
}
if(typeof console == "undefined") {
    console = {
        debug: function(obj) {},
        log: function() {}
    };
}

new SkypeWidgetLaunch();
