/* Copyright Colin Lamond, copla ltd (2008-2009) - All rights reserved */
var dStageX = new Array(-2,80,162,244,326,408,490,-2,490,-2,490,-2,490,-2,490,-2,80,162,244,326,408,490,-2,80,162,244,326); 
var dStageY = new Array(0,0,0,0,0,0,0,64,64,128,128,192,192,256,256,320,320,320,320,320,320,320,384,384,384,384,384);

var userDetails=null;
var player=null;
var playing=false;

function playerReady(obj) {
    if(obj['id']=="craneVideoPlayer"){
      player=$('#'+obj['id']).get(0);
      addPlayerListeners(player)
    }else
    if(obj['id']=="chapterPlayer"){
      addChapterListeners($('#'+obj['id']).get(0));
    }else
    if(obj['id']=="hsPlayer"){
      addHSListeners($('#'+obj['id']).get(0));
    }
};

function addPlayerListeners(p) {
	if (p){
      p.addModelListener("STATE", "stateListener"); 
      p.addViewListener("SLIDE", "slideListener");
      p.addViewListener("UNSLIDE", "slideListener");
      p.addViewListener("FILM", "hsFilm");
    } else setTimeout("addPlayerListeners()",100);
}

function slideListener(o){toggleFilmInfo();}
function hsFilm(o){playVideo(o.film);}

function stateListener(o){
//IDLE, BUFFERING, PLAYING, PAUSED, COMPLETED
    playing=(o.newstate=="PLAYING");
}

$().ready(function() {
    //check what params have been passed in
    if ($.getURLParam("activate")){
      reStart(true);
      doValidation($.getURLParam("activate"))
    }else
    if ($.getURLParam("invite")){
      reStart(true);
      showRegistrationForm($.getURLParam("invite"))
    }else
    if ($.getURLParam("film")){
      //legacy compatability
      var film=$.getURLParam("film").replace(/-/g,'/');
      window.location="http://www.thecrane.tv/#video/"+film;
    } else if (window.location.href.indexOf("#video")>0){
      reStart();
    }else{
      var COOKIE_VISITS = "crane.visits";
      var visits=$.cookie(COOKIE_VISITS);
      if(visits) visits++; else visits=1;
      $.cookie(COOKIE_VISITS, visits, {path:'/',expires:14});
      reStart(visits>2);
    }

    $.historyInit(action, "index.html");
    updateLinks()

    //setup model boxes    
    $('body').append($('.jqmWindow'));

    $("#dSearchForm > #edSearchTerm").keypress(function (e){
       if (e.which == 13) {    
          var searchTerm=$("#dSearchForm > #edSearchTerm").val();
          if(searchTerm.length<1){
              $("#dSearchMessage").html("no matches");
              setTimeout ( '$("#dSearchMessage").html("");', 2000 ); 
          }else{
              doSearch("t", searchTerm);
          }
          return false;
       }else return true;
    })

    $("#dSearchForm > #lDoSearch").click(function (e){
       var searchTerm=$("#dSearchForm > #edSearchTerm").val();
       if(searchTerm.length<1){
          $("#dSearchMessage").html("no matches");
          setTimeout ( '$("#dSearchMessage").html("");', 2000 ); 
       }else{
          doSearch("t", searchTerm);
       }
       return false;
    })

    $("#nominateInfoCorner").hover(
      function () {
         var p=$(this).position();
         var info=$("#popupAssetInfo");
         info.css("left", p.left+594); info.css("top", p.top+5);
         info.show();
         info.html("<span style='font-size:0.75pc'>Nominate your idea, impress with your insight and gain the opportunity to collaborate with our contributors to produce and showcase it!</span>");
      }, function () {$("#popupAssetInfo").hide();}
    );

    $("#aForgotPass").click(function (e){
        e.preventDefault(); 
        $("#dlgForgotPass").modal({
        	minWidth:243,minHeight:127,maxWidth:243,maxHeight:127,overlayClose:true
        });

        $("#lRequestNewPassword").click(function (e){
            e.preventDefault(); 
            var fPassEmail=$("#fForgotPass > #forgotPassEmail").val();
            $.modal.close();
            $.ajax({
             type: "post", dataType : "json", url: "/crane/ajax/forgotPassword",
             data: {email : fPassEmail},
             success: function(data){      
                if(data.resetResult=='ok')
                  showAlert("You will shortly receive an email with instructions on how to reset your password.");
                else
                  showAlert("We were unable to locate your details, please check and try again.");
             },
             error: function(){
                  showAlert("We are unable to reset your password at this time, please try again later.");
             }
            }); 
        });
        $("#fForgotPass > #forgotPassEmail").keypress(function (e){
        if (e.which == 13) {
          $("#lRequestNewPassword").click();return false;}else return true;
        })
    });

    $("#aLogin").click(function (e){
        e.preventDefault(); 
        var pw=$("#fLogin > #password").val();
        $("#fLogin > #password").val("");
        $.ajax({type: "post", dataType : "json",  url: "/crane/ajax/login",
         data: {username : $("#fLogin > #username").val(), clearPassword:pw},
         success: function(data){      
            if(data.loginResult=='ok')
               setupLoginLogout(data);
            else
               showAlert(data.loginResult);
         },
         error: function(){
            showAlert("We are unable to log you in at this time, please try again later.");
         }         
       }); 
    });
    $("#fLogin > #password").keypress(function (e){
    if (e.which == 13) {
      $("#aLogin").click();return false;}else return true;
    })

    $("#aLogout").click(function (e){logout();});

    $("#aRegister").click(function (e){
        e.preventDefault(); 
        showRegistrationForm();
    });

    $("#username").focus(function () {var ed=$(this); if(ed.val()=="username") ed.val("");});

    iBox.setPath('/assets/js/ibox.2.18/');
    iBox.padding = 0;

    checkBrowser();

    preLoadImages();

});

