/*****************************************************************
File:palm-basic-yui.js
Description: File contains basic code elements for all global
palm.com pages.

Requires: YUI (implemented with YUI 2.7)
		  http://developer.yahoo.com/yui/

Modules developed:
	Header support: Handles search bar, store account drop down, etc.

Revisions: 
	Rev 1: 1/3/2009 - Created Kevin Hague - Palm Web Marketing Team 
	Rev 2: 1/14/2009 - Fixed search bar issues on multi-word submits
	Rev 3: 3/4/2009 - further improvements for use globally
	Rev 4: 3/9/2009 - converted from mootools to YUI
	Rev 5: 4/11/2009 - added object ID tests for listeners
					   fixed changed css target ID
	  			       flyOutAccountToggle stop event (no IE6 clucks)
	Rev 6: 4/14/2009 - fixed stop event on a-hrefs in dropdown
	Rev 7: 5/16/2009 - added generic png handler
					   
Author: Palm IT Web Team

Notes: Suggest compression of all js files!
******************************************************************/
//simple document.getElementById extender using "prototype style" selector ($)
function $(domID){
	return (!domID) ? null : document.getElementById(domID);
}
//create header namespace
YAHOO.namespace('YAHOO.PALMHEADER');

//palm basic template page handler
YAHOO.PALMHEADER.basicPageHander = function() {
	//BEGIN private methods
	searchInput = function(e) {
		YAHOO.util.Event.stopEvent(e);
		if(e.type=='focus') {
			$('search-input-bg').className = 'search-input-bg input-focus';
			$('globalsearchinput').value = '';
		} else {
			var locInputVal = $('globalsearchinput').value;
			if(locInputVal == "" || locInputVal == "Search...") {
				$('search-input-bg').className = 'search-input-bg';
				$('globalsearchinput').value = 'Search...';
			} 
		}
	}
	
	//submits the search bar query to GSA handler
	searchSubmit = function() {
		if($('globalsearchinput').value != "Search...") {
			window.location.href = "http://www.palm.com/us/search/developer.html?search=" + escape($('globalsearchinput').value); 
		}
	} 			
	
	//store drop down: id=storeaccount-dropdown
	flyOutAccountToggle = function(e) {

		tg=YAHOO.util.Event.getTarget(e);
		//stop event only on the "Store Account" link - allow passthrough on the real dropdown links
		if(tg.tagName.toUpperCase()=="A") {
			if(tg.href=="#") {
				YAHOO.util.Event.stopEvent(e);		
			}
		}
		if($('menu-storeaccount').className != "on") {
			$('storeaccount-dropdown').style.display = "block";
			var fadeIn = new YAHOO.util.Anim('storeaccount-dropdown',{opacity:{to:1.0}},0.6,YAHOO.util.Easing.easeOut);
			fadeIn.animate();
			$('menu-storeaccount').className = "on" ;
			$('storeaccount-dropdown').className = "on";
		} else {
			$('menu-storeaccount').className = "" ;
			$('storeaccount-dropdown').className = "";
			var fadeOut = new YAHOO.util.Anim('storeaccount-dropdown',{opacity:{to:0.0}},0.6,YAHOO.util.Easing.easeIn);
			fadeOut.onComplete.subscribe(function(){
				$('storeaccount-dropdown').style.display = "none";
			});
			fadeOut.animate();
		}
	}
	//END PRIVATE methods
	
	return  {
		//PUBLIC methods 
		//initialize the header javascript
		initHeader: function(){
			//fix background images flicker in IE6
			try {if (!window.XMLHttpRequest && document.uniqueID) {document.execCommand('BackgroundImageCache', false, true);}} catch(e) {}

			//setup search bar in header
			if(YAHOO.util.Dom.inDocument('globalsearchinput')){
				YAHOO.util.Event.addListener('globalsearchinput', 'focus', searchInput);
				YAHOO.util.Event.addListener('globalsearchinput', 'blur', searchInput);
				//reset the searchbar if returning from results
				$('globalsearchinput').blur();
				$('globalsearchinput').value = "Search...";
				//return key evt handler
				YAHOO.util.Event.addListener('globalsearchinput', 'keydown', function(e){
					if (e.keyCode == 13){
						 YAHOO.util.Event.stopEvent(e);
						 searchSubmit();
					}
				}); 
			}
			//setup search-submit overrides
			if(YAHOO.util.Dom.inDocument('search-submit')){
				YAHOO.util.Event.addListener('search-submit', 'click', searchSubmit);
			}
			//dropdown menu setup
			if(YAHOO.util.Dom.inDocument('menu-storeaccount')){
				YAHOO.util.Event.addListener('menu-storeaccount', 'click', flyOutAccountToggle);
			}
		}
	};
	
}();
//YAHOO Element DOM detection - HEADER
//see http://developer.yahoo.com/yui/event/#onavailable
YAHOO.util.Event.onAvailable("header", YAHOO.PALMHEADER.basicPageHander.initHeader);

//******************************IE helper - Yes Bill, Internet Explorer needs help********************************
YAHOO.namespace('YAHOO.PALMMSIE');
YAHOO.PALMMSIE.pnghander = function() { //basic img tag PNG handler
		findImages = function(imageArray) {
			for(i=0; i<imageArray.length;i++){ //iterate through IDs - use css hack for background images!
				if($(imageArray[i]).tagName == "IMG") { //is it directly an IMG tag?
					if($(imageArray[i]).className.indexOf("ie6-pngFix") > -1) {  
						imgTagPngFix($(imageArray[i])); //call png fixer			
					}
				} else { //it's a passed container ID and so we'll loop for classname key ie6-pngFix
					var tempImg = YAHOO.util.Dom.getElementsByClassName('ie6-pngFix', 'img', imageArray[i]); //get all matching class names within the container
					for(i=0; i<tempImg.length; i++){
						imgTagPngFix(tempImg[i]); //call png fixer	
					}
				}
			}
		}
		imgTagPngFix = function(tagPointer) {
			if(tagPointer.tagName == "IMG" && tagPointer.src.indexOf(".png") > -1) {
				//console.log("imgtagfix",tagPointer.tagName, tagPointer.src, tagPointer.src.indexOf(".png"));
				tagPointer.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod="image", src="' + tagPointer.src + '");';
				tagPointer.src = "/assets/images/global/transPngFix.gif";
			}
		}

	return {
		init: function(imageArray) {
			
			if (YAHOO.env.ua.ie == 6 && imageArray.length > 0) {
				findImages(imageArray);
			}
		}
		
	};
} () ;