| 1 |
// MSDropDown - jquery.dd.js |
| 2 |
// author: Marghoob Suleman - Search me on google |
| 3 |
// Date: 12th Aug, 2009, {18 Dec, 2010 (2.36)} |
| 4 |
// Version: 2.37 {date: 17 June, 2011} |
| 5 |
// Revision: 33 |
| 6 |
// web: www.giftlelo.com | www.marghoobsuleman.com |
| 7 |
/* |
| 8 |
// msDropDown is free jQuery Plugin: you can redistribute it and/or modify |
| 9 |
// it under the terms of the either the MIT License or the Gnu General Public License (GPL) Version 2 |
| 10 |
*/ |
| 11 |
;(function($) { |
| 12 |
|
| 13 |
var msOldDiv = ""; |
| 14 |
var dd = function(element, options) |
| 15 |
{ |
| 16 |
var sElement = element; |
| 17 |
var $this = this; //parent this |
| 18 |
var options = $.extend({ |
| 19 |
height:120, |
| 20 |
visibleRows:7, |
| 21 |
rowHeight:23, |
| 22 |
showIcon:true, |
| 23 |
zIndex:9999, |
| 24 |
mainCSS:'dd', |
| 25 |
useSprite:false, |
| 26 |
animStyle:'slideDown', |
| 27 |
onInit:'', |
| 28 |
style:'' |
| 29 |
}, options); |
| 30 |
this.ddProp = new Object();//storing propeties; |
| 31 |
var oldSelectedValue = ""; |
| 32 |
var actionSettings ={}; |
| 33 |
actionSettings.insideWindow = true; |
| 34 |
actionSettings.keyboardAction = false; |
| 35 |
actionSettings.currentKey = null; |
| 36 |
var ddList = false; |
| 37 |
var config = {postElementHolder:'_msddHolder', postID:'_msdd', postTitleID:'_title',postTitleTextID:'_titletext',postChildID:'_child',postAID:'_msa',postOPTAID:'_msopta',postInputID:'_msinput', postArrowID:'_arrow', postInputhidden:'_inp'}; |
| 38 |
var styles = {dd:options.mainCSS, ddTitle:'ddTitle', arrow:'arrow', ddChild:'ddChild', ddTitleText:'ddTitleText', disabled:.30, ddOutOfVision:'ddOutOfVision', borderTop:'borderTop', noBorderTop:'noBorderTop', selected:'selected'}; |
| 39 |
var attributes = {actions:"focus,blur,change,click,dblclick,mousedown,mouseup,mouseover,mousemove,mouseout,keypress,keydown,keyup", prop:"size,multiple,disabled,tabindex"}; |
| 40 |
this.onActions = new Object(); |
| 41 |
var elementid = $(sElement).prop("id"); |
| 42 |
if(typeof(elementid)=="undefined" || elementid.length<=0) { |
| 43 |
//assign and id; |
| 44 |
elementid = "msdrpdd"+$.msDropDown.counter++;//I guess it makes unique for the page. |
| 45 |
$(sElement).attr("id", elementid); |
| 46 |
}; |
| 47 |
var inlineCSS = $(sElement).prop("style"); |
| 48 |
options.style += (inlineCSS==undefined) ? "" : inlineCSS; |
| 49 |
var allOptions = $(sElement).children(); |
| 50 |
ddList = ($(sElement).prop("size")>1 || $(sElement).prop("multiple")==true) ? true : false; |
| 51 |
if(ddList) {options.visibleRows = $(sElement).prop("size");}; |
| 52 |
var a_array = {};//stores id, html & value etc |
| 53 |
var currentP = 0; |
| 54 |
var isFilter = false; |
| 55 |
var oldHeight; |
| 56 |
var cacheElement = {}; |
| 57 |
|
| 58 |
var getElement = function(ele) { |
| 59 |
if(typeof(cacheElement[ele])=="undefined") { |
| 60 |
cacheElement[ele] = document.getElementById(ele); |
| 61 |
} |
| 62 |
return cacheElement[ele]; |
| 63 |
}; |
| 64 |
var getPostID = function (id) { |
| 65 |
return elementid+config[id]; |
| 66 |
}; |
| 67 |
var getOptionsProperties = function (option) { |
| 68 |
var currentOption = option; |
| 69 |
var styles = $(currentOption).prop("style"); |
| 70 |
return styles; |
| 71 |
}; |
| 72 |
var matchIndex = function (index) { |
| 73 |
var selectedIndex = $("#"+elementid+" option:selected"); |
| 74 |
if(selectedIndex.length>1) { |
| 75 |
for(var i=0;i<selectedIndex.length;i++) { |
| 76 |
if(index == selectedIndex[i].index) { |
| 77 |
return true; |
| 78 |
}; |
| 79 |
}; |
| 80 |
} else if(selectedIndex.length==1) { |
| 81 |
if(selectedIndex[0].index==index) { |
| 82 |
return true; |
| 83 |
}; |
| 84 |
}; |
| 85 |
return false; |
| 86 |
}; |
| 87 |
var createA = function(currentOptOption, current, currentopt, tp) { |
| 88 |
var aTag = ""; |
| 89 |
//var aidfix = getPostID("postAID"); |
| 90 |
var aidoptfix = (tp=="opt") ? getPostID("postOPTAID") : getPostID("postAID"); |
| 91 |
var aid = (tp=="opt") ? aidoptfix+"_"+(current)+"_"+(currentopt) : aidoptfix+"_"+(current); |
| 92 |
var arrow = ""; |
| 93 |
var clsName = ""; |
| 94 |
if(options.useSprite!=false) { |
| 95 |
clsName = ' '+options.useSprite+' '+currentOptOption.className; |
| 96 |
|
| 97 |
} else { |
| 98 |
arrow = $(currentOptOption).prop("title"); |
| 99 |
arrow = (arrow.length==0) ? "" : '<img src="'+arrow+'" align="absmiddle" /> '; |
| 100 |
}; |
| 101 |
var sText = $(currentOptOption).text(); |
| 102 |
var sValue = $(currentOptOption).val(); |
| 103 |
var sEnabledClass = ($(currentOptOption).prop("disabled")==true) ? "disabled" : "enabled"; |
| 104 |
a_array[aid] = {html:arrow + sText, value:sValue, text:sText, index:currentOptOption.index, id:aid}; |
| 105 |
var innerStyle = getOptionsProperties(currentOptOption); |
| 106 |
if(matchIndex(currentOptOption.index)==true) { |
| 107 |
aTag += '<a href="javascript:void(0);" class="'+styles.selected+' '+sEnabledClass+clsName+'"'; |
| 108 |
} else { |
| 109 |
aTag += '<a href="javascript:void(0);" class="'+sEnabledClass+clsName+'"'; |
| 110 |
}; |
| 111 |
if(innerStyle!==false && innerStyle!==undefined) { |
| 112 |
aTag += " style='"+innerStyle+"'"; |
| 113 |
}; |
| 114 |
aTag += ' id="'+aid+'">'; |
| 115 |
aTag += arrow + '<span class="'+styles.ddTitleText+'">' +sText+'</span></a>'; |
| 116 |
return aTag; |
| 117 |
}; |
| 118 |
var in_array = function(t) { |
| 119 |
var sText = t.toLowerCase(); |
| 120 |
if(sText.length==0) return -1; |
| 121 |
var a = ""; |
| 122 |
for(var i in a_array) { |
| 123 |
var a_text = a_array[i].text.toLowerCase(); |
| 124 |
if(a_text.substr(0, sText.length) == sText) { |
| 125 |
a += "#"+a_array[i].id+ ", "; |
| 126 |
}; |
| 127 |
}; |
| 128 |
return (a=="") ? -1 : a; |
| 129 |
}; |
| 130 |
var createATags = function () { |
| 131 |
var childnodes = allOptions; |
| 132 |
if(childnodes.length==0) return ""; |
| 133 |
var aTag = ""; |
| 134 |
var aidfix = getPostID("postAID"); |
| 135 |
var aidoptfix = getPostID("postOPTAID"); |
| 136 |
childnodes.each(function(current){ |
| 137 |
var currentOption = childnodes[current]; |
| 138 |
//OPTGROUP |
| 139 |
if(currentOption.nodeName == "OPTGROUP") { |
| 140 |
aTag += "<div class='opta'>"; |
| 141 |
aTag += "<span style='font-weight:bold;font-style:italic; clear:both;'>"+$(currentOption).prop("label")+"</span>"; |
| 142 |
var optChild = $(currentOption).children(); |
| 143 |
optChild.each(function(currentopt){ |
| 144 |
var currentOptOption = optChild[currentopt]; |
| 145 |
aTag += createA(currentOptOption, current, currentopt, "opt"); |
| 146 |
}); |
| 147 |
aTag += "</div>"; |
| 148 |
|
| 149 |
} else { |
| 150 |
aTag += createA(currentOption, current, "", ""); |
| 151 |
}; |
| 152 |
}); |
| 153 |
return aTag; |
| 154 |
}; |
| 155 |
var createChildDiv = function () { |
| 156 |
var id = getPostID("postID"); |
| 157 |
var childid = getPostID("postChildID"); |
| 158 |
var sStyle = options.style; |
| 159 |
sDiv = ""; |
| 160 |
sDiv += '<div id="'+childid+'" class="'+styles.ddChild+'"'; |
| 161 |
if(!ddList) { |
| 162 |
sDiv += (sStyle!="") ? ' style="'+sStyle+'"' : ''; |
| 163 |
} else { |
| 164 |
sDiv += (sStyle!="") ? ' style="border-top:1px solid #c3c3c3;display:block;position:relative;'+sStyle+'"' : ''; |
| 165 |
}; |
| 166 |
sDiv += '>'; |
| 167 |
return sDiv; |
| 168 |
}; |
| 169 |
|
| 170 |
var createTitleDiv = function () { |
| 171 |
var titleid = getPostID("postTitleID"); |
| 172 |
var arrowid = getPostID("postArrowID"); |
| 173 |
var titletextid = getPostID("postTitleTextID"); |
| 174 |
var inputhidden = getPostID("postInputhidden"); |
| 175 |
var sText = ""; |
| 176 |
var arrow = ""; |
| 177 |
if(getElement(elementid).options.length>0) { |
| 178 |
sText = $("#"+elementid+" option:selected").text(); |
| 179 |
arrow = $("#"+elementid+" option:selected").prop("title"); |
| 180 |
}; |
| 181 |
arrow = (arrow.length==0 || arrow==undefined || options.showIcon==false || options.useSprite!=false) ? "" : '<img src="'+arrow+'" align="absmiddle" /> '; |
| 182 |
var sDiv = '<div id="'+titleid+'" class="'+styles.ddTitle+'"'; |
| 183 |
sDiv += '>'; |
| 184 |
sDiv += '<span id="'+arrowid+'" class="'+styles.arrow+'"></span><span class="'+styles.ddTitleText+'" id="'+titletextid+'">'+arrow + '<span class="'+styles.ddTitleText+'">'+sText+'</span></span></div>'; |
| 185 |
return sDiv; |
| 186 |
}; |
| 187 |
var applyEventsOnA = function() { |
| 188 |
var childid = getPostID("postChildID"); |
| 189 |
$("#"+childid+ " a.enabled").unbind("click"); //remove old one |
| 190 |
$("#"+childid+ " a.enabled").bind("click", function(event) { |
| 191 |
event.preventDefault(); |
| 192 |
manageSelection(this); |
| 193 |
setValue(); |
| 194 |
if(!ddList) { |
| 195 |
$("#"+childid).unbind("mouseover"); |
| 196 |
setInsideWindow(false); |
| 197 |
var sText = (options.showIcon==false) ? $(this).text() : $(this).html(); |
| 198 |
setTitleText(sText); |
| 199 |
//$this.data("dd").close(); |
| 200 |
$this.close(); |
| 201 |
}; |
| 202 |
//actionSettings.oldIndex = a_array[$($this).prop("id")].index; |
| 203 |
}); |
| 204 |
}; |
| 205 |
var createDropDown = function () { |
| 206 |
var changeInsertionPoint = false; |
| 207 |
var id = getPostID("postID"); |
| 208 |
var titleid = getPostID("postTitleID"); |
| 209 |
var titletextid = getPostID("postTitleTextID"); |
| 210 |
var childid = getPostID("postChildID"); |
| 211 |
var arrowid = getPostID("postArrowID"); |
| 212 |
var iWidth = $("#"+elementid).width(); |
| 213 |
iWidth = iWidth+2;//it always give -2 width; i dont know why |
| 214 |
var sStyle = options.style; |
| 215 |
if($("#"+id).length>0) { |
| 216 |
$("#"+id).remove(); |
| 217 |
changeInsertionPoint = true; |
| 218 |
}; |
| 219 |
var sDiv = '<div id="'+id+'" class="'+styles.dd+'"'; |
| 220 |
sDiv += (sStyle!="") ? ' style="'+sStyle+'"' : ''; |
| 221 |
sDiv += '>'; |
| 222 |
//create title bar |
| 223 |
sDiv += createTitleDiv(); |
| 224 |
//create child |
| 225 |
sDiv += createChildDiv(); |
| 226 |
sDiv += createATags(); |
| 227 |
sDiv += "</div>"; |
| 228 |
sDiv += "</div>"; |
| 229 |
if(changeInsertionPoint==true) { |
| 230 |
var sid =getPostID("postElementHolder"); |
| 231 |
$("#"+sid).after(sDiv); |
| 232 |
} else { |
| 233 |
$("#"+elementid).after(sDiv); |
| 234 |
}; |
| 235 |
if(ddList) { |
| 236 |
var titleid = getPostID("postTitleID"); |
| 237 |
$("#"+titleid).hide(); |
| 238 |
}; |
| 239 |
|
| 240 |
$("#"+id).css("width", iWidth+"px"); |
| 241 |
$("#"+childid).css("width", (iWidth-2)+"px"); |
| 242 |
if(allOptions.length>options.visibleRows) { |
| 243 |
var margin = parseInt($("#"+childid+" a:first").css("padding-bottom")) + parseInt($("#"+childid+" a:first").css("padding-top")); |
| 244 |
var iHeight = ((options.rowHeight)*options.visibleRows) - margin; |
| 245 |
$("#"+childid).css("height", iHeight+"px"); |
| 246 |
} else if(ddList) { |
| 247 |
var iHeight = $("#"+elementid).height(); |
| 248 |
$("#"+childid).css("height", iHeight+"px"); |
| 249 |
}; |
| 250 |
//set out of vision |
| 251 |
if(changeInsertionPoint==false) { |
| 252 |
setOutOfVision(); |
| 253 |
addRefreshMethods(elementid); |
| 254 |
}; |
| 255 |
if($("#"+elementid).prop("disabled")==true) { |
| 256 |
$("#"+id).css("opacity", styles.disabled); |
| 257 |
}; |
| 258 |
applyEvents(); |
| 259 |
//add events |
| 260 |
//arrow hightlight |
| 261 |
$("#"+titleid).bind("mouseover", function(event) { |
| 262 |
hightlightArrow(1); |
| 263 |
}); |
| 264 |
$("#"+titleid).bind("mouseout", function(event) { |
| 265 |
hightlightArrow(0); |
| 266 |
}); |
| 267 |
//open close events |
| 268 |
applyEventsOnA(); |
| 269 |
$("#"+childid+ " a.disabled").css("opacity", styles.disabled); |
| 270 |
//alert("ddList "+ddList) |
| 271 |
if(ddList) { |
| 272 |
$("#"+childid).bind("mouseover", function(event) {if(!actionSettings.keyboardAction) { |
| 273 |
actionSettings.keyboardAction = true; |
| 274 |
$(document).bind("keydown", function(event) { |
| 275 |
var keyCode = event.keyCode; |
| 276 |
actionSettings.currentKey = keyCode; |
| 277 |
if(keyCode==39 || keyCode==40) { |
| 278 |
//move to next |
| 279 |
event.preventDefault(); event.stopPropagation(); |
| 280 |
next(); |
| 281 |
setValue(); |
| 282 |
}; |
| 283 |
if(keyCode==37 || keyCode==38) { |
| 284 |
event.preventDefault(); event.stopPropagation(); |
| 285 |
//move to previous |
| 286 |
previous(); |
| 287 |
setValue(); |
| 288 |
}; |
| 289 |
}); |
| 290 |
|
| 291 |
}}); |
| 292 |
}; |
| 293 |
$("#"+childid).bind("mouseout", function(event) {setInsideWindow(false);$(document).unbind("keydown");actionSettings.keyboardAction = false;actionSettings.currentKey=null;}); |
| 294 |
$("#"+titleid).bind("click", function(event) { |
| 295 |
setInsideWindow(false); |
| 296 |
if($("#"+childid+":visible").length==1) { |
| 297 |
$("#"+childid).unbind("mouseover"); |
| 298 |
} else { |
| 299 |
$("#"+childid).bind("mouseover", function(event) {setInsideWindow(true);}); |
| 300 |
//alert("open "+elementid + $this); |
| 301 |
//$this.data("dd").openMe(); |
| 302 |
$this.open(); |
| 303 |
}; |
| 304 |
}); |
| 305 |
$("#"+titleid).bind("mouseout", function(evt) { |
| 306 |
setInsideWindow(false); |
| 307 |
}); |
| 308 |
if(options.showIcon && options.useSprite!=false) { |
| 309 |
setTitleImageSprite(); |
| 310 |
}; |
| 311 |
}; |
| 312 |
var getByIndex = function (index) { |
| 313 |
for(var i in a_array) { |
| 314 |
if(a_array[i].index==index) { |
| 315 |
return a_array[i]; |
| 316 |
}; |
| 317 |
}; |
| 318 |
return -1; |
| 319 |
}; |
| 320 |
var manageSelection = function (obj) { |
| 321 |
var childid = getPostID("postChildID"); |
| 322 |
if($("#"+childid+ " a."+styles.selected).length==1) { //check if there is any selected |
| 323 |
oldSelectedValue = $("#"+childid+ " a."+styles.selected).text(); //i should have value here. but sometime value is missing |
| 324 |
//alert("oldSelectedValue "+oldSelectedValue); |
| 325 |
}; |
| 326 |
if(!ddList) { |
| 327 |
$("#"+childid+ " a."+styles.selected).removeClass(styles.selected); |
| 328 |
}; |
| 329 |
var selectedA = $("#"+childid + " a."+styles.selected).prop("id"); |
| 330 |
if(selectedA!=undefined) { |
| 331 |
var oldIndex = (actionSettings.oldIndex==undefined || actionSettings.oldIndex==null) ? a_array[selectedA].index : actionSettings.oldIndex; |
| 332 |
}; |
| 333 |
if(obj && !ddList) { |
| 334 |
$(obj).addClass(styles.selected); |
| 335 |
}; |
| 336 |
if(ddList) { |
| 337 |
var keyCode = actionSettings.currentKey; |
| 338 |
if($("#"+elementid).prop("multiple")==true) { |
| 339 |
if(keyCode == 17) { |
| 340 |
//control |
| 341 |
actionSettings.oldIndex = a_array[$(obj).prop("id")].index; |
| 342 |
$(obj).toggleClass(styles.selected); |
| 343 |
//multiple |
| 344 |
} else if(keyCode==16) { |
| 345 |
$("#"+childid+ " a."+styles.selected).removeClass(styles.selected); |
| 346 |
$(obj).addClass(styles.selected); |
| 347 |
//shift |
| 348 |
var currentSelected = $(obj).prop("id"); |
| 349 |
var currentIndex = a_array[currentSelected].index; |
| 350 |
for(var i=Math.min(oldIndex, currentIndex);i<=Math.max(oldIndex, currentIndex);i++) { |
| 351 |
$("#"+getByIndex(i).id).addClass(styles.selected); |
| 352 |
}; |
| 353 |
} else { |
| 354 |
$("#"+childid+ " a."+styles.selected).removeClass(styles.selected); |
| 355 |
$(obj).addClass(styles.selected); |
| 356 |
actionSettings.oldIndex = a_array[$(obj).prop("id")].index; |
| 357 |
}; |
| 358 |
} else { |
| 359 |
$("#"+childid+ " a."+styles.selected).removeClass(styles.selected); |
| 360 |
$(obj).addClass(styles.selected); |
| 361 |
actionSettings.oldIndex = a_array[$(obj).prop("id")].index; |
| 362 |
}; |
| 363 |
//isSingle |
| 364 |
}; |
| 365 |
}; |
| 366 |
var addRefreshMethods = function (id) { |
| 367 |
//deprecated |
| 368 |
var objid = id; |
| 369 |
getElement(objid).refresh = function(e) { |
| 370 |
$("#"+objid).msDropDown(options); |
| 371 |
}; |
| 372 |
}; |
| 373 |
var setInsideWindow = function (val) { |
| 374 |
actionSettings.insideWindow = val; |
| 375 |
}; |
| 376 |
var getInsideWindow = function () { |
| 377 |
return actionSettings.insideWindow; |
| 378 |
//will work on this |
| 379 |
/* |
| 380 |
var childid = getPostID("postChildID"); |
| 381 |
return ($("#"+childid + ":visible").length == 0) ? false : true; |
| 382 |
*/ |
| 383 |
}; |
| 384 |
var applyEvents = function () { |
| 385 |
var mainid = getPostID("postID"); |
| 386 |
var actions_array = attributes.actions.split(","); |
| 387 |
for(var iCount=0;iCount<actions_array.length;iCount++) { |
| 388 |
var action = actions_array[iCount]; |
| 389 |
//var actionFound = $("#"+elementid).prop(action); |
| 390 |
var actionFound = has_handler(action); |
| 391 |
if(actionFound==true) { |
| 392 |
switch(action) { |
| 393 |
case "focus": |
| 394 |
$("#"+mainid).bind("mouseenter", function(event) { |
| 395 |
getElement(elementid).focus(); |
| 396 |
//$("#"+elementid).focus(); |
| 397 |
}); |
| 398 |
break; |
| 399 |
case "click": |
| 400 |
$("#"+mainid).bind("click", function(event) { |
| 401 |
//getElement(elementid).onclick(); |
| 402 |
$("#"+elementid).trigger("click"); |
| 403 |
}); |
| 404 |
break; |
| 405 |
case "dblclick": |
| 406 |
$("#"+mainid).bind("dblclick", function(event) { |
| 407 |
//getElement(elementid).ondblclick(); |
| 408 |
$("#"+elementid).trigger("dblclick"); |
| 409 |
}); |
| 410 |
break; |
| 411 |
case "mousedown": |
| 412 |
$("#"+mainid).bind("mousedown", function(event) { |
| 413 |
//getElement(elementid).onmousedown(); |
| 414 |
$("#"+elementid).trigger("mousedown"); |
| 415 |
}); |
| 416 |
break; |
| 417 |
case "mouseup": |
| 418 |
//has in close mthod |
| 419 |
$("#"+mainid).bind("mouseup", function(event) { |
| 420 |
//getElement(elementid).onmouseup(); |
| 421 |
$("#"+elementid).trigger("mouseup"); |
| 422 |
//setValue(); |
| 423 |
}); |
| 424 |
break; |
| 425 |
case "mouseover": |
| 426 |
$("#"+mainid).bind("mouseover", function(event) { |
| 427 |
//getElement(elementid).onmouseover(); |
| 428 |
$("#"+elementid).trigger("mouseover"); |
| 429 |
}); |
| 430 |
break; |
| 431 |
case "mousemove": |
| 432 |
$("#"+mainid).bind("mousemove", function(event) { |
| 433 |
//getElement(elementid).onmousemove(); |
| 434 |
$("#"+elementid).trigger("mousemove"); |
| 435 |
}); |
| 436 |
break; |
| 437 |
case "mouseout": |
| 438 |
$("#"+mainid).bind("mouseout", function(event) { |
| 439 |
//getElement(elementid).onmouseout(); |
| 440 |
$("#"+elementid).trigger("mouseout"); |
| 441 |
}); |
| 442 |
break; |
| 443 |
}; |
| 444 |
}; |
| 445 |
}; |
| 446 |
|
| 447 |
}; |
| 448 |
var setOutOfVision = function () { |
| 449 |
var sId = getPostID("postElementHolder"); |
| 450 |
$("#"+elementid).after("<div class='"+styles.ddOutOfVision+"' style='height:0px;overflow:hidden;position:absolute;' id='"+sId+"'></div>"); |
| 451 |
$("#"+elementid).appendTo($("#"+sId)); |
| 452 |
}; |
| 453 |
var setTitleText = function (sText) { |
| 454 |
var titletextid = getPostID("postTitleTextID"); |
| 455 |
$("#"+titletextid).html(sText); |
| 456 |
}; |
| 457 |
var navigateA = function(w) { |
| 458 |
var where = w; |
| 459 |
var childid = getPostID("postChildID"); |
| 460 |
var visibleA = $("#"+childid + " a:visible"); |
| 461 |
var totalA = visibleA.length; |
| 462 |
var currentP = $("#"+childid +" a:visible").index($("#"+childid +" a.selected:visible")); |
| 463 |
var nextA; |
| 464 |
switch(where) { |
| 465 |
case "next": |
| 466 |
if(currentP < totalA-1) { |
| 467 |
currentP++; |
| 468 |
nextA = visibleA[currentP]; |
| 469 |
}; |
| 470 |
break; |
| 471 |
case "previous": |
| 472 |
if(currentP < totalA && currentP>0) { |
| 473 |
currentP--; |
| 474 |
nextA = visibleA[currentP]; |
| 475 |
}; |
| 476 |
break; |
| 477 |
}; |
| 478 |
if(typeof(nextA)=="undefined") { |
| 479 |
return false; |
| 480 |
}; |
| 481 |
$("#"+childid + " a."+styles.selected).removeClass(styles.selected); |
| 482 |
$(nextA).addClass(styles.selected); |
| 483 |
var selectedA = nextA.id; |
| 484 |
if(!ddList) { |
| 485 |
var sText = (options.showIcon==false) ? a_array[selectedA].text : $("#"+selectedA).html(); |
| 486 |
setTitleText(sText); |
| 487 |
setTitleImageSprite(a_array[selectedA].index); |
| 488 |
}; |
| 489 |
if(where=="next") { |
| 490 |
if(parseInt(($("#"+selectedA).position().top+$("#"+selectedA).height()))>=parseInt($("#"+childid).height())) { |
| 491 |
$("#"+childid).scrollTop(($("#"+childid).scrollTop())+$("#"+selectedA).height()+$("#"+selectedA).height()); |
| 492 |
}; |
| 493 |
} else { |
| 494 |
if(parseInt(($("#"+selectedA).position().top+$("#"+selectedA).height())) <=0) { |
| 495 |
$("#"+childid).scrollTop(($("#"+childid).scrollTop()-$("#"+childid).height())-$("#"+selectedA).height()); |
| 496 |
}; |
| 497 |
}; |
| 498 |
}; |
| 499 |
|
| 500 |
var setTitleImageSprite = function(i) { |
| 501 |
if(options.useSprite!=false) { |
| 502 |
var titletextid = getPostID("postTitleTextID"); |
| 503 |
var index = (typeof(i)=="undefined") ? getElement(elementid).selectedIndex : i; |
| 504 |
var sClassName = getElement(elementid).options[index].className; |
| 505 |
if(sClassName.length>0) { |
| 506 |
var childid = getPostID("postChildID"); |
| 507 |
var id = $("#"+childid + " a."+sClassName).prop("id"); |
| 508 |
var backgroundImg = $("#"+id).css("background-image"); |
| 509 |
var backgroundPosition = $("#"+id).css("background-position"); |
| 510 |
var paddingLeft = $("#"+id).css("padding-left"); |
| 511 |
if(backgroundImg!=undefined) { |
| 512 |
$("#"+titletextid).find("."+styles.ddTitleText).attr('style', "background:"+backgroundImg); |
| 513 |
}; |
| 514 |
if(backgroundPosition!=undefined) { |
| 515 |
$("#"+titletextid).find("."+styles.ddTitleText).css('background-position', backgroundPosition); |
| 516 |
}; |
| 517 |
if(paddingLeft!=undefined) { |
| 518 |
$("#"+titletextid).find("."+styles.ddTitleText).css('padding-left', paddingLeft); |
| 519 |
}; |
| 520 |
$("#"+titletextid).find("."+styles.ddTitleText).css('background-repeat', 'no-repeat'); |
| 521 |
$("#"+titletextid).find("."+styles.ddTitleText).css('padding-bottom', '2px'); |
| 522 |
}; |
| 523 |
}; |
| 524 |
}; |
| 525 |
var setValue = function () { |
| 526 |
//alert("setValue "+elementid); |
| 527 |
var childid = getPostID("postChildID"); |
| 528 |
var allSelected = $("#"+childid + " a."+styles.selected); |
| 529 |
if(allSelected.length==1) { |
| 530 |
var sText = $("#"+childid + " a."+styles.selected).text(); |
| 531 |
var selectedA = $("#"+childid + " a."+styles.selected).prop("id"); |
| 532 |
if(selectedA!=undefined) { |
| 533 |
var sValue = a_array[selectedA].value; |
| 534 |
getElement(elementid).selectedIndex = a_array[selectedA].index; |
| 535 |
}; |
| 536 |
//set image on title if using sprite |
| 537 |
|
| 538 |
if(options.showIcon && options.useSprite!=false) |
| 539 |
setTitleImageSprite(); |
| 540 |
} else if(allSelected.length>1) { |
| 541 |
//var alls = $("#"+elementid +" > option:selected").removeprop("selected"); |
| 542 |
for(var i=0;i<allSelected.length;i++) { |
| 543 |
var selectedA = $(allSelected[i]).prop("id"); |
| 544 |
var index = a_array[selectedA].index; |
| 545 |
getElement(elementid).options[index].selected = "selected"; |
| 546 |
}; |
| 547 |
}; |
| 548 |
//alert(getElement(elementid).selectedIndex); |
| 549 |
var sIndex = getElement(elementid).selectedIndex; |
| 550 |
$this.ddProp["selectedIndex"]= sIndex; |
| 551 |
//alert("selectedIndex "+ $this.ddProp["selectedIndex"] + " sIndex "+sIndex); |
| 552 |
}; |
| 553 |
var has_handler = function (name) { |
| 554 |
// True if a handler has been added in the html. |
| 555 |
if ($("#"+elementid).prop("on" + name) != undefined) { |
| 556 |
return true; |
| 557 |
}; |
| 558 |
// True if a handler has been added using jQuery. |
| 559 |
var evs = $("#"+elementid).data("events"); |
| 560 |
if (evs && evs[name]) { |
| 561 |
return true; |
| 562 |
}; |
| 563 |
return false; |
| 564 |
}; |
| 565 |
var checkMethodAndApply = function () { |
| 566 |
var childid = getPostID("postChildID"); |
| 567 |
if(has_handler('change')==true) { |
| 568 |
//alert(1); |
| 569 |
var currentSelectedValue = a_array[$("#"+childid +" a.selected").prop("id")].text; |
| 570 |
if($.trim(oldSelectedValue) !== $.trim(currentSelectedValue) && oldSelectedValue!==""){ |
| 571 |
$("#"+elementid).trigger("change"); |
| 572 |
}; |
| 573 |
}; |
| 574 |
if(has_handler('mouseup')==true) { |
| 575 |
$("#"+elementid).trigger("mouseup"); |
| 576 |
}; |
| 577 |
if(has_handler('blur')==true) { |
| 578 |
$(document).bind("mouseup", function(evt) { |
| 579 |
$("#"+elementid).focus(); |
| 580 |
$("#"+elementid)[0].blur(); |
| 581 |
setValue(); |
| 582 |
$(document).unbind("mouseup"); |
| 583 |
}); |
| 584 |
}; |
| 585 |
}; |
| 586 |
var hightlightArrow = function(ison) { |
| 587 |
var arrowid = getPostID("postArrowID"); |
| 588 |
if(ison==1) |
| 589 |
$("#"+arrowid).css({backgroundPosition:'0 100%'}); |
| 590 |
else |
| 591 |
$("#"+arrowid).css({backgroundPosition:'0 0'}); |
| 592 |
}; |
| 593 |
var setOriginalProperties = function() { |
| 594 |
//properties = {}; |
| 595 |
//alert($this.data("dd")); |
| 596 |
for(var i in getElement(elementid)) { |
| 597 |
if(typeof(getElement(elementid)[i])!='function' && getElement(elementid)[i]!==undefined && getElement(elementid)[i]!==null) { |
| 598 |
$this.set(i, getElement(elementid)[i], true);//true = setting local properties |
| 599 |
}; |
| 600 |
}; |
| 601 |
}; |
| 602 |
var setValueByIndex = function(prop, val) { |
| 603 |
if(getByIndex(val) != -1) { |
| 604 |
getElement(elementid)[prop] = val; |
| 605 |
var childid = getPostID("postChildID"); |
| 606 |
$("#"+childid+ " a."+styles.selected).removeClass(styles.selected); |
| 607 |
$("#"+getByIndex(val).id).addClass(styles.selected); |
| 608 |
var sText = getByIndex(getElement(elementid).selectedIndex).html; |
| 609 |
setTitleText(sText); |
| 610 |
}; |
| 611 |
}; |
| 612 |
var addRemoveFromIndex = function(i, action) { |
| 613 |
if(action=='d') { |
| 614 |
for(var key in a_array) { |
| 615 |
if(a_array[key].index == i) { |
| 616 |
delete a_array[key]; |
| 617 |
break; |
| 618 |
}; |
| 619 |
}; |
| 620 |
}; |
| 621 |
//update index |
| 622 |
var count = 0; |
| 623 |
for(var key in a_array) { |
| 624 |
a_array[key].index = count; |
| 625 |
count++; |
| 626 |
}; |
| 627 |
}; |
| 628 |
var shouldOpenOpposite = function() { |
| 629 |
var childid = getPostID("postChildID"); |
| 630 |
var main = getPostID("postID"); |
| 631 |
var pos = $("#"+main).position(); |
| 632 |
var mH = $("#"+main).height(); |
| 633 |
var wH = $(window).height(); |
| 634 |
var st = $(window).scrollTop(); |
| 635 |
var cH = $("#"+childid).height(); |
| 636 |
var css = {zIndex:options.zIndex, top:(pos.top+mH)+"px", display:"none"}; |
| 637 |
var ani = options.animStyle; |
| 638 |
var opp = false; |
| 639 |
var borderTop = styles.noBorderTop; |
| 640 |
$("#"+childid).removeClass(styles.noBorderTop); |
| 641 |
$("#"+childid).removeClass(styles.borderTop); |
| 642 |
if( (wH+st) < Math.floor(cH+mH+pos.top) ) { |
| 643 |
var tp = pos.top-cH; |
| 644 |
if((pos.top-cH)<0) { |
| 645 |
tp = 10; |
| 646 |
}; |
| 647 |
css = {zIndex:options.zIndex, top:tp+"px", display:"none"}; |
| 648 |
ani = "show"; |
| 649 |
opp = true; |
| 650 |
borderTop = styles.borderTop; |
| 651 |
}; |
| 652 |
return {opp:opp, ani:ani, css:css, border:borderTop}; |
| 653 |
}; |
| 654 |
var fireOpenEvent = function() { |
| 655 |
if($this.onActions["onOpen"]!=null) { |
| 656 |
eval($this.onActions["onOpen"])($this); |
| 657 |
}; |
| 658 |
}; |
| 659 |
var fireCloseEvent = function() { |
| 660 |
checkMethodAndApply(); |
| 661 |
if($this.onActions["onClose"]!=null) { |
| 662 |
eval($this.onActions["onClose"])($this); |
| 663 |
}; |
| 664 |
}; |
| 665 |
/************* public methods *********************/ |
| 666 |
|
| 667 |
this.next = function () { |
| 668 |
navigateA("next"); |
| 669 |
}; |
| 670 |
this.previous = function () { |
| 671 |
navigateA("previous"); |
| 672 |
}; |
| 673 |
|
| 674 |
this.open = function() { |
| 675 |
if(($this.get("disabled", true) == true) || ($this.get("options", true).length==0)) return; |
| 676 |
var childid = getPostID("postChildID"); |
| 677 |
if(msOldDiv!="" && childid!=msOldDiv) { |
| 678 |
$("#"+msOldDiv).slideUp("fast"); |
| 679 |
$("#"+msOldDiv).css({zIndex:'0'}); |
| 680 |
}; |
| 681 |
|
| 682 |
$(".dd").css("display", "block"); |
| 683 |
|
| 684 |
if($("#"+childid).css("display")=="none") { |
| 685 |
oldSelectedValue = a_array[$("#"+childid +" a.selected").prop("id")].text; |
| 686 |
//keyboard action |
| 687 |
var sText =""; |
| 688 |
oldHeight = $("#"+childid).height(); |
| 689 |
$("#"+childid +" a").show(); |
| 690 |
$(document).bind("keydown", function(event) { |
| 691 |
var keyCode = event.keyCode; |
| 692 |
//alert("keyCode "+keyCode); |
| 693 |
|
| 694 |
if(keyCode==8) { |
| 695 |
event.preventDefault(); event.stopPropagation(); |
| 696 |
//remove char |
| 697 |
sText = (sText.length==0) ? "" : sText.substr(0, sText.length-1); |
| 698 |
}; |
| 699 |
switch(keyCode) { |
| 700 |
case 39: |
| 701 |
case 40: |
| 702 |
//move to next |
| 703 |
event.preventDefault(); event.stopPropagation(); |
| 704 |
next(); |
| 705 |
break; |
| 706 |
case 37: |
| 707 |
case 38: |
| 708 |
//move to previous |
| 709 |
event.preventDefault(); event.stopPropagation(); |
| 710 |
previous(); |
| 711 |
break; |
| 712 |
case 27: |
| 713 |
case 13: |
| 714 |
$this.close(); |
| 715 |
setValue(); |
| 716 |
break; |
| 717 |
default: |
| 718 |
if(keyCode>46) { |
| 719 |
sText += String.fromCharCode(keyCode); |
| 720 |
}; |
| 721 |
var ind = in_array(sText); |
| 722 |
if(ind != -1) { |
| 723 |
$("#"+childid).css({height:'auto'}); |
| 724 |
$("#"+childid +" a").hide(); |
| 725 |
$(ind).show(); |
| 726 |
var wf = shouldOpenOpposite(); |
| 727 |
$("#"+childid).css(wf.css); |
| 728 |
$("#"+childid).css({display:'block'}); |
| 729 |
} else { |
| 730 |
$("#"+childid +" a").show(); |
| 731 |
$("#"+childid).css({height:oldHeight+'px'}); |
| 732 |
}; |
| 733 |
break; |
| 734 |
}; |
| 735 |
if(has_handler("keydown")==true) { |
| 736 |
getElement(elementid).onkeydown(); |
| 737 |
}; |
| 738 |
}); |
| 739 |
|
| 740 |
$(document).bind("keyup", function(event) { |
| 741 |
if($("#"+elementid).prop("onkeyup")!=undefined) { |
| 742 |
//$("#"+elementid).keyup(); |
| 743 |
getElement(elementid).onkeyup(); |
| 744 |
}; |
| 745 |
}); |
| 746 |
//end keyboard action |
| 747 |
|
| 748 |
//close onmouseup |
| 749 |
$(document).bind("mouseup", function(evt){ |
| 750 |
if(getInsideWindow()==false) { |
| 751 |
//alert("evt.target: "+evt.target); |
| 752 |
//$this.data("dd").close(); |
| 753 |
$this.close(); |
| 754 |
}; |
| 755 |
}); |
| 756 |
|
| 757 |
//check open |
| 758 |
var wf = shouldOpenOpposite(); |
| 759 |
$("#"+childid).css(wf.css); |
| 760 |
if(wf.opp==true) { |
| 761 |
$("#"+childid).css({display:'block'}); |
| 762 |
$("#"+childid).addClass(wf.border); |
| 763 |
fireOpenEvent(); |
| 764 |
} else { |
| 765 |
$("#"+childid)[wf.ani]("fast", function() { |
| 766 |
$("#"+childid).addClass(wf.border); |
| 767 |
fireOpenEvent(); |
| 768 |
}); |
| 769 |
}; |
| 770 |
if(childid != msOldDiv) { |
| 771 |
msOldDiv = childid; |
| 772 |
}; |
| 773 |
}; |
| 774 |
}; |
| 775 |
this.close = function() { |
| 776 |
var childid = getPostID("postChildID"); |
| 777 |
var top = $("#"+getPostID("postTitleID")).position().top; |
| 778 |
var wf = shouldOpenOpposite(); |
| 779 |
//var oldHeight = $("#"+childid).height(); |
| 780 |
isFilter = false; |
| 781 |
if(wf.opp==true) { |
| 782 |
$("#"+childid).animate({ |
| 783 |
height:0, |
| 784 |
top: top, |
| 785 |
}, function() { |
| 786 |
$("#"+childid).css({height:oldHeight+'px', display:'none'}); |
| 787 |
fireCloseEvent(); |
| 788 |
}); |
| 789 |
} |
| 790 |
else { |
| 791 |
$("#"+childid).slideUp("fast", function(event) { |
| 792 |
fireCloseEvent(); |
| 793 |
$("#"+childid).css({zIndex:'0'}); |
| 794 |
$("#"+childid).css({height:oldHeight+'px'}); |
| 795 |
}); |
| 796 |
}; |
| 797 |
setTitleImageSprite(); |
| 798 |
$(document).unbind("keydown"); |
| 799 |
$(document).unbind("keyup"); |
| 800 |
$(document).unbind("mouseup"); |
| 801 |
|
| 802 |
$(".dd").css("display", "none"); |
| 803 |
|
| 804 |
}; |
| 805 |
this.selectedIndex = function(i) { |
| 806 |
if(typeof(i)=="undefined") { |
| 807 |
return $this.get("selectedIndex"); |
| 808 |
} else { |
| 809 |
$this.set("selectedIndex", i); |
| 810 |
}; |
| 811 |
}; |
| 812 |
this.debug = function(is) { |
| 813 |
if(typeof(is)=="undefined" || is==true) { |
| 814 |
$("."+styles.ddOutOfVision).removeAttr("style"); |
| 815 |
} else { |
| 816 |
$("."+styles.ddOutOfVision).attr("style", "height:0px;overflow:hidden;position:absolute"); |
| 817 |
}; |
| 818 |
}; |
| 819 |
//update properties |
| 820 |
this.set = function(prop, val, isLocal) { |
| 821 |
//alert("- set " + prop + " : "+val); |
| 822 |
if(prop==undefined || val==undefined) throw {message:"set to what?"}; |
| 823 |
$this.ddProp[prop] = val; |
| 824 |
if(isLocal!=true) { |
| 825 |
switch(prop) { |
| 826 |
case "selectedIndex": |
| 827 |
setValueByIndex(prop, val); |
| 828 |
break; |
| 829 |
case "disabled": |
| 830 |
$this.disabled(val, true); |
| 831 |
break; |
| 832 |
case "multiple": |
| 833 |
getElement(elementid)[prop] = val; |
| 834 |
ddList = ($(sElement).prop("size")>0 || $(sElement).prop("multiple")==true) ? true : false; |
| 835 |
if(ddList) { |
| 836 |
//do something |
| 837 |
var iHeight = $("#"+elementid).height(); |
| 838 |
var childid = getPostID("postChildID"); |
| 839 |
$("#"+childid).css("height", iHeight+"px"); |
| 840 |
//hide titlebar |
| 841 |
var titleid = getPostID("postTitleID"); |
| 842 |
$("#"+titleid).hide(); |
| 843 |
var childid = getPostID("postChildID"); |
| 844 |
$("#"+childid).css({display:'block',position:'relative'}); |
| 845 |
applyEventsOnA(); |
| 846 |
}; |
| 847 |
break; |
| 848 |
case "size": |
| 849 |
getElement(elementid)[prop] = val; |
| 850 |
if(val==0) { |
| 851 |
getElement(elementid).multiple = false; |
| 852 |
}; |
| 853 |
ddList = ($(sElement).prop("size")>0 || $(sElement).prop("multiple")==true) ? true : false; |
| 854 |
if(val==0) { |
| 855 |
//show titlebar |
| 856 |
var titleid = getPostID("postTitleID"); |
| 857 |
$("#"+titleid).show(); |
| 858 |
var childid = getPostID("postChildID"); |
| 859 |
$("#"+childid).css({display:'none',position:'absolute'}); |
| 860 |
var sText = ""; |
| 861 |
if(getElement(elementid).selectedIndex>=0) { |
| 862 |
var aObj = getByIndex(getElement(elementid).selectedIndex); |
| 863 |
sText = aObj.html; |
| 864 |
manageSelection($("#"+aObj.id)); |
| 865 |
}; |
| 866 |
setTitleText(sText); |
| 867 |
} else { |
| 868 |
//hide titlebar |
| 869 |
var titleid = getPostID("postTitleID"); |
| 870 |
$("#"+titleid).hide(); |
| 871 |
var childid = getPostID("postChildID"); |
| 872 |
$("#"+childid).css({display:'block',position:'relative'}); |
| 873 |
}; |
| 874 |
break; |
| 875 |
default: |
| 876 |
try{ |
| 877 |
//check if this is not a readonly properties |
| 878 |
getElement(elementid)[prop] = val; |
| 879 |
} catch(e) { |
| 880 |
//silent |
| 881 |
}; |
| 882 |
break; |
| 883 |
}; |
| 884 |
}; |
| 885 |
//alert("get " + prop + " : "+$this.ddProp[prop]); |
| 886 |
//$this.set("selectedIndex", 0); |
| 887 |
}; |
| 888 |
this.get = function(prop, forceRefresh) { |
| 889 |
if(prop==undefined && forceRefresh==undefined) { |
| 890 |
//alert("c1 : " +$this.ddProp); |
| 891 |
return $this.ddProp; |
| 892 |
}; |
| 893 |
if(prop!=undefined && forceRefresh==undefined) { |
| 894 |
//alert("c2 : " +$this.ddProp[prop]); |
| 895 |
return ($this.ddProp[prop]!=undefined) ? $this.ddProp[prop] : null; |
| 896 |
}; |
| 897 |
if(prop!=undefined && forceRefresh!=undefined) { |
| 898 |
//alert("c3 : " +getElement(elementid)[prop]); |
| 899 |
return getElement(elementid)[prop]; |
| 900 |
}; |
| 901 |
}; |
| 902 |
this.visible = function(val) { |
| 903 |
var id = getPostID("postID"); |
| 904 |
if(val==true) { |
| 905 |
$("#"+id).show(); |
| 906 |
} else if(val==false) { |
| 907 |
$("#"+id).hide(); |
| 908 |
} else { |
| 909 |
return $("#"+id).css("display"); |
| 910 |
}; |
| 911 |
}; |
| 912 |
this.add = function(opt, index) { |
| 913 |
var objOpt = opt; |
| 914 |
var sText = objOpt.text; |
| 915 |
var sValue = (objOpt.value==undefined || objOpt.value==null) ? sText : objOpt.value; |
| 916 |
var img = (objOpt["title"]==undefined || objOpt["title"]==null) ? '' : objOpt["title"]; |
| 917 |
var i = (index==undefined || index==null) ? getElement(elementid).options.length : index; |
| 918 |
getElement(elementid).options[i] = new Option(sText, sValue); |
| 919 |
if(img!='') getElement(elementid).options[i]["title"] = img; |
| 920 |
//check if exist |
| 921 |
var ifA = getByIndex(i); |
| 922 |
if(ifA != -1) { |
| 923 |
//replace |
| 924 |
var aTag = createA(getElement(elementid).options[i], i, "", ""); |
| 925 |
$("#"+ifA.id).html(aTag); |
| 926 |
//a_array[key] |
| 927 |
} else { |
| 928 |
var aTag = createA(getElement(elementid).options[i], i, "", ""); |
| 929 |
//add |
| 930 |
var childid = getPostID("postChildID"); |
| 931 |
$("#"+childid).append(aTag); |
| 932 |
applyEventsOnA(); |
| 933 |
}; |
| 934 |
}; |
| 935 |
this.remove = function(i) { |
| 936 |
getElement(elementid).remove(i); |
| 937 |
if((getByIndex(i))!= -1) { $("#"+getByIndex(i).id).remove();addRemoveFromIndex(i, 'd');}; |
| 938 |
//alert("a" +a); |
| 939 |
if(getElement(elementid).length==0) { |
| 940 |
setTitleText(""); |
| 941 |
} else { |
| 942 |
var sText = getByIndex(getElement(elementid).selectedIndex).html; |
| 943 |
setTitleText(sText); |
| 944 |
}; |
| 945 |
$this.set("selectedIndex", getElement(elementid).selectedIndex); |
| 946 |
}; |
| 947 |
this.disabled = function(dis, isLocal) { |
| 948 |
getElement(elementid).disabled = dis; |
| 949 |
//alert(getElement(elementid).disabled); |
| 950 |
var id = getPostID("postID"); |
| 951 |
if(dis==true) { |
| 952 |
$("#"+id).css("opacity", styles.disabled); |
| 953 |
$this.close(); |
| 954 |
} else if(dis==false) { |
| 955 |
$("#"+id).css("opacity", 1); |
| 956 |
}; |
| 957 |
if(isLocal!=true) { |
| 958 |
$this.set("disabled", dis); |
| 959 |
}; |
| 960 |
}; |
| 961 |
//return form element |
| 962 |
this.form = function() { |
| 963 |
return (getElement(elementid).form == undefined) ? null : getElement(elementid).form; |
| 964 |
}; |
| 965 |
this.item = function() { |
| 966 |
//index, subindex - use arguments.length |
| 967 |
if(arguments.length==1) { |
| 968 |
return getElement(elementid).item(arguments[0]); |
| 969 |
} else if(arguments.length==2) { |
| 970 |
return getElement(elementid).item(arguments[0], arguments[1]); |
| 971 |
} else { |
| 972 |
throw {message:"An index is required!"}; |
| 973 |
}; |
| 974 |
}; |
| 975 |
this.namedItem = function(nm) { |
| 976 |
return getElement(elementid).namedItem(nm); |
| 977 |
}; |
| 978 |
this.multiple = function(is) { |
| 979 |
if(typeof(is)=="undefined") { |
| 980 |
return $this.get("multiple"); |
| 981 |
} else { |
| 982 |
$this.set("multiple", is); |
| 983 |
}; |
| 984 |
|
| 985 |
}; |
| 986 |
this.size = function(sz) { |
| 987 |
if(typeof(sz)=="undefined") { |
| 988 |
return $this.get("size"); |
| 989 |
} else { |
| 990 |
$this.set("size", sz); |
| 991 |
}; |
| 992 |
}; |
| 993 |
this.addMyEvent = function(nm, fn) { |
| 994 |
$this.onActions[nm] = fn; |
| 995 |
}; |
| 996 |
this.fireEvent = function(nm) { |
| 997 |
eval($this.onActions[nm])($this); |
| 998 |
}; |
| 999 |
//end |
| 1000 |
var updateCommonVars = function() { |
| 1001 |
$this.set("version", $.msDropDown.version); |
| 1002 |
$this.set("author", $.msDropDown.author); |
| 1003 |
}; |
| 1004 |
var init = function() { |
| 1005 |
//create wrapper |
| 1006 |
createDropDown(); |
| 1007 |
//update propties |
| 1008 |
//alert("init"); |
| 1009 |
setOriginalProperties(); |
| 1010 |
updateCommonVars(); |
| 1011 |
if(options.onInit!='') { |
| 1012 |
eval(options.onInit)($this); |
| 1013 |
}; |
| 1014 |
}; |
| 1015 |
init(); |
| 1016 |
}; |
| 1017 |
//static |
| 1018 |
$.msDropDown = { |
| 1019 |
version: 2.37, |
| 1020 |
author: "Marghoob Suleman", |
| 1021 |
counter:20, |
| 1022 |
create: function(id, opt) { |
| 1023 |
return $(id).msDropDown(opt).data("dd"); |
| 1024 |
} |
| 1025 |
}; |
| 1026 |
$.fn.extend({ |
| 1027 |
msDropDown: function(options) |
| 1028 |
{ |
| 1029 |
return this.each(function() |
| 1030 |
{ |
| 1031 |
//if ($(this).data('dd')) return; // need to comment when using refresh method - will remove in next version |
| 1032 |
var mydropdown = new dd(this, options); |
| 1033 |
$(this).data('dd', mydropdown); |
| 1034 |
}); |
| 1035 |
} |
| 1036 |
}); |
| 1037 |
//fixed for prop |
| 1038 |
if(typeof($.fn.prop)=='undefined') { |
| 1039 |
$.fn.prop = function(w) { |
| 1040 |
return $(this).attr(w); |
| 1041 |
}; |
| 1042 |
}; |
| 1043 |
|
| 1044 |
})(jQuery); |