/* YUI Niceforms JS v0.1.02 by Josh Lizarraga @ FreshCut (http://www.freshcutsd.com/) */ /* Based on Niceforms by Lucian Slatineanu (http://www.emblematiq.com/projects/niceforms/) */ (function(){ YAHOO.namespace("util.Niceforms"); var ynf = YAHOO.util.Niceforms; ynf.img = "/javascript/yui/assets/"; ynf.cornerRadius = 0; ynf.niceHeight = 22; ynf.selectArrow = 25; ynf.selectSpeed = 0.25; ynf.selectTimer = 0.25; ynf.selectLimit = 10; ynf.selectScrollWidth = 15; ynf.css3Resize = false; ynf.niceText = function(pTarget){ var makeNice = function(niceTarget){ if(YAHOO.env.ua.ie == 6){ YAHOO.util.Dom.addClass(niceTarget, "ynf-ie6-text"); var oWrap = document.createElement("span"); oWrap.className = "ynf-ie6-text-wrap"; YAHOO.util.Dom.insertBefore(oWrap, niceTarget); oWrap.appendChild(niceTarget); } var oIMG = document.createElement("img"); oIMG.src = ynf.img + "blank.gif"; oIMG.alt = niceTarget.name; oIMG.className = "ynf-text"; YAHOO.util.Dom.insertAfter(oIMG, niceTarget); if(YAHOO.env.ua.ie == 7){ YAHOO.util.Dom.addClass(oIMG, "ynf-ie7-text-adjust"); } YAHOO.util.Event.addListener(niceTarget, "focus", function(){ YAHOO.util.Dom.addClass(oIMG, "ynf-text-focus"); if(YAHOO.env.ua.ie == 6){ YAHOO.util.Dom.addClass(oWrap, "ynf-ie6-text-wrap-focus"); } else if(YAHOO.env.ua.ie == 7){ YAHOO.util.Dom.addClass(niceTarget, "ynf-ie7-text-focus"); } }); YAHOO.util.Event.addListener(niceTarget, "blur", function(){ YAHOO.util.Dom.removeClass(oIMG, "ynf-text-focus"); if(YAHOO.env.ua.ie == 6){ YAHOO.util.Dom.removeClass(oWrap, "ynf-ie6-text-wrap-focus"); } else if(YAHOO.env.ua.ie == 7){ YAHOO.util.Dom.removeClass(niceTarget, "ynf-ie7-text-focus"); } }); }; // makeNice() if(typeof(pTarget) == "string"){ var oTarget = document.getElementById(pTarget); makeNice(oTarget); } else if(pTarget.nodeName.toUpperCase() == "INPUT" && pTarget.getAttribute("type") == "text"){ makeNice(pTarget); } else if(typeof(pTarget) == "object"){ for(var i=0; i'; } var oIMG = document.createElement("img"); oIMG.src = ynf.img + "blank.gif"; oIMG.alt = ""; oIMG.width = ynf.cornerRadius; oIMG.height = ynf.niceHeight; oIMG.className = "ynf-button-right"; oA.appendChild(oIMG); YAHOO.util.Dom.insertAfter(oA, niceTarget); YAHOO.util.Event.addListener(oA, "click", function(){ niceTarget.click(); return false; }); if(niceTarget.id != ""){ oA.id = "ynf-" + niceTarget.id; } }; // makeNice() if(typeof(pTarget) == "string"){ var oTarget = document.getElementById(pTarget); makeNice(oTarget); } else if(pTarget.nodeName.toUpperCase() == "BUTTON" || pTarget.nodeName.toUpperCase() == "INPUT"){ makeNice(pTarget); } else if(typeof(pTarget) == "object"){ for(var i=0; i oLongest){ oLongest = oLIA.offsetWidth; } if(parseInt(YAHOO.env.ua.opera) == 9){ // Say it ain't so Opera!! if(oLIA.firstChild.length > oOperaFix){ oOperaFix = oLIA.firstChild.length } } // SC if (niceTarget.options[i].selected) { oSpan.removeChild(oSpan.childNodes[0]); oSpan.appendChild(document.createTextNode(niceTarget.options[i].text)); niceTarget.value = niceTarget.options[i].rel; } // SC end } if(parseInt(YAHOO.env.ua.opera) == 9){ // Opera 9 sees all the links as 35px long. // The following is a rough approximation based on the longest string. oLongest = ((parseInt(YAHOO.util.Dom.getStyle(oLastLink, "font-size")) / 2) * oOperaFix) + (ynf.cornerRadius * 2); } YAHOO.util.Dom.setStyle(oDiv, "width", oLongest + ynf.selectArrow + (ynf.cornerRadius * 2) + "px"); YAHOO.util.Dom.setStyle(oOptionsWrap, "width", oLongest + ynf.cornerRadius + "px"); if(niceTarget.options.length > ynf.selectLimit){ YAHOO.util.Dom.setStyle(oOptionsContainer, "height", (oLastLink.offsetHeight * ynf.selectLimit) + "px"); YAHOO.util.Dom.setStyle(oOptionsContainer, "overflow-x", "hidden"); YAHOO.util.Dom.setStyle(oOptionsContainer, "overflow-y", "scroll"); YAHOO.util.Dom.setStyle(oOptionsWrap, "width", parseInt(YAHOO.util.Dom.getStyle(oOptionsWrap, "width")) + ynf.selectScrollWidth + "px"); YAHOO.util.Dom.setStyle(oOptionsWrap, "margin-right", -(ynf.cornerRadius) + "px"); YAHOO.util.Dom.setStyle([oIMG2, oIMG3], "display", "none"); } if(YAHOO.env.ua.ie == 6 || YAHOO.env.ua.ie == 7){ YAHOO.util.Dom.addClass(oA, "ynf-ie6-select-fix"); YAHOO.util.Dom.addClass(oOptionsWrap, "ynf-ie6-select-fix"); YAHOO.util.Dom.setStyle(oDiv, "display", "inline"); var oIE6IMG = document.createElement("img"); oIE6IMG.src = ynf.img + "blank.gif"; oIE6IMG.alt = niceTarget.name; oIE6IMG.width = 1; oIE6IMG.height = ynf.niceHeight; oIE6IMG.className = "ynf-ie6-select-fix"; oA.appendChild(oIE6IMG); var oIE6As = oUL.getElementsByTagName("a"); } // Animation: niceTarget.expand = new YAHOO.util.Anim(oOptionsWrap, { height: { by: oOptionsContainer.offsetHeight }, opacity: { to: 1 } }, ynf.selectSpeed, YAHOO.util.Easing.easeOut); niceTarget.collapse = new YAHOO.util.Anim(oOptionsWrap, { height: { to: 0 }, opacity: { to: 0 } }, ynf.selectSpeed, YAHOO.util.Easing.easeOut); niceTarget.collapse.onComplete.subscribe(function(){ YAHOO.util.Dom.removeClass(oDiv, "ynf-z"); }); YAHOO.util.Event.addListener(oA, "click", function(){ if(niceTarget.active == false){ niceTarget.active = true; YAHOO.util.Dom.addClass(oDiv, "ynf-z"); if(YAHOO.env.ua.gecko > 1 && YAHOO.env.ua.gecko < 1.9){ // FF2 -moz-inline-stack fix: YAHOO.util.Dom.setX(oOptionsWrap, YAHOO.util.Dom.getX(oDiv) + ynf.cornerRadius); YAHOO.util.Dom.setY(oOptionsWrap, YAHOO.util.Dom.getY(oDiv) + ynf.niceHeight); } niceTarget.expand.animate(); } }); YAHOO.util.Event.addListener(oDiv, "mouseover", function(){ if(typeof(niceTarget.timer) != "undefined"){ clearTimeout(niceTarget.timer); } }); YAHOO.util.Event.addListener(oDiv, "mouseout", function(){ niceTarget.timer = setTimeout(function(){ // Giving Layout to the links breaks everything, // while no Layout leads to early collapse, // so IE users must choose an option. if(niceTarget.active == true && YAHOO.env.ua.ie != 6 && YAHOO.env.ua.ie != 7){ niceTarget.active = false; niceTarget.collapse.animate(); } }, ynf.selectTimer * 1000); }); var oULAs = oUL.getElementsByTagName("a"); YAHOO.util.Event.addListener(oULAs, "click", function(e){ var oTarget = YAHOO.util.Event.getTarget(e); niceTarget.active = false; niceTarget.collapse.animate(); oSpan.removeChild(oSpan.childNodes[0]); // oSpan.appendChild(document.createTextNode(oTarget.innerHTML)); // SC: this was changing & to & var span = document.createElement('span'); span.innerHTML = oTarget.innerHTML; oSpan.appendChild(span); niceTarget.value = oTarget.rel; niceTarget.selectChange.fire(niceTarget); if(typeof(niceTarget.onchange) == "function"){ niceTarget.onchange(); } }); oDiv.id = "ynf-" + niceTarget.name; }; // makeNice() if(typeof(pTarget) == "string"){ var oTarget = document.getElementById(pTarget); makeNice(oTarget); } else if(pTarget.nodeName.toUpperCase() == "SELECT"){ makeNice(pTarget); } else if(typeof(pTarget) == "object"){ for(var i=0; i