function updateLinks(links){
    if(links==null)
      links=$("a[rel='link']");
    links.unbind("click");
	links.click(function(){
        var h = this.href;
        if (h) h = h.replace(/^.*#/, '');
        $.historyLoad(h);
        return false;
    });
}

function updateLink(aName,aValue){
    var anc=$(aName);
    anc.unbind("click");
    anc.attr("href",aValue);
	anc.click(function(){
        var h = this.href;
        if (h) h = h.replace(/^.*#/, '');
        $.historyLoad(h);
        return false;
    });

}

function action(actionData) {
	//alert("pageload: " + actionData);
	if(actionData) {
        var key=actionData.substr(0,actionData.indexOf("/"));
        var data=actionData.substr(actionData.indexOf("/")+1);
/* alert(key+" = "+data); */
        
        if(key=="video"){
          setupMemberArea("hide");
          setupStage("show");
          playVideo(data);
        }else
        if(key=="channel"){
          setupMemberArea("hide");
          setupStage(null,data);
        }else
        if(key=="member"){
          setupMemberArea(data);
        }
	}else
       reStart();
}


function reStart(dontStartPlayback, uriToPlay){
    setupMemberArea("hide");  
    if(currentVideo==null)
      toggleFilmInfo();
    setupStage(null,'sys/homepage', dontStartPlayback, uriToPlay);
    updCurrentUserInfo(true);
}

function preLoadImages(){
    $('<img/>').attr('src','/assets/i/f/m_2x6background.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/f/m_5x7work.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/f/m_8x7work.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/f/pagBackground.gif').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/f/playerSlideOut.gif').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/f/videoToolTip.gif').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/f/c_2x1.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/f/c_2x1_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/f/c_2x3_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/f/c_4x5_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/c_nominate_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/c_playlist_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_art.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_design.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_channels.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_community.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_culture.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_fashion.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_green.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_ideas.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_lifestyle.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_member.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_personal.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_production.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_travel.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_art_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_design_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_channels_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_community_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_culture_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_fashion_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_green_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_ideas_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_lifestyle_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_member_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_personal_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_production_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/t_travel_s.jpg').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/closed/closedUploadBG.gif').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/a/bBookmark.gif').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/a/bCancel.gif').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/a/bComments.gif').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/a/bManage.gif').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/a/bMoreInfo.gif').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/a/bReport.gif').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/a/bSave.gif').load(function(){$('.profile').append($(this));});
    $('<img/>').attr('src','/assets/i/btn/a/bShare.gif').load(function(){$('.profile').append($(this));});
}

/* ****** */
/* Popup boxes */
/* ****** */

function showPrivateBeraUpload(){
   stopPlayback();
   $("#dlgMatt").show();
   $("#dlgContent").show();
   $("#dlgContent").load("/assets/htmlf/sComClosedUpload.html"); 
}

function hidePrivateBetaUpload(){
   $("#dlgMatt").hide();
   $("#dlgContent").hide();
}


