From 4fc8eaf59d6325d26f23e5a05d094105c28be90a Mon Sep 17 00:00:00 2001 From: Filipp Lepalaan Date: Wed, 10 Nov 2010 01:52:54 +0200 Subject: first commit --- README | 28 ++ SPPC.dcproj/filipp.wdgtuser | 128 +++++++++ SPPC.dcproj/project/widget.wdgt/Default.png | Bin 0 -> 42136 bytes SPPC.dcproj/project/widget.wdgt/Icon.png | Bin 0 -> 8129 bytes SPPC.dcproj/project/widget.wdgt/Images/mcare.png | Bin 0 -> 10747 bytes SPPC.dcproj/project/widget.wdgt/Info.plist | 32 +++ .../project/widget.wdgt/Parts/GlassButton.js | 33 +++ .../project/widget.wdgt/Parts/Images/back.png | Bin 0 -> 195374 bytes .../project/widget.wdgt/Parts/Images/front.png | Bin 0 -> 40584 bytes .../widget.wdgt/Parts/Images/popup_left.png | Bin 0 -> 277 bytes .../widget.wdgt/Parts/Images/popup_middle.png | Bin 0 -> 240 bytes .../widget.wdgt/Parts/Images/popup_right.png | Bin 0 -> 494 bytes .../project/widget.wdgt/Parts/InfoButton.js | 28 ++ .../project/widget.wdgt/Parts/PopupButton.js | 162 +++++++++++ .../project/widget.wdgt/Parts/ScrollArea.js | 131 +++++++++ .../project/widget.wdgt/Parts/datasources.js | 9 + SPPC.dcproj/project/widget.wdgt/Parts/license.txt | 10 + SPPC.dcproj/project/widget.wdgt/Parts/parts.js | 28 ++ SPPC.dcproj/project/widget.wdgt/Parts/setup.js | 22 ++ .../project/widget.wdgt/en.lproj/InfoPlist.strings | Bin 0 -> 62 bytes .../widget.wdgt/en.lproj/localizedStrings.js | 10 + .../project/widget.wdgt/jquery-1.4.2.min.js | 154 ++++++++++ SPPC.dcproj/project/widget.wdgt/main.css | 261 +++++++++++++++++ SPPC.dcproj/project/widget.wdgt/main.html | 39 +++ SPPC.dcproj/project/widget.wdgt/main.js | 310 +++++++++++++++++++++ SPPC.dcproj/project/widget.wdgt/mcare.png | Bin 0 -> 10747 bytes SPPC.dcproj/projectInfo.plist | 103 +++++++ 27 files changed, 1488 insertions(+) create mode 100644 README create mode 100644 SPPC.dcproj/filipp.wdgtuser create mode 100644 SPPC.dcproj/project/widget.wdgt/Default.png create mode 100644 SPPC.dcproj/project/widget.wdgt/Icon.png create mode 100644 SPPC.dcproj/project/widget.wdgt/Images/mcare.png create mode 100644 SPPC.dcproj/project/widget.wdgt/Info.plist create mode 100644 SPPC.dcproj/project/widget.wdgt/Parts/GlassButton.js create mode 100644 SPPC.dcproj/project/widget.wdgt/Parts/Images/back.png create mode 100644 SPPC.dcproj/project/widget.wdgt/Parts/Images/front.png create mode 100644 SPPC.dcproj/project/widget.wdgt/Parts/Images/popup_left.png create mode 100644 SPPC.dcproj/project/widget.wdgt/Parts/Images/popup_middle.png create mode 100644 SPPC.dcproj/project/widget.wdgt/Parts/Images/popup_right.png create mode 100644 SPPC.dcproj/project/widget.wdgt/Parts/InfoButton.js create mode 100644 SPPC.dcproj/project/widget.wdgt/Parts/PopupButton.js create mode 100644 SPPC.dcproj/project/widget.wdgt/Parts/ScrollArea.js create mode 100644 SPPC.dcproj/project/widget.wdgt/Parts/datasources.js create mode 100644 SPPC.dcproj/project/widget.wdgt/Parts/license.txt create mode 100644 SPPC.dcproj/project/widget.wdgt/Parts/parts.js create mode 100644 SPPC.dcproj/project/widget.wdgt/Parts/setup.js create mode 100644 SPPC.dcproj/project/widget.wdgt/en.lproj/InfoPlist.strings create mode 100644 SPPC.dcproj/project/widget.wdgt/en.lproj/localizedStrings.js create mode 100644 SPPC.dcproj/project/widget.wdgt/jquery-1.4.2.min.js create mode 100644 SPPC.dcproj/project/widget.wdgt/main.css create mode 100644 SPPC.dcproj/project/widget.wdgt/main.html create mode 100644 SPPC.dcproj/project/widget.wdgt/main.js create mode 100644 SPPC.dcproj/project/widget.wdgt/mcare.png create mode 100644 SPPC.dcproj/projectInfo.plist diff --git a/README b/README new file mode 100644 index 0000000..2174bdf --- /dev/null +++ b/README @@ -0,0 +1,28 @@ +Usage: +- Flip the widget to set your Tax rate, margin, shipping and currency rate +- Download the service parts Excel file (GSX > Parts Lookup > Download Complete Service Parts Price List) +- Unzip the file and drag and drop it on the widget + +Bugs: +- Please report bugs to either https://github.com/filipp/sppc/issues or by mail to filipp@mcare.fi. + + + + +LICENSE + +DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + + diff --git a/SPPC.dcproj/filipp.wdgtuser b/SPPC.dcproj/filipp.wdgtuser new file mode 100644 index 0000000..ec8a31b --- /dev/null +++ b/SPPC.dcproj/filipp.wdgtuser @@ -0,0 +1,128 @@ + + + + + CYLastWindowPosition + {479, 109} + ContentSplitViewGeometry + + ContentSplitViewConfig + 8 + SplitViewConfig + 3 + _indexOfCollapsedView + 0 + sizes + + {{0, 0}, {1129, 442}} + {{0, 452}, {1129, 341}} + + + ContentViewType + 0 + DeploymentOptions + + Destination + aos.default + EmailToNotifyAddress + filipp@mekanisti.fi + Path + SPPC + SavePath + /private/tmp + enableSimulation + + simulatedHost + web.me.com + + Design time language + en.lproj + MainSplitViewGeometry + + _indexOfCollapsedView + 0 + sizes + + {{0, 0}, {228, 814}} + {{229, 0}, {1130, 814}} + + + MainWindowFrame + 4 43 1358 835 0 0 1440 878 + NavigatorSplitViewGeometry + + ContentSplitViewConfig + 5 + SplitViewConfig + 3 + _indexOfCollapsedView + 0 + sizes + + {{0, 0}, {230, 413}} + {{0, 423}, {230, 370}} + + + Widget + + Objects view expanded items + + + 0 + + + 0 + 0 + + + 0 + 0 + 4 + + + 0 + 0 + 4 + 0 + + + 0 + 0 + 5 + + + 0 + 0 + 5 + 0 + + + 0 + 1 + + + 0 + 0 + 0 + + + Objects view last selections + + + 0 + + + Opened Steps + + 0 + 1 + 2 + 5 + + Visible StackLayout Views + + front + + + + diff --git a/SPPC.dcproj/project/widget.wdgt/Default.png b/SPPC.dcproj/project/widget.wdgt/Default.png new file mode 100644 index 0000000..adc35b3 Binary files /dev/null and b/SPPC.dcproj/project/widget.wdgt/Default.png differ diff --git a/SPPC.dcproj/project/widget.wdgt/Icon.png b/SPPC.dcproj/project/widget.wdgt/Icon.png new file mode 100644 index 0000000..e4a1cd0 Binary files /dev/null and b/SPPC.dcproj/project/widget.wdgt/Icon.png differ diff --git a/SPPC.dcproj/project/widget.wdgt/Images/mcare.png b/SPPC.dcproj/project/widget.wdgt/Images/mcare.png new file mode 100644 index 0000000..b376947 Binary files /dev/null and b/SPPC.dcproj/project/widget.wdgt/Images/mcare.png differ diff --git a/SPPC.dcproj/project/widget.wdgt/Info.plist b/SPPC.dcproj/project/widget.wdgt/Info.plist new file mode 100644 index 0000000..91b0d97 --- /dev/null +++ b/SPPC.dcproj/project/widget.wdgt/Info.plist @@ -0,0 +1,32 @@ + + + + + AllowFileAccessOutsideOfWidget + + AllowSystem + + CFBundleDevelopmentRegion + English + CFBundleDisplayName + Untitled + CFBundleIdentifier + fi.mcare.widget.sppc + CFBundleName + Untitled + CFBundleShortVersionString + 1.0.1 + CFBundleVersion + 1.0.1 + CloseBoxInsetX + 15 + CloseBoxInsetY + 15 + Height + 340 + MainHTML + main.html + Width + 524 + + diff --git a/SPPC.dcproj/project/widget.wdgt/Parts/GlassButton.js b/SPPC.dcproj/project/widget.wdgt/Parts/GlassButton.js new file mode 100644 index 0000000..0e29f53 --- /dev/null +++ b/SPPC.dcproj/project/widget.wdgt/Parts/GlassButton.js @@ -0,0 +1,33 @@ +/* + This file was generated by Dashcode and is covered by the + license.txt included in the project. You may edit this file, + however it is recommended to first turn off the Dashcode + code generator otherwise the changes will be lost. + */ + +function CreateGlassButton(elementOrID, spec) +{ + var buttonElement = elementOrID; + if (elementOrID.nodeType != Node.ELEMENT_NODE) { + buttonElement = document.getElementById(elementOrID); + } + + if (!buttonElement.loaded) { + buttonElement.loaded = true; + while (buttonElement.firstChild) { + buttonElement.removeChild(buttonElement.firstChild); + } + + var text = spec.text || ''; + if (window.dashcode && dashcode.getLocalizedString) text = dashcode.getLocalizedString(text); + + var onclick = spec.onclick || null; + try { onclick = eval(onclick); } catch (e) { onclick = null; } + + buttonElement.object = new AppleGlassButton(buttonElement, text, onclick); + buttonElement.object.element = buttonElement; + buttonElement.object.setEnabled(!spec.disabled); + } + + return buttonElement.object; +} diff --git a/SPPC.dcproj/project/widget.wdgt/Parts/Images/back.png b/SPPC.dcproj/project/widget.wdgt/Parts/Images/back.png new file mode 100644 index 0000000..406a48a Binary files /dev/null and b/SPPC.dcproj/project/widget.wdgt/Parts/Images/back.png differ diff --git a/SPPC.dcproj/project/widget.wdgt/Parts/Images/front.png b/SPPC.dcproj/project/widget.wdgt/Parts/Images/front.png new file mode 100644 index 0000000..09dd865 Binary files /dev/null and b/SPPC.dcproj/project/widget.wdgt/Parts/Images/front.png differ diff --git a/SPPC.dcproj/project/widget.wdgt/Parts/Images/popup_left.png b/SPPC.dcproj/project/widget.wdgt/Parts/Images/popup_left.png new file mode 100644 index 0000000..912492a Binary files /dev/null and b/SPPC.dcproj/project/widget.wdgt/Parts/Images/popup_left.png differ diff --git a/SPPC.dcproj/project/widget.wdgt/Parts/Images/popup_middle.png b/SPPC.dcproj/project/widget.wdgt/Parts/Images/popup_middle.png new file mode 100644 index 0000000..4e1e8e1 Binary files /dev/null and b/SPPC.dcproj/project/widget.wdgt/Parts/Images/popup_middle.png differ diff --git a/SPPC.dcproj/project/widget.wdgt/Parts/Images/popup_right.png b/SPPC.dcproj/project/widget.wdgt/Parts/Images/popup_right.png new file mode 100644 index 0000000..1406de2 Binary files /dev/null and b/SPPC.dcproj/project/widget.wdgt/Parts/Images/popup_right.png differ diff --git a/SPPC.dcproj/project/widget.wdgt/Parts/InfoButton.js b/SPPC.dcproj/project/widget.wdgt/Parts/InfoButton.js new file mode 100644 index 0000000..b30c730 --- /dev/null +++ b/SPPC.dcproj/project/widget.wdgt/Parts/InfoButton.js @@ -0,0 +1,28 @@ +/* + This file was generated by Dashcode and is covered by the + license.txt included in the project. You may edit this file, + however it is recommended to first turn off the Dashcode + code generator otherwise the changes will be lost. + */ + +function CreateInfoButton(elementOrID, spec) +{ + var flipElement = elementOrID; + if (elementOrID.nodeType != Node.ELEMENT_NODE) { + flipElement = document.getElementById(elementOrID); + } + if (!flipElement.loaded) { + flipElement.loaded = true; + while (flipElement.firstChild) { + flipElement.removeChild(flipElement.firstChild); + } + + var onclick = spec.onclick || null; + try { onclick = eval(onclick); } catch (e) { onclick = null; } + + flipElement.object = new AppleInfoButton(flipElement, document.getElementById(spec.frontID), spec.foregroundStyle, spec.backgroundStyle, onclick); + flipElement.object.element = flipElement; + } + + return flipElement.object; +} diff --git a/SPPC.dcproj/project/widget.wdgt/Parts/PopupButton.js b/SPPC.dcproj/project/widget.wdgt/Parts/PopupButton.js new file mode 100644 index 0000000..d67d2a5 --- /dev/null +++ b/SPPC.dcproj/project/widget.wdgt/Parts/PopupButton.js @@ -0,0 +1,162 @@ +/* + This file was generated by Dashcode and is covered by the + license.txt included in the project. You may edit this file, + however it is recommended to first turn off the Dashcode + code generator otherwise the changes will be lost. + */ + +// Note: Properties and methods beginning with underbar ("_") are considered private and subject to change in future Dashcode releases. + +function CreatePopupButton(elementOrID, spec) +{ + var popupElement = elementOrID; + if (elementOrID.nodeType != Node.ELEMENT_NODE) { + popupElement = document.getElementById(elementOrID); + } + if (!popupElement.loaded) { + popupElement.loaded = true; + popupElement.object = new PopupButton(popupElement, spec); + return popupElement.object; + } +} + + +function PopupButton(popupElement, spec) +{ + var leftImageWidth = spec.leftImageWidth || 0; + var rightImageWidth = spec.rightImageWidth || 0; + // when cloning template, get size from original + var styleElement = popupElement; + if (spec.originalID) { + styleElement = document.getElementById(spec.originalID); + } + var imagePrefix = "Parts/Images/" + styleElement.id + "_"; + var width = dashcode.getElementWidth(styleElement) || 20; + var height = dashcode.getElementHeight(styleElement) || 20; + var _self = this; + + this.element = popupElement; + + // setup the button + while (popupElement.firstChild) { + popupElement.removeChild(popupElement.firstChild); + } + this.button = new AppleButton(popupElement, '', height, imagePrefix + "left.png", imagePrefix + "left_clicked.png", leftImageWidth, imagePrefix + "middle.png", imagePrefix + "middle_clicked.png", imagePrefix + "right.png", imagePrefix + "right_clicked.png", rightImageWidth, null); + this.button._container.childNodes[2].style.width = rightImageWidth + "px"; + this.button.textElement.style.width = (width - (leftImageWidth + rightImageWidth)) + "px"; + this.button.textElement.style.textIndent = Math.max(10-leftImageWidth, 0) + "px"; + var eventsDiv = document.createElement("div"); + eventsDiv.setAttribute("style", "position: absolute; left: 0; top: 0; width: 100%; height: 100%"); + popupElement.appendChild(eventsDiv); + var clickHandler = function(event) { + _self.select.dispatchEvent(event); + event.stopPropagation(); + event.preventDefault(); + } + eventsDiv.addEventListener("mousedown", clickHandler, true); + + + // setup the select + this.select = document.createElement("select"); + var onchange = spec.onchange || null; + try { onchange = eval(onchange); } catch (e) { onchange = null; } + this.onchange = onchange; + if (spec.name) { + this.select.name = spec.name; + } + this._setOptions(spec.options); + this.select.setAttribute("style", "position: absolute; left: 0; top: 0; width: 100%; height: 100%; opacity: 0;"); + popupElement.appendChild(this.select); + this.select.style.top = Math.max((height - dashcode.getElementHeight(this.select)) / 2, 0) + "px"; + + // onchange event handler + this.select.onchange = function (event) { + var selectedOption = this.options[this.selectedIndex]; + if (selectedOption) { + _self.button.textElement.innerText = selectedOption.text; + // if it is a real event, forward it to the custom handler + if (_self.onchange && event) { + _self.onchange(event); + } + } + }; + + this.setEnabled(!spec.disabled); +} + +PopupButton.prototype.getValue = function() +{ + return this.select.value; +} + +PopupButton.prototype.getSelectedIndex = function() +{ + return this.select.selectedIndex; +} + +PopupButton.prototype.setSelectedIndex = function(index) +{ + this.select.selectedIndex = index; + this.select.onchange(null); +} + +PopupButton.prototype.getName = function() +{ + return this.select.name; +} + +PopupButton.prototype.setName = function(name) +{ + this.select.name = name; +} + +PopupButton.prototype.setEnabled = function(enabled) +{ + this.button.setEnabled(enabled); + this.select.disabled=!enabled; +} + +PopupButton.prototype.setOptions = function(options, shouldLocalize) +{ + if (!options || !(options instanceof Array)) options = []; + var text = ''; + + this.select.options.length = 0; + for (var i = 0; i < options.length; i++) { + var defaultSelected = false; + var optionLabel = ''; + var optionValue = null; + if ((options[i]) instanceof Array) { + if (options[i].length > 0) { + optionLabel = options[i][0]; + if (options[i].length > 1) { + optionValue = options[i][1]; + if (options[i].length > 2 && options[i][2]) { + defaultSelected = true; + } + } + } + } + else { + optionLabel = options[i]; + } + + if (shouldLocalize) { + optionLabel = dashcode.getLocalizedString(optionLabel); + } + if (i==0 || defaultSelected) { + text = optionLabel; + } + if (!optionValue || optionValue.length == 0) { + optionValue = optionLabel; + } + + this.select.options[this.select.length] = new Option(optionLabel, optionValue, defaultSelected); + } + this.button.textElement.innerText = text; +} + +PopupButton.prototype._setOptions = function(options) +{ + this.setOptions(options, true); +} diff --git a/SPPC.dcproj/project/widget.wdgt/Parts/ScrollArea.js b/SPPC.dcproj/project/widget.wdgt/Parts/ScrollArea.js new file mode 100644 index 0000000..2131e21 --- /dev/null +++ b/SPPC.dcproj/project/widget.wdgt/Parts/ScrollArea.js @@ -0,0 +1,131 @@ +/* + This file was generated by Dashcode and is covered by the + license.txt included in the project. You may edit this file, + however it is recommended to first turn off the Dashcode + code generator otherwise the changes will be lost. + */ + +function CreateScrollArea(elementOrID, spec) +{ + var scrollAreaElement = elementOrID; + if (elementOrID.nodeType != Node.ELEMENT_NODE) { + scrollAreaElement = document.getElementById(elementOrID); + } + + if (!scrollAreaElement.loaded) { + var element = null; + var style = null; + var contentElement = null; + var verticalScrollbar = null; + var horizontalScrollbar = null; + var hasVerticalScrollbar = spec.hasVerticalScrollbar == undefined ? false : spec.hasVerticalScrollbar; + var hasHorizontalScrollbar = spec.hasHorizontalScrollbar == undefined ? false : spec.hasHorizontalScrollbar; + var autoHideScrollbars = spec.autoHideScrollbars == undefined ? false : spec.autoHideScrollbars; + var leftMargin = spec.leftMargin == undefined ? 0 : spec.leftMargin; + var rightMargin = spec.rightMargin == undefined ? 0 : spec.rightMargin; + var topMargin = spec.topMargin == undefined ? 0 : spec.topMargin; + var bottomMargin = spec.bottomMargin == undefined ? 0 : spec.bottomMargin; + var scrollbarMargin = spec.scrollbarMargin == undefined ? 0 : spec.scrollbarMargin;; + var leftScrollbarMargin = leftMargin + scrollbarMargin; + var rightScrollbarMargin = rightMargin + scrollbarMargin; + var topScrollbarMargin = topMargin + scrollbarMargin; + var bottomScrollbarMargin = bottomMargin + scrollbarMargin; + var spacing = spec.spacing == undefined ? 0 : spec.spacing; + var scrollbarSize = spec.scrollbarDivSize == undefined ? 0 : spec.scrollbarDivSize;; + + // Associate or create the content area element + var contentElement = scrollAreaElement.children[0] || document.createElement("div"); + + // Remove all other child elements + while (scrollAreaElement.children.length > 1) + scrollAreaElement.removeChild(scrollAreaElement.lastChild); + + style = contentElement.style; + style.position = "absolute"; + style.left = leftMargin + "px"; + style.top = topMargin + "px"; + + if (hasVerticalScrollbar && hasHorizontalScrollbar) { + style.right = rightMargin + scrollbarSize + spacing + "px"; + style.bottom = bottomMargin + scrollbarSize + spacing + "px"; + } else if (hasVerticalScrollbar) { + style.right = rightMargin + scrollbarSize + spacing + "px"; + style.bottom = bottomMargin + "px"; + } else if (hasHorizontalScrollbar) { + style.right = rightMargin + "px"; + style.bottom = bottomMargin + scrollbarSize + spacing + "px"; + } else { + style.right = rightMargin + "px"; + style.bottom = bottomMargin + "px"; + } + scrollAreaElement.appendChild(contentElement); + scrollAreaElement.contentElement = contentElement; + scrollAreaElement.content = contentElement; + + // Create the vertical scroll bar + if (hasVerticalScrollbar) { + element = document.createElement("div"); + element.className = "apple-no-children apple-remove apple-hidden"; + style = element.style; + style.position = "absolute"; + style.width = scrollbarSize + "px"; + style.height = "auto"; + style.right = rightMargin + "px"; + style.top = topScrollbarMargin + "px"; + style.bottom = hasHorizontalScrollbar ? bottomScrollbarMargin + scrollbarSize + "px" : bottomScrollbarMargin + "px"; + style.appleDashboardRegion = "none"; + scrollAreaElement.appendChild(element); + verticalScrollbar = new AppleVerticalScrollbar(element); + scrollAreaElement.verticalScrollbarElement = element; + } + + // Create the horizontal scroll bar + if (hasHorizontalScrollbar) { + element = document.createElement("div"); + element.className = "apple-no-children apple-remove apple-hidden"; + style = element.style; + style.position = "absolute"; + style.width = "auto"; + style.height = scrollbarSize + "px"; + style.left = leftScrollbarMargin + "px"; + style.right = hasVerticalScrollbar ? rightScrollbarMargin + scrollbarSize + "px" : rightScrollbarMargin + "px"; + style.bottom = bottomMargin + "px"; + style.appleDashboardRegion = "none"; + scrollAreaElement.appendChild(element); + horizontalScrollbar = new AppleHorizontalScrollbar(element); + scrollAreaElement.horizontalScrollbarElement = element; + } + + // Create the scroll area + if (hasVerticalScrollbar && hasHorizontalScrollbar) { + scrollAreaElement.object = new AppleScrollArea(contentElement, verticalScrollbar, horizontalScrollbar); + } else if (hasVerticalScrollbar) { + scrollAreaElement.object = new AppleScrollArea(contentElement, verticalScrollbar); + } else if (hasHorizontalScrollbar) { + scrollAreaElement.object = new AppleScrollArea(contentElement, horizontalScrollbar); + } else { + scrollAreaElement.object = new AppleScrollArea(contentElement); + } + scrollAreaElement.object.element = scrollAreaElement; + + // Adjust the auto hide setting + if (verticalScrollbar) { + verticalScrollbar.setAutohide(autoHideScrollbars); + } + if (horizontalScrollbar) { + horizontalScrollbar.setAutohide(autoHideScrollbars); + } + + scrollAreaElement.object.contentElement = contentElement; + scrollAreaElement.object.content = contentElement; + if (spec.originalID) { + // when cloning template, refresh shortly after initialized + var self = scrollAreaElement; + window.setTimeout(function() {self.object.refresh();}, 0); + } else { + scrollAreaElement.object.refresh(); + } + } + + return scrollAreaElement.object; +} diff --git a/SPPC.dcproj/project/widget.wdgt/Parts/datasources.js b/SPPC.dcproj/project/widget.wdgt/Parts/datasources.js new file mode 100644 index 0000000..4e2feb7 --- /dev/null +++ b/SPPC.dcproj/project/widget.wdgt/Parts/datasources.js @@ -0,0 +1,9 @@ +/* + This file was generated by Dashcode and is covered by the + license.txt included in the project. You may edit this file, + however it is recommended to first turn off the Dashcode + code generator otherwise the changes will be lost. + */ +var dashcodeDataSources = { + "dataSource": { "Class": "DC.AjaxController" } +}; \ No newline at end of file diff --git a/SPPC.dcproj/project/widget.wdgt/Parts/license.txt b/SPPC.dcproj/project/widget.wdgt/Parts/license.txt new file mode 100644 index 0000000..dd2baf1 --- /dev/null +++ b/SPPC.dcproj/project/widget.wdgt/Parts/license.txt @@ -0,0 +1,10 @@ + +IMPORTANT: The Apple Software (defined below) supplied to you by Apple Inc. ("Apple") is supplied solely in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of the Apple Software constitutes acceptance of these terms.  If you do not agree with these terms, please do not use, install, modify or redistribute this Apple Software. + +Subject to these terms, Apple grants you a personal, non-exclusive license, under Apple's copyrights in the original Apple software that is generated by Dashcode and not otherwise accompanied by a separate license the ("Apple Software"), to use, reproduce, modify and redistribute the Apple Software, with or without modifications, in source and/or binary forms; provided that you are not required to retain this notice and the following text and disclaimers in any redistribution. Neither the name, trademarks, service marks or logos of Apple Inc. may be used to endorse or promote products derived from the Apple Software without specific prior written permission from Apple.  Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by Apple herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the Apple Software may be incorporated. + +The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.  + +IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +EA0439 diff --git a/SPPC.dcproj/project/widget.wdgt/Parts/parts.js b/SPPC.dcproj/project/widget.wdgt/Parts/parts.js new file mode 100644 index 0000000..b9b6068 --- /dev/null +++ b/SPPC.dcproj/project/widget.wdgt/Parts/parts.js @@ -0,0 +1,28 @@ +/* + This file was generated by Dashcode and is covered by the + license.txt included in the project. You may edit this file, + however it is recommended to first turn off the Dashcode + code generator otherwise the changes will be lost. This file + is for files included by Dashcode directly. It will be replaced + with an optimized version at deploy time. +*/ +var dashcodePartSupport = { + "core": ["Parts/core/utilities.js", "Parts/core/core/base.js", "Parts/core/core/array-additions.js", "Parts/core/core/array-additions-ie.js", "Parts/core/core/set.js", "Parts/core/core/oop.js", "Parts/core/core/function-additions.js", "Parts/core/core/object-additions.js", "Parts/core/core/regex-additions.js", "Parts/core/core/local.js", "Parts/core/core/Error.js", "Parts/core/core/kvo.js", "Parts/core/core/Bindable.js", "Parts/core/core/SortDescriptor.js", "Parts/core/core/transformers.js", "Parts/core/core/Binding.js", "Parts/core/core/kvo-array.js", "Parts/core/core/kvo-array-operators.js", "Parts/core/core/model.js", "Parts/core/core/string-additions.js", "Parts/core/net/Deferred.js", "Parts/core/net/XHR.js", "Parts/core/controllers/Controller.js", "Parts/core/controllers/SelectionProxy.js", "Parts/core/controllers/ObjectController.js", "Parts/core/controllers/ArrayController.js", "Parts/core/controllers/AjaxController.js", "Parts/core/controllers/ModeledXMLProxy.js", "Parts/core/dom/element.js", "Parts/core/dom/event.js", "Parts/core/dom/element-ie.js", "Parts/core/dom/event-ie.js", "Parts/core/views/view-parts.js", "Parts/core/views/view-core.js", "Parts/core/views/Responder.js", "Parts/core/views/View.js", "Parts/core/views/ViewController.js", "Parts/core/views/ImageView.js", "Parts/core/views/ImageLayout.js", "Parts/core/views/DashcodePart.js", "Parts/core/views/FormControl.js", "Parts/core/views/TextField.js", "Parts/core/views/ListView.js", "Parts/core/views/SelectField.js", "Parts/core/views/ToggleButton.js", "Parts/core/views/SearchField.js", "Parts/core/views/Slider.js", "Parts/core/views/EventLoop.js", "Parts/core/views/Page.js", "Parts/core/views/Media.js", "Parts/core/views/Video.js", "Parts/core/views/VideoLayout.js", "Parts/core/views/VideoLegacy.js"], + "imageBgParts": {}, + "scripts": ["Parts/setup.js", "Parts/datasources.js", "Parts/InfoButton.js", "Parts/GlassButton.js", "Parts/PopupButton.js", "Parts/ScrollArea.js"] +}; + +(function() { + var scripts = dashcodePartSupport['core']; + + scripts = scripts.concat(dashcodePartSupport['scripts']); + + for(var index in scripts) { + var path = scripts[index]; + var scriptTag = ''; + + document.write( scriptTag ); + } +})(); + + diff --git a/SPPC.dcproj/project/widget.wdgt/Parts/setup.js b/SPPC.dcproj/project/widget.wdgt/Parts/setup.js new file mode 100644 index 0000000..597160e --- /dev/null +++ b/SPPC.dcproj/project/widget.wdgt/Parts/setup.js @@ -0,0 +1,22 @@ +/* + This file was generated by Dashcode and is covered by the + license.txt included in the project. You may edit this file, + however it is recommended to first turn off the Dashcode + code generator otherwise the changes will be lost. + */ +var dashcodePartSpecs = { + "done": { "creationFunction": "CreateGlassButton", "onclick": "showFront", "text": "Done" }, + "image": { "view": "DC.ImageLayout" }, + "info": { "backgroundStyle": "black", "creationFunction": "CreateInfoButton", "foregroundStyle": "white", "frontID": "front", "onclick": "showBack" }, + "popup": { "creationFunction": "CreatePopupButton", "leftImageWidth": 5, "onchange": "select_product", "options": [["Please select datafile", "Item 1"]], "rightImageWidth": 16 }, + "scrollArea": { "autoHideScrollbars": true, "creationFunction": "CreateScrollArea", "hasVerticalScrollbar": true, "scrollbarDivSize": 18, "scrollbarMargin": 6, "spacing": 4 }, + "text": { "text": "Tax %:", "view": "DC.Text" }, + "text1": { "text": "Shipping:", "view": "DC.Text" }, + "text2": { "text": "Margin %:", "view": "DC.Text" }, + "text3": { "text": "Currency rate:", "view": "DC.Text" } +}; + + + + + diff --git a/SPPC.dcproj/project/widget.wdgt/en.lproj/InfoPlist.strings b/SPPC.dcproj/project/widget.wdgt/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..693a274 Binary files /dev/null and b/SPPC.dcproj/project/widget.wdgt/en.lproj/InfoPlist.strings differ diff --git a/SPPC.dcproj/project/widget.wdgt/en.lproj/localizedStrings.js b/SPPC.dcproj/project/widget.wdgt/en.lproj/localizedStrings.js new file mode 100644 index 0000000..ea609ab --- /dev/null +++ b/SPPC.dcproj/project/widget.wdgt/en.lproj/localizedStrings.js @@ -0,0 +1,10 @@ +/* + This file was generated by Dashcode and is covered by the + license.txt included in the project. You may edit this file, + however it is recommended to first turn off the Dashcode + code generator otherwise the changes will be lost. + */ +var localizedStrings = { + "Hello, World!": "Hello, World!", + "Done": "Done" +}; diff --git a/SPPC.dcproj/project/widget.wdgt/jquery-1.4.2.min.js b/SPPC.dcproj/project/widget.wdgt/jquery-1.4.2.min.js new file mode 100644 index 0000000..7c24308 --- /dev/null +++ b/SPPC.dcproj/project/widget.wdgt/jquery-1.4.2.min.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/SPPC.dcproj/project/widget.wdgt/main.css b/SPPC.dcproj/project/widget.wdgt/main.css new file mode 100644 index 0000000..4c15002 --- /dev/null +++ b/SPPC.dcproj/project/widget.wdgt/main.css @@ -0,0 +1,261 @@ +/* + This file was generated by Dashcode. + You may edit this file to customize your widget or web page + according to the license.txt file included in the project. + */ + +th { + text-align: left; +} + +td { + vertical-align: top; +} + +body { + margin: 0px; +} + +#frontImg { + position: absolute; + display: block; + top: 0px; + left: 0px; + bottom: 0px; + right: 0px; + width: auto; + height: auto; +} + +#info { + position: absolute; + right: 15px; + bottom: 18px; + width: 13px; + height: 13px; + left: 492px; +} + +#back { + display: none; +} + +#backImg { + position: absolute; + display: block; + top: 0px; + left: 0px; + bottom: 0px; + right: 0px; + width: auto; + height: auto; +} + +#done { + position: absolute; + right: 21px; + bottom: 21px; + margin-left: auto; + margin-top: auto; +} + +#tax_field { + position: absolute; + color: black; + font-family: HelveticaNeue; + font-size: 10pt; + top: 89px; + left: 215px; + width: 46px; +} + +#text { + font-size: 13px; + font-family: 'Lucida Grande', Arial, sans-serif; + text-overflow: ellipsis; + overflow: hidden; + position: absolute; + margin-top: 0px; + left: 70px; + color: rgb(255, 255, 255); + text-align: right; + top: 93px; + right: 326px; + width: auto; + height: auto; +} + +.selected #text { + color: white; +} + +#text1 { + font-size: 13px; + font-family: 'Lucida Grande', Arial, sans-serif; + text-overflow: ellipsis; + overflow: hidden; + position: absolute; + margin-top: 0px; + left: 70px; + color: rgb(255, 255, 255); + text-align: right; + top: 152px; + right: 325px; + width: auto; + height: auto; +} + +.selected #text1 { + color: white; +} + +#shipping_field { + position: absolute; + color: black; + font-family: HelveticaNeue; + font-size: 10pt; + left: 215px; + top: 148px; + width: 46px; +} + +#text2 { + font-size: 13px; + font-family: 'Lucida Grande', Arial, sans-serif; + text-overflow: ellipsis; + overflow: hidden; + position: absolute; + margin-top: 0px; + color: rgb(255, 255, 255); + text-shadow: none; + left: 70px; + text-align: right; + top: 123px; + right: 325px; + width: auto; + height: auto; +} + +.selected #text2 { + color: white; +} + +#margin_field { + position: absolute; + color: black; + font-family: HelveticaNeue; + font-size: 10pt; + left: 215px; + top: 119px; + width: 46px; +} + +#text3 { + font-size: 13px; + font-family: 'Lucida Grande', Arial, sans-serif; + text-overflow: ellipsis; + overflow: hidden; + position: absolute; + margin-top: 0px; + left: 70px; + color: rgb(255, 255, 255); + text-align: right; + top: 180px; + right: 325px; + width: auto; + height: auto; +} + +.selected #text3 { + color: white; +} + +#rate_field { + position: absolute; + color: black; + font-family: HelveticaNeue; + font-size: 10pt; + left: 215px; + top: 177px; + width: 46px; +} + +#popup { + font-family: HelveticaNeue-Bold; + font-size: 12px; + text-align: left; + position: absolute; + right: auto; + margin-top: 0px; + top: 29px; + left: 36px; + width: 453px; + bottom: 291px; + height: auto; +} + +#search { + position: absolute; + right: auto; + bottom: auto; + margin-top: 0px; + top: 58px; + left: 36px; + width: 453px; +} + +#scrollArea { + color: black; + font-family: HelveticaNeue; + position: absolute; + right: auto; + bottom: auto; + margin-top: 0px; + width: 452px; + height: 221px; + font-size: 8pt; + left: 36px; + top: 88px; +} + +table { + width: 100%; +} + +#image { + position: absolute; + right: auto; + bottom: auto; + margin-top: 0px; + width: 100px; + height: 32px; + left: 215px; + top: 259px; +} + +#inner_image { + position: absolute; + bottom: 0px; + right: 0px; + left: 0px; + top: 0px; + margin: auto; + max-width: 100%; + max-height: 100%; + width: auto; + height: auto; +} + +th.number { + width: 72px; +} +.price { + width:30px; +} +td:hover { + cursor: pointer; + text-decoration: underline; +} +#front table { + z-index: 99999999; +} diff --git a/SPPC.dcproj/project/widget.wdgt/main.html b/SPPC.dcproj/project/widget.wdgt/main.html new file mode 100644 index 0000000..970dac0 --- /dev/null +++ b/SPPC.dcproj/project/widget.wdgt/main.html @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + +
+ +
+ + +
+
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+ + diff --git a/SPPC.dcproj/project/widget.wdgt/main.js b/SPPC.dcproj/project/widget.wdgt/main.js new file mode 100644 index 0000000..86d38c7 --- /dev/null +++ b/SPPC.dcproj/project/widget.wdgt/main.js @@ -0,0 +1,310 @@ +/* This program is free software. It comes without any warranty, to + * the extent permitted by applicable law. You can redistribute it + * and/or modify it under the terms of the Do What The Fuck You Want + * To Public License, Version 2, as published by Sam Hocevar. See + * http://sam.zoy.org/wtfpl/COPYING for more details. */ + +// +// Function: load() +// Called by HTML body element's onload event when the widget is ready to start +// +var mydir = ''; +var csv_file = ''; +var scroll_area = ''; +var product_parts = ''; + +var vat = 23; +var margin = 0; +var shipping = 10; +var exchange_rate = 1; + +function load() +{ + dashcode.setupParts(); + scroll_area = document.getElementById('scrollArea'); + + var d = new Date(); + mydir = widget.system("dirname '"+location.pathname+"'", null).outputString.trim(); + csv_file = mydir + '/parts.csv'; + + try { + var o = widget.system("stat -f '%c' " + csv_file, null); + d.setTime(parseInt(o.outputString.trim())*100); + var db_date = d.getDate() + '.' + d.getMonth() + '.' + d.getYear(); + } catch (e) { + alert(o.errorString); + return false; + } + + load_products(); + +} + +function load_products() +{ + var p = widget.system('awk -F "\t" \'{print $1}\' '+csv_file + ' | uniq', null); + var p = p.outputString.trim().split("\n"); + var products = new Array(['Select product...', 0]); + + for (var i = 0; i < p.length; i++) { + prod = p[i]; + products.push([prod, prod]); + } + + var popup = document.getElementById('popup'); + popup.object.setOptions(products); + + var o = widget.system("wc -l " + csv_file + " | awk '{print $1}'", null); + $('#search').attr('placeholder', o.outputString.trim()+ ' parts'); + document.getElementById('search').disabled = false; + $('#search').val(''); + + // clicking a part number puts it on the clipboard + $('#front td').live('click', function() { + widget.system("/bin/echo '" + $(this).text() + "' | /usr/bin/pbcopy", null); + }); + +} + +// +// Function: remove() +// Called when the widget has been removed from the Dashboard +// +function remove() +{ + // Stop any timers to prevent CPU usage + // Remove any preferences as needed + // widget.setPreferenceForKey(null, dashcode.createInstancePreferenceKey("your-key")); +} + +// +// Function: hide() +// Called when the widget has been hidden +// +function hide() +{ + // Stop any timers to prevent CPU usage +} + +// +// Function: show() +// Called when the widget has been shown +// +function show() +{ + +} + +// +// Function: sync() +// Called when the widget has been synchronized with .Mac +// +function sync() +{ + // Retrieve any preference values that you need to be synchronized here + // Use this for an instance key's value: + // instancePreferenceValue = widget.preferenceForKey(null, dashcode.createInstancePreferenceKey("your-key")); + // + // Or this for global key's value: + // globalPreferenceValue = widget.preferenceForKey(null, "your-key"); +} + +// +// Function: showBack(event) +// Called when the info button is clicked to show the back of the widget +// +// event: onClick event from the info button +// +function showBack(event) +{ + $('#tax_field').val(widget.preferenceForKey('vat')); + $('#shipping_field').val(widget.preferenceForKey('shipping')); + $('#margin_field').val(widget.preferenceForKey('margin')); + $('#rate_field').val(widget.preferenceForKey('rate')); + + var front = document.getElementById("front"); + var back = document.getElementById("back"); + + if (window.widget) { + widget.prepareForTransition("ToBack"); + } + + front.style.display = "none"; + back.style.display = "block"; + + if (window.widget) { + setTimeout('widget.performTransition();', 0); + } +} + +// +// Function: showFront(event) +// Called when the done button is clicked from the back of the widget +// +// event: onClick event from the done button +// +function showFront(event) +{ + var vat = document.getElementById('tax_field').value; + widget.setPreferenceForKey(vat, 'vat'); + + var shipping = document.getElementById('shipping_field').value; + widget.setPreferenceForKey(shipping, 'shipping'); + + var margin = document.getElementById('margin_field').value; + widget.setPreferenceForKey(margin, 'margin'); + + var rate = document.getElementById('rate_field').value; + widget.setPreferenceForKey(rate, 'rate'); + + var front = document.getElementById("front"); + var back = document.getElementById("back"); + + if (window.widget) { + widget.prepareForTransition("ToFront"); + } + + front.style.display="block"; + back.style.display="none"; + + if (window.widget) { + setTimeout('widget.performTransition();', 0); + } +} + +if (window.widget) { + widget.onremove = remove; + widget.onhide = hide; + widget.onshow = show; + widget.onsync = sync; +} + +function list_parts(o) +{ + scroll_area.object.content.innerHTML = ''; + + var parts = o.outputString.trim().split("\n"); + var rows = ''; + + var vat = parseInt(widget.preferenceForKey('vat')); + vat = parseFloat('1.'+vat); + + var rate = parseFloat(widget.preferenceForKey('rate')); + var margin = parseFloat(widget.preferenceForKey('margin')); + var shipping = parseFloat(widget.preferenceForKey('shipping')); + + document.getElementById('search').placeholder = parts.length + ' parts found'; + + for (var i = 0; i < parts.length; i++) + { + var p = parts[i].split('|'); + + var number = p[0]; + var description = p[1]; + var stock = parseFloat(p[2]); + var exchange = parseFloat(p[3]); + + var stock_price = 0; + var ex_price = 0; + + // calculate stock price, if given + if (stock > 0) { + stock_price = ((stock*100)/(100-margin)+shipping)*rate; + stock_price = Math.ceil(stock_price*vat); + } else { + stock_price = '-'; + } + + if (exchange > 0) { + ex_price = ((exchange*100)/(100-margin)+shipping)*rate; + ex_price = Math.ceil(ex_price*vat); + } else { + ex_price = '-'; + } + + rows += ''+number+''+description+''+ex_price+''+stock_price+''; + + } + + var html = ''; + scroll_area.object.content.innerHTML = html+rows+'
Part #DescriptionExchgStock
'; + scroll_area.object.refresh(); + +} + +function select_product(event) +{ + var val = event.target.value; + + if (val == 0) { + return false; + } + + // clean up product name for awk + p = val.replace(/([+\\(\\)\\/])/g, '\\$1') + + widget.system("awk '/^" + p + "\t/' " + csv_file + ' | awk -F "\t" \'{printf("%s|%s|%f|%f\\n",$2,$3,$7,$8)}\'', list_parts); + +} + +function filter_table() +{ + var rex = new RegExp($('#search_query').val(), 'i'); + $('#search_list tr').hide(); + $('#search_list tr').filter(function() { + return rex.test($(this).text()); + }).show(); + scroll_area.object.refresh(); + return false; +} + + +function filter_parts(event) +{ + var rex = new RegExp(event.target.value, 'i'); + $('#search_list tr').hide(); + $('#search_list tr').filter(function() { + return rex.test($(this).text()); + }).show(); + return false; +} + +// Assign this handler to the ondrop event +// on a drop target on your widget's interface +function dragDrop(event) +{ + try { + var uriString = event.dataTransfer.getData("text/uri-list"); + var uriList = uriString.split("\n"); + var df = uriList[0].substr(16); + // filter out vintage parts + widget.system('iconv -f UTF-16LE '+df+' | grep -v ^~ | tail +2 > '+csv_file, null); + load_products(); + + } catch (ex) { + alert("Problem fetching URI: " + ex); + } + + scroll_area.object.innerHTML = ''; + scroll_area.object.refresh(); + + event.stopPropagation(); + event.preventDefault(); + +} + +// Be sure to assign these handlers for the ondragenter +// and ondragover events on your drop target +// These handlers prevent Web Kit from processing +// drag events so you can handle the drop when it occurs +function dragEnter(event) +{ + event.stopPropagation(); + event.preventDefault(); +} + +function dragOver(event) +{ + event.stopPropagation(); + event.preventDefault(); +} diff --git a/SPPC.dcproj/project/widget.wdgt/mcare.png b/SPPC.dcproj/project/widget.wdgt/mcare.png new file mode 100644 index 0000000..b376947 Binary files /dev/null and b/SPPC.dcproj/project/widget.wdgt/mcare.png differ diff --git a/SPPC.dcproj/projectInfo.plist b/SPPC.dcproj/projectInfo.plist new file mode 100644 index 0000000..420d2ba --- /dev/null +++ b/SPPC.dcproj/projectInfo.plist @@ -0,0 +1,103 @@ + + + + + AvailableProducts + + Widget + + CYBackwardCompatibleExport + + CYShineVersion + 2 + MainCSS + main.css + MainJS + main.js + ProductDir + widget.wdgt + Steps + + + Completed + + Detail + Custom_Step_1_Detail + MainHelp + Tag(200) + Required + + Title + Custom_Step_1_Title + + + Completed + + Detail + Custom_Step_2_Detail + MainHelp + Tag(201) + Required + + Title + Custom_Step_2_Title + + + Completed + + Detail + Custom_Step_3_Detail + MainHelp + Tag(202) + Required + + Title + Custom_Step_3_Title + + + Completed + + Detail + Custom_Step_4_Detail + MainHelp + Tag(203) + Recommended + + Title + Custom_Step_4_Title + + + Completed + + Detail + Custom_Step_5_Detail + MainHelp + Tag(204) + Recommended + + Title + Custom_Step_5_Title + + + Completed + + Detail + Custom_Step_6_Detail + MainHelp + Tag(205) + Recommended + + Title + Custom_Step_6_Title + + + TemplateIdentifier + com.apple.Dashcode.template.custom + UseCustomAppIcon + + + + CYProjectFormatVersion + 40 + + -- cgit v1.2.3