﻿/*
 * ui.js
 * Copyright (c) 2009, CACA! Inc. All rights reserved.
 * http://www.caca.cn
 * version: 1.0.0
 **********************/
var CA = {
	"assister" : {
		input : function(){
            if(this.size() == 0 ) return;
			var old = this[0].defaultValue;
			var jthis = this;
			jthis.focus(function(){				
				if(jthis.val() == old) {
					jthis.val("");
					jthis.css("color","black");
				}
			}).blur(function(){
				if(/^\s*$/.test(jthis.val())){
					jthis.val(old);
					jthis.css("color","#999");
				}
			});
		},
		
		checkbox : function(boxes){	
			this.click(function(e){
				e.preventDefault();
				var jboxes = $(this).parents(".container:first").find(boxes);
				jboxes.attr("checked" , !jboxes.attr("checked"));
			});			   
		},
		
		textarea : function(count){
			var prompts;
			var jthis = this;
			var createPrompt = function(){
				prompts = $("<p class='textareaAssister'>（" + jthis.val().length + "/" + count + "）</p>");
				jthis.after(prompts);
				jthis.unbind("click",arguments.callee);
			};
			var cut = function(){
				if(jthis.val().length > 250){ 
					jthis.val(jthis.val().slice(0,250));
				}
			};
			
			jthis.click(createPrompt).keyup(function(){
				cut();
				prompts.text("（" + jthis.val().length + "/" + count + "）");
			}).blur(function(){
				if(prompts) {
					prompts.remove();
					prompts = null;
				}
				jthis.bind("click",createPrompt);
			});
		},
		
		highlight : function(color){
			var old;
			this.find("input[type='text'],textarea").focus(function(){
				var jthis = $(this);
				old = jthis.css("border-color");
				jthis.css("border-color",color);
			}).blur(function(){
				$(this).css("border-color",old);
			});
		},
		
		table : function(oddColor,evenColor){
			this.each(function(){
				for(var i=0; i < $(this).find("tr").size(); i++){
					if(i % 2 == 0)
						$(this).find("tr").eq(i).css("background-color",oddColor);
					else
						$(this).find("tr").eq(i).css("background-color",evenColor);
				}
			});	
		},
		
		collect : function(){
			this.each(function(){
				$(this).click(function(e){
					e.preventDefault();
					if (document.all){
					  window.external.addFavorite("http://www.caca.cn","CACA首页");
				   }
				   else if (window.sidebar){
					  window.sidebar.addPanel("CACA首页", "http://www.caca.cn", "");
				   }
				});				   
			});
			
		}, 
		
		expression : function(){
			this.each(function(){
				var comment = this;
				$(comment).next("div.expression").find("img.express").click(function(e){
					 e.preventDefault();
					 // Build the smile code.
					 var smile = "[" + $(this).attr("alt") + "]";
					
					 // Insert the smile code into the current position.
					 if ($.browser.msie) {
					  comment.focus();
					  document.selection.createRange().text = smile;
					 } else {
					  // Get the pointer and current value.
					 
					  var start = comment.selectionStart;
					  var end = comment.selectionEnd;
					  var value = comment.value;
					 
					  // Insert the smile code.
					  comment.value
					   = value.substring(0, start)
					   + smile
					   + value.substring(end);
					 
					  // Restore the pointer location.
					  comment.selectionStart = start + smile.length;
					  comment.selectionEnd = start + smile.length;
					 }
				}).hover(function() {
					  $(this).css({cursor :"pointer", "background-color" : "#f8cc86"});
					 },
					 function() {
					  $(this).css({cursor :"default", "background" : "none"});
					 });
			});
		}
	},
	
	"toggler" : {
		tab  :  function(speed){
			this.each(function(){
				var tabElem = $(this);
				var but = tabElem.find("div.title h3");
				but.click(function(e){
					e.preventDefault();
					var jthis = $(this);
					var delay = speed || 400;
					if(typeof speed == "string"){
						if(speed === "slow") 
							delay = 600;
						else if(speed === "fast") 
							delay = 200;			
					}
					var containers = tabElem.children(".container");
					var currentContainer = containers.eq(but.index(this));
					setTimeout(function(){
						jthis.addClass("current");
						but.not(jthis).removeClass("current");
						currentContainer.show();
						containers.not(currentContainer).hide();
					},delay);
				});			   
			});
		},
		
  	  slide   :  function(options){
		  if(this.size() == 0) return;
		 CA.tool.initOptions(options,{"offset":this.find("#showList img").width(), "slide": true, "interval":5000, "opacity":0.4, "speed":500});
		 
		 var jthis = this;		 
		 var a =  this.find("#thumbList a");
		 var play;
		 var slide = function(i){
			 (function(){			
				show(a[i++]);
				i = i > 4 ? 0 : i;
				play = setTimeout(arguments.callee,5000);
			 })();
		 }
		 var show = function(elem){
			$(elem).fadeTo("normal",0);
			a.not(elem).fadeTo("normal",options.opacity);
			jthis.find("#showList").animate({"left":-a.index(elem) * options.offset},options.speed);
			jthis.find("#intro h3").text($(elem).prev("img").attr("title"));
			jthis.find("#intro p").text($(elem).prev("img").attr("alt"));			
		 }
		 
		 a.click(function(e){
			 e.preventDefault();
			 if(play) {
				clearTimeout(play);
				play = null;
			}
			 show(this);
			 if(options.slide) slide(a.index(this));
		 });
		 
		 if(options.slide) 
		 	slide(0);
		 else 
		 	show.call(a[0]);
		
      },
	  
	  info : function(){
		  this.find("li .both").each(function(){
			$(this).hover(function(){
			    $(this).parents("li").addClass("showInfo");
			},function(){
			    $(this).parents("li").removeClass("showInfo");				
		  	});							  
		  })
	  },
	  
	  nav : function(index){
		 this.find("li").removeClass("current").eq(index).addClass("current");
	  }
	},
	
	"video" : {
		identify : function(options){
			var cover;			
			this.find("p.img a").mouseover(function(){
				cover = $("<a class='cover' href=''></a>");			
				var jthis = $(this);
				cover.attr("href",jthis.attr("href")).appendTo(jthis.parent());
				cover.hover(null,function(){
					cover.remove();
					cover = null;
				});					
			});							
		}
		
	},
	
	"tool" : {
		initOptions : function(options,defaultOptions){
			options = options || {};
			for(var property in defaultOptions){
				options[property] = options[property] || defaultOptions[property];
			}
		}	
	 }
	 
	 
};