function showRegistrationForm(inviteCode){
    stopPlayback();

    $("#dlgRegister").modal({
      	minWidth:243,minHeight:321,maxWidth:243,maxHeight:321,overlayClose:true
    });

    $("#dlgRegister > #username").focus();
     
    var day=$("#dlgRegister #dobDay");
    for(var i=1;i<=31;i++){day.append($('<option value="'+i+'">'+i+'</option>'));}
    var year=$("#dlgRegister #dobYear");
    for(var i=1900;i<=2000;i++){year.append($('<option value="'+i+'">'+i+'</option>'));}
     
    $.getJSON("/data/select.php",{list:'country'}, function(j){
      var options = "<option value='choose'>---choose---</option>";
      for (var i = 0; i < j.length; i++) options += '<option value="' + j[i].v + '">' + j[i].d + '</option>';
      $("#dlgRegister #countryID").html(options);
    })

     $.validator.addMethod("selected", function(value, element, params){return this.optional(element) || (value != "choose")}, "Please select a value");
     $.validator.addMethod("britishDate",function(value, element){return value.match(/^\d\d?\/\d\d?\/\d\d\d\d$/);},"Please enter a date in the format dd/mm/yyyy");
     $("#fRegister").validate({
       errorClass: "errorMessage",
 	   rules: {
	     username: {required: true, minlength: 6},
   		 email: {required: true, email: true},
  	     clearPassword: {required: true, minlength: 6},
	     confirmPassword: {equalTo: "#clearPassword"},
	     firstName: {required: true},
	     lastName: {required: true},
	     gender: {selected: true},
	     DOB: {required: true, britishDate: true},
	     locationCity: {required: true},
	     countryID: {selected: true}
	   },
	   messages: {
	     username: {
	        required: "username is required",
	        minlength: "must be at least 6 characters"
	     },
         email: {
            required: "provide your email address",
            email: "invalid address"
         },
         clearPassword: {
            required: "provide a password",
            minlength: "must be at least 6 characters"
         }, 
         confirmPassword: "passwords do not match",
         firstName: "provide your first name",
         lastName: "provide your last name",
         gender: "select your gender",
         DOB: {
            required: "provide date of birth"
         }
       },

    invalidHandler: function(form, validator) {
      var errors = validator.numberOfInvalids();
      if (errors) {
        $("#dlgRegister #dlgRegisterHeading").hide();
      } else {
        //$("div.error").hide();
      }
    }
	 });


    $("#dlgRegister #fRegister").submit(function(event){
       event.preventDefault();  
       if(!$(this).valid()) return false;
       var formData=$("#dlgRegister #fRegister :input").serialize();
       $("#dlgRegister #fRegister :input").attr("disabled", "disabled");
       $.ajax({
         type: "post",
         dataType : "json",
         url: "/crane/ajax/register",
         data: formData,
         success: function(data){      
            if(data.registerResult=='ok'){
               $.modal.close();
               showAlert("Thank you for your registration, you will shortly receive an email with a link to validate your account.");
            }else{
               $("#dlgRegister #errorMessage").html(data.registerResult);
               $("#dlgRegister #fRegister :input").removeAttr("disabled");
            }
         },
         error: function(){
            $("#dlgRegister #errorMessage").html("We were unable to process your registration at this time, please try again later");
            $("#dlgRegister #fRegister :input").removeAttr("disabled");
         }  
       }); 
       return false;
    });


    $("#lDlgRegisterSave").click(function (e){
        e.preventDefault(); 
        $("#dlgRegister #fRegister").submit();
    });
    $("#lDlgRegisterCancel").click(function (e){
        e.preventDefault(); 
        $.modal.close();
    });
}

function hideRegistrationForm(message){
    $("#registerForm").jqmHide();
    if(message!=null) showAlert(message,null);
}

var alertCallback=null;
function showAlert(message,callback,title){
    var alertCallback=callback;

    $("#dlgAlert > #dlgAlertContent").text(message);
    $("#dlgAlert > #dlgAlertTitle").text(title);
    $("#dlgAlert").modal({
      	minWidth:243,minHeight:127,maxWidth:243,maxHeight:127,overlayClose:true
    });

    $("#lDlgAlertOK").click(function (e){
        e.preventDefault(); 
        $.modal.close();
        var cb=alertCallback; alertCallback=null;
        if(cb!=null) cb();
    });
}

function hideAlert(){
    $('#alertForm').jqmHide();
}


/* ****** */
/* Authentication */
/* ****** */

