/**************
 * mu-shin site javascript theme
 */

var mushin = {};

mushin.contacts = {};

//
// Add domain lists
//
 
mushin.contacts.domains = { 
  mushin:"mu-shin.ca", 
  hotmail:"hotmail.com"
};

//
// Contact
// 
mushin.contacts.list = {
  mtEmail : { text:"Email adress", user: "mt", domain: mushin.contacts.domains.mushin},
  mtMSN : { text:"MSN", user: "trudel_709", domain: mushin.contacts.domains.hotmail}
}

  //
  // generate links
  //

mushin.contacts.init = function(){

  mushin.contacts.dump = $("#mushin-contactinfos");

  mushin.contacts.dump.html("")
  $.each(mushin.contacts.list, function(i, elem){
    elem.link  = elem.user+(elem.domain ? "@"+elem.domain : ""); 
    mushin.contacts.dump.append("<li><b>"+elem.text+"</b> / "+elem.link+"</li>")
  });
}

mushin.fixpng = {};

mushin.fixpng.init = function(){
  $('img[src$=.png]').ifixpng();
  $('.share-links').ifixpng().css("opacity",0.3);
};

$(document).ready(mushin.fixpng.init);

mushin.sidebar = {};

mushin.sidebar.init = function(){
 
 mushin.sidebar.menu = $("#menu");
 mushin.sidebar.search  = $("#search-2");
 mushin.sidebar.searchField  = $("#search-2 #s");
 mushin.sidebar.searchSubmit  = $("#search-2 #search-2submit"); 
 mushin.sidebar.positions = mushin.sidebar.menu.position();
 mushin.sidebar.height = mushin.sidebar.menu.height();
 mushin.sidebar.width = mushin.sidebar.menu.width();
 mushin.sidebar.menuLinks = $("#menu .widget"); // , .widget_pages");
 mushin.sidebar.hiddenLinks = $([]);
 mushin.sidebar.hiddenLinksHeight = new Array();
  
 mushin.sidebar.menuLinks.each(function(pos, obj){
  mushin.sidebar.hiddenLinksHeight[pos] = $(this).height();
 });

 mushin.sidebar.menu.bind("mouseenter", mushin.sidebar.showMenu)
	            .bind("mouseleave", mushin.sidebar.fadeMenu);

 mushin.sidebar.searchField.bind("focus", mushin.sidebar.focusSearchBox)
	                   .bind("blur", mushin.sidebar.blurSearchBox);
 if(!$.browser.msie)
   $(window).scroll(mushin.sidebar.setSidebarAnchors)
	  .resize(mushin.sidebar.manageExtraLinks)
	  .trigger("scroll")
	  .trigger("resize"); 

 mushin.sidebar.searchSubmit.hover(
    function(){ mushin.sidebar.searchSubmit.stop().dequeue().animate({backgroundColor:"#222222"}, {duration:300,easing:"easeOutSine"}); },
    function(){ mushin.sidebar.searchSubmit.stop().dequeue().animate({backgroundColor:"#111111"}, {duration:300,easing:"easeOutSine"}); }
 );

};

mushin.sidebar.fadeMenu = function(){
  mushin.sidebar.menuTimeout = setTimeout(
      "mushin.sidebar.mouseOverMenu = false;"

    + "mushin.sidebar.searchField.trigger(\"blur\");"
    + "mushin.sidebar.closeLinkBox();"
    + "mushin.sidebar.menu.stop().dequeue().animate({opacity:0.3}, {duration:300,easing:\"easeOutSine\"});"
    , 200);
};

mushin.sidebar.showMenu = function(){

  clearTimeout(mushin.sidebar.menuTimeout);

  if(!mushin.sidebar.mouseOverMenu){
    mushin.sidebar.mouseOverMenu = true;
    mushin.sidebar.menu.animate({opacity:1}, {duration:300,easing:"easeOutSine"});
  }
};

mushin.sidebar.focusSearchBox = function(){
  mushin.sidebar.searchField.trigger("click").animate({borderColor:"#CF2800"}, {duration:300,easing:"easeOutSine"});
  if(!mushin.sidebar.mouseOverMenu) mushin.sidebar.menu.trigger("mouseover");
};

mushin.sidebar.blurSearchBox = function(){
  mushin.sidebar.searchField.stop().dequeue(); // .animate({borderColor:"#333333"}, {duration:300,easing:"easeOutSine"});
  mushin.sidebar.searchField.css("border-color", "#333333");
  if(mushin.sidebar.mouseOverMenu) mushin.sidebar.menu.trigger("mouseout");
};

