// Css helpers dex.css = { /** * Switches classes on event. * Used for explorer 6 li:hover css selector */ menu_toggle: function(elm) { if (elm.className.indexOf("over") == -1) { elm.className += " over"; } else { elm.className = elm.className.replace(" over", ""); } }, /** * Creates overlay above form while submitting or overlay * while waiting for ajax request */ overlay_ajaxon : function(elm, clear) { var enclosing_div; var w; var h; if (elm.tagName == 'BODY') { enclosing_div = elm; w = document.body.scrollWidth + 'px'; h = document.body.scrollHeight + 'px'; } else { enclosing_div = dex.css.find_enclosing_div(elm, true); w = enclosing_div.offsetWidth + 'px'; h = enclosing_div.offsetHeight + 'px'; } if (!enclosing_div) enclosing_div = elm; var holder = document.createElement("DIV"); var mask = document.createElement("DIV"); var ajaxon = document.createElement('div'); holder.className = 'ajax_load_holder'; holder.appendChild(mask); holder.appendChild(ajaxon); mask.className = 'ajax_load_mask'; mask.style.width = w; mask.style.height = h; ajaxon.className = 'ajax_load'; ajaxon.style.display = 'block'; ajaxon.style.width = w; ajaxon.style.height = h; ajaxon.style.position = 'relative'; if (clear) { var clear_div = document.createElement('div'); clear_div.className = 'clear'; holder.appendChild(clear_div); } var first_child = enclosing_div.firstChild; if (first_child) { enclosing_div.insertBefore(holder, first_child); } else { enclosing_div.appendChild(holder); }; holder.dismiss = function() { this.parentNode.removeChild(this); }; return holder; }, find_enclosing_div: function(htmlelm, only_div) { if (htmlelm.tagName == 'DIV') { return htmlelm; } else if (!only_div && htmlelm.tagName == 'FORM'){ return htmlelm; } else if(htmlelm.tagName == 'BODY'){ return false; } if (htmlelm.parentNode) { return this.find_enclosing_div(htmlelm.parentNode, only_div) } return false; }, tabs : function(container,selected) { var container = document.getElementById(container); //tabs this.buttons = container.getElementsByTagName('UL')[0].getElementsByTagName('LI'); this.buttons_len = this.buttons.length; var children = container.childNodes; this.tabs = new Array(); for (var i =0; children[i];i++){ if (children[i].tagName=='DIV') this.tabs.push(children[i]); } this.tabs_len = this.tabs.length; for (var i=0; this.buttons_len>i; i++){ if (!this.buttons[i].childNodes[0].onclick){ this.buttons[i].childNodes[0].onclick = function(){ this.parentNode.parentNode.parentNode.obj.set_tab(this.parentNode)}; } this.buttons[i].tab_num = i; } var temp_string; for (var i=0;this.tabs_len>i; i++){ if (!selected){ if (!i) this.tabs[i].style.display = 'block'; else this.tabs[i].style.display = 'none'; } else{ temp_string = this.tabs[i].id; if (temp_string.indexOf(selected)!=-1){ this.tabs[i].style.display = 'block'; } else { this.tabs[i].style.display = 'none'; } } } //tab.style.display = 'selected'; this.set_tab = function(tab) { for (var i=0;this.buttons_len>i; i++){ this.buttons[i].className = (i==tab.tab_num?'selected':''); }; for (var i=0;this.tabs_len>i; i++){ this.tabs[i].style.display = (i==tab.tab_num?'block':'none'); }; }; container.obj = this; }, template : function(template){ this.template = document.getElementById(template).innerHTML; this.match = this.template.match(new RegExp("/null/([^#]*)#", 'gi')); this.render = function(data){ var var_name, i, value; var buffer = this.template; if (this.match) { for (i=0 ; this.match[i] ; i++){ var_name = this.match[i].replace(new RegExp("/null/", 'gi'),''); var_name = var_name.replace(new RegExp("#", 'gi'),''); try{ if (value = data[var_name]) buffer = buffer.replace(new RegExp(this.match[i], 'gi'), value); else buffer = buffer.replace(new RegExp(this.match[i], 'gi'), ''); } catch(e) { buffer = buffer.replace(new RegExp(this.match[i], 'gi'), ''); } } } return buffer; } } }; YAHOO.register("dex.css", dex.css, {version: "1", build: "1"});