var intervalID=null;

function setupIntervalCheck(){
   if(currentUser!=null){
       clearInterval(intervalID);
       intervalID=setInterval ( "intervalChaeck();", 120000 );
   }
}

function intervalChaeck(){
   updCurrentUserInfo(false);
   if(currentUser==null){
      clearInterval(intervalID);
      intervalID=null;
      showAlert("Your sessions has timed out, you must login again",function(){reStart();});
   }
}

function logout(){
   $.ajax({
     type: "post",
     dataType : "json",
     url: "/crane/ajax/logout",
     success: function(data){reStart(true);}
   }); 
}

var currentUser=null;
var afterLoginCallback=null;

/* check the current logged in status with the server */
function updCurrentUserInfo(refreshScreen){
   $.get("/crane/ajax/loginStatus",null,
     function(data){
         if(data.result=='ok')
            currentUser=data;
         else
            currentUser=null;

         if(refreshScreen) setupLoginLogout();
     }
   ,'json'); 
}

/* update the screen to show loged in status */
function setupLoginLogout(newUser){
    if(newUser) currentUser=newUser;
    if(currentUser==null){
       $("#dLoginPanel > #dLogout").hide();
       $("#dLoginPanel > #dLogin").show();
       showCommunity(null);
    }else{
       $("#dCommunityWork").html("");

       $("#dLoginPanel > #dLogin").hide();
       $("#dLoginPanel > #dLogout").show();
       $("#dLoginPanel > #dLogout > #lblLoggedinUser").html(currentUser.username);
       if(afterLoginCallback!=null){
         afterLoginCallback();
         afterLoginCallback=null;
       }
       setupIntervalCheck();
    }
}

function checkLoggedIn(callback){
   if(currentUser==null){
//      afterLoginCallback=callback;
//      $("a.tLogin").click();
//      showAlert("you must login to access this part of the site");
      return false;
   }else{
      return true;
   }
}

function doValidation(key){
   var activateDone=function(){window.location='/';}

   showAlert("Activating your account, please wait....",null);
   
   $.ajax({
     type: "post",
     dataType : "json",
     url: "/crane/ajax/activate",
     data: {activationKey:key},
     success: function(data){      
        if(data.activateResult=="ok")
           showAlert("You are activated!",activateDone);     
        else 
           showAlert("We were unable to activate your account, please check the link.",activateDone)
     },
     error: function(){
        showAlert("We were unable to validate your account at this time, please try again later.",activateDone);
     }
   });    
}
/* ****** */
/* screen operations */
/* ****** */

var stageVideoThumbs;
var stageVideoTips;

//id=id of user playlist, name=system playlist name, sort=sort order, page=page number
function setupStage(id, name, dontStartPlayback, uriToPlay){
    if(id=="hide"){
       $("#dStage").hide();
       return;
    }else
    if(id=="show"){
       $("#dStage").show();    
       return;
    }

    $("#dStage").show();    

    var playlistParam=null;
    if(id!=null)
      playlistParam={action:"g",playlistID:id};
    else
    if(name=='sys/homepage'||name=='sys/channels'){
      playlistParam={action:"y",playlistName:name};
      setupTopNav(name);
    }else
      setupTopNav(name);

    if (playlistParam!=null){
        hidePaginationSort();
        $.getJSON("/crane/ajax/playlist", playlistParam, function(json){
          if(json.playlistResult=='ok'){
            positionAssets(json.playlist.items, json.playlist.fixedPos);
            if(uriToPlay)
              watchUri(uriToPlay);
//            else
//              playAllVideos(dontStartPlayback);
          }else
            alert("load playlist error - "+json.playlistResult);
        });
    }else
        doSearch('c',name);
}

//searchType: c=category, t=string
function doSearch(searchType, search, page, order){
    var param={action:searchType,searchString:search};
    if(page!=undefined) param.pageNumber=page;
    if(order!=undefined) param.sortOrder=order;

    $.getJSON("/crane/ajax/search", param, function(json){
      if(json.searchResult=='ok'){
         if(searchType=="t"){
              $("#dSearchMessage").html(json.results.totalMatches+" matches");
              setTimeout ( '$("#dSearchMessage").html("");', 2000 ); 
              if(json.results.items.length>0){
                setupTopNav("sys/homepage");
                positionAssets(json.results.items, json.results.fixedPos);
                setupPaginationSort(searchType, search, json.results.currentPage, json.results.totalPages, json.results.sortOrder);
                playAllVideos();
              }
         }else{
            positionAssets(json.results.items, json.results.fixedPos);
            setupPaginationSort(searchType, search, json.results.currentPage, json.results.totalPages, json.results.sortOrder);
         }

      }
      else
        alert("search error: "+json.searchResult);
    });
}


