var PIm2=Math.PI*2,
    PId6=Math.PI/6,
    PId3=Math.PI/3,
    PId2=Math.PI/2,
    PId240=Math.PI/240,
    CFACTOR=220;

var gCount=0;

$(window).bind('load',
  function ()
  {
    var vTimer=null,
        vTarget={
            angle:0,
            mouserOverUrl:0,
            width:$('#iTarget').width(),
            height:$('#iTarget').height(),
            cX:$('#iTarget').width()*1.25,
            cY:CFACTOR*1.25,
            cR:CFACTOR*1.5,
            cDelta:CFACTOR*1.5*0.15-10,
            cCurrentDelta:0,
            cCurrentDelta2:0,
            text:'',
            draw:null
          },
        vUrlItemModel = $('#iLiModel').html(),
        vUrlItemMultiModel = $('#iLiMultiModel').html(),
        vUrlSubItemModel = $('#iSubLiModel').html(),
        vBodyPos = {
            left:$('body').offset().left,
            top:$('body').offset().top
          };

    /**
     * initialize the page
     */
    var init = function ()
      {
        var sTip = new simpleTip();

        $('#iBody').css('min-height', ($(document).height()-$('#iBody').offset().top-10)+'px');

        for(var i=0;i<listItems.length;i++)
        {
          if(listItems[i].multiple)
          {
            var li=$('<li/>',
                      {
                        html:addUrlItemMulti(i),
                        itemIndex:i,
                        mouseenter:function () {
                            vTarget.mouserOverUrl=1;
                            vTarget.text=listItems[$(this).attr('itemIndex')].title2;
                        },
                        mouseleave:function () { vTarget.mouserOverUrl=-1; },
                      }
                    ),
                subUl=$('<ul/>');

            for(var j=0;j<listItems[i].list.length;j++)
            {
              subUl.append(
                $('<li/>',
                  {
                    html:addUrlSubItem(i, j),
                    title:listItems[i].list[j].infos,
                    targetUrl:listItems[i].list[j].url,
                    itemIndex:{main:i, sub:j},
                    click:loadPage
                  }
                )
              );
            }

            $('#iUrlList').append(li.append(subUl));


          }
          else
          {
            $('#iUrlList').append(
              $('<li/>',
                {
                  html:addUrlItem(i),
                  targetUrl:listItems[i].url,
                  itemIndex:i,
                  click:loadPage,
                  mouseenter:function () {
                      vTarget.mouserOverUrl=1;
                      vTarget.text=listItems[$(this).attr('itemIndex')].title2;
                  },
                  mouseleave:function () { vTarget.mouserOverUrl=-1; },
                }
              )
            );
          }
        }

        $('[title]').each(
          function ()
          {
            sTip.doAction(
              'add',
              this,
              {
                targetPos:'top-middle',
                tipPos:'bottom-middle',
                offsetY:8,
                arrowHeight:13,
                arrowWidth:17,
                drawArrow:true,
                arrowImgDir:'./grum.fr/img'
              }
            );
          }
        );

        vTarget.draw = new CDDrawing('iTarget');

        if(vTarget.draw.getContext()!=null)
        {
          vTarget.draw.drawingManageCrisp(true);
          vTarget.draw.textStyle(
            {
              font:'16px sans',
              alignH:'left',
              alignV:'bottom',
            }
          );

          vTimer=window.setInterval(
            function ()
              {
                drawTarget();
              }, 50
          );
        }
      },
      /**
       * add an url to the url list
       */
      addUrlItem = function (index)
      {
        returned=vUrlItemModel.replace('*title*', listItems[index].title);
        returned=returned.replace('*img*', listItems[index].img);
        return(returned);
      },
      addUrlItemMulti = function (index)
      {
        returned=vUrlItemMultiModel.replace('*title*', listItems[index].title);
        return(returned);
      },
      addUrlSubItem = function (index, subIndex)
      {
        returned=vUrlSubItemModel.replace('*title*', listItems[index].list[subIndex].title);
        returned=returned.replace('*img*', listItems[index].list[subIndex].img);
        return(returned);
      },
      loadPage = function ()
      {
        window.location=$(this).attr('targetUrl');
      },
      drawTarget = function ()
      {
        var cR=vTarget.cR*0.80,
            textWidth=33;

        if(vTarget.mouserOverUrl!=0)
        {
          vTarget.cCurrentDelta2+=PId3*4*vTarget.mouserOverUrl/vTarget.cDelta;
          if(vTarget.cCurrentDelta2>=PId3)
          {
            vTarget.cCurrentDelta2=PId3;
          }
          else if(vTarget.cCurrentDelta2<=0)
          {
            vTarget.cCurrentDelta2=0;
            vTarget.text='';
          }

          vTarget.cCurrentDelta+=4*vTarget.mouserOverUrl;
          if(vTarget.cCurrentDelta>=vTarget.cDelta)
          {
            vTarget.cCurrentDelta=vTarget.cDelta;
            vTarget.mouserOverUrl=0;
          }
          else if(vTarget.cCurrentDelta<=0)
          {
            vTarget.cCurrentDelta=0;
            vTarget.mouserOverUrl=0;
          }
        }
        cR+=vTarget.cCurrentDelta;



        vTarget.angle+=PId240;
        vTarget.draw.drawingStatePush(); //>p1

        vTarget.draw.shapeClearRect(0,0,vTarget.width,vTarget.height);
        vTarget.draw.styleStrokeColor('rgba(255,255,255,0.125)');
        vTarget.draw.styleFillColor('rgba(0,0,0,0)');

        vTarget.draw.styleStrokeDraw({width:14});
        vTarget.draw.shapeCircle(vTarget.cX,vTarget.cY,vTarget.cR,{fill:false});
        vTarget.draw.styleStrokeDraw({width:1});
        vTarget.draw.shapeCircle(vTarget.cX,vTarget.cY,vTarget.cR*0.95,{fill:false});
        vTarget.draw.shapeCircle(vTarget.cX,vTarget.cY,cR,{fill:false});

        vTarget.draw.styleStrokeDraw({width:3});
        vTarget.draw.shapeCircle(vTarget.cX,vTarget.cY,vTarget.cR*0.78,{fill:false});
        vTarget.draw.styleStrokeDraw({width:1});

        vTarget.draw.transformTranslate({x:vTarget.cX,y:vTarget.cY});

        vTarget.draw.drawingStatePush(); //>p2a
        vTarget.draw.styleFillColor('#292929');
        vTarget.draw.transformRotate({angle:vTarget.angle/10, mode:'radian'});
        for(var i=0;i<60;i++)
        {
          vTarget.draw.transformRotate({angle:6});
          vTarget.draw.shapeLine(vTarget.cR*0.95,0,vTarget.cR*0.95-5,0);

          vTarget.draw.shapeCircle(vTarget.cR,0,3,{});
        }
        vTarget.draw.drawingStatePop(); //<p2a

        vTarget.draw.drawingStatePush(); //>p2b
        vTarget.draw.transformRotate({angle:-vTarget.angle/2, mode:'radian'});

        for(var i=0;i<60;i++)
        {
          vTarget.draw.transformRotate({angle:6});
          vTarget.draw.shapeLine(cR,0,cR+5,0);
          vTarget.draw.shapeLine(cR+5,-3,cR+5,3);
          vTarget.draw.shapeLine(vTarget.cR*0.78-1.5,0,vTarget.cR*0.78-10,0);
        }
        vTarget.draw.drawingStatePop(); //<p2b


        vTarget.draw.drawingStatePush(); //>p3
          vTarget.draw.transformRotate({angle:2.39, mode:'radian'});
          vTarget.draw.styleStrokeDraw({width:10});
          vTarget.draw.shapeCircle(vTarget.cR+35,0,23,{fill:false, stroke:true});

          vTarget.draw.styleFillColor('rgba(255,255,255,0.125)');
          vTarget.draw.shapeCircle(vTarget.cR+35,0,3,{fill:true, stroke:false});

          vTarget.draw.styleFillColor('#292929');
          vTarget.draw.styleStrokeDraw({width:2});

          vTarget.draw.transformTranslate({x:vTarget.cR+35,y:0});



          vTarget.draw.drawingStatePush(); //>p4
            vTarget.draw.transformRotate({angle:-2.39, mode:'radian'});
            vTarget.draw.transformRotate({angle:vTarget.cCurrentDelta2, mode:'radian'});

            vTarget.draw.shapeCircle(33,0,2,{stroke:true, fill:true});

            vTarget.draw.shapePathBegin();
            vTarget.draw.shapePathArc(0,0,33, 0.085, PIm2/3, true, 'radian');

            if(vTarget.text!='')
            {
              textWidth+=vTarget.draw.textWidth(vTarget.text).width+10;
            }
            vTarget.draw.shapePathLineTo(textWidth*Math.cos(PIm2/3),-textWidth*Math.sin(PIm2/3));
            vTarget.draw.shapePathEnd(false, false);
            vTarget.draw.styleFillColor('rgba(255,255,255,0.25)');

            vTarget.draw.transformRotate({angle:-PId3, mode:'radian'});
            vTarget.draw.textPrint(vTarget.text, -textWidth,-4, 'fill');
          vTarget.draw.drawingStatePop(); //<p4



          vTarget.draw.transformRotate({angle:-vTarget.angle, mode:'radian'});
          for(var i=0;i<15;i++)
          {
            vTarget.draw.transformRotate({angle:24});
            vTarget.draw.shapeLine(14,0,18,0);
            vTarget.draw.shapeCircle(23,0,1,{stroke:false, fill:true});
          }
        vTarget.draw.drawingStatePop(); //<p3
        vTarget.draw.drawingStatePop(); //<p1
      };


      init();
  }
);




