/* * Autor Daniel Kouba * Version 1.6 */ function redirect(href) { if ( href.substring(0,4)=='http' ) { document.location.href = href; } else { var b = document.getElementsByTagName('base'); if (b && b[0] && b[0].href) { if (b[0].href.substr(b[0].href.length-1) == '/' && href.charAt(0) == '/') { href = href.substr(1); } href = b[0].href + href; } document.location.href = href; } } function disableElement(element) { element.style.border = "1px solid #444;"; } function getUnixtime(){ return Math.round((new Date()).getTime() / 1000); } function hideElement(element) { element = getEl(element); if ( element.style.display == "none" ) { $(element).show("slow"); //element.style.display = "block"; } else { $(element).hide("slow"); //element.style.display = "none"; } } function updatesExpand(imgElement) { if ( getEl('tableUpdatesMore').style.display=="none" ) { $('#tableUpdatesMore').show("slow"); //getEl('tableUpdatesMore').style.display="table"; imgElement.src = "images/icons/triangle-down.gif"; } else { $('#tableUpdatesMore').hide("slow"); //getEl('tableUpdatesMore').style.display="none"; imgElement.src = "images/icons/triangle-right.gif"; } } function updatesHide(imgElement) { if ( getEl('divUpdatesTable').style.display=="none" ) { $('#divUpdatesTable').show("slow"); //getEl('divUpdatesTable').style.display="block" imgElement.src = "images/icons/triangle-down.gif"; } else { $('#divUpdatesTable').hide("slow"); //getEl('divUpdatesTable').style.display="none" imgElement.src = "images/icons/triangle-right.gif"; } } // getElementsByClassName(document, "a", "info-links"); function getElementsByClassName(oElm, strTagName, oClassNames){ var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName); var arrReturnElements = new Array(); var arrRegExpClassNames = new Array(); if(typeof oClassNames == "object"){ for(var i=0; i < oClassNames.length; i++){ arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)")); } } else{ arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)")); } var oElement; var bMatchesAll; for(var j=0; j < arrElements.length; j++){ oElement = arrElements[j]; bMatchesAll = true; for(var k=0; kminHeight;height--) { setTimeout("setHeight(text,height);", maxHeight*1000 - height*1000); } text.style.display = "none"; //alert(text.style.height); } else { text.style.display = "block"; maxHeight = text.scrollHeight; minHeight = 0; maxHeight = 250; for (height=minHeight;height<=maxHeight;height++) { setTimeout("setHeight(text,height);", height*1000); } }*/ } function setHeight(object,height) { object.style.height = height + 'px'; //alert(object.style.height); } function checkElem(a) { var r = []; // Force the argument into an array, if it isn't already if ( a.constructor != Array ) a = [ a ]; for ( var i = 0; i < a.length; i++ ) { // If there's a String if ( a[i].constructor == String ) { // Create a temporary element to house the HTML var div = document.createElement("div"); // Inject the HTML, to convert it into a DOM structure div.innerHTML = a[i]; // Extract the DOM structure back out of the temp DIV for ( var j = 0; j < div.childNodes.length; j++ ) r[r.length] = div.childNodes[j]; } else if ( a[i].length ) { // If it's an array // Assume that it's an array of DOM Nodes for ( var j = 0; j < a[i].length; j++ ) r[r.length] = a[i][j]; } else { // Otherwise, assume it's a DOM Node r[r.length] = a[i]; } } return r; } function before( parent, before, elem ) { // Check to see if no parent node was provided if ( elem == null ) { elem = before; before = parent; parent = before.parentNode; } // Get the new array of elements var elems = checkElem( elem ); // Move through the array backwards, // because we're prepending elements for ( var i = elems.length - 1; i >= 0; i-- ) { parent.insertBefore( elems[i], before ); } } function findPrevNode(elem) { do { elem = elem.previousSibling; } while ( elem && elem.nodeType != 1 ); return elem; } function findNextNode(elem) { do { elem = elem.nextSibling; } while ( elem && elem.nodeType != 1 ); return elem; } function moveNodeBefore( elem ) { elem = getEl(elem); parent = elem.parentNode; prev = findPrevNode(elem) // Get the new array of elements var elems = checkElem( elem ); // Move through the array backwards, // because we're prepending elements for ( var i = elems.length - 1; i >= 0; i-- ) { parent.insertBefore( elems[i], prev ); } } function moveNodeAfter( elem ) { elem = getEl(elem); parent = elem.parentNode; next = findNextNode(elem) // Get the new array of elements var elems = checkElem( elem ); // Move through the array backwards, // because we're prepending elements for ( var i = elems.length - 1; i >= 0; i-- ) { parent.insertBefore( next , elems[i] ); } } function append( parent, elem ) { // Get the array of elements var elems = checkElem( elem ); // Append them all to the element for ( var i = 0; i <= elems.length; i++ ) { parent.appendChild( elems[i] ); } } function removeNode(elem) { elem = getEl(elem); elem.parentNode.removeChild(elem); } function ajaxInstance() { var ajax = false; /*@cc_on @*/ /*@if (@_jscript_version >= 5) try { ajax = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { ajax = new ActiveXObject('Microsoft.XMLHTTP'); } catch (E) { ajax = false; } } @end @*/ if (!ajax && typeof XMLHttpRequest != 'undefined') { ajax = new XMLHttpRequest(); } return ajax; } function ajaxReplace(element, url) { element = getEl(element); //element.innerHTML = 'loading' //alert(element); var ajax = ajaxInstance(); if (!ajax) { return false; } ajax.open('GET', url, true); ajax.setRequestHeader("X-Requested-With", "XMLHttpRequest"); ajax.onreadystatechange = function() { if (ajax.readyState == 4) { element.innerHTML = ajax.responseText; } } ajax.send(null); return true; } function ajaxAppend(element, url) { element = getEl(element); //alert(element); var ajax = ajaxInstance(); if (!ajax) { return false; } ajax.open('GET', url, true); ajax.setRequestHeader("X-Requested-With", "XMLHttpRequest"); ajax.onreadystatechange = function() { if (ajax.readyState == 4) { append(element,ajax.responseText); //element.innerHTML = ajax.responseText; } } ajax.send(null); return true; } function getEl(elem) { if (typeof(elem) == 'string' ) { return document.getElementById(elem); } else { return elem; } } function markAll(el,which) { checks = document.getElementsByTagName('input'); for (var i=0; i < checks.length; i++ ) { check = checks[i]; if ( check.type == 'checkbox' && check.name.substring(0, which.length )==which ) { check.checked = el.checked; } } } function setNameFromFile(fileEl,nameEl) { fileEl = getEl(fileEl); nameEl = getEl(nameEl); if ( nameEl.value != "" || true ) { nameEl.value = fileEl.value.substr(0, fileEl.value.length-4 ); } } function clearDefaultValue(element,defaultValue) { if ( element.value == defaultValue ) { element.value=""; } } function getMultiple(selObj) { var selectedArray = new Array(); var i; var count = 0; for (i=0; i < selObj.options.length; i++) { if (selObj.options[i].selected) { selectedArray[count] = selObj.options[i].value; count++; } } return selectedArray.toString(); } function resizeWindow(width,height) { if (parseInt(navigator.appVersion)>3) { if (navigator.appName=="Netscape") { window.innerWidth = width; window.innerHeight= height; } if (navigator.appName.indexOf("Microsoft")!=-1) { document.body.offsetWidth = width; document.body.offsetHeight = height; } } } function translateCreateEditorLinks() { var linkClass = "translateTrigger"; var triggerHtml = ''; $("*[alt*=|~]").each( function(){ var html = $(this).attr("alt"); var idTranslate = html.match(/\~\|(.*)\|\~/); idTranslate = idTranslate[1]; //alert(html+"\n\nID:"+idTranslate); $(this).attr("alt", html.replace(/~\|.*\|~/, "" )); $(this).parent().append( triggerHtml.replace(/~/,idTranslate).replace(/°/,"Přeložit alt. text : "+$(this).attr("alt")) ); } ); $("*[title*=|~]").each( function(){ var html = $(this).attr("title"); var idTranslate = html.match(/\~\|(.*)\|\~/); idTranslate = idTranslate[1]; //alert(html+"\n\nID:"+idTranslate); $(this).attr("title", html.replace(/~\|.*\|~/, "" )); $(this).parent().append( triggerHtml.replace(/~/,idTranslate).replace(/°/,"Přeložit titulek: "+$(this).attr("title")) ); } ); $("*[value*=|~]").each( function(){ var html = $(this).attr("value"); var idTranslate = html.match(/\~\|(.*)\|\~/); idTranslate = idTranslate[1]; //alert(html+"\n\nID:"+idTranslate); $(this).attr("value", html.replace(/~\|.*\|~/, "" )); $(this).parent().append( triggerHtml.replace(/~/,idTranslate).replace(/°/,"Přeložit popisek: "+$(this).attr("value")) ); } ); $("body h1:contains('~|')").each( function(){ var html = $(this).html(); var idTranslate = html.match(/\~\|(.*)\|\~/); idTranslate = idTranslate[1]; //alert(html+"\n\nID:"+idTranslate); var text = "Přeložit nadpis: "+ stripTags( html.replace(/(\~\|.*\|\~)/,"")); $(this).html( html.replace(/~\|.*\|~/, triggerHtml.replace(/~/,idTranslate).replace(/°/,text) ) ); } ); $("body h2:contains('~|')").each( function(){ var html = $(this).html(); var idTranslate = html.match(/\~\|(.*)\|\~/); idTranslate = idTranslate[1]; //alert(html+"\n\nID:"+idTranslate); var text = "Přeložit nadpis: "+ stripTags( html.replace(/(\~\|.*\|\~)/,"")); $(this).html( html.replace(/~\|.*\|~/, triggerHtml.replace(/~/,idTranslate).replace(/°/,text) ) ); } ); $("body h3:contains('~|')").each( function(){ var html = $(this).html(); var idTranslate = html.match(/\~\|(.*)\|\~/); idTranslate = idTranslate[1]; //alert(html+"\n\nID:"+idTranslate); var text = "Přeložit nadpis: "+ stripTags( html.replace(/(\~\|.*\|\~)/,"")); $(this).html( html.replace(/~\|.*\|~/, triggerHtml.replace(/~/,idTranslate).replace(/°/,text) ) ); } ); $("body a:contains('~|')").each( function(){ var html = $(this).html(); var idTranslate = html.match(/\~\|(.*)\|\~/); idTranslate = idTranslate[1]; //alert(html+"\n\nID:"+idTranslate); var text = "Přeložit odkaz: " + stripTags( html.replace(/(\~\|.*\|\~)/,"")); $(this).html( html.replace(/~\|.*\|~/, triggerHtml.replace(/~/,idTranslate).replace(/°/,text) ) ); } ); $("body li:contains('~|')").each( function(){ var html = $(this).html(); var idTranslate = html.match(/\~\|(.*)\|\~/); idTranslate = idTranslate[1]; //alert(html+"\n\nID:"+idTranslate); var text = "Přeložit odrážku: "+ stripTags( html.replace(/(\~\|.*\|\~)/,"")); $(this).html( html.replace(/~\|.*\|~/, triggerHtml.replace(/~/,idTranslate).replace(/°/,text) ) ); } ); $("body option:contains('~|')").each( function(){ var html = $(this).html(); var idTranslate = html.match(/\~\|(.*)\|\~/); idTranslate = idTranslate[1]; //alert(html+"\n\nID:"+idTranslate); var text = "Přeložit možnost: "+ html.replace(/(\~\|.*\|\~)/,""); $(this).parent().parent().append( triggerHtml.replace(/~/,idTranslate).replace(/°/,text) ); $(this).text( html.replace(/~\|.*\|~/, "" )); } ); $("body td:contains('~|')").each( function(){ var html = $(this).html(); var idTranslate = html.match(/\~\|(.*)\|\~/); idTranslate = idTranslate[1]; //alert(html+"\n\nID:"+idTranslate); var text = "Přeložit buňku: "+ stripTags( html.replace(/(\~\|.*\|\~)/,"")); $(this).html( html.replace(/~\|.*\|~/, triggerHtml.replace(/~/,idTranslate).replace(/°/,text) ) ); } ); $("body th:contains('~|')").each( function(){ var html = $(this).html(); var idTranslate = html.match(/\~\|(.*)\|\~/); idTranslate = idTranslate[1]; //alert(html+"\n\nID:"+idTranslate); var text = "Přeložit hlavičku: "+ stripTags( html.replace(/(\~\|.*\|\~)/,"")); $(this).html( html.replace(/~\|.*\|~/, triggerHtml.replace(/~/,idTranslate).replace(/°/,text) ) ); } ); $("body label:contains('~|')").each( function(){ var html = $(this).html(); var idTranslate = html.match(/\~\|(.*)\|\~/); idTranslate = idTranslate[1]; //alert(html+"\n\nID:"+idTranslate); var text = "Přeložit popisek pole : "+ stripTags( html.replace(/(\~\|.*\|\~)/,"")); $(this).html( html.replace(/~\|.*\|~/, triggerHtml.replace(/~/,idTranslate).replace(/°/,text) ) ); } ); $("body span:contains('~|')").each( function(){ var html = $(this).html(); var idTranslate = html.match(/\~\|(.*)\|\~/); idTranslate = idTranslate[1]; //alert(html+"\n\nID:"+idTranslate); var text = ""; $(this).html( html.replace(/~\|.*\|~/, triggerHtml.replace(/~/,idTranslate).replace(/°/,text) ) ); } ); $("body div:contains('~|')").each( function(){ var html = $(this).html(); var idTranslate = html.match(/\~\|(.*)\|\~/); idTranslate = idTranslate[1]; //alert(html+"\n\nID:"+idTranslate); var text = ""; $(this).html( html.replace(/~\|.*\|~/, triggerHtml.replace(/~/,idTranslate).replace(/°/,text) ) ); } ); } function getFilenameFromPath(path) { return path.substr(path.lastIndexOf("/")+1,path.length) } // example 1: in_array('van', ['Kevin', 'van', 'Zonneveld'],true); function in_array (needle, haystack, argStrict) { var key = '', strict = !!argStrict; if (strict) { for (key in haystack) { if (haystack[key] === needle) { return true; } } } else { if (typeof(needle)=='string') { str = haystack.toString(); return (str.search(needle) !== false); } for (key in haystack) { if (haystack[key] == needle) { return true; } } } return false; } function var_dump () { var output = "", pad_char = " ", pad_val = 4, lgth = 0, i = 0, d = this.window.document; var getFuncName = function (fn) { var name = (/\W*function\s+([\w\$]+)\s*\(/).exec(fn); if (!name) { return '(Anonymous)'; } return name[1]; }; var repeat_char = function (len, pad_char) { var str = ""; for (var i=0; i < len; i++) { str += pad_char; } return str; }; var getScalarVal = function (val) { var ret = ''; if (val === null) { ret = 'NULL'; } else if (typeof val === 'boolean') { ret = 'bool('+val+')'; } else if (typeof val === 'string') { ret = 'string('+val.length+') "'+val+'"'; } else if (typeof val === 'number') { if (parseFloat(val) == parseInt(val, 10)) { ret = 'int('+val+')'; } else { ret = 'float('+val+')'; } } else if (val === undefined) { ret = 'UNDEFINED'; // Not PHP behavior, but neither is undefined as value } else if (typeof val === 'function') { ret = 'FUNCTION'; // Not PHP behavior, but neither is function as value ret = val.toString().split("\n"); txt = ""; for(var j in ret) { txt+= (j !=0 ? thick_pad : '')+ret[j]+"\n"; } ret = txt; } else if(val instanceof Date) { val = val.toString(); ret = 'string('+val.length+') "'+val+'"' } else if(val.nodeName) { ret = 'HTMLElement("'+val.nodeName.toLowerCase()+'")'; } return ret; }; var formatArray = function (obj, cur_depth, pad_val, pad_char) { var someProp = ''; if (cur_depth > 0) { cur_depth++; } base_pad = repeat_char(pad_val*(cur_depth-1), pad_char); thick_pad = repeat_char(pad_val*(cur_depth+1), pad_char); var str = ""; var val=''; if (typeof obj === 'object' && obj !== null) { if (obj.constructor && getFuncName(obj.constructor) === 'PHPJS_Resource') { return obj.var_dump(); } lgth = 0; for (someProp in obj) { lgth++; } str += "array("+lgth+") {\n"; for (var key in obj) { if (typeof obj[key] === 'object' && obj[key] !== null && !(obj[key] instanceof Date) && !obj[key].nodeName) { str += thick_pad + "["+key+"] =>\n"+thick_pad+formatArray(obj[key], cur_depth+1, pad_val, pad_char); } else { val = getScalarVal(obj[key]); str += thick_pad + "["+key+"] =>\n"+ thick_pad +val + "\n"; } } str += base_pad + "}\n"; } else { str = getScalarVal(obj); } return str; }; output = formatArray(arguments[0], 0, pad_val, pad_char); for (i=1; i < arguments.length; i++) { output += '\n'+formatArray(arguments[i], 0, pad_val, pad_char); } alert(output); return output; } function stripTags(str){ return str.replace(/(<([^>]+)>)/ig,""); } function htmlspecialchars(str) { if (typeof(str) == "string") { str = str.replace(/&/g, "&"); /* must do & first */ str = str.replace(/"/g, """); str = str.replace(/'/g, "'"); str = str.replace(//g, ">"); } return str; } /* * Date Format 1.2.3 * (c) 2007-2009 Steven Levithan * MIT license * * Includes enhancements by Scott Trenda * and Kris Kowal * * Accepts a date, a mask, or a date and a mask. * Returns a formatted version of the given date. * The date defaults to the current date/time. * The mask defaults to dateFormat.masks.default. */ var dateFormat = function () { var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g, timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, timezoneClip = /[^-+\dA-Z]/g, pad = function (val, len) { val = String(val); len = len || 2; while (val.length < len) val = "0" + val; return val; }; // Regexes and supporting functions are cached through closure return function (date, mask, utc) { var dF = dateFormat; // You can't provide utc if you skip other args (use the "UTC:" mask prefix) if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) { mask = date; date = undefined; } // Passing date through Date applies Date.parse, if necessary date = date ? new Date(date) : new Date; if (isNaN(date)) throw SyntaxError("invalid date"); mask = String(dF.masks[mask] || mask || dF.masks["default"]); // Allow setting the utc argument via the mask if (mask.slice(0, 4) == "UTC:") { mask = mask.slice(4); utc = true; } var _ = utc ? "getUTC" : "get", d = date[_ + "Date"](), D = date[_ + "Day"](), m = date[_ + "Month"](), y = date[_ + "FullYear"](), H = date[_ + "Hours"](), M = date[_ + "Minutes"](), s = date[_ + "Seconds"](), L = date[_ + "Milliseconds"](), o = utc ? 0 : date.getTimezoneOffset(), flags = { d: d, dd: pad(d), ddd: dF.i18n.dayNames[D], dddd: dF.i18n.dayNames[D + 7], m: m + 1, mm: pad(m + 1), mmm: dF.i18n.monthNames[m], mmmm: dF.i18n.monthNames[m + 12], yy: String(y).slice(2), yyyy: y, h: H % 12 || 12, hh: pad(H % 12 || 12), H: H, HH: pad(H), M: M, MM: pad(M), s: s, ss: pad(s), l: pad(L, 3), L: pad(L > 99 ? Math.round(L / 10) : L), t: H < 12 ? "a" : "p", tt: H < 12 ? "am" : "pm", T: H < 12 ? "A" : "P", TT: H < 12 ? "AM" : "PM", Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""), o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10] }; return mask.replace(token, function ($0) { return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1); }); }; }(); // Some common format strings dateFormat.masks = { "default": "ddd mmm dd yyyy HH:MM:ss", shortDate: "m/d/yy", mediumDate: "mmm d, yyyy", longDate: "mmmm d, yyyy", fullDate: "dddd, mmmm d, yyyy", shortTime: "h:MM TT", mediumTime: "h:MM:ss TT", longTime: "h:MM:ss TT Z", isoDate: "yyyy-mm-dd", isoTime: "HH:MM:ss", isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" }; // Internationalization strings dateFormat.i18n = { dayNames: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], monthNames: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ] }; // For convenience... Date.prototype.format = function (mask, utc) { return dateFormat(this, mask, utc); }; function setStatementName(value) { if (element = document.getElementById('name').value == "") { element = document.getElementById('name').value = value.substr(0, value.length-4 ); } } function checkEquipmentForm(form) { names = form.getElementsByTagName('input'); for ( var i = 0; i < names.length; i++ ) { if ( names[i].type == 'text' && names[i].value=='' ) { alert(names[i].name +' : Hodnota je prázdná, Toto pole je povinné'); return false; } } return true; } function showTimesheetsCalendar(classname,img) { elements = getElementsByClassName(getEl('timesheetsCalendarTable'),"tr",classname); //alert(elements); if ( getFilenameFromPath(img.src) == "triangle-right.gif" ) { for ( var i in elements ) { //$(elements[i]).show("slow"); elements[i].style.display="table-row"; } img.src = "images/icons/triangle-down.gif"; } else { for ( var i in elements ) { //$(elements[i]).hide("slow"); elements[i].style.display="none"; } img.src = "images/icons/triangle-right.gif"; } } function equipmentTimesheetsHide(imgElement) { if ( getEl('equipmentTimesheetsContent').style.display=="none" ) { $('#equipmentTimesheetsContent').show("slow"); //getEl('equipmentTimesheetsContent').style.display="block" imgElement.src = "images/icons/triangle-down.gif"; } else { $('#equipmentTimesheetsContent').hide("slow"); //getEl('equipmentTimesheetsContent').style.display="none" imgElement.src = "images/icons/triangle-right.gif"; } } function personEquipmentsHide(imgElement) { if ( getEl('personEquipmentsContent').style.display=="none" ) { $('#personEquipmentsContent').show("slow"); //getEl('personEquipmentsContent').style.display="block" imgElement.src = "images/icons/triangle-down.gif"; } else { $('#personEquipmentsContent').hide("slow"); //getEl('personEquipmentsContent').style.display="none" imgElement.src = "images/icons/triangle-right.gif"; } } function personTimesheetsHide(imgElement) { if ( getEl('personTimesheetsContent').style.display=="none" ) { $('#personTimesheetsContent').show("slow"); //getEl('personTimesheetsContent').style.display="block" imgElement.src = "images/icons/triangle-down.gif"; } else { $('#personTimesheetsContent').hide("slow"); //getEl('personTimesheetsContent').style.display="none" imgElement.src = "images/icons/triangle-right.gif"; } } function inverseRelationsHide(imgElement) { if ( getEl('divInverseRelations').style.display=="none" ) { $('#divInverseRelations').show("slow"); //getEl('divInverseRelations').style.display="block" imgElement.src = "images/icons/triangle-down.gif"; } else { $('#divInverseRelations').hide("slow"); //getEl('divInverseRelations').style.display="none" imgElement.src = "images/icons/triangle-right.gif"; } }