//n=newest, t=top rated, l=title, e=editorial

function setupPaginationSort(searchType, search, currentPage, totalPages, currentSort){
    var pagination=$("#dStage > #dStagePagination");

    if(totalPages==0){
      currentPage=1;
      totalPages=1;
    }

    pagination.show();
    if (totalPages>0){
      $("#pagPageNo",pagination).html(currentPage+" of "+totalPages);

      if(currentPage>1){
        var prevI=currentPage-1;
        var imgP=$('<img width="15" height="12" border="0" id="prevPage"/>').attr("src", "/assets/i/btn/prevPage.gif");
        imgP.appendTo(pagination);
        imgP.wrap('<a href="#" onClick="doSearch(\''+searchType+'\',\''+search+'\','+prevI+',\''+currentSort+'\');return false;"></a>');
      }else
        $("#prevPage",pagination).remove();

      if(currentPage<totalPages){
        var nextI=currentPage+1;
        var imgN=$('<img width="15" height="12" border="0" id="nextPage"/>').attr("src", "/assets/i/btn/nextPage.gif");
        imgN.appendTo(pagination);
        imgN.wrap('<a href="#" onClick="doSearch(\''+searchType+'\',\''+search+'\','+nextI+',\''+currentSort+'\');return false;"></a>');
      }else
        $("#nextPage",pagination).remove();
    }

    var sortOrder=$("#pagSortOrder",pagination);
    var sort="";

    if(searchType=="c"){
        sort='<span id="sortLabel">sort by</span>&nbsp;';
    
        if(currentSort=="e") sort=sort+"editorial&nbsp;";
        else
          sort=sort+'<a href="#" onClick="doSearch(\''+searchType+'\',\''+search+'\',1,\'e\');return false;">editorial</a>&nbsp;';
      
        if(currentSort=="n") sort=sort+"newest<br/>";
        else
          sort=sort+'<a href="#" onClick="doSearch(\''+searchType+'\',\''+search+'\',1,\'n\');return false;">newest</a>&nbsp;<br/>';
     
        if(currentSort=="t") sort=sort+"top rated&nbsp;";
        else
          sort=sort+'<a href="#" onClick="doSearch(\''+searchType+'\',\''+search+'\',1,\'t\');return false;">top rated</a>&nbsp;';
       
        if(currentSort=="l") sort=sort+"title&nbsp;";
        else
          sort=sort+'<a href="#" onClick="doSearch(\''+searchType+'\',\''+search+'\',1,\'l\');return false;">title</a>&nbsp;';
    
        if(currentSort=="m") sort=sort+"member&nbsp;";
        else
          sort=sort+'<a href="#" onClick="doSearch(\''+searchType+'\',\''+search+'\',1,\'m\');return false;">member</a>&nbsp;';
    }

    $(sortOrder).html(sort);
}

function hidePaginationSort(){
    var stage=$("#dStage");
    $("#dStagePagination",stage).hide();
}

