function playlists (elem, num, p) {

    if (!$(elem)) {
       //alert('Content element ['+elem+'] not found');
       return;
    }

    var param = (typeof(p) == 'undefined') ? {} : p;
    var hash  = $H({option:'com_media', task:'x_playlists', tag:elem, limit:num});
    hash.update(param);

    new Ajax.Request(_absolutePath+'/ajax.lnk.php', {
       method: 'get',
       parameters: hash.toObject(),
       //onLoading: function() { $(elem).update('loading..') },
       onFailure: function() { $(elem).update('error'); },
       onSuccess: function(transport, json) {
          var text    = transport.responseText;
          var scripts = text.extractScripts();

          if (scripts.length > 0) { scripts.map(function(script) { eval(script); }); }
          if (json && (json.status == -1 || json.status == 0)) { $(elem).update(json.message); }
          else if (json && json.status == 1) { $(elem).update(text); }
       }
    });
} // playlists

function searchVideo (elem, p) {
    if (!$(elem)) {
       //alert('Content element ['+elem+'] not found');
       return;
    }

    var param = (typeof(p) == 'undefined') ? {} : p;
    var hash  = $H({option:'com_media', task:'x_searchvideo', tag:elem});
    hash.update(param);

    new Ajax.Request(_absolutePath+'/ajax.lnk.php', {
       method: 'get',
       parameters: hash.toObject(),
       //onLoading: function() { $(elem).update('loading..') },
       onFailure: function() { $(elem).update('error'); },
       onSuccess: function(transport, json) {
          var text    = transport.responseText;
          //var scripts = text.extractScripts();

          //if (scripts.length > 0) { scripts.map(function(script) { eval(script); }); }
          if (json && (json.status == -1 || json.status == 0)) { $(elem).update(json.message); }
          else if (json && json.status == 1) {
             if (typeof(overlib) == 'undefined') {
                includeJS('overlib.js');
             }
             $(elem).update(text);
          }
       }
    });
} // searchVideo


function videoList (elem, userId) {
    new Ajax.Request(_absolutePath+'/ajax.lnk.php', {
       method: 'get',
       parameters: { option:'com_media', task:'myvideo', uid:userId },
       //onLoading: function() { $(elem).update('loading..') },
       onFailure: function() { $(elem).update('error'); },
       onSuccess: function(transport) {
          if (transport.responseText == -1) { $(elem).update('error'); }
          else if (transport.responseText == 0) { $(elem).update('no any videos yet'); }
          else { $(elem).setStyle({height:'290px'}); listVideo(elem, transport.responseText); }
       }
    });
} // videoList

function mostViewVideo (elem, num) {
    new Ajax.Request(_absolutePath+'/ajax.lnk.php', {
       method: 'get',
       parameters: { option:'com_media', task:'mostviewvideo', limit:num },
       //onLoading: function() { $(elem).update('loading..') },
       onFailure: function() { $(elem).update('error'); },
       onSuccess: function(transport) {
          if (transport.responseText == -1) { $(elem).update('error'); }
          else if (transport.responseText == 0) { $(elem).update('no any videos at the moment'); }
          else { $(elem).update('.'); listVideo(elem, transport.responseText); }
       }
    });
} // mostViewVideo

function listVideo (elem, transport) {
    var v    = transport.evalJSON();
    var html = $('videoNest').innerHTML;
    var temp = '';
    var cont = '';

    html = html.replace(/%TYPE%/, v.type);
    html = html.replace(/%THUMBPATH%/, v.thumb);
    html = html.replace(/%PATH%/, v.path);
    html = html.replace(/%LINK%/, v.link);

    v.video.each( function(conv) {
       temp = html.replace(/%THUMB%/, conv.thumb);
       temp = temp.replace(/%VID%/g, conv.vid);
       temp = temp.replace(/%FILENAME%/g, conv.filename);
       temp = temp.replace(/%TITLE%/, conv.title);
       temp = temp.replace(/%DESCRIPTION%/, conv.description);
       temp = temp.replace(/%CREATION%/, conv.creation);
       temp = temp.replace(/%UID%/, conv.uid);
       temp = temp.replace(/%USERNAME%/, conv.username);
       temp = temp.replace(/%VIEWS%/, conv.views);

       cont += temp;
    });

    $(elem).update(cont);
} // listVideo


