From a8a1200189ac4d5ea309e7eb81ed4bd3c5dd0f93 Mon Sep 17 00:00:00 2001 From: slace Date: Mon, 15 Mar 2010 11:32:07 +0000 Subject: [PATCH] DO NOT DOWNLOAD. DOWNLOAD LATEST STABLE FROM RELEASE Fixing the icon/ thumbnail drop down lists so the images are shown [TFS Changeset #64740] --- .../config/ClientDependency.config | 2 +- .../presentation/umbraco.presentation.csproj | 3 + .../controls/ContentTypeControlNew.ascx | 4 +- .../controls/ContentTypeControlNew.ascx.cs | 26 +- .../umbraco/settings/EditNodeTypeNew.aspx | 23 +- umbraco/presentation/umbraco_client/ui/dd.css | 62 ++ .../umbraco_client/ui/dd_arrow.gif | Bin 0 -> 138 bytes .../umbraco_client/ui/jquery.dd.js | 551 ++++++++++++++++++ 8 files changed, 650 insertions(+), 21 deletions(-) create mode 100644 umbraco/presentation/umbraco_client/ui/dd.css create mode 100644 umbraco/presentation/umbraco_client/ui/dd_arrow.gif create mode 100644 umbraco/presentation/umbraco_client/ui/jquery.dd.js diff --git a/umbraco/presentation/config/ClientDependency.config b/umbraco/presentation/config/ClientDependency.config index 9c6bcbdb74..3ccb5aa8d7 100644 --- a/umbraco/presentation/config/ClientDependency.config +++ b/umbraco/presentation/config/ClientDependency.config @@ -1,4 +1,4 @@ - + diff --git a/umbraco/presentation/umbraco.presentation.csproj b/umbraco/presentation/umbraco.presentation.csproj index bf7c438c45..1fd4de1108 100644 --- a/umbraco/presentation/umbraco.presentation.csproj +++ b/umbraco/presentation/umbraco.presentation.csproj @@ -1448,6 +1448,9 @@ + + + diff --git a/umbraco/presentation/umbraco/controls/ContentTypeControlNew.ascx b/umbraco/presentation/umbraco/controls/ContentTypeControlNew.ascx index 3e819149e8..49bb02ebc7 100644 --- a/umbraco/presentation/umbraco/controls/ContentTypeControlNew.ascx +++ b/umbraco/presentation/umbraco/controls/ContentTypeControlNew.ascx @@ -59,10 +59,10 @@ - + - + diff --git a/umbraco/presentation/umbraco/controls/ContentTypeControlNew.ascx.cs b/umbraco/presentation/umbraco/controls/ContentTypeControlNew.ascx.cs index c20d3bac0b..6c90f5d260 100644 --- a/umbraco/presentation/umbraco/controls/ContentTypeControlNew.ascx.cs +++ b/umbraco/presentation/umbraco/controls/ContentTypeControlNew.ascx.cs @@ -10,11 +10,15 @@ using System.Web.UI; using ClientDependency.Core; using umbraco.IO; using umbraco.presentation; +using System.Collections.Generic; +using System.Linq; namespace umbraco.controls { [ClientDependency(ClientDependencyType.Javascript, "ui/jqueryui.js", "UmbracoClient")] + [ClientDependency(ClientDependencyType.Javascript, "ui/jquery.dd.js", "UmbracoClient")] + [ClientDependency(ClientDependencyType.Css, "ui/dd.css", "UmbracoClient")] [ClientDependency(ClientDependencyType.Css, "Tree/treeIcons.css", "UmbracoClient")] [ClientDependency(ClientDependencyType.Css, "Tree/Themes/umbraco/style.css", "UmbracoClient")] public partial class ContentTypeControlNew : System.Web.UI.UserControl @@ -104,16 +108,17 @@ namespace umbraco.controls Save.ImageUrl = UmbracoPath + "/images/editor/save.gif"; Save.AlternateText = ui.Text("save"); - + var listOfIcons = new List(); // Get icons // nh css file update, add support for css sprites foreach (string iconClass in cms.businesslogic.CMSNode.DefaultIconClasses) { - ListItem li = new ListItem(helper.SpaceCamelCasing((iconClass.Substring(1, iconClass.Length - 1))).Replace("Spr Tree", ""), iconClass); + ListItem li = new ListItem(helper.SpaceCamelCasing((iconClass.Substring(1, iconClass.Length - 1))).Replace("Spr Tree", "").Trim(), iconClass); li.Attributes.Add("class", "spriteBackground sprTree " + iconClass.Trim('.')); + li.Attributes.Add("style", "padding-left:20px !important; background-repeat:no-repeat;"); if (!this.Page.IsPostBack && li.Value == cType.IconUrl) li.Selected = true; - ddlIcons.Items.Add(li); + listOfIcons.Add(li); } DirectoryInfo dirInfo = new DirectoryInfo(UmbracoContext.Current.Server.MapPath(SystemDirectories.Umbraco + "/images/umbraco")); @@ -121,28 +126,33 @@ namespace umbraco.controls for (int i = 0; i < fileInfo.Length; i++) { // NH: don't show the sprite file - if (fileInfo[i].Name != "sprites.png") + if (fileInfo[i].Name != "sprites.png" && fileInfo[i].Name != "sprites_ie6.gif") { - ListItem li = new ListItem(fileInfo[i].Name + " (deprecated)", fileInfo[i].Name); - li.Attributes.Add("style", "background-image: url(" + this.ResolveClientUrl(SystemDirectories.Umbraco + "/images/umbraco/" + fileInfo[i].Name) + ");"); - li.Attributes.Add("class", "deprecatedImage"); + li.Attributes.Add("title", this.ResolveClientUrl(SystemDirectories.Umbraco + "/images/umbraco/" + fileInfo[i].Name)); if (!this.Page.IsPostBack && li.Value == cType.IconUrl) li.Selected = true; - ddlIcons.Items.Add(li); + listOfIcons.Add(li); } } + ddlIcons.Items.AddRange(listOfIcons.OrderBy(o => o.Text).ToArray()); + + Page.ClientScript.RegisterStartupScript(this.GetType(), "iconsDropDown", "jQuery(function() { jQuery('#" + ddlIcons.ClientID + "').msDropDown({ showIcon: false }); });", true); + // Get thumbnails dirInfo = new DirectoryInfo(IOHelper.MapPath(SystemDirectories.Umbraco + "/images/thumbnails")); fileInfo = dirInfo.GetFiles(); for (int i = 0; i < fileInfo.Length; i++) { ListItem li = new ListItem(fileInfo[i].Name); + li.Attributes.Add("title", this.ResolveClientUrl(SystemDirectories.Umbraco + "/images/thumbnails/" + fileInfo[i].Name)); if (!this.Page.IsPostBack && li.Value == cType.Thumbnail) li.Selected = true; ddlThumbnails.Items.Add(li); } + Page.ClientScript.RegisterStartupScript(this.GetType(), "thumbnailsDropDown", "jQuery(function() { jQuery('#" + ddlThumbnails.ClientID + "').msDropDown({ showIcon: false, rowHeight: '130', visibleRows: '2' }); });", true); + txtName.Text = cType.GetRawText(); txtAlias.Text = cType.Alias; description.Text = cType.Description; diff --git a/umbraco/presentation/umbraco/settings/EditNodeTypeNew.aspx b/umbraco/presentation/umbraco/settings/EditNodeTypeNew.aspx index f5b62dffdb..205479aa46 100644 --- a/umbraco/presentation/umbraco/settings/EditNodeTypeNew.aspx +++ b/umbraco/presentation/umbraco/settings/EditNodeTypeNew.aspx @@ -1,17 +1,20 @@ -<%@ Page Language="c#" Codebehind="EditNodeTypeNew.aspx.cs" AutoEventWireup="True" - Trace="false" Inherits="umbraco.settings.EditContentTypeNew" MasterPageFile="../masterpages/umbracoPage.Master" %> +<%@ Page Language="c#" CodeBehind="EditNodeTypeNew.aspx.cs" AutoEventWireup="True" + Trace="false" Inherits="umbraco.settings.EditContentTypeNew" MasterPageFile="../masterpages/umbracoPage.Master" %> <%@ Register TagPrefix="cc1" Namespace="umbraco.uicontrols" Assembly="controls" %> <%@ Register TagPrefix="uc1" TagName="ContentTypeControlNew" Src="../controls/ContentTypeControlNew.ascx" %> - - - -
-
- - + +
+ +
+
+ + +
-
\ No newline at end of file + diff --git a/umbraco/presentation/umbraco_client/ui/dd.css b/umbraco/presentation/umbraco_client/ui/dd.css new file mode 100644 index 0000000000..8dc28bab5d --- /dev/null +++ b/umbraco/presentation/umbraco_client/ui/dd.css @@ -0,0 +1,62 @@ +.dd { + /*display:inline-block !important;*/ + text-align:left; + background-color:#fff; + font-family:Arial, Helvetica, sans-serif; + font-size:12px; + float:left; +} +.dd .ddTitle { + background:#f2f2f2; + border:1px solid #c3c3c3; + padding:3px; + text-indent:0; + cursor:default; + overflow:hidden; + height:16px; +} +.dd .ddTitle span.arrow { + background:url(dd_arrow.gif) no-repeat 0 0; float:right; display:inline-block;width:16px; height:16px; cursor:pointer; +} + +.dd .ddTitle span.textTitle {text-indent:1px; overflow:hidden; line-height:16px;} +.dd .ddTitle span.textTitle img{text-align:left; padding:0 2px 0 0} +.dd .ddTitle img.selected { + padding:0 3px 0 0; + vertical-align:top; +} +.dd .ddChild { + position:absolute; + border:1px solid #c3c3c3; + border-top:none; + display:none; + margin:0; + width:auto; + overflow:auto; + overflow-x:hidden !important; + background-color:#ffffff; +} +.dd .ddChild .opta a, .dd .ddChild .opta a:visited {padding-left:10px} +.dd .ddChild a { + display:block; + padding:3px 0 3px 3px; + text-decoration:none; + color:#000; + overflow:hidden; + white-space:nowrap; + cursor:pointer; +} +.dd .ddChild a:hover { + background-color:#66CCFF; +} +.dd .ddChild a img { + border:0; + padding:0 2px 0 0; + vertical-align:middle; +} +.dd .ddChild a.selected { + background:#66CCFF; + +} +.hidden {display:none;} +s \ No newline at end of file diff --git a/umbraco/presentation/umbraco_client/ui/dd_arrow.gif b/umbraco/presentation/umbraco_client/ui/dd_arrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b29df710bac757c4a02d15dff34566cd070c851 GIT binary patch literal 138 zcmZ?wbhEHb6kt$bSj52a|NsBPhY$1Z6k=dtxN_ynty{N%3?NYa$pWTzKqN>l1GB%! z#ye{jPFafYz4T~xIj`JR-W1QY1u641QoCLrsZ)$~kDc4TTU?}1VetY1HbrxX{LM#9 kEDd9Q9M%R!3%wSdz4nk^^zFAleJ35YT5vJYgMq;s0Nu(m-T(jq literal 0 HcmV?d00001 diff --git a/umbraco/presentation/umbraco_client/ui/jquery.dd.js b/umbraco/presentation/umbraco_client/ui/jquery.dd.js new file mode 100644 index 0000000000..ba2e0fba40 --- /dev/null +++ b/umbraco/presentation/umbraco_client/ui/jquery.dd.js @@ -0,0 +1,551 @@ +// MSDropDown - jquery.dd.js +// author: Marghoob Suleman +// Date: 12th Aug, 2009 +// Version: 2.1 {date: 3rd Sep 2009} +// Revision: 25 +// web: www.giftlelo.com | www.marghoobsuleman.com +// MSDropDown - jquery.dd.js +// author: Marghoob Suleman +// Date: 12th Aug, 2009 +// Version: 2.1 {date: 3rd Sep 2009} +// Revision: 25 +// web: www.giftlelo.com | www.marghoobsuleman.com +/* +// msDropDown is free jQuery Plugin: you can redistribute it and/or modify +// it under the terms of the either the MIT License or the Gnu General Public License (GPL) Version 2 +*/ +; (function($) { + var oldDiv = ""; + $.fn.dd = function(options) { + $this = this; + options = $.extend({ + height: 120, + visibleRows: 7, + rowHeight: 23, + showIcon: true, + zIndex: 9999, + style: '' + }, options); + var selectedValue = ""; + var actionSettings = {}; + actionSettings.insideWindow = true; + actionSettings.keyboardAction = false; + actionSettings.currentKey = null; + var ddList = false; + config = { postElementHolder: '_msddHolder', postID: '_msdd', postTitleID: '_title', postTitleTextID: '_titletext', postChildID: '_child', postAID: '_msa', postOPTAID: '_msopta', postInputID: '_msinput', postArrowID: '_arrow', postInputhidden: '_inp' }; + styles = { dd: 'dd', ddTitle: 'ddTitle', arrow: 'arrow', ddChild: 'ddChild', disbaled: .30 }; + attributes = { actions: "onfocus,onblur,onchange,onclick,ondblclick,onmousedown,onmouseup,onmouseover,onmousemove,onmouseout,onkeypress,onkeydown,onkeyup", prop: "size,multiple,disabled,tabindex" }; + var elementid = $(this).attr("id"); + var inlineCSS = $(this).attr("style"); + options.style += (inlineCSS == undefined) ? "" : inlineCSS; + var allOptions = $(this).children(); + ddList = ($(this).attr("size") > 0 || $(this).attr("multiple") == true) ? true : false; + if (ddList) { options.visibleRows = $(this).attr("size"); }; + var a_array = {}; //stores id, html & value etc + //create wrapper + createDropDown(); + + function getPostID(id) { + return elementid + config[id]; + }; + function getOptionsProperties(option) { + var currentOption = option; + var styles = $(currentOption).attr("style"); + return styles; + }; + function matchIndex(index) { + var selectedIndex = $("#" + elementid + " option:selected"); + if (selectedIndex.length > 1) { + for (var i = 0; i < selectedIndex.length; i++) { + if (index == selectedIndex[i].index) { + return true; + }; + }; + } else if (selectedIndex.length == 1) { + if (selectedIndex[0].index == index) { + return true; + }; + }; + return false; + } + function createATags() { + var childnodes = allOptions; + var aTag = ""; + var aidfix = getPostID("postAID"); + var aidoptfix = getPostID("postOPTAID"); + childnodes.each(function(current) { + var currentOption = childnodes[current]; + //OPTGROUP + if (currentOption.nodeName == "OPTGROUP") { + aTag += "
"; + aTag += "" + $(currentOption).attr("label") + ""; + var optChild = $(currentOption).children(); + optChild.each(function(currentopt) { + var currentOptOption = optChild[currentopt]; + var aid = aidoptfix + "_" + (current) + "_" + (currentopt); + var arrow = $(currentOptOption).attr("title"); + arrow = (arrow.length == 0) ? "" : ' '; + var sText = $(currentOptOption).text(); + var sValue = $(currentOptOption).val(); + var sEnabledClass = ($(currentOptOption).attr("disabled") == true) ? "disabled" : "enabled"; + a_array[aid] = { html: arrow + sText, value: sValue, text: sText, index: currentOptOption.index, id: aid }; + var innerStyle = getOptionsProperties(currentOptOption); + if (matchIndex(currentOptOption.index) == true) { + aTag += ''; + aTag += arrow + sText + ''; + }); + aTag += "
"; + + } else { + var aid = aidfix + "_" + (current); + var arrow = $(currentOption).attr("title"); + arrow = (arrow.length == 0) ? "" : ' '; + var sText = $(currentOption).text(); + var sValue = $(currentOption).val(); + var sEnabledClass = ($(currentOption).attr("disabled") == true) ? "disabled" : "enabled"; + sEnabledClass += ' ' + $(currentOption).attr('class'); + a_array[aid] = { html: arrow + sText, value: sValue, text: sText, index: currentOption.index, id: aid }; + var innerStyle = getOptionsProperties(currentOption); + if (matchIndex(currentOption.index) == true) { + aTag += ''; + aTag += arrow + sText + ''; + }; + }); + return aTag; + }; + function createChildDiv() { + var id = getPostID("postID"); + var childid = getPostID("postChildID"); + var sStyle = options.style; + sDiv = ""; + sDiv += '
'; + var sDiv = '
' + arrow + sText + '
'; + return sDiv; + }; + function createDropDown() { + var changeInsertionPoint = false; + var id = getPostID("postID"); + var titleid = getPostID("postTitleID"); + var titletextid = getPostID("postTitleTextID"); + var childid = getPostID("postChildID"); + var arrowid = getPostID("postArrowID"); + var iWidth = $("#" + elementid).css('width'); //had to change this from .width() + var sStyle = options.style; + if ($("#" + id).length > 0) { + $("#" + id).remove(); + changeInsertionPoint = true; + } + var sDiv = '
options.visibleRows) { + var margin = parseInt($("#" + childid + " a:first").css("padding-bottom")) + parseInt($("#" + childid + " a:first").css("padding-top")); + var iHeight = ((options.rowHeight) * options.visibleRows) - margin; + $("#" + childid).css("height", iHeight + "px"); + } + //set out of vision + if (changeInsertionPoint == false) { + setOutOfVision(); + addNewEvents(elementid); + } + if ($("#" + elementid).attr("disabled") == true) { + $("#" + id).css("opacity", styles.disbaled); + } else { + applyEvents(); + //add events + //arrow hightlight + if (!ddList) { + $("#" + titleid).bind("mouseover", function(event) { + hightlightArrow(1); + }); + $("#" + titleid).bind("mouseout", function(event) { + hightlightArrow(0); + }); + }; + //open close events + $("#" + childid + " a.enabled").bind("click", function(event) { + event.preventDefault(); + manageSelection(this); + if (!ddList) { + $("#" + childid).unbind("mouseover"); + setInsideWindow(false); + var sText = (options.showIcon == false) ? $(this).text() : $(this).html(); + setTitleText(sText); + closeMe(); + }; + setValue(); + //actionSettings.oldIndex = a_array[$(this).attr("id")].index; + }); + $("#" + childid + " a.disabled").css("opacity", styles.disbaled); + if (ddList) { + $("#" + childid).bind("mouseover", function(event) { + if (!actionSettings.keyboardAction) { + actionSettings.keyboardAction = true; + $(document).bind("keydown", function(event) { + var keyCode = event.keyCode; + actionSettings.currentKey = keyCode; + if (keyCode == 39 || keyCode == 40) { + //move to next + event.preventDefault(); event.stopPropagation(); + next(); + setValue(); + }; + if (keyCode == 37 || keyCode == 38) { + event.preventDefault(); event.stopPropagation(); + //move to previous + previous(); + setValue(); + }; + }); + + } + }); + }; + $("#" + childid).bind("mouseout", function(event) { setInsideWindow(false); $(document).unbind("keydown"); actionSettings.keyboardAction = false; actionSettings.currentKey = null; }); + if (!ddList) { + $("#" + titleid).bind("click", function(event) { + setInsideWindow(false); + if ($("#" + childid + ":visible").length == 1) { + $("#" + childid).unbind("mouseover"); + } else { + $("#" + childid).bind("mouseover", function(event) { setInsideWindow(true); }); + openMe(); + }; + }); + }; + $("#" + titleid).bind("mouseout", function(evt) { + setInsideWindow(false); + }) + }; + }; + function getByIndex(index) { + for (var i in a_array) { + if (a_array[i].index == index) { + return a_array[i]; + } + } + } + function manageSelection(obj) { + var childid = getPostID("postChildID"); + if (!ddList) { + $("#" + childid + " a.selected").removeClass("selected"); + } + var selectedA = $("#" + childid + " a.selected").attr("id"); + if (selectedA != undefined) { + var oldIndex = (actionSettings.oldIndex == undefined || actionSettings.oldIndex == null) ? a_array[selectedA].index : actionSettings.oldIndex; + }; + if (obj && !ddList) { + $(obj).addClass("selected"); + }; + if (ddList) { + var keyCode = actionSettings.currentKey; + if ($("#" + elementid).attr("multiple") == true) { + if (keyCode == 17) { + //control + actionSettings.oldIndex = a_array[$(obj).attr("id")].index; + $(obj).toggleClass("selected"); + //multiple + } else if (keyCode == 16) { + $("#" + childid + " a.selected").removeClass("selected"); + $(obj).addClass("selected"); + //shift + var currentSelected = $(obj).attr("id"); + var currentIndex = a_array[currentSelected].index; + for (var i = Math.min(oldIndex, currentIndex); i <= Math.max(oldIndex, currentIndex); i++) { + $("#" + getByIndex(i).id).addClass("selected"); + } + } else { + $("#" + childid + " a.selected").removeClass("selected"); + $(obj).addClass("selected"); + actionSettings.oldIndex = a_array[$(obj).attr("id")].index; + }; + } else { + $("#" + childid + " a.selected").removeClass("selected"); + $(obj).addClass("selected"); + actionSettings.oldIndex = a_array[$(obj).attr("id")].index; + }; + }; + }; + function addNewEvents(id) { + document.getElementById(id).refresh = function(e) { + $("#" + this.id).dd(options); + }; + }; + function setInsideWindow(val) { + actionSettings.insideWindow = val; + }; + function getInsideWindow() { + return actionSettings.insideWindow; + }; + function applyEvents() { + var mainid = getPostID("postID"); + var actions_array = attributes.actions.split(","); + for (var iCount = 0; iCount < actions_array.length; iCount++) { + var action = actions_array[iCount]; + var actionFound = $("#" + elementid).attr(action); + if (actionFound != undefined) { + switch (action) { + case "onfocus": + $("#" + mainid).bind("mouseenter", function(event) { + document.getElementById(elementid).focus(); + }); + break; + case "onclick": + $("#" + mainid).bind("click", function(event) { + document.getElementById(elementid).onclick(); + }); + break; + case "ondblclick": + $("#" + mainid).bind("dblclick", function(event) { + document.getElementById(elementid).ondblclick(); + }); + break; + case "onmousedown": + $("#" + mainid).bind("mousedown", function(event) { + document.getElementById(elementid).onmousedown(); + }); + break; + case "onmouseup": + //has in closeMe mthod + $("#" + mainid).bind("mouseup", function(event) { + document.getElementById(elementid).onmouseup(); + //setValue(); + }); + break; + case "onmouseover": + $("#" + mainid).bind("mouseover", function(event) { + document.getElementById(elementid).onmouseover(); + }); + break; + case "onmousemove": + $("#" + mainid).bind("mousemove", function(event) { + document.getElementById(elementid).onmousemove(); + }); + break; + case "onmouseout": + $("#" + mainid).bind("mouseout", function(event) { + document.getElementById(elementid).onmouseout(); + }); + break; + }; + }; + }; + + }; + function setOutOfVision() { + var sId = getPostID("postElementHolder"); + $("#" + elementid).after("
"); + $("#" + elementid).appendTo($("#" + sId)); + }; + function setTitleText(sText) { + var titletextid = getPostID("postTitleTextID"); + $("#" + titletextid).html(sText); + }; + function next() { + var titletextid = getPostID("postTitleTextID"); + var childid = getPostID("postChildID"); + var allAs = $("#" + childid + " a.enabled"); + for (var current = 0; current < allAs.length; current++) { + var currentA = allAs[current]; + var id = $(currentA).attr("id"); + if ($(currentA).hasClass("selected") && current < allAs.length - 1) { + $("#" + childid + " a.selected").removeClass("selected"); + $(allAs[current + 1]).addClass("selected"); + //manageSelection(allAs[current+1]); + var selectedA = $("#" + childid + " a.selected").attr("id"); + if (!ddList) { + var sText = (options.showIcon == false) ? a_array[selectedA].text : a_array[selectedA].html; + setTitleText(sText); + } + if (parseInt(($("#" + selectedA).position().top + $("#" + selectedA).height())) >= parseInt($("#" + childid).height())) { + $("#" + childid).scrollTop(($("#" + childid).scrollTop()) + $("#" + selectedA).height() + $("#" + selectedA).height()); + }; + break; + }; + }; + }; + function previous() { + var titletextid = getPostID("postTitleTextID"); + var childid = getPostID("postChildID"); + var allAs = $("#" + childid + " a.enabled"); + for (var current = 0; current < allAs.length; current++) { + var currentA = allAs[current]; + var id = $(currentA).attr("id"); + if ($(currentA).hasClass("selected") && current != 0) { + $("#" + childid + " a.selected").removeClass("selected"); + $(allAs[current - 1]).addClass("selected"); + //manageSelection(allAs[current-1]); + var selectedA = $("#" + childid + " a.selected").attr("id"); + if (!ddList) { + var sText = (options.showIcon == false) ? a_array[selectedA].text : a_array[selectedA].html; + setTitleText(sText); + } + if (parseInt(($("#" + selectedA).position().top + $("#" + selectedA).height())) <= 0) { + $("#" + childid).scrollTop(($("#" + childid).scrollTop() - $("#" + childid).height()) - $("#" + selectedA).height()); + }; + break; + }; + }; + }; + function setValue() { + var childid = getPostID("postChildID"); + var allSelected = $("#" + childid + " a.selected"); + if (allSelected.length == 1) { + var sText = $("#" + childid + " a.selected").text(); + var selectedA = $("#" + childid + " a.selected").attr("id"); + if (selectedA != undefined) { + var sValue = a_array[selectedA].value; + document.getElementById(elementid).selectedIndex = a_array[selectedA].index; + }; + } else if (allSelected.length > 1) { + var alls = $("#" + elementid + " > option:selected").removeAttr("selected"); + for (var i = 0; i < allSelected.length; i++) { + var selectedA = $(allSelected[i]).attr("id"); + var index = a_array[selectedA].index; + document.getElementById(elementid).options[index].selected = "selected"; + }; + }; + }; + function openMe() { + var childid = getPostID("postChildID"); + if (oldDiv != "" && childid != oldDiv) { + $("#" + oldDiv).slideUp("fast"); + $("#" + oldDiv).css({ zIndex: '0' }); + }; + if ($("#" + childid).css("display") == "none") { + selectedValue = a_array[$("#" + childid + " a.selected").attr("id")].text; + $(document).bind("keydown", function(event) { + var keyCode = event.keyCode; + if (keyCode == 39 || keyCode == 40) { + //move to next + event.preventDefault(); event.stopPropagation(); + next(); + }; + if (keyCode == 37 || keyCode == 38) { + event.preventDefault(); event.stopPropagation(); + //move to previous + previous(); + }; + if (keyCode == 27 || keyCode == 13) { + closeMe(); + setValue(); + }; + if ($("#" + elementid).attr("onkeydown") != undefined) { + document.getElementById(elementid).onkeydown(); + }; + }); + $(document).bind("keyup", function(event) { + if ($("#" + elementid).attr("onkeyup") != undefined) { + //$("#"+elementid).keyup(); + document.getElementById(elementid).onkeyup(); + }; + }); + + $(document).bind("mouseup", function(evt) { + if (getInsideWindow() == false) { + closeMe(); + } + }); + $("#" + childid).css({ zIndex: options.zIndex }); + $("#" + childid).slideDown("fast"); + if (childid != oldDiv) { + oldDiv = childid; + } + }; + }; + function closeMe() { + var childid = getPostID("postChildID"); + $(document).unbind("keydown"); + $(document).unbind("keyup"); + $(document).unbind("mouseup"); + $("#" + childid).slideUp("fast", function(event) { + checkMethodAndApply(); + $("#" + childid).css({ zIndex: '0' }); + }); + + }; + function checkMethodAndApply() { + var childid = getPostID("postChildID"); + if ($("#" + elementid).attr("onchange") != undefined) { + var currentSelectedValue = a_array[$("#" + childid + " a.selected").attr("id")].text; + if (selectedValue != currentSelectedValue) { document.getElementById(elementid).onchange(); }; + } + if ($("#" + elementid).attr("onmouseup") != undefined) { + document.getElementById(elementid).onmouseup(); + } + if ($("#" + elementid).attr("onblur") != undefined) { + $(document).bind("mouseup", function(evt) { + $("#" + elementid).focus(); + $("#" + elementid)[0].blur(); + setValue(); + $(document).unbind("mouseup"); + }); + }; + }; + function hightlightArrow(ison) { + var arrowid = getPostID("postArrowID"); + if (ison == 1) + $("#" + arrowid).css({ backgroundPosition: '0 100%' }); + else + $("#" + arrowid).css({ backgroundPosition: '0 0' }); + }; + }; + $.fn.msDropDown = function(properties) { + var dds = $(this); + for (var iCount = 0; iCount < dds.length; iCount++) { + var id = $(dds[iCount]).attr("id"); + if (properties == undefined) { + $("#" + id).dd(); + } else { + $("#" + id).dd(properties); + }; + }; + }; +})(jQuery); \ No newline at end of file