function positionAssets(assets, fixedPos){
      $("#dStage > a").remove();
    
      stageVideoThumbs=new Array();
      stageVideoTips=new Array();
    
      var stageVideoThumbsI=0;
      //position each item on the dStage
      var stage=$("#dStage");

      $.each(assets, function(i,item){
        if(item.pos<=27){
            var cLeft=0; var cTop=0;
            var img=$('<img width="82" height="64" border="0" id="'+item.assetURI+'" onMouseOver="startThumbPreview(this,'+item.assetType+',\''+item.assetURI+'\');" onMouseOut="stopThumbPreview(this,'+item.assetType+',\''+item.assetURI+'\');"/>').attr("src", "/content/"+item.assetURI+"tb.jpg");

            img.css("position","absolute");
            if(fixedPos=="1"){
              cLeft=dStageX[item.pos-1]; cTop=dStageY[item.pos-1];
              img.css("left", cLeft); img.css("top", cTop);
            }else{
              img.css("left", dStageX[i]); img.css("top", dStageY[i]);
              cLeft=dStageX[i]; cTop=dStageY[i];
            }
            img.appendTo(stage);
            if(item.assetType==1){//another playlist
               img.wrap('<a rel="link" href="#channel/'+item.assetURI+'"></a>');
            }else
            if(item.assetType==10){//video
               img.wrap('<a rel="link" href="#video/'+item.assetURI+'"></a>');
               stageVideoThumbs[stageVideoThumbsI]=img;
               stageVideoThumbsI++;
        
               var imgc=$('<img width="19" height="22" border="0" id="/tt/'+item.assetURI+'" onMouseOver="showAssetPopupInfo(this,\''+item.assetURI+'\');" onMouseOut="hideAssetPopupInfo();"/>').attr("src", "/assets/i/core/infoCornor.gif");
               imgc.css("position","absolute");
               imgc.css("z-index","999");
               imgc.css("left", cLeft+62); imgc.css("top", cTop+2);
               imgc.appendTo(stage);
               imgc.wrap('<a href="#" onClick="return false;"></a>');

               //preload preview image
               $('<img/>').attr('src','/content/'+item.assetURI+'p.gif').load(function(){$('.profile').append($(this));});
            }            
        }
      });
    
   
      //create the tips for each video
      $.each(assets, function(i,item){
        var ratingImage=Math.floor(item.rating);
        stageVideoTips[item.assetURI]='<span id="title">'+maxLengthString(item.title,40)+'</span><br/><span id="description">'+maxLengthString(item.description,70)+'</span><img id="rating" src="/assets/i/f/rated'+ratingImage+'.jpg"/>';
      }); 

      if(typeof setupDragnDrop == 'function') setupDragnDrop();

      updateLinks();
}

function startThumbPreview(image, assetType, assetURI){if(assetType==10)$(image).attr("src", "/content/"+assetURI+"p.gif");}
function stopThumbPreview(image, assetType, assetURI){if(assetType==10)$(image).attr("src", "/content/"+assetURI+"tb.jpg");}

function showAssetPopupInfo(trigger, assetURI){
    var p=$(trigger).position();
    var info=$("#popupAssetInfo");
    info.css("left", p.left+19); info.css("top", p.top);
    info.show();
    info.html(stageVideoTips[assetURI]);
}

function hideAssetPopupInfo(){
    var info=$("#popupAssetInfo");
    info.hide();
    info.empty();
}

function maxLengthString(source, maxLength){
    if(source.length>maxLength){
       return source.substring(0,maxLength)+"...";
    }else{
       return source;
    }
}

function showCommunity(action){
    if(action==null){
       //$("#dCommunityWork").load("/assets/htmlf/sComClosed.html");
    }else
    if(action=='btnPlaylist'){
//       var callback=function(){showCommunity(action)};
       if(checkLoggedIn()){    
           if($("#btnPlaylist").attr("src")!="/assets/i/btn/c_playlist_s.jpg"){
               $("#dCommunityWork").html("<br/><br/><br/>loading....");
    
               $.get("/assets/htmlf/sComPlaylist.html",null,
               function(data){
                  $("#dCommunityWork").html(data);
                  setupCommunityPlaylist('start',null);
               }
               ,'html');
           }else{
               $("#dCommunityWork").html("");
               action="";
           }
       }else{
          showAlert("you need to be logged in to access playlists");
          return false;
       }
    }else
    if(action=='btnNominate'){
       if($("#btnNominate").attr("src")!="/assets/i/btn/c_nominate_s.jpg"){
           $("#dCommunityWork").html("<br/><br/><br/>loading....");
           $.get("/assets/htmlf/sComNominate.html",null,
           function(data){
              $("#dCommunityWork").html(data);
           }
           ,'html'); 
       }else{
//           if(currentUser)
             $("#dCommunityWork").html("");
//           else
//             $("#dCommunityWork").load("/assets/htmlf/sComClosed.html");
             
           action="";
       }
    }else
    if(action=='hide'){
       $("#dCommunity").hide();
    }else
    if(action=='show'){
       $("#dCommunity").show();    
    }else{
       $("#dCommunityWork").html('');
       showAlert("We are currently developing this feature. Thank you for your patience");
    }

    //now setup buttons
    if(action=='btnPlaylist'){ 
       $("#btnNominate").attr("src","/assets/i/btn/c_nominate.jpg");
       $("#btnPlaylist").attr("src","/assets/i/btn/c_playlist_s.jpg");
    }else
    if(action=='btnNominate'){
       $("#btnNominate").attr("src","/assets/i/btn/c_nominate_s.jpg");
       $("#btnPlaylist").attr("src","/assets/i/btn/c_playlist.jpg");
    }else{
       $("#btnNominate").attr("src","/assets/i/btn/c_nominate.jpg");
       $("#btnPlaylist").attr("src","/assets/i/btn/c_playlist.jpg");
    }

}

