///<referencename="MicrosoftAjax.js"/>
Type.registerNamespace("ATSOFTConsulting"); ATSOFTConsulting.Validator = function (successor, errorMessage) { this._successor = successor; this.ErrorMessage = new String(errorMessage); }; ATSOFTConsulting.Validator.registerClass("ATSOFTConsulting.Validator"); ATSOFTConsulting.RequiredValidator = function (successor, errorMessage) { ATSOFTConsulting.RequiredValidator.initializeBase(this, [successor, errorMessage]); }; ATSOFTConsulting.RequiredValidator.prototype = { Validate: function (context) { if (context.length == 0) return this.ErrorMessage; else if (this._successor != null) return this._successor.Validate(context); else return ""; } }; ATSOFTConsulting.RequiredValidator.registerClass("ATSOFTConsulting.RequiredValidator", ATSOFTConsulting.Validator); ATSOFTConsulting.LengthValidator = function (successor, errorMessage, length) { this.Length = length; ATSOFTConsulting.LengthValidator.initializeBase(this, [successor, errorMessage]); }; ATSOFTConsulting.LengthValidator.prototype = { Validate: function (context) { if (context.length > this.Length) return this.ErrorMessage; else if (this._successor != null) return this._successor.Validate(context); else return ""; } }; ATSOFTConsulting.LengthValidator.registerClass("ATSOFTConsulting.LengthValidator", ATSOFTConsulting.Validator); ATSOFTConsulting.ValidationManager = function (formID) { this._controlIDs = new Array(); this._validators = new Array(); var del = Function.createDelegate(this, this._OnSubmit); $("#" + formID).submit(del); }; ATSOFTConsulting.ValidationManager.prototype = { AddControlToValidate: function (controlID, validator) { var del = Function.createDelegate(this, this._SetControlToValidate); $("#" + controlID).keyup(del); $("#" + controlID).change(del); Array.add(this._controlIDs, controlID); Array.add(this._validators, validator); }, _OnSubmit: function (e) { var retVal = new Boolean(true); for (var i = 0; i < this._controlIDs.length; i++) { var ID = this._controlIDs[i]; var validation = this._validate(ID, i); if (retVal == true && validation == false) retVal = false; } return retVal; }, _SetControlToValidate: function (e) { var ID = $(e.target).attr("id"); this._validate(ID, Array.indexOf(this._controlIDs, ID)); }, _validate: function (ID, index) { var errorMessage = this._validators[index].Validate($("#" + ID).val()).toString(); $("#err" + ID).text(errorMessage); var retVal = new Boolean(errorMessage == ""); return retVal; } }; ATSOFTConsulting.ValidationManager.registerClass("ATSOFTConsulting.ValidationManager"); ATSOFTConsulting.DataView = function (tableID, path) { this._tableID = tableID; this._path = path; this._recordsNumber = null; this._pageNumber = null; this._startingIndex = 0; this._cssPages = null; this._cssSelected = null; this._top = null; this._rows = null; this._chunkNumber = 0; this._sortdir = null; this.next = null; this._columns = null; this._GetRowsFromServer(); this._total = null; this._maxRecords = null; }; ATSOFTConsulting.DataView.prototype = { AddSorting: function () { this._columns = new Array(); var del0 = Function.createDelegate(this, this._Add); $("#" + this._tableID).find("tr").first().find("th").each(del0); var del1 = Function.createDelegate(this, this._ColumnClicked); $("#" + this._tableID).find("tr").first().find("th").die(); $("#" + this._tableID).find("tr").first().find("th").click(del1); }, SetInitialSorting: function (i, sorting) { if (sorting) $("#" + this._tableID).find("tr").first().find("th").eq(i).addClass("asc"); else $("#" + this._tableID).find("tr").first().find("th").eq(i).addClass("desc"); this._sortdir = sorting; }, AddPaging: function (recordsNumber, top, cssSelected, cssPages) { this._total = $("#total").val(); this._maxRecords = $("#maxRecords").val(); this._recordsNumber = recordsNumber; this._top = top; this._cssSelected = cssSelected; this._cssPages = cssPages; this._SetHeader(); this._SetRows(); }, _Add: function (index, element) { Array.add(this._columns, element.innerHTML); }, _GetRowsFromClient: function () { var clientRows = $("#" + this._tableID).find('tbody>tr').get(); this._rows = new Array(); for (var i = 0; i < clientRows.length; i++) { var row = new Array(); for (var j = 0; j < 4; j++) Array.add(row, $(clientRows[i]).children().get(j).innerHTML); Array.add(this._rows, row); } }, _GetRowsFromServer: function () { var del = Function.createDelegate(this, this._Process); this._rows = new Array(); $.ajaxSetup({ async: false, cache: false }); $.getJSON(this._path, { chunkNumber: this._chunkNumber }, del); }, _Process: function (data, status) { var del = Function.createDelegate(this, this._FillOut); if (status == "success") { $.each(data, del); } }, _FillOut: function FillOut(i, item) { var row = new Array(); Array.add(row, item.ID); Array.add(row, item.Subject); Array.add(row, item.Site); Array.add(row, item.LastUpdateDate); Array.add(this._rows, row); }, _PageClicked: function (e) { var ID = $(e.target).attr("id"); if (ID == "Next") { this._chunkNumber = this._chunkNumber + 1; this._GetRowsFromServer(); this._SetHeader(); } else if (ID == "Previous") { this._chunkNumber = this._chunkNumber - 1; this._GetRowsFromServer(); this._SetHeader(); } else { $(".page").removeClass(this._cssSelected); $(e.target).addClass(this._cssSelected); this._pageNumber = ID - 1; } this._SetRows(); }, _SetHeader: function () { $("#pages").remove(); var pageCount = this._rows.length % this._recordsNumber > 0 ? parseInt(this._rows.length / this._recordsNumber) + 1 : this._rows.length / this._recordsNumber; var numberElement = $("<divid='pages'></div>"); if (this._chunkNumber != 0) { $("<spanid='Previous'>Previous</span>").appendTo(numberElement); } for (var i = 0; i < pageCount; i++) { var pageNumber = i + 1; $("<spanid='" + pageNumber + "'>" + (pageNumber + this._chunkNumber * this._maxRecords / this._recordsNumber) + '</span>').appendTo(numberElement); } if (this._total > this._maxRecords * (this._chunkNumber + 1)) { $("<spanid='Next'>Next</span>").appendTo(numberElement); } if (this._top == true) numberElement.insertBefore("#" + this._tableID); else numberElement.insertAfter("#" + this._tableID); $("#pages>span").addClass(this._cssPages); var del = Function.createDelegate(this, this._PageClicked); $(".page").click(del); $("#1").addClass(this._cssSelected); this._pageNumber = 0; }, _ColumnClicked: function (e) { $('th').removeClass(this._cssSelected); $(e.target).addClass(this._cssSelected); if ($(e.target).hasClass("asc")) { $(e.target).removeClass("asc"); $(e.target).addClass("desc"); this._sortdir = false; } else if ($(e.target).hasClass("desc")) { $(e.target).removeClass("desc"); $(e.target).addClass("asc"); this._sortdir = true; } else { $('th').removeClass("asc"); $('th').removeClass("desc"); $(e.target).addClass("asc"); this._sortdir = true; } var index = Array.indexOf(this._columns, $(e.target).text()); this._Sort(index); }, _Sort: function (index) { var del = Function.createDelegate(this, sort); this._rows.sort(del); function sort(a, b) { var val1 = a[index]; var val2 = b[index]; var retVal = (val1 < val2) ? -1 : (val1 > val2) ? 1 : 0; if (this._sortdir == false) retVal = -retVal; return retVal; } this._SetRows(); }, _SetRows: function () { var first = this._pageNumber * this._recordsNumber; var length = first + this._recordsNumber < this._rows.length ? first + this._recordsNumber : this._rows.length; $("#" + this._tableID).find("tr:gt(0)").remove(); var rows = new Sys.StringBuilder(); for (var i = first; i < length; i++) { rows.append("<tr>"); for (var j = 0; j < 4; j++) { rows.append("<td>"); rows.append(this._rows[i][j]); rows.append("</td>"); } rows.append("</tr>"); } $("#" + this._tableID).find("tr").after(rows.toString()); } }; ATSOFTConsulting.DataView.registerClass("ATSOFTConsulting.DataView"); ATSOFTConsulting.GMapBase = function (element) { this._map = null; }; ATSOFTConsulting.GMapBase.prototype = { get_map: function () { return this._map; }, set_map: function (value) { this._map = value; }, AddMarker: function (position, content) { var marker = new google.maps.Marker({ position: position, map: this._map }); var context; var infowindow; if (content != null) { infowindow = new google.maps.InfoWindow({ content: content }); context = { infowindow: infowindow, marker: marker }; context.infowindow.open(this._map, context.marker); } }, AddMarker2: function (position, content) { var marker = new google.maps.Marker({ position: position, map: this._map, icon: iconurl }); var context; var infowindow; if (content != null) { infowindow = new google.maps.InfoWindow({ content: content }); context = { infowindow: infowindow, marker: marker }; context.infowindow.open(this._map, context.marker); } }, AddMarkerOnClick: function (position, content) { var marker = new google.maps.Marker({ position: position, map: this._map }); var infowindow = new google.maps.InfoWindow({ content: content }); var parameters = new Array(); Array.add(parameters, infowindow); Array.add(parameters, marker); var context = { infowindow: infowindow, marker: marker }; var del = Function.createDelegate(this, this._ClickHandler); var cb = Function.createCallback(del, context); google.maps.event.addListener(marker, 'click', cb); }, AddMarkerOnClick2: function (position, iconurl, content) { var marker = new google.maps.Marker({ position: position, map: this._map, icon: iconurl }); var infowindow = new google.maps.InfoWindow({ content: content }); var parameters = new Array(); Array.add(parameters, infowindow); Array.add(parameters, marker); var context = { infowindow: infowindow, marker: marker }; var del = Function.createDelegate(this, this._ClickHandler); var cb = Function.createCallback(del, context); google.maps.event.addListener(marker, 'click', cb); }, _ClickHandler: function (e, context) { context.infowindow.open(this._map, context.marker); } }; ATSOFTConsulting.GMapBase.registerClass("ATSOFTConsulting.GMapBase"); ATSOFTConsulting.MenuBase = function (menuID) { this._menuID = menuID; var path = window.location.pathname; this._Path = decodeURI(path.substring(path.lastIndexOf("/") + 1)); }; ATSOFTConsulting.MenuBase.registerClass("ATSOFTConsulting.MenuBase"); ATSOFTConsulting.Initializator = function () { this._controlIDs = new Array(); }; ATSOFTConsulting.Initializator.prototype = { AddControl: function (controlID) { Array.add(this._controlIDs, "#" + controlID); }, Set: function () { for (var i = 0; i < this._controlIDs.length; i++) { if ($(this._controlIDs[i]).val() == "/") $(this._controlIDs[i]).val(""); } } }; ATSOFTConsulting.Initializator.registerClass("ATSOFTConsulting.Initializator"); ATSOFTConsulting.GMapBase = function (element) { ATSOFTConsulting.GMapBase.initializeBase(this, [element]); this._map = null; }; ATSOFTConsulting.GMapBase.prototype = { initialize: function () { ATSOFTConsulting.GMapBase.callBaseMethod(this, 'initialize'); }, dispose: function () { ATSOFTConsulting.GMapBase.callBaseMethod(this, 'dispose'); }, get_map: function () { return this._map; }, set_map: function (value) { this._map = value; }, AddMarker: function (position, content) { var marker = new google.maps.Marker({ position: position, map: this._map }); var infowindow = new google.maps.InfoWindow({ content: content }); var parameters = new Array(); Array.add(parameters, infowindow); Array.add(parameters, marker); var context = { infowindow: infowindow, marker: marker }; context.infowindow.open(this._map, context.marker); }, AddMarker2: function (position, content) { var marker = new google.maps.Marker({ position: position, map: this._map, icon: iconurl }); var infowindow = new google.maps.InfoWindow({ content: content }); var parameters = new Array(); Array.add(parameters, infowindow); Array.add(parameters, marker); var context = { infowindow: infowindow, marker: marker }; context.infowindow.open(this._map, context.marker); }, AddMarkerOnClick: function (position, content) { var marker = new google.maps.Marker({ position: position, map: this._map }); var infowindow = new google.maps.InfoWindow({ content: content }); var parameters = new Array(); Array.add(parameters, infowindow); Array.add(parameters, marker); var context = { infowindow: infowindow, marker: marker }; var del = Function.createDelegate(this, this._ClickHandler); var cb = Function.createCallback(del, context); google.maps.event.addListener(marker, 'click', cb); }, AddMarkerOnClick2: function (position, iconurl, content) { var marker = new google.maps.Marker({ position: position, map: this._map, icon: iconurl }); var infowindow = new google.maps.InfoWindow({ content: content }); var parameters = new Array(); Array.add(parameters, infowindow); Array.add(parameters, marker); var context = { infowindow: infowindow, marker: marker }; var del = Function.createDelegate(this, this._ClickHandler); var cb = Function.createCallback(del, context); google.maps.event.addListener(marker, 'click', cb); }, _ClickHandler: function (e, context) { context.infowindow.open(this._map, context.marker); } }; ATSOFTConsulting.GMapBase.registerClass("ATSOFTConsulting.GMapBase", Sys.UI.Behavior); ATSOFTConsulting.Timer = function (duration, fps, delegate) { this._duration = new Number(duration); this._fps = new Number(fps); this._delegate = delegate; this._forward; this._intervalID = null; this._interval = 1000 / this._fps; this._delta = new Number(1.0) / (this._duration * this._fps - 1); this._passedValue = null; }; ATSOFTConsulting.Timer.prototype = { Start: function (forward) { this._forward = forward; if (this._forward == true) { this._passedValue = 0; } else { this._passedValue = 1; } this._intervalID = window.self.setInterval(Type.createDelegate(this, this._Call), this._interval); }, Resume: function (forward) { this._forward = forward; window.self.clearInterval(this._intervalID); this._intervalID = window.self.setInterval(Type.createDelegate(this, this._Call), this._interval); }, Stop: function () { this._passedValue = -this._delta; window.self.clearInterval(this._intervalID); }, Pause: function () { window.self.clearInterval(this._intervalID); }, _Call: function () { if (this._forward == true) { this._passedValue += this._delta; if (this._passedValue > 1) { window.self.clearInterval(this._intervalID); this._passedValue = 1; } } else { this._passedValue -= this._delta; if (this._passedValue < 0) { window.self.clearInterval(this._intervalID); this._passedValue = 0; } } this._delegate(this._passedValue); }, dispose: function () { window.self.clearInterval(this._intervalID); } }; ATSOFTConsulting.Timer.registerClass("ATSOFTConsulting.Timer", null, Sys.IDisposable); ATSOFTConsulting.Engine = function (duration, fps, SetProperty, Apply) { this._started = new Boolean(false); this.SetPropertyDel = SetProperty; this._timer = new ATSOFTConsulting.Timer(duration, fps, Type.createDelegate(this, Apply)); }; ATSOFTConsulting.Engine.prototype = { Forward: function () { if (this._started == true) this._timer.Resume(new Boolean(true)); else { this._started = new Boolean(true); this._timer.Start(new Boolean(true)); } }, Back: function () { if (this._started == true) this._timer.Resume(new Boolean(false)); else { this._started = new Boolean(true); this._timer.Start(new Boolean(false)); } } }; ATSOFTConsulting.Engine.registerClass("ATSOFTConsulting.Engine");
