var companyDetailButtonPrefix = 'company-detail-';
var companyDetailWindowCache  = new Array();

var initializeApplication = function(){
    UI.Window.setOptions({
        shadow: true,
        wired: true,
        show: function(e1){e1.appear({ duration: 0.2 }) },
        hide: function(e1){
            e1.fade({ duration: 0.2})
        },
        theme: 'vista',
        shadowTheme: 'drop_shadow',
        resizable: true,
        draggable: true
    });
}

var showCompanyDetail = function(event){
    var companyButton_       = Event.findElement(event, 'span');
    var companyPrefixLength_ = companyDetailButtonPrefix.length;
    var companyId_           = companyButton_.id.substr(companyPrefixLength_);

    showCompanyDetailPopup(companyId_);
}

var showCompanyDetailPopup = function(companyId_){
    if( !Object.isUndefined(companyDetailWindowCache[companyId_]) ){
        var window_     = companyDetailWindowCache[companyId_];
        window_.destroy();
    }

    //Get Current View Offset
    var viewPort_   = document.viewport.getScrollOffsets();

    var windowPositionTop_  = viewPort_.top + (document.viewport.getHeight() * Math.random()) - 280;                        //-280 to prevent the window overflow to height in the screen
    var windowPositionLeft_ = (document.viewport.getWidth() * Math.random())-300;   //-300 to prevent the window overflow to width in the screen

    var minMargin_          = 50;
    //Prevent window position under min margin
    if( windowPositionLeft_ < minMargin_ ){
        windowPositionLeft_ = minMargin_;
    }
    if( windowPositionTop_ < minMargin_ ){
        windowPositionTop_  = minMargin_;
    }

    var window_     = new UI.Window({
        top:    windowPositionTop_,
        left:   windowPositionLeft_
    });

    var url_        = companyDetailUrl+"&companyId="+companyId_;

    var startTimestamp = new Date();
        startTimestamp = startTimestamp.getTime();

    new Ajax.Request(url_, {
        method: 'get',
        onSuccess: function(transport){
            var responseText = transport.responseText;

            if( responseText.isJSON() ){
                var jsonFormat_ = responseText.evalJSON();
                window_.setHeader(jsonFormat_.header).setContent(jsonFormat_.content);
            }

            var endTimestamp = new Date();
                endTimestamp = endTimestamp.getTime();

            var usedTime     = new Date();
                usedTime.setTime(endTimestamp - startTimestamp);

            window_.setFooter(LANG['usedSecond']+usedTime.getSeconds());

            window_.show();
            window_.adapt.bind(window_).delay(1);
            companyDetailWindowCache[companyId_] = window_;
        }
    });
}

var getLoadingContent = function(){
    return '<div id="pub-yp-ajax-layer"><div class="message">'+LANG['loading']+'</div><div class="spinner"></div></div>';
}

Event.observe(window, 'load', initializeApplication);