$.fn.extend(CA.assister);
$.fn.extend(CA.toggler);
$.fn.extend(CA.video);

/**
 *member编辑心情***/
var MoodEditer = {
    editer : function(target,url){
		if(!target || target.size() == 0) return;
        target.click(function(){
            target.next(".tips").remove();
            target.html("<textarea cols='20' rows='2' class='assist'>" + target.text() + "</textarea><span>0/100</span><input type='button' value='发 布'/>");
            target.find("input").click(function(){
               this.form.submit();
            });
            target.find("textarea").input();
            target.find("textarea").textarea();
           $(this).unbind("click",arguments.callee).removeClass("mood");
        }).hover(function(){
            target.css("border-color","#333");
        },function(){
            target.css("border-color","#ccc");
        });
    }
};

/**
 *orderList 对偶数个li去除margin**
  对dl最后一个dd 去除下边线*/
var EvenLi = {
    evenClass : function(target){
		if(!target || target.size() == 0) return;
        for(var i=0; i < target.children("li").size(); i++){
            if(i % 2 != 0)
                 target.children("li").eq(i).addClass("even");
        }
        return this;
    },
    lastClass : function(target){
		if(!target || target.size() == 0) return;
        target.each(function(){
             $(this).find("dl dd:last").addClass("last");
        }); 
    }
};

