 /************************
 	Visual effects for m.com
 	Author: Aaron Curry
 	Version: May 28, 2007
 ************************/
 
 /**
 * These methods extend the YAHOO.widget namespace into YAHOO.widget.Effect
 * Yahoo UI Dependancies
 * yahoo-min.js	
 * event-min.js
 * dom-min.js
 * animation-min.js
 **/
(function() {
if (typeof YAHOO != "undefined") {
	YAHOO.widget.Effect = function(el) {
		this.oEl = el;
		this.height = this.oEl.offsetHeight;
	};
	YAHOO.widget.Effect.prototype.Collapse = function(iTimer, onComplete) {
		var timer = iTimer || 0.5;
		this.oEl.style.overflow = 'hidden';
		var slider = new YAHOO.util.Anim(this.oEl, { height: { to:0} }, timer, YAHOO.util.Easing.easeOutStrong);
		if ( onComplete ) {
			slider.onComplete.subscribe(onComplete);
		}
		slider.animate();
	};
	YAHOO.widget.Effect.prototype.Expand = function(iTimer, onComplete) {
		this.oEl.style.visibility = 'visible'
		this.oEl.style.overflow = 'hidden';
		this.oEl.style.height = '';
		var height = this.oEl.offsetHeight;
		this.oEl.style.height = '0';
		this.oEl.style.visibility = 'visible';
		var timer = iTimer || 1;
		var slider = new YAHOO.util.Anim(this.oEl, { height: { to:height, from:0} }, timer, YAHOO.util.Easing.easeOutStrong);
		if ( onComplete ) {
			slider.onComplete.subscribe(onComplete);
		}
		slider.animate();
	}
	}
})();

 	var effects = {
	externalLinks: function() {
		if(!document.getElementById || !document.createTextNode){return;}
		var linkHook ='pop-up-window'; 
		var linkPic='/Images/Arrows/icon_newwindow_9x8.gif';
		var beforeLink=0;

		var links=utils.getElementsByClass(linkHook); 
		if(!links){return;}
		
		for(var i=0;i<links.length;i++)
		{
			var newimg=document.createElement('img');
			newimg.setAttribute('src',linkPic);
			newimg.className = "double-window-icon";
			if(beforeLink)
			{
				links[i].insertBefore(newimg,links[i].firstChild);
			} else {
				links[i].appendChild(newimg);
			}
			links[i].style.backgroundImage = "none";
			links[i].style.paddingRight = "0";
		}
	},
	matchHeight : function(adjustHeight) {
 	// Make elements with the same class name the same height
	
	     // Get all elements that match the adjustHeight
	     var adjustUs = utils.getElementsByClass(adjustHeight);
	
	     // Initialize maximum height value
	     var maxHeight = 0;
	     var elementHeight = 0;
	
		// Iterate over all elements to be adjusted
		for(var i=0; i<adjustUs.length; i++){
	
			// Determine height of the element
        	if(adjustUs[i].offsetHeight){
            	elementHeight = adjustUs[i].offsetHeight;
        	}
        	else if(adjustUs[i].style.pixelHeight){
            	elementHeight = adjustUs[i].style.pixelHeight;
        	}
	
            // Calculate maximum height
            maxHeight = Math.max(maxHeight,elementHeight);
	     }
	
	     // Iterate through and adjust the elements to the maxHeight
	     for(var i=0; i<adjustUs.length; i++){
	          adjustUs[i].style.height = (maxHeight) + 'px';
	     }
	},
	
	alignBottom : function(elementsToAdjust) {
 	// Takes elements of a certain class name and pushes its children to the bottom
		
		// Get all elements that match the elementsToAdjust
	    var adjustUs = utils.getElementsByClass(elementsToAdjust);
		var maxHeight = 0;
		
		// Find the maximum height of the parent elements
		for(var i=0; i<adjustUs.length; i++){
			// Determine height of the element
        	if(adjustUs[i].offsetHeight){
            	elementHeight = adjustUs[i].offsetHeight;
        	}
        	else if(adjustUs[i].style.pixelHeight){
            	elementHeight = adjustUs[i].style.pixelHeight;
        	}
        	// Calculate maximum height
            maxHeight = Math.max(maxHeight,elementHeight);
        }
	
		// Iterate over all elements to be adjusted
		for(var i=0; i<adjustUs.length; i++){
	     	var elementHeight = 0;
	     	var childrensHeight = 0;
	     	var elementsChildren = adjustUs[i].childNodes;
	     	var adjustedPadding = 0;
	     	var elementsFirstChild = utils.findChildNode(adjustUs[i]);
	     	
        	// Loop through the children to determine their height
			for(var j=0; j<elementsChildren.length; j++){
				// Determine height of the element's children
				if(elementsChildren[j].nodeType == 1) {
		        	if(elementsChildren[j].offsetHeight){
		            	childrensHeight += elementsChildren[j].offsetHeight;
		        	}
		        	else if(elementsChildren[j].style.pixelHeight){
		            	childrensHeight += elementsChildren[j].style.pixelHeight;
		        	}
		        }
			}
			
        	adjustedPadding = maxHeight - childrensHeight;
        	if(adjustedPadding > 0){
	        	adjustUs[i].style.paddingTop = (adjustedPadding) + 'px';
	        }
	     }
	},
	
	fillParentContainer : function(adjustHeight) {
 	// Make an element the same height as its parent
		
	    // Get all elements that match the adjustHeight
	    var adjustMe = document.getElementById(adjustHeight);
		var parentElement = utils.findParentNode(adjustMe);
		
		// Determine height of the element
    	if(parentElement.offsetHeight){
        	var elementHeight = parentElement.offsetHeight;
    	}
    	else if(parentElement.style.pixelHeight){
        	var elementHeight = parentElement.style.pixelHeight;
    	}
		
	    // Adjust the height of the element
	    adjustMe.style.height = (elementHeight) + 'px';
	},
	
	initializeExpandableContent : function(hiddenElementTag, controlTag) {
 		hiddenContent = document.getElementsByTagName(hiddenElementTag);
		controlElements = document.getElementsByTagName(controlTag);
	
		for(var i = 0; i < hiddenContent.length; i++) {
			if(hiddenContent[i].className == "expandable-content-container") {
				hiddenContent[i].style.display = "none";
			}
    	}

    	for(var i = 0; i < controlElements.length; i++) {
			if(controlElements[i].className.match("expandable-content-control")) {
				if(controlElements[i].className.match("open")) {
					controlElements[i].onclick = effects.hideContent;
					controlElements[i].className = "expanded";
				}
				else {
					controlElements[i].onclick = effects.showContent;
					controlElements[i].className = "collapsed";
				}
			}
    	}
	},

	showContent : function() {
	// Requires utilities.js
	// Shows expandable content

		dojo.lfx.html.explode(this,utils.findNextNode(this),100).play();

		this.className="expanded";
		this.onclick = effects.hideContent;
		// don't follow links
		if(this.tagName == 'A'){ return false };
	},

	hideContent : function() {
	// Requires utilities.js
	// Hides expandable content
		dojo.lfx.html.implode(utils.findNextNode(this),this,100).play();

		this.className="collapsed";
		this.onclick = effects.showContent;
		// don't follow links
		if(this.tagName == 'A'){ return false };
	},
	controller : function(e) {
		var $D = YAHOO.util.Dom;
		var $E = YAHOO.util.Event;
		var target = $E.getTarget(e);
		var z = new YAHOO.widget.Effect(this);
		if ( !$D.hasClass(this,'content-collapsed') ) {
			target.className = 'collapsed';
			$D.addClass(this,'content-collapsed')
			z.Collapse();
		}
		else {
			target.className = 'expanded';
			$D.removeClass(this,'content-collapsed')
			z.Expand();
		}
		$E.stopEvent(e);
	},
	
	loadExpandableContent : function () {
		
		 // Hide hidden content and add in show/hide controls
		var collapsedControlEl = YAHOO.util.Dom.getElementsByClassName("expandable-content-control");
		var expandedControlEl = YAHOO.util.Dom.getElementsByClassName("open-expandable-content-control");
		var collapsedContent = YAHOO.util.Dom.getElementsByClassName("expandable-content-container");
		var expandedContent = YAHOO.util.Dom.getElementsByClassName("open-expandable-content-container");

		var controller = collapsedControlEl.concat(expandedControlEl);
		var content = collapsedContent.concat(expandedContent);

		for(var i = 0; i < content.length; i++) {
			if(content[i].className == 'expandable-content-container') {
				content[i].style.visibility = 'hidden';
				content[i].style.overflow = 'hidden';
				content[i].style.height = '0';
				YAHOO.util.Dom.addClass(content[i],'content-collapsed')
			}
		}
		for(var i = 0; i < controller.length; i++) {
			if (controller[i].className == 'open-expandable-content-control') {
				YAHOO.util.Dom.addClass(controller[i], 'expanded');
			}
			else {
				YAHOO.util.Dom.addClass(controller[i], 'collapsed');
			}
			YAHOO.util.Event.on(controller[i],'click',effects.controller,content[i],true);
		}
	}
}

function i(ur,w,h){
      document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="'+w+'" height="'+h+'"> ');
      document.write('<param name="movie" value="' + ur + '">');
      document.write('<param name="quality" value="high"> ');
      document.write('<param name="wmode" value="transparent"> ');
      document.write('<param name="menu" value="false"> ');
      document.write('<embed src="' + ur + '" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'+w+'" height="'+h+'"></embed> ');
      document.write('</object> ');
}
function ResumeError() {
return true;
}
window.onerror = ResumeError;