function setupTopNav(state){
    var action=null; if(state.id) action=state.id; else if(state!=null) action=state;

    //check if you need to be logged in for item
    if((action.substring(0,4)!='sys/')&&(action!='btnSearch')){
      var callback=function(){setupTopNav(state)};
      if(!checkLoggedIn(callback)) return;
    }

    //alert("setupTopNav - "+action);
    if(action.substring(0,4)=='mem/'){
        var check=action.substring(4);
        var dataParts=check.split("/");
        if(dataParts.length>1) check=dataParts[0];        

        if(check!="hide"){
            $("#btnMember").attr("src","/assets/i/btn/t_member_s.jpg");
            $("#btnRestart").attr("src","/assets/i/btn/t_reStart.jpg");
            
            $("#btnCrum1").attr("src","/assets/i/btn/t_personal.jpg");
            $("#btnCrum1").css('display','inline');
            updateLink("#btnCrum1Link","#member/profile");
            
            $("#btnCrum2").attr("src","/assets/i/btn/t_community.jpg");
            $("#btnCrum2").css('display','inline');
            updateLink("#btnCrum2Link","#member/community");
            
            $("#btnCrum3").attr("src","/assets/i/btn/t_production_s.jpg");
            $("#btnCrum3").css('display','inline');
            updateLink("#btnCrum3Link","#member/production");

            player=null;
        }

        if(check=='home'){
        }else
        if(check=='profile'){
           $("#btnCrum1").attr("src","/assets/i/btn/t_personal_s.jpg");
           $("#btnCrum2").attr("src","/assets/i/btn/t_community.jpg");
           $("#btnCrum3").attr("src","/assets/i/btn/t_production.jpg");
        }else
        if(check=='community'){
           $("#btnCrum1").attr("src","/assets/i/btn/t_personal.jpg");
           $("#btnCrum2").attr("src","/assets/i/btn/t_community_s.jpg");
           $("#btnCrum3").attr("src","/assets/i/btn/t_production.jpg");
        }else
        if(check=='production'){
           $("#btnCrum1").attr("src","/assets/i/btn/t_personal.jpg");
           $("#btnCrum2").attr("src","/assets/i/btn/t_community.jpg");
           $("#btnCrum3").attr("src","/assets/i/btn/t_production_s.jpg");        
        }
    }   
    else
    if(action=='sys/homepage'){
        $("#btnRestart").attr("src","/assets/i/btn/t_reStart_s.jpg");
        $("#btnMember").attr("src","/assets/i/btn/t_member.jpg");
        $("#btnCrum1").css('display','none');
        $("#btnCrum2").css('display','none');
        $("#btnCrum3").css('display','none');
    }else
    if(action.substring(0,4)=='sys/'){
        $("#btnCrum3").css('display','none');

        $("#btnRestart").attr("src","/assets/i/btn/t_reStart.jpg");

        $("#btnCrum1").css('display','inline');
        updateLink("#btnCrum1Link","#channel/sys/channels");
       
        if(action=='sys/channels'){
            $("#btnCrum1").attr("src","/assets/i/btn/t_channels_s.jpg");
            $("#btnCrum2").css('display','none');
        }else{
            $("#btnCrum1").attr("src","/assets/i/btn/t_channels.jpg");
            $("#btnCrum2").attr("src","/assets/i/btn/t_"+action.substring(4)+"_s.jpg");
            $("#btnCrum2").css('display','inline');
            updateLink("#btnCrum2Link","#channel/"+action);
        }  
    }
}

function setupMemberArea(action){ 
   if(action!="hide"){
     if(!checkLoggedIn()) {
        showAlert("you need to be logged in to access the members area");
        return false;
     }
   }

   if(action=="hide"){
      $("#dMember").hide();
      $("#dmWorkArea").html("");
      showCommunity("show");
      setupStage("show",null);
   }else{
      stopWatchingVideo();
      showCommunity("hide");
      setupStage("hide",null);
      setupTopNav("mem/"+action);
      var mem=$("#dMember");
      if(mem.is(':visible')){
        setMemberAreaPage(action);
      }else{
        mem.load("/assets/htmlf/sMemberArea.html",null,function(){setMemberAreaPage(action);});
        mem.show();
      }
   }
}

