Event.observe(window,'load',contentViewerInit);
var blocker = false;
var edx_last_item = null;

function contentViewerInit(){
	var eachContentViewContainerArr = $$('div.eachContentViewContainer');
	var width = eachContentViewContainerArr[0].offsetLeft;

	for(var i = 0; i < eachContentViewContainerArr.length; i++){
		eachContentViewContainerArr[i].style.left = width+"px";
		width += (eachContentViewContainerArr[i].offsetWidth+6);
	}
}


function largeIt(obj){
	blocker = true;
	if(parseInt(obj.style.zIndex) == 42){
		edx_last_item = null;
		minimizeIt(obj);
		return false
	}
	if(edx_last_item != null)
		minimizeIt(edx_last_item);
	
	edx_last_item = obj;
	
	var top = obj.offsetTop;
	var left = obj.offsetLeft;
	var width =  obj.offsetWidth-parseInt(Element.getStyle(obj,'border-left-width')) - parseInt(Element.getStyle(obj,'border-right-width'));
	var height =  obj.offsetHeight-parseInt(Element.getStyle(obj,'border-bottom-width')) - parseInt(Element.getStyle(obj,'border-top-width'));
	var imageWidth = edx_down(obj,1).width;
	var imageHeight = edx_down(obj,1).height;
	var headerWidth = Element.down(edx_next(edx_down(obj)),'h2').offsetWidth;
	var headerHeight = Element.down(edx_next(edx_down(obj)),'h2').offsetHeight;
	var textWidth =  Element.down(edx_next(edx_down(obj)),'p').offsetWidth;
	var textHeight = Element.down(edx_next(edx_down(obj)),'p').offsetHeight;
	
	var closerArr = Element.select(obj,'div.eachContentCloser');
	closerArr[0].style.display = "block";

	var zoom = 40;
	var duration = 500;
	var targetTextHeight = (height+(zoom * 2)) - headerHeight;
	var eachContentViewContainerArr = $$('div.eachContentViewContainer');

	for(var i = 0; i < eachContentViewContainerArr.length; i++){
		if(eachContentViewContainerArr[i].style.zIndex == 5){
			minimizeIt(eachContentViewContainerArr[i]);
		}
	}


	obj.style.zIndex = 42; 
	Animator.add(obj.style, 'top', {from:top, to:(top-zoom), postfix:'px',duration:duration});
	Animator.add(obj.style, 'left', {from:left, to:(left-zoom), postfix:'px',duration:duration/*,wait:duration*/});
	Animator.add(obj.style, 'width', {from:width, to:width+(zoom * 2), 
					  postfix:'px',duration:duration,//wait:duration, 
					  finishCallback:
						function(){Element.down(edx_next(edx_down(obj)),'p').style.width = (headerWidth+zoom)+'px';} 
					 });
	Animator.add(obj.style, 'height', {from:height, to:height+(zoom * 2), 
					   postfix:'px',duration:duration,//wait:duration,
					   finishCallback:
						function(){Animator.add(Element.down(edx_next(edx_down(obj)),'p').style, 'height', {from:textHeight, 
														      to:targetTextHeight,
														      postfix:'px', 
														      duration:duration}
							); blocker = false;}
					 });

	//modify Image
	Animator.add(edx_down(obj,1), 'width', {from:imageWidth, to:(imageWidth+zoom), duration:duration,wait:duration});
	Animator.add(edx_down(obj,1), 'height', {from:imageWidth, to:(imageHeight+zoom), duration:duration,wait:duration});

	//modify Header
	Animator.add(Element.down(edx_next(edx_down(obj)),'h2').style, 'width', {from:headerWidth, to:(headerWidth+zoom), postfix:'px', duration:duration});

	obj.startH = height;
	obj.startW = width;
	obj.textH = textHeight;
}

function minimizeIt(obj){
	var top = obj.offsetTop;
	var left = obj.offsetLeft;
	var width =  obj.offsetWidth;
	var height =  obj.offsetHeight;
	var imageWidth = edx_down(obj,1).width;
	var imageHeight = edx_down(obj,1).height;
	var headerWidth = Element.down(edx_next(edx_down(obj)),'h2').offsetWidth;
	var headerHeight = Element.down(edx_next(edx_down(obj)),'h2').offsetHeight;
	var textWidth = Element.down(edx_next(edx_down(obj)),'p').offsetWidth;
	var textHeight = Element.down(edx_next(edx_down(obj)),'p').offsetHeight;

	var closerArr = Element.select(obj,'div.eachContentCloser');
	closerArr[0].style.display = "none";

	var zoom = 40;
	var duration = 500;
	var targetTextHeight = (obj.startH-(zoom * 2)) - headerHeight;

	Animator.add(obj.style, 'top', {from:top, to:(top+zoom), postfix:'px',duration:duration,
								      wait:duration});
	Animator.add(obj.style, 'left', {from:left, to:(left+zoom), postfix:'px',duration:duration,wait:duration});
	Animator.add(obj.style, 'width', {from:width, to:obj.startW, 
					  postfix:'px',duration:duration,wait:duration, 
					  finishCallback:
						function(){Element.down(edx_next(edx_down(obj)),'p').style.width = (headerWidth-zoom)+'px';} 
					 });
	Animator.add(obj.style, 'height', {from:height, to:obj.startH, 
					   postfix:'px',duration:duration,
					   wait:duration,
					   finishCallback:function(){blocker = false;}
					 });

	Animator.add(Element.down(edx_next(edx_down(obj)),'p').style, 'height', {from:textHeight, 
								      to:obj.textH,
								      postfix:'px', 
								      duration:duration}
							 );

	//modify Image
	Animator.add(edx_down(obj,1), 'width', {from:imageWidth, to:(imageWidth-zoom), duration:duration,wait:duration});
	Animator.add(edx_down(obj,1), 'height', {from:imageWidth, to:(imageHeight-zoom), duration:duration,wait:duration});

	//modify Header
	Animator.add(Element.down(edx_next(edx_down(obj)),'h2').style, 'width', {from:headerWidth, 
								   to:(headerWidth-zoom), 
								   postfix:'px', 
								   duration:duration,
								   finishCallback: function(){obj.style.zIndex = 0;}
								  });
}

edx_down = function(obj) {
	obj = obj.firstChild;
	if(obj == undefined) return undefined;
	do {
		if(obj.nodeType==1) {
			return obj;
		}
		obj=obj.nextSibling;
	} while (obj != undefined);
	return undefined;
}

edx_next = function(obj) {
	while  (obj.nextSibling != undefined){
		obj=obj.nextSibling;
		if(obj.nodeType==1) {
			return obj;
		}
	}
	return undefined;
}