mushin.sidebar.setSidebarAnchors = function(){
  
  // var positions = mushin.sidebar.menu.position();
  var scrollTop = $(window).scrollTop()+70;
  var scrollLeft = Math.round($(window).scrollLeft());

  if(scrollTop > mushin.sidebar.positions.top && $("#content").height() > mushin.sidebar.menu.height()){
   $("#menu").css({position:"fixed", top:70, left:mushin.sidebar.positions.left-scrollLeft});
  }
  else
    mushin.sidebar.menu.css({position:"relative", top:"auto", left:"auto"});
};

mushin.sidebar.manageExtraLinks = function(){

  var winHeight = $(window).height();
  var length = mushin.sidebar.menuLinks.length;  
  var nocap = true;
  var customOffset = 50;

  if(!mushin.sidebar.hiddenCount)
    mushin.sidebar.hiddenCount = 0;

  if(!mushin.sidebar.currentHeight) 
   mushin.sidebar.currentHeight  = mushin.sidebar.height;

  while(winHeight < mushin.sidebar.currentHeight+customOffset)
  {
  	if($(".morelinks").length == 0){
   	  mushin.sidebar.menu.append("<ul class='morelinks'><li><a>more links&raquo;</a></li></ul>");
   	  $(".morelinks").bind("click", mushin.sidebar.openLinkBox);
  	}
 
	var pos = length-1-mushin.sidebar.hiddenCount;
	mushin.sidebar.menuLinks.eq(pos).hide();
	mushin.sidebar.currentHeight  = mushin.sidebar.menu.height();
	mushin.sidebar.hiddenCount++;
  }
  
  while(nocap)
  {
   mushin.sidebar.currentHeight  = mushin.sidebar.menu.height();
   
   var pos = length-mushin.sidebar.hiddenCount;
   var hiddenLinkHeight = mushin.sidebar.hiddenLinksHeight[pos];
   
   if(mushin.sidebar.currentHeight+hiddenLinkHeight+customOffset < winHeight)
   {
	mushin.sidebar.menuLinks.eq(pos).css({display:"block",opacity:0}).animate({opacity:1},{duration:200,easing:"easeOutExpo"});
	mushin.sidebar.currentHeight  = mushin.sidebar.menu.height();
	mushin.sidebar.hiddenCount--;
   }
   else nocap = false;
  }

  if(mushin.sidebar.hiddenCount == 0) $(".morelinks").remove();
};

mushin.sidebar.openLinkBox = function(){

  mushin.sidebar.hiddenLinks = $("#menu .widget:hidden");
  $(".morelinks").unbind("click").bind("click", mushin.sidebar.closeLinkBox);

  var height = 0;
  for(d = mushin.sidebar.menuLinks.length-1; d >= mushin.sidebar.menuLinks.length-mushin.sidebar.hiddenCount; d--)
    height += mushin.sidebar.hiddenLinksHeight[d];

  mushin.sidebar.menu.append("<div id='morelinksContainer'><ul></ul></div>");
  $("#menu #morelinksContainer").css({
					height:0,
					width:220,
					position:"absolute",
					bottom:50,
					left:0,
					background:"#030303",
					border:"1px solid #0E0E0E",
					opacity:0,
					paddingTop:15,
					paddingBottom:15,
					paddingLeft:20
				})
			        .append(mushin.sidebar.hiddenLinks)
			        .animate({height:height,opacity:0.99},{duration:400,easing:"easeOutSine"});
  
  mushin.sidebar.hiddenLinks.show();

  $(".morelinks a").html("hide links&raquo;");
};

mushin.sidebar.closeLinkBox = function(){

  $("#menu #morelinksContainer").animate({height:0,opacity:0},{duration:200,easing:"easeOutSine",queue:false, complete:function(){
    $("#menu > ul:first").append(mushin.sidebar.hiddenLinks);
    mushin.sidebar.hiddenLinks.hide();
    $("#menu #morelinksContainer").remove(); 
  }});

  $(".morelinks").unbind("click").bind("click", mushin.sidebar.openLinkBox);
  $(".morelinks a").html("more links&raquo;");
};

$(document).ready(mushin.sidebar.init);

mushin.livechat = {
  feedurl   : "/livechat/feed.html",
  statusurl : "/livechat/status.php",
  spoolerurl: "/livechat/spooler.php",
  timecycle : 3000,
  statuscycle: 10000,
  cookieinfos: { expires: "never", path: '/', domain: 'www.mu-shin.ca', secure: false }
};