function play_video (mediaType, elem_id, mediaSrc, file, size, name) {
    var mediaObj, width, height;
    var size = (typeof(size) == 'undefined') ? 0 : size;
    var name = (typeof(name) == 'undefined') ? 'vid_' : name;
    var elem = name+elem_id;

    if (!$(elem)) {
       alert('Content element [vid_'+elem_id+'] not found!');
       return;
    } else if ($(elem).innerHTML.substr(0, 8) == '<OBJECT ') { // object ready loaded..
       return;
    }

    switch (size) {
       case 1:
          width  = 260;
          height = 195;
       break

       case 2:
          width  = 240;
          height = 180;
       break

       default:
          width  = 320;
          height = 240;
    }

    if (mediaType == 'wmp') {
       mediaObj = '<OBJECT id="mediaPlayer" width="'+width+'" height="'+height+'" classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" ' +
                  'codebase="http://activex.microsoft.com/activex/controls/ mplayer/en/nsmp2inf.cab#Version=5,1,52,701" ' +
                  'standby="Loading Microsoft Windows Media Player components..." type="application/x-oleobject">' +
                  '<param name="fileName" value="'+mediaSrc+'/'+file+'" />' +
                  '<param name="animationatStart" value="1" />' +
                  '<param name="transparentatStart" value="1" />' +
                  '<param name="autoStart" value="1" />' +
                  '<param name="ShowControls" value="1" />' +
                  '<param name="ShowDisplay" value="0" />' +
                  '<param name="ShowStatusBar" value="1" />' +
                  '<param name="loop" value="0" />' +
                  '<EMBED type="application/x-mplayer2" pluginspage="http://www.microsoft.com/Windows/mediaplayer/" ' +
                  'id="mediaPlayer" name="mediaPlayer" bgcolor="darkblue" autostart="1" showcontrols="1" ' +
                  'showdisplay="0" showstatusbar="1" loop="0" showtracker="1" ' +
                  'width="'+width+'" height="'+height+'" src="'+mediaSrc+'/'+file+'"></EMBED></OBJECT>';
    } else {
       mediaObj = '<OBJECT type="application/x-shockwave-flash" width="'+width+'" height="'+height+'" ' +
                  'data="'+mediaSrc+'/flvplayer.swf?file='+mediaSrc+'/flvideo/'+file+'.flv&' +
                  'image='+mediaSrc+'/thumb/'+file+'.jpg&autostart=true">' +
                  '<param name="movie" value="'+mediaSrc+'/flvplayer.swf?file='+mediaSrc+'/flvideo/'+file+'.flv&' +
                  'image='+mediaSrc+'/thumb/'+file+'.jpg&autostart=true" />' +
                  '<param name="allowfullscreen" value="true" />' +
                  '<embed src="'+mediaSrc+'/flvplayer.swf?file='+mediaSrc+'/flvideo/'+file+'.flv&' +
                  'image='+mediaSrc+'/thumb/'+file+'.jpg&autostart=true" ' +
                  'loop="False" width="'+width+'" height="'+height+'" allowscriptaccess="sameDomain" ' +
                  'type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></OBJECT>'
    }

    $(elem).update(mediaObj);

    new Ajax.Request(_absolutePath+'/ajax.lnk.php', {
       method: 'get',
       parameters: { option:'com_media', task:'visit', id:elem_id, type:mediaType }
    });
} // play_video


function musicList (elem, userId) {
    new Ajax.Request(_absolutePath+'/ajax.lnk.php', {
       method: 'get',
       parameters: { option:'com_media', task:'mymusic', uid:userId },
       //onLoading: function() { $(elem).update('loading..') },
       onFailure: function() { $(elem).update('error'); },
       onSuccess: function(transport) {
          if (transport.responseText == -1) { $(elem).update('error'); }
          else if (transport.responseText == 0) { $(elem).update('no any audio yet'); }
          else { $(elem).setStyle({height:'220px'}); $(elem).update(transport.responseText); }
       }
    });
} // musicList

function mostViewMusic (elem, num) {
    new Ajax.Request(_absolutePath+'/ajax.lnk.php', {
       method: 'get',
       parameters: { option:'com_media', task:'mostviewmusic', limit:num },
       //onLoading: function() { $(elem).update('loading..') },
       onFailure: function() { $(elem).update('error'); },
       onSuccess: function(transport) {
          if (transport.responseText == -1) { $(elem).update('error'); }
          else if (transport.responseText == 0) { $(elem).update('no any music at the moment'); }
          else { $(elem).update(transport.responseText); }
       }
    });
} // mostViewMusic

function music_player (elem, filename, mediaType) {
    var sPath = _absolutePath+'/components/com_media/swf';
    var flash = sPath+'/musicplayer.swf';
    var load  = sPath+'/i_load.swf';
    var error = sPath+'/i_error.swf';
    var play  = sPath+'/i_play.swf';
    var stop  = sPath+'/i_stop.swf';

    if (mediaType == 1) {
       var path = _absolutePath+'/media/sound/';
    } else {
       var path = _absolutePath+'/imeem/flmusic/';
    }

    mediaObj = '<object type="application/x-shockwave-flash" ' +
               'data="'+flash+'?&song_url='+path+filename+'&song_title=&b_bgcolor=FFFFFF&buttons=' +
               load+','+play+','+stop+','+error+'&song_title=" width="45" height="45">' +
               '<param name="movie" value="'+flash+'?&song_url='+path+filename+'&song_title=&buttons=' +
               load+','+play+','+stop+','+error+'" />' +
               '<img src="'+_absolutePath+'/components/com_media/images/icon_play.gif" width="45" height="45" alt="" />' +
               '</object>';

    $(elem).update(mediaObj);
} // music_player