//getElementById() + cache function getter(){ getter_cache = {}; //Get element by id this.get = function(id){ if(getter_cache[id]){ return getter_cache[id]; } getter_cache[id] = document.getElementById( id ); return getter_cache[id]; } //Clear cache this.clear_cache = function(){ for(var id in getter_cache) getter_cache[id] = undefined; } } var _ = new getter(); function toggle_display(id, flag, getter_obj){ var el = getter_obj && getter_obj.get ? getter_obj.get( id ) : document.getElementById( id ); if(!el) return false; el.style.display = flag ? '' : 'none'; return true; } //Input length tracker function set_track(el, ml){ if(el.addEventListener){ el.addEventListener('change', get_track_func(el, ml), true); el.addEventListener('keyup', get_track_func(el, ml), true); } else if(el.attachEvent){ el.attachEvent('onchange', get_track_func(el, ml)); el.attachEvent('onkeyup', get_track_func(el, ml)); } (get_track_func(el, ml))(); } function get_track_func(el, ml){ return function(){ if(el.value == undefined) return; var len = el.value.length; var track = _.get(el.id + '_track'); track.getElementsByTagName('span')[0].innerHTML = len; track.getElementsByTagName('div')[0].style.width = (len > ml ? 100 : Math.round(100 * len / ml)) + '%'; if(len > ml) track.className = 'tracker overflow'; else track.className = 'tracker'; } } //Color table rows if table class="zebra" function zebra(){ var tables = document.getElementsByTagName('TABLE'); var i = 0, l = tables.length; var trs, j, l2, cur; for(; i < l; i++){ if(/\bzebra\b/.test(tables[i].className)){ trs = tables[i].getElementsByTagName('tr'); cur = 0; for(j = 0, l2 = trs.length; j < l2; j++){ if(/*trs[j].parentNode.tagName == 'THEAD' || */trs[j].parentNode.tagName == 'TFOOT') continue; trs[j].className += ' zebra_line' + ((cur % 2) + 1) cur++; } } } } //Make links with class="external" open in new window function externals(){ var i, l, as = document.getElementsByTagName('A'); for(i = 0, l = as.length; i < l; i++){ if(as[i].className.indexOf('external') != -1) as[i].onclick = function(){ window.open(this.href); return false; } } } function p_ajax(url, el_id){ if(!_.get(el_id)) return; url += (url.indexOf('?') == -1 ? '?' : '&') + 'r=' + Math.random(); var span = _.get(el_id).appendChild(document.createElement('SPAN')); var scrpt = span.appendChild(document.createElement('SCRIPT')); scrpt.src = url; } function popup(src, width, height, title, add_html){ var html = '' + title + '

' + title + (add_html ? ' ' + add_html : '') + '

'; var x = (screen.width - width) / 2; var y = (screen.height - height) / 2; var wnd = window.open('', '', 'toolbar=0,location=1,directories=0,menuBar=0,scrollbars=0,resizable=1,width=' + width + ',height=' + height + ',left=' + x + ',top=' + y + ',screenX=' + x + ',screenY=' + y); wnd.document.open(); wnd.document.write(html); wnd.document.close(); } function NavigateMe(event){ var link; if(!event && window.event) event = window.event; if(!event) return; switch (event.keyCode ? event.keyCode : event.which ? event.which : null){ case 0x25: link = _.get('PrevLink'); break; case 0x27: link = _.get('NextLink'); break; } if (link && link.href) document.location = link.href; } function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { oldonload(); func(); } } } function align_height(ids, correction){ var max_height = 0, i = 0, l = ids.length, el; if(!correction) correction = 0; //First pass - determine max height for(; i < l; i++){ if((el = _.get(ids[i])) && (el.offsetHeight > max_height)) max_height = el.offsetHeight; } //Second pass - align heights for(i = 0; i < l; i++){ if((el = _.get(ids[i]))) el.style.height = (max_height + correction) + 'px'; } } function move_helper(el, helper_id, e){ if(!e) e = window.event; if(!e) return; if(_.get(helper_id)){ _.get(helper_id).style.left = (e.layerX || e.x) + 'px'; _.get(helper_id).style.top = ((e.layerY || e.y) + 25) + 'px'; } } function get_flash_movie(movieName){ if(window.document[movieName]){ return window.document[movieName]; } if(navigator.appName.indexOf("Microsoft Internet")==-1){ if(document.embeds && document.embeds[movieName]) return document.embeds[movieName]; } else{ return document.getElementById(movieName); } } function validate(form, required, mode){ if(!form) return false; if(mode == undefined) mode = 1; if(required){ var l = required.length; var i = 0, el, str = '', err, errcount = 0, regex_err = false, field_name; for(; i < l; i++){ regex_err = false; el = form[required[i][0]]; if(!el) continue; err = (el.type && (el.type == 'checkbox' || el.type == 'radio') && !el.checked) || ((el.type && (el.type == 'text' || el.type == 'password' || el.type == 'file') || el.tagName == 'TEXTAREA' || el.tagName == 'SELECT' ) && el.value == ''); //See if there is regexp specified if(!err && required[i][2] && !required[i][2].test(el.value)) err = regex_err = true; if(err){ field_name = (required[i][1] ? required[i][1] : required[i][0]); if(mode == 0){ if(regex_err) alert(field_name + ' (невірний формат)'); else alert(field_name + ' (обов\'язкове поле)'); return false; } if(mode == 1){ if(regex_err) str += '- ' + field_name + ' (невірний формат)\n'; else str += '- ' + field_name + ' (обов\'язкове поле)\n'; errcount++; } } } if(str != ''){ str = 'Помилк' + (errcount != 1 ? 'и' : 'а') + ':\n\n' + str; alert(str); return false; } } return true; }