mushin.livechat.init = function(){

   mushin.livechat.statusContainer = $(".widget_status_press:first");
   $("div:first", mushin.livechat.statusContainer).before(": <span id='status-Box'><span id='status-livechatLabel'></span><a id='startChatLink' href='#'>Livechat now!</a></span>");


   mushin.livechat.statusBox = $("#status-Box");   
   mushin.livechat.statusLabel = $("#status-livechatLabel");
   mushin.livechat.startChatLink = $("#startChatLink");

   mushin.livechat.checkStatus();
   mushin.livechat.statusInterval = setInterval("mushin.livechat.checkStatus();", mushin.livechat.statuscycle);

   mushin.livechat.startChatLink.click(mushin.livechat.startChat);
   
   if($.cookie("liveChatTranscript") == null) $.cookie("liveChatTranscript", "");
   if($.cookie("startLiveChat") == "yes") mushin.livechat.startChat();
};

mushin.livechat.checkStatus = function(){
   $.get(mushin.livechat.statusurl, mushin.livechat.updateStatusLabel);
};

mushin.livechat.updateStatusLabel = function(data){
   var statusText = $("#status", data).text();

   if(statusText == "offline")
     mushin.livechat.startChatLink.hide();
   else
     mushin.livechat.startChatLink.show();

   mushin.livechat.statusLabel.text(statusText).attr("class", "").addClass(statusText);
};

mushin.livechat.startChat = function(){

   if($.browser.msie){
	alert("Feature only available under non-IE browsers.");
	return false;
   }

   $.cookie("startLiveChat", "yes", mushin.livechat.cookieinfos);

   clearInterval(mushin.livechat.statusInterval);

   if(!mushin.livechat.chatBox)
   {
      $("body").append("<div id='chatBox'></div>");
      mushin.livechat.chatBox = $("#chatBox");

      mushin.livechat.chatBox.append("<div id='chatTranscript'>"+$.cookie("liveChatTranscript")+"</div>"
					+"<div id='chatFormBox'>"
					+"<form name='chatForm' id='chatForm' onsubmit='return mushin.livechat.talk();'>"
					+"<span class='warning'></span>"
					+"<label id='chatUsername'>"+$.cookie("liveChatUsername")+"</label>"
					+"<input type='text' autocomplete='off' id='chatTextBox' />&nbsp;"
					+"<input type='submit' id='chatSend' value='Send' />"
					+"</form>"
					+"</div>"
					+($.cookie("liveChatUsername") == null ? "<div id='setUsernameBox'>"
					+"<form name='usernameForm' id='usernameForm' onsubmit='return mushin.livechat.selectUsername();'>"
					+"<label>Enter a user name: </label>"
					+"<input type='text' autocomplete='off' id='selectUsername' />&nbsp;"
					+"<input type='submit' id='usernameSend' value='Start chatting!' />"
					+"</form>"
					+"</div>" : "")
					+"<a id='closeChatBox' href='#' onclick='return mushin.livechat.stopChat();'>X</a>"
				    );

      mushin.livechat.chatTranscript = $("#chatTranscript");
      mushin.livechat.chatFormBox = $("#chatFormBox");
      mushin.livechat.chatUsername = $("#chatUsername");
      mushin.livechat.chatTextBox = $("#chatTextBox");


      mushin.livechat.fixUsernameWidth();
      $("#selectUsername").trigger("focus").trigger("click");

      mushin.livechat.chatBox.css({
					height:40,
					width:523,
					position:"fixed",
					bottom:-1,
					margin:"0px 0px 0px 10px",
					border:"1px solid #470400", // "#9C2800",
					background:"#090909",
					opacity:0,
					zIndex:800
				  }).animate({opacity:0.97},{duration:200,easing:"easeOutSine"});

      if($.browser.safari)
	mushin.livechat.chatFormBox.css("bottom", -11);

      mushin.livechat.chatBox.bind("mouseenter", mushin.livechat.showChatBox).bind("mouseleave", mushin.livechat.hideChatBox).trigger("mouseleave");

      mushin.livechat.chatBoxInterval = setInterval("mushin.livechat.checkTranscript();", mushin.livechat.timecycle);
	
      mushin.livechat.scrollToBottom();

   }
   return false;
};

mushin.livechat.stopChat = function(){
   
   $.cookie("startLiveChat", "no", mushin.livechat.cookieinfos);
   $.cookie("liveChatUsername", null, mushin.livechat.cookieinfos);

   if(mushin.livechat.chatBox) mushin.livechat.chatBox.remove();

   clearInterval(mushin.livechat.chatBoxInterval);
   mushin.livechat.statusInterval = setInterval("mushin.livechat.checkStatus();", mushin.livechat.statuscycle);
   delete(mushin.livechat.chatBox);
   return false;

};