function showMemberProfilePanel(memberName){
   showCommunity(null);
   memberInfo=memberName;
   $("#dCommunityWork").load("/assets/htmlf/sComMemberInfo.html");
}

/* ****** */
/* player operations */
/* ****** */

var currentVideo=null;
var currentVideoThumb=null;
var currentVideoRNC=null;

function stopWatchingVideo(){
//   currentVideo=null;
//   currentVideoThumb=null;
}

function watchUri(uri){
    playVideo(uri,uri+"tb.jpg");
}

function playVideo(uri, thumbURI, dontStartPlayback){
   if(!player)
     setTimeout("playVideo('"+uri+"','"+thumbURI+"',"+dontStartPlayback+")",100);
   else{
     $("#dPlayerSlideout").hide();
     $("#dcPlayerSlideOut").remove();
    
     currentVideoRNC=null;
     stopPlayback();
    
   //  var lst = new Array();
   //  lst[0] = {file:"/content/"+uri+"m.mp4"};
    
     player.sendEvent("LOAD",uri);

     if(!dontStartPlayback) player.sendEvent("PLAY");
     if(typeof setupPlayingDragDrop == 'function') setupPlayingDragDrop('dPlayDropFilm',uri,thumbURI);

     currentVideo=uri;
     currentVideoThumb=thumbURI;

     //get some info ready for when pane opens
     $.getJSON("/crane/ajax/rnc",{action:'i',assetURI:currentVideo}, function(j){
        if(j.rncResult=="ok"){
            currentVideoRNC=j;
            $("#dPlayerSlideout").load("/assets/htmlf/sPlayerSlideout.html",null,function(){setupSlideOut('start');}); 
        }
     })
   }
}

function playAllVideos(dontStartPlayback){
   var started=false;
   $("#dStage > a").each(function (i) {
      $("img",$(this)).each(function (j) {
        if ((this.id.substring(0,4)=='sys/')||(this.id.substring(0,4)=='/tt/')){}else{
            if(!started){
               playVideo(this.id,this.src,dontStartPlayback);
               started=true;
            }
        }
      })
   });
}

var lastPagStatusB4Slide=null;

function toggleFilmInfo(){
   var ps=$("#dPlayerSlideout");
   if(currentVideo!=null){      
      if(ps.css("display")=="none"){
        ps.show();
        setupSlideOut("start");
        lastPagStatusB4Slide=$("#dStage > #dStagePagination").is(':visible');
        $("#dStage > #dStagePagination").hide();
      }else{
        $("#dcPlayerSlideOut").remove();
        ps.hide();
        if (lastPagStatusB4Slide){
          $("#dStage > #dStagePagination").show();
          lastPagStatusB4Slide=null;
        }
      }
   }else
     ps.hide();
}

function togglePlay(){
   player.sendEvent("PLAY");
}

function stopPlayback(){
   if(playing) togglePlay();
}

function checkBrowser(){
    var COOKIE_CHECK = "crane.checkBrowser";
    if($.cookie(COOKIE_CHECK)){
    } else {
      $.cookie(COOKIE_CHECK, 'done', {path:'/',expires:14});
/*       alert($.browser.version); */
    }
}

/*dlg boxes*/

var dlgCallback=null;

function selectVideo(callback){
    dlgCallback=callback;
    $("#dlgSelectVideo").modal({minWidth:408,minHeight:390,maxWidth:408,maxHeight:390,overlayClose:true,onClose:selectVideoClose});
    $("#dlgSelectVideo #dVideoSelect").load("/assets/htmlf/fSelectVideo.html");
}

function selectVideoClose(dialog){
    var selectedURI=$("#selectedVideo").html();
    $.modal.close();
    $("#dlgSelectVideo #dVideoSelect").empty();

    if(dlgCallback!=null){
        dlgCallback(selectedURI);
        dlgCallback=null;
    }
}

function uploadPicture(callback){
    dlgCallback=callback;
    $("#dlgUploadImage #dUploadImageURI").html("");
    $("#dlgUploadImage").modal({minWidth:408,minHeight:390,maxWidth:408,maxHeight:390,overlayClose:true,onClose:uploadPictureClose});
}

function uploadPictureClose(dialog){
    var pictureURI=$("#dlgUploadImage #dUploadImageURI").html();
    $.modal.close();
    dlgCallback(pictureURI);
    $("#dlgUploadImage #dUploadImageURI").html("");
}
