ismac = (navigator.appVersion.indexOf("Mac") != -1);
isie = (document.all) ? 1 : 0;
var fxSelect = [];
var fxSelectMode = [];

function initFxSelect() {
	// Find all Select elements
	var selects = document.getElementsByTagName('select');
	var arClass;
	
	for (var i = 0; i < selects.length; i++) {
		// Allow for multiple class names
		arClass = selects[i].className.split(' ');
		if(selects[i].className.indexOf("fx-select") != -1) {
			fxSelect[fxSelect.length] = selects[i];
			if(arClass.length == 3) {
				fxSelectMode[fxSelectMode.length] = arClass[2];
			} else {
				fxSelectMode[fxSelectMode.length] = "";
				}
			}
		}
		
	// Loop through the found select elements
	for (var i = 0; i < fxSelect.length; i++) {
		// Save the original outer div for later
		var _select = fxSelect[i];
		var _mode = fxSelectMode[i];
		//if((ismac && !isie) || (!ismac)) 
		selectReplacement(fxSelect[i],i);
		//else fxSelect[i].className = "";

		}	
   	}
		
	var timer = null;
	var last = null;
	function IEPathOut(obj) {
		obj = document.getElementById(obj);
		obj.className = obj.className.replace(new RegExp(" hover\\b"), '');
		timer = null;
		}
		
	function selectReplacement(obj, z) {
      	var div = document.createElement('div');
		div.id = "fx-" + obj.id;
		div.className = obj.className;
		div.style.zIndex = (9000-z);
		//alert(div.id + "z: " + div.style.zIndex)
	
		// Patch for IE.
       	if (window.attachEvent) {
			div.onmouseover = function() {
         		if(timer && last == this.id) {
					window.clearTimeout(timer);
					}
				else this.className += ' hover';
       			};
       		div.onmouseout = function() {
				timer = window.setTimeout("IEPathOut('"+this.id+"')", 200)
       			last = this.id;
				};
       		}		
		// end patch
		
		var span = document.createElement('span');		
		span.id = 'select-label-'+obj.id;
		var spantxt = document.createTextNode("");
		span.appendChild(spantxt);
		
		span.onclick = function() {
			if(div.className.indexOf("selectOpen") != -1) {
				div.className = obj.className;
			} else {
				div.className = obj.className + ' selectOpen';
				}
            };		
	  	span.className = 'bt';
		
		var ul = document.createElement('ul');
      	ul.className = 'fx-select';
      	var opts = obj.options;

		var selectedOpt = (!obj.selectedIndex) ? 0 : obj.selectedIndex;
		
		for (var i=0; i<opts.length; i++) {
	        var li = document.createElement('li');
			var lispan = document.createElement('span');
			var txt = document.createTextNode(opts[i].text);
			lispan.appendChild(txt);
			li.appendChild(lispan);
        	li.selIndex = i;
        	li.selectID = obj.id;
        	li.attachElement = null;

			// Attach a external Child UL.
			if(opts[i].className != "") {
				arClass = opts[i].className.split(' ');
				li.attachElement = document.getElementById(arClass[0]);
				if(li.attachElement) {
					li.attachElement.id = null;
					li.appendChild(li.attachElement);
					}					
				} 
			if(opts[i].text != '') {
				li.onclick = function() {
						if(this.attachElement) {
							div.className = obj.className + ' selectOpenSub';
						} else {
							div.className = obj.className;
						}
	         			selectMe(this);
	        		};
	        	if (i == selectedOpt) {
	          		var spantxt = document.createTextNode(opts[i].text);
					span.appendChild(spantxt);
					li.className = 'selected';
	       			}
				// Patch for IE.
	        	if (window.attachEvent) {
	          		lispan.onmouseover = function() {
	            		this.className += ' hover';
	          			};
	          		lispan.onmouseout = function() {
	            		this.className = this.className.replace(new RegExp(" hover\\b"), '');
	          			};
	        		}
				// End Patch					
				} else {
					li.style.display = 'none';
					}
					
        	ul.appendChild(li);
			div.appendChild(span);
			div.appendChild(ul);
			
      		}
			
	
      	obj.parentNode.insertBefore(div,obj);
		obj.style.display = "none";
		div.timer = 0;
		div.cn = obj.className;
		
		
		AttachEvent(div,'mouseover', function() { clearTimeout(div.timer); div.timer = 0; },false);
		AttachEvent(div,'mouseout', function() { div.timer = setTimeout("HideFXmenu('" + div.id + "')",200) },false);
		
    	}
	
	function HideFXmenu(div,cn) {
		div = document.getElementById(div);
		div.className = div.cn;
		}	
		
	
	function selectMe(obj) {
    	var lis = obj.parentNode.getElementsByTagName('li');
      	for (var i=0; i<lis.length; i++) {
        	if (lis[i] != obj) {
          		lis[i].className='';
       		} else {
          		var span = document.getElementById('select-label-'+obj.selectID);
				span.innerHTML = lis[i].childNodes[0].childNodes[0].nodeValue;
				obj.className='selected';
				setVal(obj.selectID, obj.selIndex);		
        		}
      		}
    	}
		
	function setVal(objID,val) {
    	var obj = document.getElementById(objID);
		obj.selectedIndex = val;

		if(obj.options[val].className.indexOf("redirect") != -1) { // Option redirect
			v =  obj.options[val].value;
			if((v != null) && (v != 'null')) {
				document.location = v; 	
				}
			
		} else if (obj.options[val].className.indexOf("post") != -1) {  // Option post
			v = obj.options[val].value;
			//obj.form.deptID.value = obj.options[val].value;
			if((v != null) && (v != 'null')) {
				obj.onchange = new Function(obj.form.submit());		
				}
			
		} else if (obj.options[val].className.indexOf("target") != -1) { // Option Target to 
			v =  obj.options[val].value;
			target = obj.options[val].className.split(" ");
			if((v != null) && (v != 'null')) {
				 eval("window.frames['" + target[1] + "'].location.href = '" + v + "'");
				 }
				 
		} else if (obj.options[val].className.indexOf("search") != -1) { // Option Target to 
			v = obj.options[val].value;
			obj.form.rootDept.value = obj.options[val].value;
			obj.form.deptID.value = "";
			if((v != null) && (v != 'null')) {
				obj.onchange = new Function(obj.form.submit());		
				}
					
		} else if (obj.className.indexOf("redirect") != -1) { // Select Redirect
			v =  obj.options[val].value;
			if((v != null) && (v != 'null')) {
				document.location = v; 	
				}
		// 
		// This is a special case to allow a iframe to be switched between two departements,
		// for french and english Books for example.
		//
		} else if (obj.className.indexOf("replaceDeptTarget") != -1) { // Select Redirect
			v =  obj.options[val].value;
			if((v != null) && (v != 'null')) {
				target = obj.className.split(" ");
				depts = v.split(",");
				var sUrl = window.frames[target[2]].location.href;
				// Switch depts
				sUrl = sUrl.replace(eval("/"+depts[0]+"/g"), depts[1]);
				// Discard subDepts
				sUrl = sUrl.replace("deptID","nodeptID")
				eval("window.frames[\"" + target[2] + "\"].location.href = '" + sUrl + "'");
				
				// Reset the label on the dropdown.
				var oGenreDivObj;
				var oGenreObj;
				var sGenreLangAct;
				
				if ( document.all("tools-genre-"+depts[0]) != null )
				{
					oGenreObj = document.all("tools-genre-"+depts[0]);
					sGenreLangAct = depts[0];
				}
				if ( document.all("tools-genre-"+depts[1]) != null )
				{
					oGenreObj = document.all("tools-genre-"+depts[1]);
					sGenreLangAct = depts[1];
				}
				oGenreDivObj = document.all("fx-tools-genre-"+sGenreLangAct);
				if ( oGenreDivObj != null )
					if ( oGenreDivObj.all("select-label-tools-genre-"+sGenreLangAct) != null )
						oGenreDivObj.all("select-label-tools-genre-"+sGenreLangAct).innerHTML = oGenreObj.options[0].innerHTML;
				}
		
		} else if (obj.className.indexOf("post") != -1) { // Select Post
			v = obj.options[val].value;
			obj.form.deptID.value = obj.options[val].value;
			if((v != null) && (v != 'null')) {
				obj.onchange = new Function(obj.form.submit());		
				}
			}
    	}

