| 307 | | var css = document.defaultView.getComputedStyle(element, null); |
|---|
| 308 | | value = css ? css[style] : null; |
|---|
| 309 | | } |
|---|
| 310 | | if (style == 'opacity') return value ? parseFloat(value) : 1.0; |
|---|
| | 309 | if (document.defaultView && document.defaultView.getComputedStyle) { |
|---|
| | 310 | var css = document.defaultView.getComputedStyle(element, null); |
|---|
| | 311 | value = css ? css[style] : null; |
|---|
| | 312 | } else if (element.currentStyle) { |
|---|
| | 313 | value = element.currentStyle[style]; |
|---|
| | 314 | } |
|---|
| | 315 | } |
|---|
| | 316 | |
|---|
| | 317 | if((value == 'auto') && ['width','height'].include(style) && (element.getStyle('display') != 'none')) |
|---|
| | 318 | value = element['offset'+style.capitalize()] + 'px'; |
|---|
| | 319 | |
|---|
| | 320 | if (window.opera && ['left', 'top', 'right', 'bottom'].include(style)) |
|---|
| | 321 | if (Element.getStyle(element, 'position') == 'static') value = 'auto'; |
|---|
| | 322 | if(style == 'opacity') { |
|---|
| | 323 | if(value) return parseFloat(value); |
|---|
| | 324 | if(value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) |
|---|
| | 325 | if(value[1]) return parseFloat(value[1]) / 100; |
|---|
| | 326 | return 1.0; |
|---|
| | 327 | } |
|---|
| 314 | | getOpacity: function(element) { |
|---|
| 315 | | return $(element).getStyle('opacity'); |
|---|
| 316 | | }, |
|---|
| 317 | | |
|---|
| 318 | | setStyle: function(element, styles, camelized) { |
|---|
| 319 | | element = $(element); |
|---|
| 320 | | var elementStyle = element.style; |
|---|
| 321 | | |
|---|
| 322 | | for (var property in styles) |
|---|
| 323 | | if (property == 'opacity') element.setOpacity(styles[property]) |
|---|
| 324 | | else |
|---|
| 325 | | elementStyle[(property == 'float' || property == 'cssFloat') ? |
|---|
| 326 | | (elementStyle.styleFloat === undefined ? 'cssFloat' : 'styleFloat') : |
|---|
| 327 | | (camelized ? property : property.camelize())] = styles[property]; |
|---|
| 328 | | |
|---|
| 329 | | return element; |
|---|
| 330 | | }, |
|---|
| 331 | | |
|---|
| 332 | | setOpacity: function(element, value) { |
|---|
| 333 | | element = $(element); |
|---|
| 334 | | element.style.opacity = (value == 1 || value === '') ? '' : |
|---|
| 335 | | (value < 0.00001) ? 0 : value; |
|---|
| | 331 | setStyle: function(element, style) { |
|---|
| | 332 | element = $(element); |
|---|
| | 333 | for (var name in style) { |
|---|
| | 334 | var value = style[name]; |
|---|
| | 335 | if(name == 'opacity') { |
|---|
| | 336 | if (value == 1) { |
|---|
| | 337 | value = (/Gecko/.test(navigator.userAgent) && |
|---|
| | 338 | !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? 0.999999 : 1.0; |
|---|
| | 339 | if(/MSIE/.test(navigator.userAgent) && !window.opera) |
|---|
| | 340 | element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,''); |
|---|
| | 341 | } else if(value === '') { |
|---|
| | 342 | if(/MSIE/.test(navigator.userAgent) && !window.opera) |
|---|
| | 343 | element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,''); |
|---|
| | 344 | } else { |
|---|
| | 345 | if(value < 0.00001) value = 0; |
|---|
| | 346 | if(/MSIE/.test(navigator.userAgent) && !window.opera) |
|---|
| | 347 | element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'') + |
|---|
| | 348 | 'alpha(opacity='+value*100+')'; |
|---|
| | 349 | } |
|---|
| | 350 | } else if(['float','cssFloat'].include(name)) name = (typeof element.style.styleFloat != 'undefined') ? 'styleFloat' : 'cssFloat'; |
|---|
| | 351 | element.style[name.camelize()] = value; |
|---|
| | 352 | } |
|---|
| 411 | | if (Prototype.Browser.Opera) { |
|---|
| 412 | | Element.Methods._getStyle = Element.Methods.getStyle; |
|---|
| 413 | | Element.Methods.getStyle = function(element, style) { |
|---|
| 414 | | switch(style) { |
|---|
| 415 | | case 'left': |
|---|
| 416 | | case 'top': |
|---|
| 417 | | case 'right': |
|---|
| 418 | | case 'bottom': |
|---|
| 419 | | if(Element._getStyle(element, 'position') == 'static') return null; |
|---|
| 420 | | default: return Element._getStyle(element, style); |
|---|
| 421 | | } |
|---|
| 422 | | }; |
|---|
| 423 | | } |
|---|
| 424 | | |
|---|
| 425 | | if (Prototype.Browser.IE) { |
|---|
| 426 | | Element.Methods.getStyle = function(element, style) { |
|---|
| 427 | | element = $(element); |
|---|
| 428 | | style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); |
|---|
| 429 | | var value = element.style[style]; |
|---|
| 430 | | if (!value && element.currentStyle) value = element.currentStyle[style]; |
|---|
| 431 | | |
|---|
| 432 | | if (style == 'opacity') { |
|---|
| 433 | | if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) |
|---|
| 434 | | if (value[1]) return parseFloat(value[1]) / 100; |
|---|
| 435 | | return 1.0; |
|---|
| 436 | | } |
|---|
| 437 | | |
|---|
| 438 | | if (value == 'auto') { |
|---|
| 439 | | if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) |
|---|
| 440 | | return element['offset'+style.capitalize()] + 'px'; |
|---|
| 441 | | return null; |
|---|
| 442 | | } |
|---|
| 443 | | return value; |
|---|
| 444 | | }; |
|---|
| 445 | | |
|---|
| 446 | | Element.Methods.setOpacity = function(element, value) { |
|---|
| 447 | | element = $(element); |
|---|
| 448 | | var filter = element.getStyle('filter'), style = element.style; |
|---|
| 449 | | if (value == 1 || value === '') { |
|---|
| 450 | | style.filter = filter.replace(/alpha\([^\)]*\)/gi,''); |
|---|
| 451 | | return element; |
|---|
| 452 | | } else if (value < 0.00001) value = 0; |
|---|
| 453 | | style.filter = filter.replace(/alpha\([^\)]*\)/gi, '') + |
|---|
| 454 | | 'alpha(opacity=' + (value * 100) + ')'; |
|---|
| 455 | | return element; |
|---|
| 456 | | }; |
|---|
| 457 | | } |
|---|
| 458 | | |
|---|
| 459 | | if (Prototype.Browser.Gecko) { |
|---|
| 460 | | Element.Methods.setOpacity = function(element, value) { |
|---|
| 461 | | element = $(element); |
|---|
| 462 | | element.style.opacity = (value == 1) ? 0.999999 : |
|---|
| 463 | | (value === '') ? '' : (value < 0.00001) ? 0 : value; |
|---|
| 464 | | return element; |
|---|
| 465 | | }; |
|---|
| 466 | | } |
|---|
| 467 | | |
|---|