
// qblend
// HJB@axis:20090508
//
// Blend venster voor weergave media zoals flash en foto's(albums)
//  uitbreidbaar met eigen functies
// Maakt gebruik van jquery 1.3
//
// alle ankers binnen html met rel beginnend met qmedia_img of qmedia_flv
//  worden herschreven/gekoppend aan de qblend functies
//
// Voorbeeld
//  <a href="lokatie_grootte afbeelding" rel="qmedia_img">een tekst of kleine afbeelding</a>
//
//of met breedte en hoogte voor media weergave:
// <a href="lokatie_grootte afbeelding" rel="qmedia_img[200,450]">een tekst of kleine afbeelding</a>
//
//of met koppeling eigen media weergave functie showgalerij() en breedte en hoogte voor media weergave:
// <a href="lokatie_grootte afbeelding" rel="qmedia_img[showgalerij,200,450]">een tekst of kleine afbeelding</a>
//
//Informatie van alle qblend items worden in een globale array 'qmediaItems' geplaatst
// met voor elk item een record met de velden src (=href), fn (=gekoppelde weergave functie), width, height
//

    //functies voor plaatsen content in media venster
    // via rel attribute kunnen er eigen functies gekoppeld worden

    //default weergave functie voor flash
    function def_qmedia_flv(i)
    {
    
// qblendsettings.mediaTitle bevat de titel mits deze is opgegeven als title attr. bij de link naar de video

      $(document.createElement('div')).attr('id','qmediacontent').appendTo('#qmediaframe');

      $(document.createElement('div')).attr('id','closemediabutton').html('<img onclick="CloseMedia();" src="'+MijnPath+'design/images/close.png" border="0" alt="sluiten" />').appendTo('#qmediacontent');

      $('#qmediacontent').css({'width':qblendsettings.mediaWidth-30,'height':qblendsettings.mediaHeight-35})

      $(document.createElement('iframe')).attr({
        'width': (qblendsettings.mediaWidth-50),
        'height':(qblendsettings.mediaHeight-50),
        //'width': '640',
        //'height': '420',
        'frameborder':'no',
        'hspace':'0',
        'vspace':'0',
        'align':'middle',
        'marginheight':'0',
        'marginwidth':'0',
        'scrolling': 'no',
        'allowtransparency':'true',
        'src': './medialoading.htm',
        'id' : 'qmediaiframe'
      }).appendTo('#qmediacontent');

      //src naderhand nog een keer opgeven anders laad ie6 de iframe content niet.
      $('#qmediaiframe').css({'position':'relative','top':'10px','left':'10px'}).attr('src',qblendsettings.mediaSource);

      return true;
    }

    //default weergave van een foto
    function def_qmedia_img(i)
    {
      $('#qmediaframe').html(qblendsettings.mediaSource);

      return true;
    }


    //Start qblend initialisatie
    var qblendsettings={
      'mediaTitle'    : '',
      'mediaWidth'    :  0,
      'mediaHeight'   :  0,
      'mediaIndex'    :  0,
      'mediaFn'       : '',
      'mediaSource'   : ''
    };

    var qmediaItems=new Array();

    //qblend items in pagina opzoeken
    // en indien nodig ie6 patches activeren
    $(document).ready(function()
    {

      //alle ankers met rel attribute dat begint met qmedia_img
      $('a[rel^="qmedia_img"]').each(function(i)
      {
        var itemIndex=qmediaItems.length;

        //de defaults kunnen via rel attribute aangepast worden
        qmediaItems[itemIndex]={
          'title'   : $(this).attr('title'),
          'src'     : '<img src="'+ $(this).attr('href') +'" alt="" />',
          'fn'      : 'def_qmedia_img',
          'width'   : 540,
          'height'  : 400
        };

        CheckRelAttr($(this).attr('rel'),itemIndex);

        $(this).attr({'href':'javascript://','id': 'qmedia_img'+itemIndex});

        $(this).click(function()
        {

	        var ObjNr=this.id.replace(/([^0-9])/g,'');

          qblendsettings.mediaTitle =qmediaItems[ObjNr].title;
          qblendsettings.mediaSource=qmediaItems[ObjNr].src;
          qblendsettings.mediaWidth =qmediaItems[ObjNr].width;
          qblendsettings.mediaHeight=qmediaItems[ObjNr].height;
          qblendsettings.mediaIndex =ObjNr;
          qblendsettings.mediaFn    =qmediaItems[ObjNr].fn;

          ShowMedia();

        });

      });

      //alle ankers met rel attribute dat begint met qmedia_flv
      $('a[rel^="qmedia_flv"]').each(function(i)
      {
        var itemIndex=qmediaItems.length;

        //de defaults, kunnen via rel attribute aangepast worden
        qmediaItems[itemIndex]={
          'title' : $(this).attr('title'),
          'src'   : $(this).attr('href'),
          'fn'    : 'def_qmedia_flv',
          'width' : 320,
          'height': 210
        };

        CheckRelAttr($(this).attr('rel'),itemIndex);

        $(this).attr({'href':'javascript://','id': 'qmedia_img'+itemIndex});

        $(this).click(function()
        {
	        var ObjNr=this.id.replace(/([^0-9])/g,'');

          qblendsettings.mediaTitle =qmediaItems[ObjNr].title;
          qblendsettings.mediaSource=qmediaItems[ObjNr].src;
          qblendsettings.mediaWidth =qmediaItems[ObjNr].width + 25;
          qblendsettings.mediaHeight=qmediaItems[ObjNr].height + 35;
          qblendsettings.mediaIndex =ObjNr;
          qblendsettings.mediaFn    =qmediaItems[ObjNr].fn;

          ShowMedia();

        });

        $(this).attr('href','javascript://');
      
      });


      function CheckRelAttr(RelStr,ObjNr)
      {
        var paragevonden=false;

        var paraChk=RelStr.match(/\[(.*)\]/);

        if(paraChk!=null)
        {
          var relParas=paraChk[1];

          var NewPara={'fn':'','width':0,'height':0};

          var paralijst=relParas.split(',');
          for(pc=0;pc<paralijst.length;pc++)
          {
            var testpara=paralijst[pc].replace(/([^0-9])/g,'');
            if(testpara==paralijst[pc]){
              //getal, dan gaat het om de afmetingen
              if(NewPara.width==0)
              {
                //1e is de breedte
                NewPara.width=parseInt(paralijst[pc]);
              } else {
                //2e de hoogte
                if(NewPara.height==0) NewPara.height=parseInt(paralijst[pc]);
              }
            } else {
              //naam voor samenstellen van lijst voor galerij
              if(NewPara.fn=='') NewPara.fn=paralijst[pc];
            }
          }

          if(NewPara.width!=0)  qmediaItems[ObjNr].width =NewPara.width;
          if(NewPara.height!=0) qmediaItems[ObjNr].height=NewPara.height;
          if(NewPara.fn!='')    qmediaItems[ObjNr].fn    =NewPara.fn;

        }

        return paragevonden;
      }


      if(qBrowserChk().msie_buggy)
      {

        $(window).scroll(function()
		    {
          if($('#qblendframe').css('display')!='none') PositionIE6Frame();
        });

        $(window).resize(function()
        {
          if($('#qblendframe').css('display')!='none') PositionIE6Frame();
        });
      }

      $(window).resize(function()
      {
        if($('#qblendframe').css('display')!='none') PositionMediaFrame(true);
      });


    });//einde document ready


    //Het media weergave venster in het midden van scherm plaatsen
    function PositionMediaFrame()
    {

      var mediaLeft=Math.floor(($(window).width() - qblendsettings.mediaWidth) / 2);
      var mediaTop =Math.floor(($(window).height() - qblendsettings.mediaHeight) / 2);

      if(mediaLeft<0) mediaLeft=0;
      if(mediaTop<0)  mediaTop=0;

      $('#qmediaframe').css('left',mediaLeft + 'px');
      $('#qmediaframe').css('top',mediaTop + 'px');

    }

    //ie6 patch voor positionering blendvenster en mediavenster
    function PositionIE6Frame()
    {
      var mediaLeft=Math.floor(($(window).width() - qblendsettings.mediaWidth) / 2);
      var mediaTop =Math.floor(($(window).height() - qblendsettings.mediaHeight) / 2);

      $('#qblendframe').css('width',$(window).width() + 'px');
      $('#qblendframe').css('height',$(window).height() + 'px');

      $('#qblendframe').css('left',$(window).scrollLeft() + 'px');
      $('#qblendframe').css('top',$(window).scrollTop() + 'px');

      $('#qmediaframe').css('left',$(window).scrollLeft() + mediaLeft + 'px');
      $('#qmediaframe').css('top',$(window).scrollTop() + mediaTop + 'px');

    }

    //Aktiveer media weergave
    function ShowMedia()
    {
      if(qblendsettings.mediaSource!='')
      {

        $(document.createElement('div')).attr('id','qblendframe').appendTo('body');

        $('#qblendframe').bind('click',CloseMedia);

        $(document.createElement('div')).attr('id','qmediaframe').appendTo('body');

        PositionMediaFrame();
      
        if(qBrowserChk().msie_buggy) PositionIE6Frame();

        $('#qblendframe').fadeTo(0,0);
        $('#qblendframe').show();

        $('#qblendframe').fadeTo(200,0.6,function()
        {

          $('#qmediaframe').html('');

          $('#qmediaframe').css('width',qblendsettings.mediaWidth+'px');
          $('#qmediaframe').css('height',qblendsettings.mediaHeight+'px');

          if(qblendsettings.mediaSource!='' && qblendsettings.mediaFn!='')
          {
            if(eval('typeof ' + qblendsettings.mediaFn) == 'function')
            {
              eval(qblendsettings.mediaFn+'('+qblendsettings.mediaIndex+')');
            } else {
              alert('functie ' + qblendsettings.mediaFn + '() niet gevonden');
            }
          }
          $('#qmediaframe').show(400);

        });

      }
    }

    //afsluiten media weergave
    function CloseMedia()
    {

      $('#qblendframe').unbind('click',CloseMedia);

      $('#qblendframe').remove();
      $('#qmediaframe').remove();
    }

    //browser bepalen ivm check buggy browsers
    function qBrowserChk(){
      var userAgent = navigator.userAgent.toLowerCase();

      var browserinfo = {
        version: (userAgent.match( /.+(?:rv|it|ra|ie|me)[\/: ]([\d.]+)/ ) || [])[1],
        chrome: /chrome/.test( userAgent ),
        safari: /webkit/.test( userAgent ) && !/chrome/.test( userAgent ),
        opera: /opera/.test( userAgent ),
        msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
        msie_buggy : false,
        mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
      }

      if(browserinfo.msie){
        if(/msie 6/.test( userAgent )) browserinfo.msie_buggy = true;
        if(/msie 5/.test( userAgent )) browserinfo.msie_buggy = true;
      }

      return browserinfo;
    }