mushin.livechat.selectUsername = function(){

	var username = $("#selectUsername").val();
	mushin.livechat.chatUsername.text(username);

	$.cookie("liveChatUsername", username, mushin.livechat.cookieinfos);
	
	if(username.toUpperCase() == "MT"){ 
	  alert("Don't use my name! Use something else");
	  return false;
	}

	mushin.livechat.fixUsernameWidth();

	$("#setUsernameBox").animate({opacity:0,height:0},{duration:200,easing:"easeOutSine",complete:function(){ $(this).remove(); }});

	if(mushin.livechat.chatBox.height() < 100)
	  mushin.livechat.chatFormBox.animate({opacity:0},{duration:200,easing:"easeOutSine"});

	if(mushin.livechat.chatTranscript.text() == "") mushin.livechat.chatBox.append("<div id='startreadme'>Roll over the box to start chatting...</div>");

	return false;
};


mushin.livechat.fixUsernameWidth = function(){
	var width = mushin.livechat.chatTextBox.width()-mushin.livechat.chatUsername.width();
	mushin.livechat.chatTextBox.width(width);
};

mushin.livechat.showChatBox = function(){

	mushin.livechat.chatTextBox.trigger("click").trigger("focus");

	$("#startreadme").remove();

	mushin.livechat.chatFormBox.animate({opacity:1},{queue:false,duration:100,easing:"easeOutSine"});
	mushin.livechat.chatTranscript.animate({height:348},{queue:false,easing:"easeOutSine",duration:200});
	mushin.livechat.chatBox.animate({height:400,borderColor:"#9C2800"},{duration:200,easing:"easeOutSine",complete:mushin.livechat.scrollToBottom});
	mushin.livechat.hasNewMesssage = false;
};

mushin.livechat.hideChatBox = function(){
	mushin.livechat.chatTranscript.animate({height:28},{queue:false,easing:"easeOutSine",duration:200,complete:mushin.livechat.scrollToBottom});
	mushin.livechat.chatBox.animate({height:40,borderColor:"#470400"},{duration:200,easing:"easeOutSine"});
	mushin.livechat.chatFormBox.animate({opacity:0},{duration:200,easing:"easeOutSine"});
};

mushin.livechat.checkTranscript = function(){
	 var randomizer = Math.floor(Math.random()*1000000000);
	 $.get(mushin.livechat.feedurl, {ramdomizer:randomizer}, function(data){
	    // if($("#content .line", data).length != 0){
	        if($("#status", data).text() != "")
		  mushin.livechat.updateStatusLabel(data);

		if($("#status", data).text() == "offline")
		{
		  mushin.livechat.chatTranscript.append("<div class='line-status'>*** MT has gone offline. Closing livechat...</div>");
		  clearInterval(mushin.livechat.statusInterval);
		  $.cookie("liveChatTranscript", "");
		  setTimeout("mushin.livechat.stopChat();", 3000);
		  return false;
		}

		mushin.livechat.oldhtml = mushin.livechat.chatTranscript.html();
		newhtml = $("#content", data).html();
		$.cookie("liveChatTranscript", newhtml, mushin.livechat.cookieinfos);

		oldLength = $(".line", mushin.livechat.chatTranscript).length;
		newLength = $("#content .line", data).length;

		 if(mushin.livechat.oldhtml != newhtml && oldLength < newLength){

		  mushin.livechat.hasNewMesssage = true;

		  // if(oldLength != 0)
		  //  newhtml = newhtml.substring(mushin.livechat.oldhtml.length);

		  // newhtml = "<span class='newcontent' style='opacity:0;filter:alpha(opacity:0);'>"+newhtml+"</span>";		
		  
		  mushin.livechat.oldhtml = newhtml;

		  // mushin.livechat.chatTranscript.append(newhtml);
		  // $(".newcontent").removeClass("newcontent").animate({opacity:1},{duration:150,easing:"easeOutSine"});
		  mushin.livechat.chatTranscript.html(newhtml);
		  mushin.livechat.scrollToBottom();
		  mushin.livechat.oldhtml = newhtml;
		}

		// mushin.livechat.chatTranscript.html(oldLength+":"+newLength);
	    // }
	});
};

mushin.livechat.talk = function(){

	var text =  mushin.livechat.chatTextBox.val();
	var name = mushin.livechat.chatUsername.text();

	mushin.livechat.chatTranscript.append("<div class='line'><span class='user'>"+name+"</span> "+text+"</div>");
	mushin.livechat.chatTextBox.val("");
	// $(".line:last", mushin.livechat.chatTranscript).animate({opacity:1},{duration:150,easing:"easeOutSine"});
	mushin.livechat.scrollToBottom();

	$.post(mushin.livechat.spoolerurl, {user:name, text:text}, function(){
	});

	return false;	
};

mushin.livechat.scrollToBottom = function(){
  var tcobj = mushin.livechat.chatTranscript.get(0);
  tcobj.scrollTop = tcobj.scrollHeight;
};

// $(document).ready(mushin.livechat.init);
//
//  Chat Disabled and replaced by hab.la
//

wc_init("6200-33617994-10-6424");