var bookmark = {
	mark : function(){
		document.writeln("<a href=\"javascript:u=location.href;t=document.title;c = %22%22 + (window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text);var url=%22http:\/\/cang.baidu.com\/do\/add?it=%22+encodeURIComponent(t)+%22&iu=%22+encodeURIComponent(u)+%22&dc=%22+encodeURIComponent(c)+%22&fr=ien#nw=1%22;window.open(url,%22_blank%22,%22scrollbars=no,width=600,height=450,left=75,top=20,status=no,resizable=yes%22); void 0\" title=\"Baidu\"><img border=\"0\" src=\"http://www.caca.cn/bookmark/baidu.gif\" alt=\"Baidu\"><\/a> &nbsp;<a href=\"javascript:window.open(\'http:\/\/shuqian.qq.com\/post?title=\'+encodeURIComponent(document.title)+\'&uri=\'+encodeURIComponent(document.location.href)+\'&jumpback=2&noui=1\',\'favit\',\'width=960,height=600,left=50,toolbar=no,menubar=no,location=no,scrollbars=yes,status=yes,resizable=yes\');void(0)\"><img src=\"http://www.caca.cn/bookmark/qq.gif\" alt=\"QQ\" border=\"0\" title=\"QQ\"><\/a> &nbsp;<a href=\"javascript:location.href=\'http:\/\/www.google.com\/bookmarks\/mark?op=add&bkmk=\'+encodeURIComponent(location.href)+\'&title=\'+encodeURIComponent(document.title)\"><img src=\'http://www.caca.cn/bookmark/google.gif\' alt=\'Google\' border=\'0\'><\/a> &nbsp;<a href=\"javascript:location.href=\'http:\/\/del.icio.us\/post?&url=\'+encodeURIComponent(location.href)+\'&title=\'+encodeURIComponent(document.title)\"><img src=\'http://www.caca.cn/bookmark/delicious.gif\' alt=\'Del.icio.us\' border=\'0\'><\/a> &nbsp;<a href=\"javascript:d=document;t=d.selection?(d.selection.type!=\'None\'?d.selection.createRange().text:\'\'):(d.getSelection?d.getSelection():\'\');void(vivi=window.open(\'http:\/\/vivi.sina.com.cn\/collect\/icollect.php?pid=28&title=\'+escape(d.title)+\'&url=\'+escape(d.location.href)+\'&desc=\'+escape(t),\'vivi\',\'scrollbars=no,width=480,height=480,left=75,top=20,status=no,resizable=yes\'));vivi.focus();\"><img src=\'http://www.caca.cn/bookmark/vivi.gif\' alt=\'Sina ViVi\' border=\'0\'><\/a> &nbsp;<a href=\"javascript:d=document;t=d.selection?(d.selection.type!=\'None\'?d.selection.createRange().text:\'\'):(d.getSelection?d.getSelection():\'\');void(vivi=window.open(\'http:\/\/myweb.cn.yahoo.com\/popadd.html?url=\'+encodeURIComponent(location.href)+\'&title=\'+encodeURIComponent(document.title),\'yahoo\',\'scrollbars=no,width=720,height=420,left=75,top=20,status=no,resizable=yes\'));vivi.focus();\"><img src=\'http://www.caca.cn/bookmark/yahoo.gif\' alt=\'Yahoo\' border=\'0\'><\/a> &nbsp;<a href=\"javascript:d=document;t=d.selection?(d.selection.type!=\'None\'?d.selection.createRange().text:\'\'):(d.getSelection?d.getSelection():\'\');void(keyit=window.open(\'http:\/\/www.365key.com\/storeit.aspx?t=\'+escape(d.title)+\'&u=\'+escape(d.location.href)+\'&c=\'+escape(t),\'keyit\',\'scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes\'));keyit.focus();\"><img src=\'http://www.caca.cn/bookmark/365key.gif\' alt=\'365Key\' border=\'0\'><\/a> &nbsp;<a href=\"javascript:d=document;t=d.selection?(d.selection.type!=\'None\'?d.selection.createRange().text:\'\'):(d.getSelection?d.getSelection():\'\');void(yesky=window.open(\'http:\/\/hot.yesky.com\/dp.aspx?t=\'+escape(d.title)+\'&u=\'+escape(d.location.href)+\'&c=\'+escape(t)+\'&st=2\',\'yesky\',\'scrollbars=no,width=400,height=480,left=75,top=20,status=no,resizable=yes\'));yesky.focus();\"><img src=\'http://www.caca.cn/bookmark/yesky.gif\' alt=\'Yesky \' border=\'0\'><\/a> &nbsp;<a href=\"javascript:t=document.title;u=location.href;e=document.selection?(document.selection.type!=\'None\'?document.selection.createRange().text:\'\'):(document.getSelection?document.getSelection():\'\');void(open(\'http:\/\//bookmark.hexun.com\/post.aspx?title=\'+escape(t)+\'&url=\'+escape(u)+\'&excerpt=\'+escape(e),\'HexunBookmark\',\'scrollbars=no,width=600,height=450,left=80,top=80,status=no,resizable=yes\'));\"><img src=\'http://www.caca.cn/bookmark/hexun.gif\' alt=\'Hexun \' border=\'0\'><\/a> &nbsp;<a href=\"javascript:var d=document,w=window,f=\'http:\/\/fanfou.com\/share\',l=d.location,e=encodeURIComponent,p=\'?u=\'+e(l.href)+\'&amp;t=\'+e(d.title)+\'&amp;d=\'+e(w.getSelection?w.getSelection().toString():d.getSelection?d.getSelection():d.selection.createRange().text)+\'&amp;s=bm\';a=function(){if(!w.open(f+\'r\'+p,\'sharer\',\'toolbar=0,status=0,resizable=0,width=600,height=400\'))l.href=f+\'.new\'+p};if(\/Firefox\/.test(navigator.userAgent))setTimeout(a,0);else{a()}void(0)\"><img src=\"http://www.caca.cn/bookmark/fanfou.gif\" alt=\"Fanfou\" title=\"Fanfou\" border=\"0\"\/><\/a> &nbsp;<a href=\"javascript:location.href=\'http:\/\/digg.com\/submit?phase=2&url=\'+encodeURIComponent(location.href)+\'&title=\'+encodeURIComponent(document.title)\"><img alt=digg src=\"http://www.caca.cn/bookmark/digg.png\" border=0><\/a>"); 	
	}
};

$(function(){
	$("input#searchWorks").input();
	//$("textarea.comment").expression();
        $("textarea.assist").input();
		$("input.assist").input();
	$(".selectAll").checkbox("input[type='checkbox']");
	$("div.tab").tab(100);
	//$("#post textarea").textarea(250);
	$("#carousel").slide({offset : 340});
	//$("div#caricature").identify({padding:0});
	//$("div#cartoon").identify();
	$("#officalRecom").info();
	$("#myTurnGlue").highlight("#e6c48f");
	$("table.alternate").table("#f9f9f9","#fff");
	MoodEditer.editer($("#mood p"),"");
    EvenLi.evenClass($("#orderList ul.orderList"));
	EvenLi.lastClass($("#orderList ul.orderList .snakingBox"));
	$("#collect a").collect();
});