var j = jQuery.noConflict();
// onload
jQuery(function() {
    
    j("body").addClass("js");
    
    //for non-compliant browsers only
    j("body").applyAdvandcedCss();

    if(!(j.browser.msie) || (j.browser.msie && j.browser.version > 5.5)){
        
        j(".tag-cloud").initCloud();
        j(".slide-portlet").slideShow();
        j(".memory-portlet").memoryShow();
        
        j("#footer ul li:last").css("borderRight", "none");
        
        j("a").externalLinks();
    }
});

jQuery.fn.log = function (msg) {
	if(console){
		console.log("%s: %o", msg, this);
	}
  return this;
};

jQuery.fn.externalLinks = function () {
	this.each(function(i){
		var href= j(this).attr("href");
		if (href != null) {	
		    if(j(this).find("img").size() == 0 && href.indexOf("mailto") == -1 && href.indexOf("/") > 0){
			    j(this).addClass("ext");
		    }
		}
	});
	return this;
};

jQuery.fn.slideShow = function(){	
	if(this.find("img").size() > 0){
		var control = j(document.createElement("p"));                
		this.find("img").each(function(i){
			var link = j(document.createElement("a"));
			link.text(i + 1);
			link.attr("href", "#");
			if(i==0){
				link.addClass("active");
			}
			link.click(function(){
			
				if(j(this).hasClass("active")){
					return false;
				}
				j(this).parent("p").parent("div").find(".active").removeClass("active");
				j(this).addClass("active");
				j(this).parent("p").parent("div").find("img").fadeOut();
				j(this).parent("p").parent("div").find("img:eq("+i+")").fadeIn();				
				return false;
			});			
			control.append(link);
		});
		this.append(control);
    }    
};

jQuery.fn.memoryShow = function(){
	var cont = this;
	var items = this.find(".memory-item");
	var itemsCnt = items.length -1;

	items.each(function(i){
			
		var first		= j(this).find(".first");
		var second		= j(this).find(".second");
		var itemDesc	= j(this).find(".item-desc");
		var itemHeading	= j(this).find("h3");
		var itemLink	= j(this).find("a").not(j("p a"));
		
		if(itemsCnt == i) {
			cont.addClass("done");
		}

		if(first.size() > 0 ){
			if(second.size() > 0){
				j(this).css("cursor","pointer");
				j(this).hover(function(){
					first.fadeOut(100, function(){
					second.fadeIn(100)});
				},
				function(){
					second.fadeOut(100, function(){
						first.fadeIn(100);
						itemDesc.hide();
						itemHeading.hide()
						itemLink.hide();
					});
				});
				j(this).click(function(){
					second.hide();
					itemDesc.show();
					itemHeading.show();
					itemLink.show();
				});
			}else if(itemHeading.size() > 0){
				//j(this).css("cursor","default");
				j(this).hover(function(){
					first.hide();
					itemDesc.show();
					itemHeading.show();
					itemLink.show();
					
				},
				function(){
					first.show();
					itemDesc.hide();
					itemHeading.hide()
					itemLink.hide();
				});
			}	
		}
	});
}

jQuery.fn.initCloud = function(){
	j(this).find("li").each(function(i){
		
		j(this).click(function(){
			j(this).parent().find(".active").removeClass("active");
			j(this).addClass("active");
			j(this).addClass("history");
			var tagName = j(this).find("a").text();
			if(i==0){
				tagName = j(this).find("a").attr("href");
				tagName = tagName.substr(tagName.indexOf("?tag=")+5);
			}
				
				j(".memory-portlet .memory-item").each(function(i){
					if(j(this).find(".item-tags:contains('"+tagName+"')").length > 0){
						j(this).show(1000);
					}else{
						j(this).hide(300);
					}
				});			
		
			return false;
		});
		
	});
}



jQuery.fn.applyAdvandcedCss = function(){

    if(j.browser.msie && j.browser.version >= 6.0){        
        // addClass
        j(".page-content p:first").addClass("preamble"); 
        // css
        
        // content
    }               
};

jQuery.fn.makeRelative= function(){                
    this.each(function(i){
        if(j(this).width() > 75 && j.browser.msie){
            j(this).css("width", j(this).width() / 9.92 +"em");    
        }else{
            j(this).css("width", j(this).width() / 10 +"em");
        }           
    });           
};