/*
 * $Id:$
 *
 * This is a javascript file used for displaying vocabulary type stuff 
 */


function playerPosition(anchor, container) {
    var pageOffset = document.viewport.getScrollOffsets()
    var pageDimen = document.viewport.getDimensions();
    var pageBb    = { top: pageOffset.top, right: pageOffset.left + pageDimen.width,
                      bottom: pageOffset.top + pageDimen.height, left: pageOffset.left };

    var containerDimen = container.getDimensions();

    var pos = { left: (pageDimen.width / 2) - (containerDimen.width / 2),
                top:  pageOffset.top + ((pageDimen.height / 2) - (containerDimen.height / 2))  };

    return pos;

}

function myVocabWidget(wordId, anchor) {
    var label =  $E('span', {}, anchor.isFavorite ? "Remove from My Vocabulary" : "Add to My Vocabulary");
    return $E('a', { className: 'favorite  spinner-container',
                     href: '#',
                     onclick: function() {
                         jQuery('#my-vocabulary-spinner').show();
                         jQuery.post(getToggleFavoriteUrl(),
                                     {type: 'dictionary', handle: wordId },
                                     function(data) {
                                         jQuery('#my-vocabulary-spinner').hide();
                                         if(data.status == 'OK') {
                                             label.innerHTML = data.is_favorite ?
                                                 "Remove from My Vocabulary" :
                                                 "Add to My Vocabulary";
                                             anchor.isFavorite = data.is_favorite;
                                         }else {
                                             alert(data.message);
                                         }
                                     },
                                     "json");
                         return false;
                     }},
              $E('div', {className: 'spinner', id: 'my-vocabulary-spinner' }),
              label);
}


function fillInPlayer(container, word, synonyms, wordId, videoUrl, anchor) {
    while(container.childNodes.length > 0) {
        container.removeChild(container.firstChild);
    }


    var contents = $E('div', {},
                      $E('div', {className: 'player', id: 'show-word-video-container' }),
                      $E('div', {className: 'term'}, "Term: ", $E('b', {}, word)),
                      (synonyms ? 
                       $E('div', {className: 'synonyms'}, "Synonyms: ", $E('b', {}, synonyms)) : ""),
                      myVocabWidget(wordId, anchor),
                      $E('a', {className: 'close', href: '#', 
                               onclick: function() { container.style.display = 'none'; return false; }},
                         "X"));       
    
    container.appendChild(contents);

    var obj = new SWFObject(getFlvPlayerSwfUrl(), "show-word-video-player", "307", "250", 9, "#000000");
    obj.addVariable('file', videoUrl);
    obj.write('show-word-video-container');
}


function showWord(anchor, wordId, videoUrl, isFavorite) {
    var word      = $(anchor).readAttribute('term');
    var synonyms  = $(anchor).readAttribute('synonyms');
    var container = $('vocab-word-container');


    if(anchor.isFavorite == undefined) {
        anchor.isFavorite = isFavorite;
    }

    fillInPlayer(container, word, synonyms, wordId, videoUrl, anchor);

    var pos = playerPosition(anchor, container);

    container.style.left    = pos.left + 'px';
    container.style.top     = pos.top  + 'px';
    container.style.display = 'block';


    return false;
}
