var BrowserDetect = { init: function () { this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version"; this.OS = this.searchString(this.dataOS) || "an unknown OS"; }, searchString: function (data) { for (var i=0;i rhs_utc) { return 1; } if(lhs_utc < rhs_utc) { return -1; } return 0; }, valiDates: function(lhs,mhs,rhs) { lhs = this.makeUTC(lhs); mhs = this.makeUTC(mhs); rhs = this.makeUTC(rhs); return ((lhs < mhs) && (mhs < rhs)); }, calculate_weeks: function(startDate, endDate) { var startDate_ar; if(!is_array(startDate)) { startDate_ar = this.splitDate(startDate); } else { startDate_ar = startDate; } var lhs = this.makeUTC(startDate_ar); var endDate_ar; if(!is_array(endDate)) { endDate_ar = this.splitDate(endDate); } else { endDate_ar = endDate; } var rhs = this.makeUTC(endDate_ar); var diff = rhs - lhs; var secs_in_day = 24 * 60 * 60; var days = diff / secs_in_day; var weeks = Math.ceil((days / 7) / 1000); //7 days in a week... if(!weeks) { weeks = 1; } return weeks; }, set_calendar: function(id_suffix,target_date) { if(!target_date) { target_date = this.JSDate_to_dbDate(new Date()); } else { if(typeof(target_date) == "object") { target_date = this.JSDate_to_dbDate(target_date); } } var d_ar = this.splitDate(target_date); var y = "obj_year_" + id_suffix; var m = "obj_month_" + id_suffix; var d = "obj_day_" + id_suffix; Selectbox.set(y,Selectbox.find(y,d_ar[0])); Selectbox.set(m,Selectbox.find(m,d_ar[1])); Selectbox.set(d,Selectbox.find(d,d_ar[2])); }, set: function(id_suffix,target_date) { return Calendar.set_calendar(id_suffix,target_date); }, read: function(suffix) { return this.read_calendar(suffix); }, read_calendar: function(id_suffix) { var y = "obj_year_" + id_suffix; var m = "obj_month_" + id_suffix; var d = "obj_day_" + id_suffix; if (typeof(arguments[1]) == "undefined") { return Selectbox.get(y) + "-" + Selectbox.get(m) + "-" + Selectbox.get(d); } else { return Selectbox.get(m) + "/" + Selectbox.get(d) + "/" + Selectbox.get(y); } }, configure: function(startYear,endYear,id_suffix) { var years = new Array(); if (startYear < endYear) { for (var i = startYear; i < endYear + 1; i++) { years.push(i); } } else { for (var i = startYear; i > endYear - 1; i--) { years.push(i); } } var days = new Array(); for(var i=1;i<32;i++) { days.push(i); } var months = { "01": "January", "02": "February", "03": "March", "04": "April", "05": "May", "06": "June", "07": "July", "08": "August", "09": "September", "10": "October", "11": "November", "12": "December" }; Selectbox.fill("obj_year_" + id_suffix,years); Selectbox.fill("obj_month_" + id_suffix,months); Selectbox.fill("obj_day_" + id_suffix,days); }, monthDiff: function(lhsCalendar,rhsCalendar) { var lhs = Calendar.read(lhsCalendar); var rhs = Calendar.read(rhsCalendar); lhs = Calendar.splitDate(lhs); rhs = Calendar.splitDate(rhs); d1 = new Date(); d1.setFullYear(lhs[0],(lhs[1]-1),lhs[2]); d2 = new Date(); d2.setFullYear(rhs[0],(rhs[1]-1),rhs[2]); var months = d2.getMonthsBetween(d1); if(months < 0) { months *= -1; } if(months < 1) { months = 1; } return Math.round(months); }, monthDiff_datestr: function(lhsCalendar,rhsCalendar) { lhs = Calendar.splitDate(lhsCalendar); rhs = Calendar.splitDate(rhsCalendar); d1 = new Date(); d1.setFullYear(lhs[0],(lhs[1]-1),lhs[2]); d2 = new Date(); d2.setFullYear(rhs[0],(rhs[1]-1),rhs[2]); var months = d2.getMonthsBetween(d1); if(months < 0) { months *= -1; } if(months < 1) { months = 1; } return Math.round(months); } }; //////////////////// Date.prototype.lastday = function() { var d = new Date(this.getFullYear(), this.getMonth() + 1, 0); return d.getDate(); }; Date.prototype.getMonthsBetween = function(d) { var sDate, eDate; var d1 = this.getFullYear() * 12 + this.getMonth(); var d2 = d.getFullYear() * 12 + d.getMonth(); var sign; var months = 0; if (this == d) { months = 0; } else if (d1 == d2) { //same year and month months = (d.getDate() - this.getDate()) / this.lastday(); } else { if (d1 < d2) { sDate = this; eDate = d; sign = 1; } else { sDate = d; eDate = this; sign = -1; } var sAdj = sDate.lastday() - sDate.getDate(); var eAdj = eDate.getDate(); var adj = (sAdj + eAdj) / sDate.lastday() - 1; months = Math.abs(d2 - d1) + adj; months = (months * sign) } return months; }; function getElement(id) { if(typeof(id) !== "string") { return id; } return document.getElementById(id); } function Element(t) { return document.createElement(t); } function FilledElement(t,h) { var d = Element(t); if(t == "img") { d.setAttribute("src",h); return d; } if (is_array(h)) { for (var i = 0; i < h.length; i++) { var x = h[i]; switch (typeof(x)) { case "string": d.innerHTML += x; break; default: d.appendChild(x); } } } else { switch (typeof(h)) { case "string": d.innerHTML = h; break; default: d.appendChild(h); } } if(typeof(arguments[2]) !== "undefined") { d.className = arguments[2]; } return d; } function Clear(d) { if(typeof(d) == "string") { d = getElement(d); } d.innerHTML = ""; } var ElementGroup = { getByPrefix: function(type,prefix) { var coll = document.body.getElementsByTagName(type); var matches = new Array(); for(var i=0;i"); } function remove_escaping(s) { if(typeof(s) !== "string") { return ""; } s = s.replace(/\"/g,"\""); s = s.replace(/\\'/g,"'"); return s; } function add_escaping(s) { s = s.replace(/\"/g,"""); return s; } function set_content(element,content) { element.innerHTML = content; } var is_array = function(v){ return v && typeof(v) === "object" && typeof(v.length) === "number" && typeof(v.splice) === "function" && !(v.propertyIsEnumerable("length")); }; function intval(mixed_var, base){ // Get the integer value of a variable // // + discuss at: http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_intval/ // + version: 809.522 // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: stensi // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // * example 1: intval('Kevin van Zonneveld'); // * returns 1: 0 // * example 2: intval(4.2); // * returns 2: 4 // * example 3: intval(42, 8); // * returns 3: 42 // * example 4: intval('09'); // * returns 4: 9 var tmp; if (typeof(mixed_var) == 'string') { tmp = parseInt(mixed_var * 1); if (isNaN(tmp)) { return 0; } else { return tmp.toString(base || 10); } } else if (typeof(mixed_var) == 'number') { return Math.floor(mixed_var); } else { return 0; } }// }}} var Include = { included_css: new Array(), included_js: new Array(), css: function(file) { // todo: check to ensure file is not already included... this.included_css.push(file); var head = document.getElementsByTagName("head")[0]; var css = document.createElement("link"); css.type = "text/css"; css.rel = "stylesheet"; css.href = file; css.media = "screen"; head.appendChild(css); }, JS: function(file) { /*this.included_js.push(file); var head = document.getElementsByTagName("head")[0]; var sc = document.createElement("script"); sc.type = "text/javascript"; sc.src = file; head.appendChild(sc); */ var ref = "