function initFxSelectIEMAC() {
	var selects = document.getElementsByTagName('select');
	var arClass;
	
	for (var i = 0; i < selects.length; i++) {
		// Allow for multiple class names
		arClass = selects[i].className.split(' ');
		if(selects[i].className.indexOf("fx-select") != -1) {
			fxSelect[fxSelect.length] = selects[i];
			if(arClass.length == 3) {
				fxSelectMode[fxSelectMode.length] = arClass[2];
			} else {
				fxSelectMode[fxSelectMode.length] = "";
				}
			}
		}	
		
	// Loop through the found select elements
	for (var i = 0; i < fxSelect.length; i++) {
		// Save the original outer div for later
		var _select = fxSelect[i];
		var _mode = fxSelectMode[i];
		//if((ismac && !isie) || (!ismac)) 
		if(fxSelectMode[i] = 'redirect') fxSelect[i].onchange = redirectMAC;
		//else fxSelect[i].className = "";
		}	
	}

// ------[ Event Handlers ]------------------------------------------------- //
//*** This code is copyright 2003 by Gavin Kistner, gavin@refinery.com
//*** It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt
//*** Reuse or modification is free provided you abide by the terms of that license.
//*** (Including the first two lines above in your source code satisfies the conditions.)
//***Cross browser attach event function. For 'evt' pass a string value with the leading "on" omitted
//***e.g. AttachEvent(window,'load',MyFunctionNameWithoutParenthesis,false);

 function AttachEvent(obj,evt,fnc,useCapture){
	if (!useCapture) useCapture=false;
	if (obj.addEventListener) {
		obj.addEventListener(evt,fnc,useCapture);
		return true;
	} else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);
	else {
		MyAttachEvent(obj,evt,fnc);
		obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
	}
}

function MyAttachEvent(obj,evt,fnc) {
    if (!obj.myEvents) obj.myEvents={};
    if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
    var evts = obj.myEvents[evt];
    evts[evts.length]=fnc;
	}

function MyFireEvent(obj,evt) {
	if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
	var evts = obj.myEvents[evt];
	for (var i=0,len=evts.length;i<len;i++) evts[i]();
	}

// ------[ Event Registration ]------------------------------------------------- //
// AttachEvent(window,'load',initPanel,false);


if((document.getElementById && document.createTextNode) && (!ismac || !isie)) {
	AttachEvent(window,'load',initFxSelect,false);
} 
