/** * Copyright (c) 2000-2006 Liferay, Inc. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */var submitCountdown = 0;function check(form, name, checked) {for (var i = 0; i < form.elements.length; i++) {var e = form.elements[i];if ((e.name == name) && (e.type == "checkbox")) {e.checked = checked;}}}function checkAll(form, name, allBox) {if (isArray(name)) {for (var i = 0; i < form.elements.length; i++) {var e = form.elements[i];if (e.type == "checkbox") {for (var j = 0; j < name.length; j++) {if (e.name == name[j]) {e.checked = allBox.checked;}}}}}else {for (var i = 0; i < form.elements.length; i++) {var e = form.elements[i];if ((e.name == name) && (e.type == "checkbox")) {e.checked = allBox.checked;}}}}function checkAllBox(form, name, allBox) {var totalBoxes = 0;var totalOn = 0;if (isArray(name)) {for (var i = 0; i < form.elements.length; i++) {var e = form.elements[i];if ((e.name != allBox.name) && (e.type == "checkbox")) {for (var j = 0; j < name.length; j++) {if (e.name == name[j]) {totalBoxes++;if (e.checked) {totalOn++;}}}}}}else {for (var i = 0; i < form.elements.length; i++) {var e = form.elements[i];if ((e.name != allBox.name) && (e.name == name) && (e.type == "checkbox")) {totalBoxes++;if (e.checked) {totalOn++;}}}}if (totalBoxes == totalOn) {allBox.checked = true;}else {allBox.checked = false;}}function checkMaxLength(box, maxLength) {if ((box.value.length) >= maxLength) {box.value = box.value.substring(0, maxLength - 1);}}function checkTab(box) {if ((document.all) && (event.keyCode == 9)) {box.selection = document.selection.createRange();setTimeout("processTab(\"" + box.id + "\")", 0);}}function cloneObject(obj, recurse) {    for (i in obj) {        if (typeof obj[i] == 'object' && recurse) {            this[i] = new cloneObject(obj[i], true);        }        else            this[i] = obj[i];    }}var Cookie = {create : function(name, value, days) {if (days) {var date = new Date();date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));var expires = "; expires=" + date.toGMTString();}else {var expires = "";}document.cookie = name + "=" + value + expires + "; path=/";},read : function(name) {var nameEQ = name + "=";var ca = document.cookie.split(';');for (var i = 0; i < ca.length; i++) {var c = ca[i];while (c.charAt(0) == ' ') {c = c.substring(1, c.length);}if (c.indexOf(nameEQ) == 0) {return c.substring(nameEQ.length, c.length);}}return null;},erase : function(name) {createCookie(name, "", -1);}}document.createInputElement = function(name) {if (is_ie) {var entry = document.createElement("<input name='" + name + "'></input>");}else {var entry = document.createElement("input");entry.name = name;}return entry;}function disableEsc() {if ((document.all) && (event.keyCode == 27)) {event.returnValue = false;}}if (!Element) Element = new Object();Element.disable = function(element) {element = $(element);var items = element.getElementsByTagName("*");for (var i = 0; i < items.length; i++) {var item = items[i];var nodeName = item.nodeName.toLowerCase();item.onclick = function() {};item.onmouseover = function() {};item.onmouseout = function() {};if (is_ie) {item.onmouseenter = function() {};item.onmouseleave = function() {};}if (nodeName == "a") {item.href = "javascript: void(0)";}else if (nodeName == "input" || nodeName == "select" || nodeName == "script") {item.disabled = "true";}else if (nodeName == "form") {item.action = "";item.onsubmit = function() { return false; };}item.style.cursor = "default";}}Element.changeOpacity = function(object, opacity) {opacity = (opacity >= 100) ? 99.999 : opacity;opacity = (opacity < 0) ? 0 : opacity;object.style.opacity = (opacity / 100);object.style.MozOpacity = (opacity / 100);object.style.KhtmlOpacity = (opacity / 100);object.style.filter = "alpha(opacity=" + opacity + ")";}if (!Event) Event = new Object();Event.addHandler = function(obj, type, func) {if (type.indexOf("on") != 0) {type = "on" + type;}    var temp = obj[type];if (typeof obj[type] != "function") {        obj[type] = func;    }else {        obj[type] = function() {        	if (temp) {            temp();        	}func();        }    }}Event.enterPressed = function(event) {if (!event) {event = window.event;}var keycode = event.keyCode;if (keycode == 13) {return true;}else {return false;}}function getSelectedIndex(col) {for (var i = 0; i < col.length; i++) {if (col[i].checked == true) {return i;}}return -1;}function getSelectedRadioName(col) {var i = getSelectedIndex(col);if (i == -1) {var radioName = col.name;if (radioName == null) {radioName = "";}return radioName;}else {return col[i].name;}}function getSelectedRadioValue(col) {var i = getSelectedIndex(col);if (i == -1) {var radioValue = col.value;if (radioValue == null) {radioValue = "";}return radioValue;}else {return col[i].value;}}function isArray(object) {if (!window.Array) {return false;}else {return object.constructor == window.Array;}}function LinkedList() {this.head = null;this.tail = null;}LinkedList.prototype.add = function(obj) {obj.listInfo = new Object();var tail = this.tail;var head = this.head;if (this.head == null) {this.head = obj;this.tail = obj;}else {this.tail.listInfo.next = obj;obj.listInfo.prev = this.tail;this.tail = obj;}}LinkedList.prototype.remove = function(obj) {if (this.head) {var next = obj.listInfo.next;var prev = obj.listInfo.prev;if (next) {next.listInfo.prev = prev;}if (prev) {prev.listInfo.next = next;}if (this.head = obj) {this.head = next;}if (this.tail = obj) {this.tail = prev;}}}LinkedList.prototype.each = function(func) {var cur = this.head;var count = 0;while (cur){count++;var next = cur.listInfo.next;if (func) {func(cur);}cur = next;}return count;}LinkedList.prototype.size = function() {return this.each();}function listChecked(form) {var s = "";for (var i = 0; i < form.elements.length; i++) {var e = form.elements[i];if ((e.type == "checkbox") && (e.checked == true) && (e.value > "")) {s += e.value + ",";}}return s;}function listCheckedExcept(form, except) {var s = "";for (var i = 0; i < form.elements.length; i++) {var e = form.elements[i];if ((e.type == "checkbox") && (e.checked == true) && (e.value > "") && (e.name.indexOf(except) != 0)) {s += e.value + ",";}}return s;}function listSelect(box, delimeter) {var s = "";if (delimeter == null) {delimeter = ",";}if (box == null) {return "";}for (var i = 0; i < box.length; i++) {    	if (box.options[i].value > "") {s += box.options[i].value + delimeter;}}if (s == ".none,") {return "";}else {return s;}}function listUnchecked(form) {var s = "";for (var i = 0; i < form.elements.length; i++) {var e = form.elements[i];if ((e.type == "checkbox") && (e.checked == false) && (e.value > "")) {s += e.value + ",";}}return s;}function listUncheckedExcept(form, except) {var s = "";for (var i = 0; i < form.elements.length; i++) {var e = form.elements[i];if ((e.type == "checkbox") && (e.checked == false) && (e.value > "") && (e.name.indexOf(except) != 0)) {s += e.value + ",";}}return s;}function moveItem(fromBox, toBox, sort) {var newText = null;var newValue = null;var newOption = null;if (fromBox.selectedIndex >= 0) {for (var i = 0; i < fromBox.length; i++) {if (fromBox.options[i].selected) {newText = fromBox.options[i].text;newValue = fromBox.options[i].value;newOption = new Option(newText, newValue);toBox[toBox.length] = newOption;}}for (var i = 0; i < toBox.length; i++) {for (var j = 0; j < fromBox.length; j++) {if (fromBox[j].value == toBox[i].value) {fromBox[j] = null;break;}}}}if (newText != null) {if (sort == true) {sortBox(toBox);}}}function processTab(id) {document.all[id].selection.text = String.fromCharCode(9);document.all[id].focus();}function reelHome(id, startPosX, startPosY, duration, count, c) {    if (isNaN(startPosX) || isNaN(startPosY)) {        return;}var obj = document.getElementById(id);if (obj == null) {return;}var top = parseInt(obj.style.top);var left = parseInt(obj.style.left);if (count == null) {    count = 1;}if (duration == null) {    duration == 20;}if (c == null) {// Calculate this constant once to speed up next iterationc = Math.PI / (2 * duration);obj.style.zIndex = 10;    }if (count < duration) {    var ratio = 1 - Math.sin(count * c);    // Shift cos by -PI/2 and up 1obj.style.left = (startPosX * ratio) + "px";obj.style.top = (startPosY * ratio) + "px";setTimeout("reelHome(\"" + id + "\"," + startPosX + "," + startPosY + "," + duration + "," + (++count) + "," + c + ")", 16);}else {obj.style.top = "0px";obj.style.left = "0px";obj.style.zIndex = 0;}}function removeItem(box, value) {if (value == null) {for (var i = box.length - 1; i >= 0; i--) {if (box.options[i].selected) {box[i] = null;}}}else {for (var i = box.length - 1; i >= 0; i--) {if (box.options[i].value == value) {box[i] = null;}}}}function reorder(box, down) {var si = box.selectedIndex;if (si == -1) {box.selectedIndex = 0;}else {sText = box.options[si].text;sValue = box.options[si].value;if ((box.options[si].value > "") && (si > 0) && (down == 0)) {box.options[si].text = box.options[si - 1].text;box.options[si].value = box.options[si - 1].value;box.options[si - 1].text = sText;box.options[si - 1].value = sValue;box.selectedIndex--;}else if ((si < box.length - 1) && (box.options[si + 1].value > "") && (down == 1)) {box.options[si].text = box.options[si + 1].text;box.options[si].value = box.options[si + 1].value;box.options[si + 1].text = sText;box.options[si + 1].value = sValue;box.selectedIndex++;}else if (si == 0) {for (var i = 0; i < (box.length - 1); i++) {box.options[i].text = box.options[i + 1].text;box.options[i].value = box.options[i + 1].value;}box.options[box.length - 1].text = sText;box.options[box.length - 1].value = sValue;box.selectedIndex = box.length - 1;}else if (si == (box.length - 1)) {for (var j = (box.length - 1); j > 0; j--) {box.options[j].text = box.options[j - 1].text;box.options[j].value = box.options[j - 1].value;}box.options[0].text = sText;box.options[0].value = sValue;box.selectedIndex = 0;}}}function resubmitCountdown(formName) {if (submitCountdown > 0) {submitCountdown--;setTimeout("resubmitCountdown('" + formName + "')", 1000);}else {submitCountdown = 0;if (!is_ns_4) {document.body.style.cursor = "auto";}var form = document.forms[formName];for (var i = 0; i < form.length; i++){var e = form.elements[i];if (e.type && (e.type.toLowerCase() == "button" || e.type.toLowerCase() == "reset" || e.type.toLowerCase() == "submit")) {e.disabled = false;}}}}function selectAndCopy(el) {el.focus();el.select();if (document.all) {var textRange = el.createTextRange();textRange.execCommand("copy");}}function setBox(oldBox, newBox) {for (var i = oldBox.length - 1; i > -1; i--) {oldBox.options[i] = null;}for (var i = 0; i < newBox.length; i++) {oldBox.options[i] = new Option(newBox[i].value, i);}oldBox.options[0].selected = true;}function setCursorPosition(oInput,oStart,oEnd) {   if( oInput.setSelectionRange ) {         oInput.setSelectionRange(oStart,oEnd);     }      else if( oInput.createTextRange ) {        var range = oInput.createTextRange();        range.collapse(true);        range.moveEnd('character',oEnd);        range.moveStart('character',oStart);        range.select();     }}function setSelectedValue(col, value) {for (var i = 0; i < col.length; i++) {if ((col[i].value != "") && (col[i].value == value)) {col.selectedIndex = i;break;}}}function setSelectVisibility(mode, obj) {if (is_ie) {if (obj) {obj = $(obj);}else {obj = document.getElementsByTagName("body")[0];}selectList = obj.getElementsByTagName("select");for (var i = 0; i < selectList.length; i++) {selectList[i].style.visibility = mode;}}}function slideMaximize(id, height, speed) {var obj = document.getElementById(id);var reference = obj.getElementsByTagName("DIV")[0];height += speed;if (height < (reference.offsetHeight)) {obj.style.height = height + "px";setTimeout("slideMaximize(\"" + id + "\"," + height + "," + speed + ")", 10);}else {obj.style.overflow = "";obj.style.height = "";}}function slideMinimize(id, height, speed) {var obj = document.getElementById(id);height -= speed;if (height > 0) {obj.style.height = height + "px";setTimeout("slideMinimize(\"" + id + "\"," + height + "," + speed + ")", 10);}else {obj.style.display = "none";}}function sortBox(box) {var newBox = new Array();for (var i = 0; i < box.length; i++) {newBox[i] = new Array(box[i].value, box[i].text);}newBox.sort(sortByAscending);for (var i = box.length - 1; i > -1; i--) {box.options[i] = null;}for (var i = 0; i < newBox.length; i++) {box.options[box.length] = new Option(newBox[i][1], newBox[i][0]);}}function sortByAscending(a, b) {if (a[1].toLowerCase() > b[1].toLowerCase()) {return 1;}else if(a[1].toLowerCase() < b[1].toLowerCase()) {return -1;}else {return 0;}}function sortByDescending(a, b) {if (a[1].toLowerCase() > b[1].toLowerCase()) {return -1;}else if(a[1].toLowerCase() < b[1].toLowerCase()) {return 1;}else {return 0;}}function submitForm(form, action, singleSubmit) {if (submitCountdown == 0) {submitCountdown = 10;setTimeout("resubmitCountdown('" + form.name + "')", 1000);if (singleSubmit == null || singleSubmit) {submitCountdown++;for (var i = 0; i < form.length; i++){var e = form.elements[i];if (e.type && (e.type.toLowerCase() == "button" || e.type.toLowerCase() == "reset" || e.type.toLowerCase() == "submit")) {e.disabled = true;}}}if (action != null) {form.action = action;}if (!is_ns_4) {document.body.style.cursor = "wait";}form.submit();}else {if (this.submitFormAlert != null) {  			submitFormAlert(submitCountdown);}}}// Netscape 4 functionsif (is_ns_4) {encodeURIComponent = new function(uri) {return escape(uri);};decodeURIComponent = new function(uri) {return unescape(uri);};}// String functionsfunction startsWith(str, x) {if (str.indexOf(x) == 0) {return true;}else {return false;}}function endsWith(str, x) {if (str.lastIndexOf(x) == str.length - x.length) {return true;}else {return false;}}function toHTML(s) {s = s.replace(/\&/g, "&amp;");s = s.replace(/</g, "&lt;");s = s.replace(/>/g, "&gt;");s = s.replace(/\n/g, "<br>");s = s.replace(/  /g, " &nbsp;");return s;}function toText(s) {s = s.replace(/\&nbsp;/gi, " ");s = s.replace(/<br>/gi,"\n");s = s.replace(/&gt;/gi,">");s = s.replace(/\&lt;/gi,"<");s = s.replace(/\&amp;/gi,"&");return s;}function toggleById(id, returnState, displayType) {var obj = document.getElementById(id);if (returnState) {return toggleByObject(obj, returnState, displayType);}else {toggleByObject(obj, null, displayType);}}function toggleByIdSpan(obj, id) {var hidden = toggleById(id, true);var spanText = obj.getElementsByTagName("span");if (hidden) {spanText[0].style.display = "none";spanText[1].style.display = "";}else {spanText[0].style.display = "";spanText[1].style.display = "none";}}function toggleByObject(obj, returnState, displayType) {var hidden = false;var display = "block";if (displayType != null) {display = displayType;}if (obj != null) {if (!obj.style.display || !obj.style.display.toLowerCase().match("none")) {obj.style.display = "none";}else {obj.style.display = display;hidden = true;}}if (returnState) {return hidden;}}function trimString(str) {str = str.replace(/^\s+/g, "").replace(/\s+$/g, "");var charCode = str.charCodeAt(0);while (charCode == 160) {str = str.substring(1, str.length);charCode = str.charCodeAt(0);}charCode = str.charCodeAt(str.length - 1);while (charCode == 160) {str = str.substring(0, str.length - 1);charCode = str.charCodeAt(str.length - 1);}return str;}String.prototype.trim = trimString;var Viewport = {frame: function() {var x,y;if (self.innerHeight) // all except Explorer{x = self.innerWidth;y = self.innerHeight;}else if (document.documentElement && document.documentElement.clientHeight)// Explorer 6 Strict Mode{x = document.documentElement.clientWidth;y = document.documentElement.clientHeight;}else if (document.body) // other Explorers{x = document.body.clientWidth;y = document.body.clientHeight;}return (new Coordinate(x,y));},scroll: function() {var x,y;if (self.pageYOffset) // all except Explorer{x = self.pageXOffset;y = self.pageYOffset;}else if (document.documentElement && document.documentElement.scrollTop)// Explorer 6 Strict{x = document.documentElement.scrollLeft;y = document.documentElement.scrollTop;}else if (document.body) // all other Explorers{x = document.body.scrollLeft;y = document.body.scrollTop;}return (new Coordinate(x,y));},page: function() {var x,y;var test1 = document.body.scrollHeight;var test2 = document.body.offsetHeightif (test1 > test2) // all but Explorer Mac{x = document.body.scrollWidth;y = document.body.scrollHeight;}else // Explorer Mac;     //would also work in Explorer 6 Strict, Mozilla and Safari{x = document.body.offsetWidth;y = document.body.offsetHeight;}return (new Coordinate(x,y));}}var ZINDEX = {ALERT: 100,CHAT_BOX: 11,DRAG_ITEM: 10,DRAG_ARROW: 9}
