aboutsummaryrefslogtreecommitdiff
path: root/desktop/assets/javascripts/jquery.desktop.js
diff options
context:
space:
mode:
authorUnknown <Alee14498@gmail.com>2017-10-01 00:24:20 -0400
committerUnknown <Alee14498@gmail.com>2017-10-01 00:24:20 -0400
commit78f3c0e9893d36e0ce039c2b79ede8a92ebe468a (patch)
tree8479930f9372a1e9998b6750651565cf52b81ca8 /desktop/assets/javascripts/jquery.desktop.js
parentd8ba59582c137de474789690e777d8c029e08fe6 (diff)
downloadwindows8online-78f3c0e9893d36e0ce039c2b79ede8a92ebe468a.tar.gz
windows8online-78f3c0e9893d36e0ce039c2b79ede8a92ebe468a.tar.bz2
windows8online-78f3c0e9893d36e0ce039c2b79ede8a92ebe468a.zip
Adding the code
Diffstat (limited to 'desktop/assets/javascripts/jquery.desktop.js')
-rw-r--r--desktop/assets/javascripts/jquery.desktop.js315
1 files changed, 315 insertions, 0 deletions
diff --git a/desktop/assets/javascripts/jquery.desktop.js b/desktop/assets/javascripts/jquery.desktop.js
new file mode 100644
index 0000000..8031342
--- /dev/null
+++ b/desktop/assets/javascripts/jquery.desktop.js
@@ -0,0 +1,315 @@
+//
+// Namespace - Module Pattern.
+//
+var JQD = (function($) {
+ return {
+ //
+ // Initialize the clock.
+ //
+ init_clock: function() {
+ // Date variables.
+ var date_obj = new Date();
+ var hour = date_obj.getHours();
+ var minute = date_obj.getMinutes();
+ var day = date_obj.getDate();
+ var year = date_obj.getFullYear();
+ var suffix = 'AM';
+
+ // Array for weekday.
+ var weekday = [
+ 'Sunday',
+ 'Monday',
+ 'Tuesday',
+ 'Wednesday',
+ 'Thursday',
+ 'Friday',
+ 'Saturday'
+ ];
+
+ // Array for month.
+ var month = [
+ '01',
+ '02',
+ '03',
+ '04',
+ '05',
+ '06',
+ '07',
+ '08',
+ '09',
+ '10',
+ '11',
+ '12'
+ ];
+
+ // Assign weekday, month, date, year.
+ weekday = weekday[date_obj.getDate()];
+ month = month[date_obj.getMonth()];
+
+ // AM or PM?
+ if (hour >= 12) {
+ suffix = 'PM';
+ }
+
+ // Convert to 12-hour.
+ if (hour > 12) {
+ hour = hour - 12;
+ }
+ else if (hour === 0) {
+ // Display 12:XX instead of 0:XX.
+ hour = 12;
+ }
+
+ // Leading zero, if needed.
+ if (minute < 10) {
+ minute = '0' + minute;
+ }
+
+ // Build two HTML strings.
+ var clock_time = hour + ':' + minute + ' ' + ' ' + suffix ;
+ var clock_date = month + '/' + day + '/' + year;
+
+ // Shove in the HTML.
+ $('#clock').html(clock_time).attr('title', clock_time);
+ $('#weekday').html(clock_date).attr('title', clock_date);
+
+ // Update every 60 seconds.
+ setTimeout(JQD.init_clock, 60000);
+ },
+
+ //
+ // Clear active states, hide menus.
+ //
+ clear_active: function() {
+ $('a.active, tr.active').removeClass('active');
+ $('ul.menu').hide();
+ },
+
+ //
+ // Zero out window z-index.
+ //
+ window_flat: function() {
+ $('div.window').removeClass('window_stack');
+ },
+
+ //
+ // Resize modal window.
+ //
+ window_resize: function(el) {
+ // Nearest parent window.
+ var win = $(el).closest('div.window');
+
+ // Is it maximized already?
+ if (win.hasClass('window_full')) {
+ // Restore window position.
+ win.removeClass('window_full').css({
+ 'top': win.attr('data-t'),
+ 'left': win.attr('data-l'),
+ 'right': win.attr('data-r'),
+ 'bottom': win.attr('data-b'),
+ 'width': win.attr('data-w'),
+ 'height': win.attr('data-h')
+ });
+ }
+ else {
+ win.attr({
+ // Save window position.
+ 'data-t': win.css('top'),
+ 'data-l': win.css('left'),
+ 'data-r': win.css('right'),
+ 'data-b': win.css('bottom'),
+ 'data-w': win.css('width'),
+ 'data-h': win.css('height')
+ }).addClass('window_full').css({
+ // Maximize dimensions.
+ 'top': '0',
+ 'left': '0',
+ 'right': '0',
+ 'bottom': '0',
+ 'width': '100%',
+ 'height': '100%'
+ });
+ }
+
+ // Bring window to front.
+ JQD.window_flat();
+ win.addClass('window_stack');
+ },
+
+ //
+ // Initialize the desktop.
+ //
+ init_desktop: function() {
+ if (window.location !== window.top.location) {
+ window.top.location = window.location;
+ }
+
+ // Start clock.
+ JQD.init_clock();
+
+ // Cancel mousedown, right-click.
+ $(document).mousedown(function(ev) {
+ if (!$(ev.target).closest('a').length) {
+ JQD.clear_active();
+ return false;
+ }
+ }).bind('contextmenu', function() {
+ return false;
+ });
+
+ // Relative or remote links?
+ $('a').click(function() {
+ var url = $(this).attr('href');
+ this.blur();
+
+ if (url.match(/^#/)) {
+ return false;
+ }
+ else if (url.match('://')) {
+ $(this).attr('target', '_blank');
+ return true;
+ }
+ });
+
+ // Make top menus active.
+ $('a.menu_trigger').mousedown(function() {
+ if ($(this).next('ul.menu').is(':hidden')) {
+ JQD.clear_active();
+ $(this).addClass('active').next('ul.menu').show();
+ }
+ else {
+ JQD.clear_active();
+ }
+ }).mouseenter(function() {
+ // Transfer focus, if already open.
+ if ($('ul.menu').is(':visible')) {
+ JQD.clear_active();
+ $(this).addClass('active').next('ul.menu').show();
+ }
+ });
+
+ // Desktop icons.
+ $('a.icon').mousedown(function() {
+ // Highlight the icon.
+ JQD.clear_active();
+ $(this).addClass('active');
+ }).dblclick(function() {
+ // Get the link's target.
+ var x = $($(this).attr('href'));
+ var y = $(x.find('a').attr('href'));
+
+ // Show the taskbar button.
+ if (x.is(':hidden')) {
+ x.remove().appendTo('#dock').end().show('fast');
+ }
+
+ // Bring window to front.
+ JQD.window_flat();
+ y.addClass('window_stack').show();
+ }).draggable({
+ revert: true,
+ containment: 'parent'
+ });
+
+ // Taskbar buttons.
+ $('#dock a').live('click', function() {
+ // Get the link's target.
+ var x = $($(this).attr('href'));
+
+ // Hide, if visible.
+ if (x.is(':visible')) {
+ x.hide();
+ }
+ else {
+ // Bring window to front.
+ JQD.window_flat();
+ x.show().addClass('window_stack');
+ }
+
+ // Stop the live() click.
+ this.blur();
+ return false;
+ });
+
+ // Make windows movable.
+ $('div.window').mousedown(function() {
+ // Bring window to front.
+ JQD.window_flat();
+ $(this).addClass('window_stack');
+ }).draggable({
+ // Confine to desktop.
+ // Movable via top bar only.
+ containment: '#desktop',
+ handle: 'div.window_top'
+ }).resizable({
+ containment: '#desktop',
+ minWidth: 400,
+ minHeight: 200
+
+ // Double-click top bar to resize, ala Windows OS.
+ }).find('div.window_top').dblclick(function() {
+ JQD.window_resize(this);
+
+ // Double click top bar icon to close, ala Windows OS.
+ }).find('img').dblclick(function() {
+ // Traverse to the close button, and hide its taskbar button.
+ $($(this).closest('div.window_top').find('a.window_close').attr('href')).hide('fast');
+
+ // Close the window itself.
+ $(this).closest('div.window').hide();
+
+ // Stop propagation to window's top bar.
+ return false;
+ });
+
+ // Get action buttons for each window.
+ $('a.window_min, a.window_resize, a.window_close').mousedown(function() {
+ JQD.clear_active();
+ // Stop propagation to window's top bar.
+ return false;
+ });
+
+ // Minimize the window.
+ $('a.window_min').click(function() {
+ $(this).closest('div.window').hide();
+ });
+
+ // Maximize or restore the window.
+ $('a.window_resize').click(function() {
+ JQD.window_resize(this);
+ });
+
+ // Close the window.
+ $('a.window_close').click(function() {
+ $(this).closest('div.window').hide();
+ $($(this).attr('href')).hide('fast');
+ });
+
+ // Show desktop button, ala Windows OS.
+ $('#show_desktop').click(function() {
+ // If any windows are visible, hide all.
+ if ($('div.window:visible').length) {
+ $('div.window').hide();
+ }
+ else {
+ // Otherwise, reveal hidden windows that are open.
+ $('#dock li:visible a').each(function() {
+ $($(this).attr('href')).show();
+ });
+ }
+ });
+
+ $('table.data').each(function() {
+ // Add zebra striping, ala Mac OS X.
+ $(this).find('tr:even td').addClass('zebra');
+ }).find('tr').live('click', function() {
+ // Highlight row, ala Mac OS X.
+ $(this).closest('tr').addClass('active');
+ });
+
+ // Add wallpaper last, to prevent blocking.
+ $('body').prepend('<img id="wallpaper" class="abs" src="assets/images/misc/wallpaper.jpg" />');
+ }
+ };
+// Pass in jQuery.
+})(jQuery); \ No newline at end of file