diff --git a/CREDITS.md b/CREDITS.md new file mode 100644 index 0000000..ce18637 --- /dev/null +++ b/CREDITS.md @@ -0,0 +1,25 @@ +# Credits +We are using a wonderful set of artistic user icons provided by flaticon.com to customize our user experience! + +We would like to directly thank the following artists for their contributions: + +## Madebyoliver +* Octopus +* Snorkel +* Like (The heart!) +* Sweater +* Aquarium +* Fruit + +## Freepik +* Gingerbread man +* Flask +* Diamond +* Squirrel +* Bird (the teal one!) + +## Pixel Buddha +* Moon +* Doughnut +* Bird (the red one!) +* Paint Brush diff --git a/WebContent/html/css/stylesheet.css b/WebContent/html/css/stylesheet.css index 8a50290..96e4450 100644 --- a/WebContent/html/css/stylesheet.css +++ b/WebContent/html/css/stylesheet.css @@ -28,6 +28,17 @@ div.displayDevice{ left: 300px; } +div.profileContainer{ + display: inline-block; + position: absolute; + padding-left: 30px; + width: 100%; + height: 100%; + overflow: scroll; + left: 200px; + top: 70px; +} + div.modal{ display:none; position: fixed; @@ -65,7 +76,7 @@ input[type=text]{ span.close{ - color: #aaa; + color: black; float: right; font-size: 28px; font-weight: bold; diff --git a/WebContent/html/imgs/my-icons-collection-128px/license/license.pdf b/WebContent/html/imgs/my-icons-collection-128px/license/license.pdf new file mode 100644 index 0000000..bdeedb7 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-128px/license/license.pdf differ diff --git a/WebContent/html/imgs/my-icons-collection-128px/png/1.png b/WebContent/html/imgs/my-icons-collection-128px/png/1.png new file mode 100644 index 0000000..9be5f49 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-128px/png/1.png differ diff --git a/WebContent/html/imgs/my-icons-collection-128px/png/10.png b/WebContent/html/imgs/my-icons-collection-128px/png/10.png new file mode 100644 index 0000000..9dfd441 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-128px/png/10.png differ diff --git a/WebContent/html/imgs/my-icons-collection-128px/png/11.png b/WebContent/html/imgs/my-icons-collection-128px/png/11.png new file mode 100644 index 0000000..ad875be Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-128px/png/11.png differ diff --git a/WebContent/html/imgs/my-icons-collection-128px/png/12.png b/WebContent/html/imgs/my-icons-collection-128px/png/12.png new file mode 100644 index 0000000..d8a94ea Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-128px/png/12.png differ diff --git a/WebContent/html/imgs/my-icons-collection-128px/png/13.png b/WebContent/html/imgs/my-icons-collection-128px/png/13.png new file mode 100644 index 0000000..d3fafb2 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-128px/png/13.png differ diff --git a/WebContent/html/imgs/my-icons-collection-128px/png/14.png b/WebContent/html/imgs/my-icons-collection-128px/png/14.png new file mode 100644 index 0000000..f2351fa Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-128px/png/14.png differ diff --git a/WebContent/html/imgs/my-icons-collection-128px/png/15.png b/WebContent/html/imgs/my-icons-collection-128px/png/15.png new file mode 100644 index 0000000..4254a0d Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-128px/png/15.png differ diff --git a/WebContent/html/imgs/my-icons-collection-128px/png/2.png b/WebContent/html/imgs/my-icons-collection-128px/png/2.png new file mode 100644 index 0000000..f3e7c18 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-128px/png/2.png differ diff --git a/WebContent/html/imgs/my-icons-collection-128px/png/3.png b/WebContent/html/imgs/my-icons-collection-128px/png/3.png new file mode 100644 index 0000000..8dca2f2 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-128px/png/3.png differ diff --git a/WebContent/html/imgs/my-icons-collection-128px/png/4.png b/WebContent/html/imgs/my-icons-collection-128px/png/4.png new file mode 100644 index 0000000..2cf1c5b Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-128px/png/4.png differ diff --git a/WebContent/html/imgs/my-icons-collection-128px/png/5.png b/WebContent/html/imgs/my-icons-collection-128px/png/5.png new file mode 100644 index 0000000..337fbbc Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-128px/png/5.png differ diff --git a/WebContent/html/imgs/my-icons-collection-128px/png/6.png b/WebContent/html/imgs/my-icons-collection-128px/png/6.png new file mode 100644 index 0000000..65a5304 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-128px/png/6.png differ diff --git a/WebContent/html/imgs/my-icons-collection-128px/png/7.png b/WebContent/html/imgs/my-icons-collection-128px/png/7.png new file mode 100644 index 0000000..abf0291 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-128px/png/7.png differ diff --git a/WebContent/html/imgs/my-icons-collection-128px/png/8.png b/WebContent/html/imgs/my-icons-collection-128px/png/8.png new file mode 100644 index 0000000..5127845 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-128px/png/8.png differ diff --git a/WebContent/html/imgs/my-icons-collection-128px/png/9.png b/WebContent/html/imgs/my-icons-collection-128px/png/9.png new file mode 100644 index 0000000..dd78b84 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-128px/png/9.png differ diff --git a/WebContent/html/imgs/my-icons-collection-32px/license/license.pdf b/WebContent/html/imgs/my-icons-collection-32px/license/license.pdf new file mode 100644 index 0000000..bdeedb7 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-32px/license/license.pdf differ diff --git a/WebContent/html/imgs/my-icons-collection-32px/png/1.png b/WebContent/html/imgs/my-icons-collection-32px/png/1.png new file mode 100644 index 0000000..a199ffc Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-32px/png/1.png differ diff --git a/WebContent/html/imgs/my-icons-collection-32px/png/10.png b/WebContent/html/imgs/my-icons-collection-32px/png/10.png new file mode 100644 index 0000000..36ef75b Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-32px/png/10.png differ diff --git a/WebContent/html/imgs/my-icons-collection-32px/png/11.png b/WebContent/html/imgs/my-icons-collection-32px/png/11.png new file mode 100644 index 0000000..c6a7113 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-32px/png/11.png differ diff --git a/WebContent/html/imgs/my-icons-collection-32px/png/12.png b/WebContent/html/imgs/my-icons-collection-32px/png/12.png new file mode 100644 index 0000000..0b43323 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-32px/png/12.png differ diff --git a/WebContent/html/imgs/my-icons-collection-32px/png/13.png b/WebContent/html/imgs/my-icons-collection-32px/png/13.png new file mode 100644 index 0000000..0d091a0 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-32px/png/13.png differ diff --git a/WebContent/html/imgs/my-icons-collection-32px/png/14.png b/WebContent/html/imgs/my-icons-collection-32px/png/14.png new file mode 100644 index 0000000..b572455 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-32px/png/14.png differ diff --git a/WebContent/html/imgs/my-icons-collection-32px/png/15.png b/WebContent/html/imgs/my-icons-collection-32px/png/15.png new file mode 100644 index 0000000..ec6504a Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-32px/png/15.png differ diff --git a/WebContent/html/imgs/my-icons-collection-32px/png/2.png b/WebContent/html/imgs/my-icons-collection-32px/png/2.png new file mode 100644 index 0000000..0ada903 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-32px/png/2.png differ diff --git a/WebContent/html/imgs/my-icons-collection-32px/png/3.png b/WebContent/html/imgs/my-icons-collection-32px/png/3.png new file mode 100644 index 0000000..7402532 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-32px/png/3.png differ diff --git a/WebContent/html/imgs/my-icons-collection-32px/png/4.png b/WebContent/html/imgs/my-icons-collection-32px/png/4.png new file mode 100644 index 0000000..779b87e Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-32px/png/4.png differ diff --git a/WebContent/html/imgs/my-icons-collection-32px/png/5.png b/WebContent/html/imgs/my-icons-collection-32px/png/5.png new file mode 100644 index 0000000..6a1205c Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-32px/png/5.png differ diff --git a/WebContent/html/imgs/my-icons-collection-32px/png/6.png b/WebContent/html/imgs/my-icons-collection-32px/png/6.png new file mode 100644 index 0000000..5c9a034 Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-32px/png/6.png differ diff --git a/WebContent/html/imgs/my-icons-collection-32px/png/7.png b/WebContent/html/imgs/my-icons-collection-32px/png/7.png new file mode 100644 index 0000000..6f964fe Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-32px/png/7.png differ diff --git a/WebContent/html/imgs/my-icons-collection-32px/png/8.png b/WebContent/html/imgs/my-icons-collection-32px/png/8.png new file mode 100644 index 0000000..bab3e6f Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-32px/png/8.png differ diff --git a/WebContent/html/imgs/my-icons-collection-32px/png/9.png b/WebContent/html/imgs/my-icons-collection-32px/png/9.png new file mode 100644 index 0000000..8b30fda Binary files /dev/null and b/WebContent/html/imgs/my-icons-collection-32px/png/9.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/._readme.txt b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/._readme.txt new file mode 100644 index 0000000..ac807b5 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/._readme.txt differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/css/._.DS_Store b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/css/._.DS_Store new file mode 100644 index 0000000..09fa6bd Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/css/._.DS_Store differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/css/lib/._.DS_Store b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/css/lib/._.DS_Store new file mode 100644 index 0000000..09fa6bd Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/css/lib/._.DS_Store differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/._.DS_Store b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/._.DS_Store new file mode 100644 index 0000000..09fa6bd Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/._.DS_Store differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/control/._.DS_Store b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/control/._.DS_Store new file mode 100644 index 0000000..09fa6bd Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/control/._.DS_Store differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/control/icon-select/._.DS_Store b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/control/icon-select/._.DS_Store new file mode 100644 index 0000000..09fa6bd Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/control/icon-select/._.DS_Store differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/control/icon-select/._arrow.png b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/control/icon-select/._arrow.png new file mode 100644 index 0000000..2b5d626 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/control/icon-select/._arrow.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._.DS_Store b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._.DS_Store new file mode 100644 index 0000000..09fa6bd Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._.DS_Store differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._1.png b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._1.png new file mode 100644 index 0000000..04aa6fe Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._1.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._10.png b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._10.png new file mode 100644 index 0000000..1ebdde4 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._10.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._11.png b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._11.png new file mode 100644 index 0000000..f71e42e Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._11.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._12.png b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._12.png new file mode 100644 index 0000000..00e90f0 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._12.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._13.png b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._13.png new file mode 100644 index 0000000..5ee54a9 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._13.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._14.png b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._14.png new file mode 100644 index 0000000..d4fb45d Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._14.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._2.png b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._2.png new file mode 100644 index 0000000..c01e107 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._2.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._3.png b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._3.png new file mode 100644 index 0000000..1563182 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._3.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._4.png b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._4.png new file mode 100644 index 0000000..e34d2f6 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._4.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._5.png b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._5.png new file mode 100644 index 0000000..9641575 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._5.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._6.png b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._6.png new file mode 100644 index 0000000..c4bae4e Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._6.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._7.png b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._7.png new file mode 100644 index 0000000..0fe0cd2 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._7.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._8.png b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._8.png new file mode 100644 index 0000000..3186a9f Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._8.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._9.png b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._9.png new file mode 100644 index 0000000..a24f91b Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/images/icons/._9.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/lib/._.DS_Store b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/lib/._.DS_Store new file mode 100644 index 0000000..09fa6bd Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/lib/._.DS_Store differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/lib/._iscroll.js b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/lib/._iscroll.js new file mode 100644 index 0000000..cbfbf7e Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/lib/._iscroll.js differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/lib/control/._.DS_Store b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/lib/control/._.DS_Store new file mode 100644 index 0000000..09fa6bd Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/__MACOSX/lib/control/._.DS_Store differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/css/.DS_Store b/WebContent/html/javascript/iconselect.js-1.0/css/.DS_Store new file mode 100644 index 0000000..e69c771 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/css/.DS_Store differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/css/lib/.DS_Store b/WebContent/html/javascript/iconselect.js-1.0/css/lib/.DS_Store new file mode 100644 index 0000000..fa064ce Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/css/lib/.DS_Store differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/css/lib/control/iconselect.css b/WebContent/html/javascript/iconselect.js-1.0/css/lib/control/iconselect.css new file mode 100644 index 0000000..fe5ea25 --- /dev/null +++ b/WebContent/html/javascript/iconselect.js-1.0/css/lib/control/iconselect.css @@ -0,0 +1,129 @@ +/* +To change this license header, choose License Headers in Project Properties. +To change this template file, choose Tools | Templates +and open the template in the editor. +*/ +/* + Created on : Nov 28, 2013, 7:09:35 AM + Author : bugraozden +*/ + +.icon-select{ + width:0px; + } + + .icon-select .selected-box { + + position: relative; + margin: 0px; + padding: 0px; + width: 70px; /* sil */ + height: 60px; /* sil */ + border: 1px solid #999999; + /*background-color: #FFFFFF;*/ + + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + + } + + .icon-select .selected-box:hover { + + position: relative; + margin: 0px; + padding: 0px; + width: 70px; /* sil */ + height: 60px; /* sil */ + border: 1px solid #000000; + background-color: #FFFFFF; + + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + + } + + .icon-select .selected-icon { + + position: absolute; + margin: 0px; + padding: 0px; + top:5px; + left:5px; + width: 48px; /* sil */ + height: 48px; /* sil */ + + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + + } + + .icon-select .component-icon{ + position: absolute; + bottom:5px; + right:4px; + } + + .icon-select .box { + + position: absolute; + top:0px; + left:71px; + margin: 0px; + padding: 0px; + width: 170px; /* sil */ + height: 170px; /* sil */ + border: 1px solid #EEEEEE; + background-color: #EEEEEE; + + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + + + overflow:auto; + /* + -webkit-overflow-scrolling: touch; + */ + + } + + .icon-select .icon { + position: relative; + margin: 5px 0px 0px 5px; + padding: 0px; + width: 48px; /* sil */ + height: 48px; /* sil */ + border: 1px solid #CCCCCC; + background-color: #FFFFFF; + + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + + overflow:hidden; + float: left; + } + + .icon-select .icon:hover { + border: 1px solid #000000; + } + + .icon-select .icon.selected { + position: relative; + margin: 5px 0px 0px 5px; + padding: 0px; + width: 48px; /* sil */ + height: 48px; /* sil */ + border: 1px solid #EEEEEE; + background-color: #EEEEEE; + + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + + overflow:hidden; + float: left; + } \ No newline at end of file diff --git a/WebContent/html/javascript/iconselect.js-1.0/icon-select-example.html b/WebContent/html/javascript/iconselect.js-1.0/icon-select-example.html new file mode 100644 index 0000000..00528eb --- /dev/null +++ b/WebContent/html/javascript/iconselect.js-1.0/icon-select-example.html @@ -0,0 +1,60 @@ + + + + Icon/Image Select: Basic Example (Javascript) + + + + + + + + + + + +

Icon/Image Select: Basic Example (Javascript)

+ +
+ + + + + diff --git a/WebContent/html/javascript/iconselect.js-1.0/icon-select-example2.html b/WebContent/html/javascript/iconselect.js-1.0/icon-select-example2.html new file mode 100644 index 0000000..299f568 --- /dev/null +++ b/WebContent/html/javascript/iconselect.js-1.0/icon-select-example2.html @@ -0,0 +1,57 @@ + + + + Icon/Image Select: Nano Example (Javascript) + + + + + + + + + + + +

Icon/Image Select: Nano Example (Javascript)

+ +
+ + + diff --git a/WebContent/html/javascript/iconselect.js-1.0/icon-select-example3.html b/WebContent/html/javascript/iconselect.js-1.0/icon-select-example3.html new file mode 100644 index 0000000..29d8fb0 --- /dev/null +++ b/WebContent/html/javascript/iconselect.js-1.0/icon-select-example3.html @@ -0,0 +1,57 @@ + + + + Icon/Image Select: Vectoral Example (Javascript) + + + + + + + + + + + +

Icon/Image Select: Vectoral Example (Javascript)

+ +
+ + + diff --git a/WebContent/html/javascript/iconselect.js-1.0/icon-select-example4.html b/WebContent/html/javascript/iconselect.js-1.0/icon-select-example4.html new file mode 100644 index 0000000..c4c6df0 --- /dev/null +++ b/WebContent/html/javascript/iconselect.js-1.0/icon-select-example4.html @@ -0,0 +1,57 @@ + + + + Icon/Image Select: Horizontal Example (Javascript) + + + + + + + + + + + +

Icon/Image Select: Horizontal Example (Javascript)

+ +
+ + + diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/.DS_Store b/WebContent/html/javascript/iconselect.js-1.0/images/.DS_Store new file mode 100644 index 0000000..fc019e8 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/.DS_Store differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/control/.DS_Store b/WebContent/html/javascript/iconselect.js-1.0/images/control/.DS_Store new file mode 100644 index 0000000..50dfa3d Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/control/.DS_Store differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/control/icon-select/.DS_Store b/WebContent/html/javascript/iconselect.js-1.0/images/control/icon-select/.DS_Store new file mode 100644 index 0000000..86ce6b4 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/control/icon-select/.DS_Store differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/control/icon-select/arrow.png b/WebContent/html/javascript/iconselect.js-1.0/images/control/icon-select/arrow.png new file mode 100644 index 0000000..4917ceb Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/control/icon-select/arrow.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/icons/.DS_Store b/WebContent/html/javascript/iconselect.js-1.0/images/icons/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/icons/.DS_Store differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/icons/1.png b/WebContent/html/javascript/iconselect.js-1.0/images/icons/1.png new file mode 100644 index 0000000..d0f3dbb Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/icons/1.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/icons/10.png b/WebContent/html/javascript/iconselect.js-1.0/images/icons/10.png new file mode 100644 index 0000000..9a768a2 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/icons/10.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/icons/11.png b/WebContent/html/javascript/iconselect.js-1.0/images/icons/11.png new file mode 100644 index 0000000..ab66234 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/icons/11.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/icons/12.png b/WebContent/html/javascript/iconselect.js-1.0/images/icons/12.png new file mode 100644 index 0000000..898ef18 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/icons/12.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/icons/13.png b/WebContent/html/javascript/iconselect.js-1.0/images/icons/13.png new file mode 100644 index 0000000..8a7845d Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/icons/13.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/icons/14.png b/WebContent/html/javascript/iconselect.js-1.0/images/icons/14.png new file mode 100644 index 0000000..d322297 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/icons/14.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/icons/2.png b/WebContent/html/javascript/iconselect.js-1.0/images/icons/2.png new file mode 100644 index 0000000..98906de Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/icons/2.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/icons/3.png b/WebContent/html/javascript/iconselect.js-1.0/images/icons/3.png new file mode 100644 index 0000000..a56adfe Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/icons/3.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/icons/4.png b/WebContent/html/javascript/iconselect.js-1.0/images/icons/4.png new file mode 100644 index 0000000..6870eac Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/icons/4.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/icons/5.png b/WebContent/html/javascript/iconselect.js-1.0/images/icons/5.png new file mode 100644 index 0000000..f753084 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/icons/5.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/icons/6.png b/WebContent/html/javascript/iconselect.js-1.0/images/icons/6.png new file mode 100644 index 0000000..ca9f8d3 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/icons/6.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/icons/7.png b/WebContent/html/javascript/iconselect.js-1.0/images/icons/7.png new file mode 100644 index 0000000..2d0b685 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/icons/7.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/icons/8.png b/WebContent/html/javascript/iconselect.js-1.0/images/icons/8.png new file mode 100644 index 0000000..23766e8 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/icons/8.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/images/icons/9.png b/WebContent/html/javascript/iconselect.js-1.0/images/icons/9.png new file mode 100644 index 0000000..663ab69 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/images/icons/9.png differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/lib/.DS_Store b/WebContent/html/javascript/iconselect.js-1.0/lib/.DS_Store new file mode 100644 index 0000000..8d15528 Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/lib/.DS_Store differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/lib/control/.DS_Store b/WebContent/html/javascript/iconselect.js-1.0/lib/control/.DS_Store new file mode 100644 index 0000000..fafc36b Binary files /dev/null and b/WebContent/html/javascript/iconselect.js-1.0/lib/control/.DS_Store differ diff --git a/WebContent/html/javascript/iconselect.js-1.0/lib/control/iconselect.js b/WebContent/html/javascript/iconselect.js-1.0/lib/control/iconselect.js new file mode 100644 index 0000000..317185f --- /dev/null +++ b/WebContent/html/javascript/iconselect.js-1.0/lib/control/iconselect.js @@ -0,0 +1,322 @@ + +/** + * + * Created with NetBeans IDE + * + * Code : Icon Select JS + * Version : 1.0 + * + * User : Bugra OZDEN + * Site : http://www.bugraozden.com + * Mail : bugra.ozden@gmail.com + * + * Date : 10/30/13 + * Time : 01:10 PM + * + */ + +IconSelect.DEFAULT = {}; +IconSelect.DEFAULT.SELECTED_ICON_WIDTH = 48; +IconSelect.DEFAULT.SELECTED_ICON_HEIGHT = 48; +IconSelect.DEFAULT.SELECTED_BOX_PADDING = 1; +IconSelect.DEFAULT.SELECTED_BOX_PADDING_RIGHT = 12; +IconSelect.DEFAULT.ICONS_WIDTH = 32; +IconSelect.DEFAULT.ICONS_HEIGHT = 32; +IconSelect.DEFAULT.BOX_ICON_SPACE = 1; +IconSelect.DEFAULT.HORIZONTAL_ICON_NUMBER = 3; +IconSelect.DEFAULT.VECTORAL_ICON_NUMBER = 3; + +IconSelect.COMPONENT_ICON_FILE_PATH = "../javascript/iconselect.js-1.0/images/control/icon-select/arrow.png"; + +function IconSelect($$elementID, $$parameters) { + + var _icons = []; + var _selectedIndex = -1; + var _boxScroll; + + var _default = IconSelect.DEFAULT; + + function _init() { + + //parametreler boş gelirse + if(!$$parameters) $$parameters = {}; + //En üst elementi seç + if(_View.setIconSelectElement($$elementID)){ + + //set parameters + $$parameters = _Model.checkParameters($$parameters); + //create UI + var ui = _View.createUI($$parameters, $$elementID); + //basıldığında göster/gizle + _View.iconSelectElement.onclick = function(){ + _View.showBox(); + }; + + //Başlangıçta gizle + _View.showBox(false); + + //Nesneye basıldığında gizlemeyi iptal et. + _View.iconSelectElement.addEventListener('click', function($event){ + $event.stopPropagation(); + }); + + //dışarı basıldığında gizle. + window.addEventListener('click', function(){ + _View.showBox(false); + }); + + }else{ + alert("Element not found."); + } + + } + + //Tüm iconları yeniden yükle. + this.refresh = function($icons){ + + _icons = []; + + var setSelectedIndex = this.setSelectedIndex; + + for(var i = 0; i < $icons.length; i++){ + $icons[i].element = _View.createIcon($icons[i].iconFilePath, $icons[i].iconValue, i, $$parameters); + $icons[i].element.onclick = function(){ + setSelectedIndex(this.childNodes[0].getAttribute('icon-index')); + + }; + _icons.push($icons[i]); + + } + + var horizontalIconNumber = Math.round(($icons.length) / $$parameters.vectoralIconNumber); + + _View.boxElement.style.height = (($$parameters.iconsHeight + 2) * horizontalIconNumber) + + ((horizontalIconNumber + 1) * $$parameters.boxIconSpace); + this.setSelectedIndex(0); + + }; + + //icon listesini al. + this.getIcons = function(){ return _icons; }; + + //iconu seçili hale gelir. + this.setSelectedIndex = function($index){ + + var icon; + + if(_icons.length > $index) + icon = _icons[$index]; + + if(icon){ + //eski icondan seçilme özelliğini kaldır. + if(_selectedIndex != -1) _icons[_selectedIndex].element.setAttribute('class','icon'); + _selectedIndex = $index; + _View.selectedIconImgElement.setAttribute('src', icon.iconFilePath); + if(_selectedIndex != -1) _icons[_selectedIndex].element.setAttribute('class','icon selected'); + if(_selectedIndex != -1) $('#profimg').attr("src","../imgs/my-icons-collection-128px/png/" + icon.iconValue + ".png"); + } + + _View.iconSelectElement.dispatchEvent(new Event('changed')); + + //_View.showBox(false); + + }; + + this.getSelectedIndex = function(){ return _selectedIndex; }; + this.getSelectedValue = function(){ return _icons[_selectedIndex].iconValue }; + this.getSelectedFilePath = function(){ return _icons[_selectedIndex].iconFilePath }; + + + + //### VIEW CLASS ### + + function _View(){} + + _View.iconSelectElement; + _View.boxElement; + _View.boxScrollElement; + _View.selectedIconImgElement; + _View.selectedIconElement; + + _View.showBox = function($isShown){ + + if($isShown == null) { + $isShown = (_View.boxElement.style.display == "none") ? true : false; + } + + if($isShown) { + _View.boxElement.style.display = "block"; + _View.boxScrollElement.style.display = "block"; + _boxScroll = (_boxScroll) ? _boxScroll : new iScroll($$elementID + "-box-scroll"); + }else{ + _View.boxElement.style.display = "none"; + _View.boxScrollElement.style.display = "none"; + } + + _View.boxElement.style.display = ($isShown) ? "block" : "none"; + + + + }; + + _View.setIconSelectElement = function($elementID){ + _View.iconSelectElement = document.getElementById($elementID); + return _View.iconSelectElement; + }; + + _View.clearUI = function(){ + _View.iconSelectElement.innerHTML = ""; + }; + + _View.clearIcons = function(){ + _View.boxElement.innerHTML = ""; + }; + + _View.createUI = function($parameters){ + + /* HTML MODEL + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + */ + + _View.clearUI(); + + _View.iconSelectElement.setAttribute('class', 'icon-select'); + + var selectedBoxElement = document.createElement('div'); + selectedBoxElement.setAttribute('class' ,'selected-box'); + + var selectedIconElement = document.createElement('div'); + selectedIconElement.setAttribute('class' ,'selected-icon'); + + _View.selectedIconImgElement = document.createElement('img'); + _View.selectedIconImgElement.setAttribute('src', ''); + selectedIconElement.appendChild(_View.selectedIconImgElement); + + var componentIconElement = document.createElement('div'); + componentIconElement.setAttribute('class', 'component-icon'); + + var componentIconImgElement = document.createElement('img'); + componentIconImgElement.setAttribute('src', IconSelect.COMPONENT_ICON_FILE_PATH ); + componentIconElement.appendChild(componentIconImgElement); + + _View.boxScrollElement = document.createElement('div'); + _View.boxScrollElement.setAttribute('id',$$elementID + "-box-scroll"); + _View.boxScrollElement.setAttribute('class', 'box'); + + _View.boxElement = document.createElement('div'); + + //_View.boxElement.setAttribute('class', 'box'); + _View.boxScrollElement.appendChild(_View.boxElement); + + _View.selectedIconImgElement.setAttribute('width', $parameters.selectedIconWidth); + _View.selectedIconImgElement.setAttribute('height', $parameters.selectedIconHeight); + selectedIconElement.style.width = $parameters.selectedIconWidth; + selectedIconElement.style.height = $parameters.selectedIconHeight; + selectedBoxElement.style.width = $parameters.selectedIconWidth + $parameters.selectedBoxPadding + $parameters.selectedBoxPaddingRight; + selectedBoxElement.style.height = $parameters.selectedIconHeight + ($parameters.selectedBoxPadding * 2); + selectedIconElement.style.top = $parameters.selectedBoxPadding; + selectedIconElement.style.left = $parameters.selectedBoxPadding; + componentIconElement.style.bottom = 4 + $parameters.selectedBoxPadding; + + _View.boxScrollElement.style.left = parseInt(selectedBoxElement.style.width) + 1; + + _View.boxScrollElement.style.width = (($parameters.iconsWidth + 2) * $parameters.vectoralIconNumber) + + (($parameters.vectoralIconNumber + 1) * $parameters.boxIconSpace); + _View.boxScrollElement.style.height = (($parameters.iconsHeight + 2) * $parameters.horizontalIconNumber) + + (($parameters.horizontalIconNumber + 1) * $parameters.boxIconSpace); + + _View.boxElement.style.left = _View.boxScrollElement.style.left; + _View.boxElement.style.width = _View.boxScrollElement.style.width; + + _View.iconSelectElement.appendChild(selectedBoxElement); + selectedBoxElement.appendChild(selectedIconElement); + selectedBoxElement.appendChild(componentIconElement); + selectedBoxElement.appendChild(_View.boxScrollElement); + + + var results = {}; + results['iconSelectElement'] = _View.iconSelectElement; + results['selectedBoxElement'] = selectedBoxElement; + results['selectedIconElement'] = selectedIconElement; + results['selectedIconImgElement'] = _View.selectedIconImgElement; + results['componentIconElement'] = componentIconElement; + results['componentIconImgElement'] = componentIconImgElement; + + return results; + + + //trigger: created ( run setValues ) + + }; + + _View.createIcon = function($iconFilePath, $iconValue, $index, $parameters){ + + /* HTML MODEL + +
+ + */ + + var iconElement = document.createElement('div'); + iconElement.setAttribute('class', 'icon'); + iconElement.style.width = $parameters.iconsWidth; + iconElement.style.height = $parameters.iconsHeight; + iconElement.style.marginLeft = $parameters.boxIconSpace; + iconElement.style.marginTop = $parameters.boxIconSpace; + + var iconImgElement = document.createElement('img'); + iconImgElement.setAttribute('src', $iconFilePath); + iconImgElement.setAttribute('icon-value', $iconValue); + iconImgElement.setAttribute('icon-index', $index); + iconImgElement.setAttribute('width', $parameters.iconsWidth); + iconImgElement.setAttribute('height', $parameters.iconsHeight); + + iconElement.appendChild(iconImgElement); + _View.boxElement.appendChild(iconElement); + + return iconElement; + + }; + + //### MODEL CLASS ### + + function _Model(){} + + //TODO: params değişkenini kaldır yeni oluştursun. + _Model.checkParameters = function($parameters){ + + $parameters.selectedIconWidth = ($parameters.selectedIconWidth) ? $parameters.selectedIconWidth : _default.SELECTED_ICON_WIDTH; + $parameters.selectedIconHeight = ($parameters.selectedIconHeight) ? $parameters.selectedIconHeight : _default.SELECTED_ICON_HEIGHT; + $parameters.selectedBoxPadding = ($parameters.selectedBoxPadding) ? $parameters.selectedBoxPadding : _default.SELECTED_BOX_PADDING; + $parameters.selectedBoxPaddingRight = ($parameters.selectedBoxPaddingRight) ? $parameters.selectedBoxPaddingRight : _default.SELECTED_BOX_PADDING_RIGHT; + $parameters.iconsWidth = ($parameters.iconsWidth) ? $parameters.iconsWidth : _default.ICONS_WIDTH; + $parameters.iconsHeight = ($parameters.iconsHeight) ? $parameters.iconsHeight : _default.ICONS_HEIGHT; + $parameters.boxIconSpace = ($parameters.boxIconSpace) ? $parameters.boxIconSpace : _default.BOX_ICON_SPACE; + $parameters.vectoralIconNumber = ($parameters.vectoralIconNumber) ? $parameters.vectoralIconNumber : _default.VECTORAL_ICON_NUMBER; + $parameters.horizontalIconNumber = ($parameters.horizontalIconNumber) ? $parameters.horizontalIconNumber : _default.HORIZONTAL_ICON_NUMBER; + + return $parameters; + + }; + + _init(); +} \ No newline at end of file diff --git a/WebContent/html/javascript/iconselect.js-1.0/lib/iscroll-license.txt b/WebContent/html/javascript/iconselect.js-1.0/lib/iscroll-license.txt new file mode 100644 index 0000000..1c54a54 --- /dev/null +++ b/WebContent/html/javascript/iconselect.js-1.0/lib/iscroll-license.txt @@ -0,0 +1,22 @@ +Copyright (c) 2012 Matteo Spinelli, http://cubiq.org/ + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/WebContent/html/javascript/iconselect.js-1.0/lib/iscroll.js b/WebContent/html/javascript/iconselect.js-1.0/lib/iscroll.js new file mode 100644 index 0000000..8222de0 --- /dev/null +++ b/WebContent/html/javascript/iconselect.js-1.0/lib/iscroll.js @@ -0,0 +1,1104 @@ +/*! + * iScroll v4.2.5 ~ Copyright (c) 2012 Matteo Spinelli, http://cubiq.org + * Released under MIT license, http://cubiq.org/license + */ +(function(window, doc){ +var m = Math, + dummyStyle = doc.createElement('div').style, + vendor = (function () { + var vendors = 't,webkitT,MozT,msT,OT'.split(','), + t, + i = 0, + l = vendors.length; + + for ( ; i < l; i++ ) { + t = vendors[i] + 'ransform'; + if ( t in dummyStyle ) { + return vendors[i].substr(0, vendors[i].length - 1); + } + } + + return false; + })(), + cssVendor = vendor ? '-' + vendor.toLowerCase() + '-' : '', + + // Style properties + transform = prefixStyle('transform'), + transitionProperty = prefixStyle('transitionProperty'), + transitionDuration = prefixStyle('transitionDuration'), + transformOrigin = prefixStyle('transformOrigin'), + transitionTimingFunction = prefixStyle('transitionTimingFunction'), + transitionDelay = prefixStyle('transitionDelay'), + + // Browser capabilities + isAndroid = (/android/gi).test(navigator.appVersion), + isIDevice = (/iphone|ipad/gi).test(navigator.appVersion), + isTouchPad = (/hp-tablet/gi).test(navigator.appVersion), + + has3d = prefixStyle('perspective') in dummyStyle, + hasTouch = 'ontouchstart' in window && !isTouchPad, + hasTransform = vendor !== false, + hasTransitionEnd = prefixStyle('transition') in dummyStyle, + + RESIZE_EV = 'onorientationchange' in window ? 'orientationchange' : 'resize', + START_EV = hasTouch ? 'touchstart' : 'mousedown', + MOVE_EV = hasTouch ? 'touchmove' : 'mousemove', + END_EV = hasTouch ? 'touchend' : 'mouseup', + CANCEL_EV = hasTouch ? 'touchcancel' : 'mouseup', + TRNEND_EV = (function () { + if ( vendor === false ) return false; + + var transitionEnd = { + '' : 'transitionend', + 'webkit' : 'webkitTransitionEnd', + 'Moz' : 'transitionend', + 'O' : 'otransitionend', + 'ms' : 'MSTransitionEnd' + }; + + return transitionEnd[vendor]; + })(), + + nextFrame = (function() { + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(callback) { return setTimeout(callback, 1); }; + })(), + cancelFrame = (function () { + return window.cancelRequestAnimationFrame || + window.webkitCancelAnimationFrame || + window.webkitCancelRequestAnimationFrame || + window.mozCancelRequestAnimationFrame || + window.oCancelRequestAnimationFrame || + window.msCancelRequestAnimationFrame || + clearTimeout; + })(), + + // Helpers + translateZ = has3d ? ' translateZ(0)' : '', + + // Constructor + iScroll = function (el, options) { + var that = this, + i; + + that.wrapper = typeof el == 'object' ? el : doc.getElementById(el); + that.wrapper.style.overflow = 'hidden'; + that.scroller = that.wrapper.children[0]; + + // Default options + that.options = { + hScroll: true, + vScroll: true, + x: 0, + y: 0, + bounce: true, + bounceLock: false, + momentum: true, + lockDirection: true, + useTransform: true, + useTransition: false, + topOffset: 0, + checkDOMChanges: false, // Experimental + handleClick: true, + + // Scrollbar + hScrollbar: true, + vScrollbar: true, + fixedScrollbar: isAndroid, + hideScrollbar: isIDevice, + fadeScrollbar: isIDevice && has3d, + scrollbarClass: '', + + // Zoom + zoom: false, + zoomMin: 1, + zoomMax: 4, + doubleTapZoom: 2, + wheelAction: 'scroll', + + // Snap + snap: false, + snapThreshold: 1, + + // Events + onRefresh: null, + onBeforeScrollStart: function (e) { e.preventDefault(); }, + onScrollStart: null, + onBeforeScrollMove: null, + onScrollMove: null, + onBeforeScrollEnd: null, + onScrollEnd: null, + onTouchEnd: null, + onDestroy: null, + onZoomStart: null, + onZoom: null, + onZoomEnd: null + }; + + // User defined options + for (i in options) that.options[i] = options[i]; + + // Set starting position + that.x = that.options.x; + that.y = that.options.y; + + // Normalize options + that.options.useTransform = hasTransform && that.options.useTransform; + that.options.hScrollbar = that.options.hScroll && that.options.hScrollbar; + that.options.vScrollbar = that.options.vScroll && that.options.vScrollbar; + that.options.zoom = that.options.useTransform && that.options.zoom; + that.options.useTransition = hasTransitionEnd && that.options.useTransition; + + // Helpers FIX ANDROID BUG! + // translate3d and scale doesn't work together! + // Ignoring 3d ONLY WHEN YOU SET that.options.zoom + if ( that.options.zoom && isAndroid ){ + translateZ = ''; + } + + // Set some default styles + that.scroller.style[transitionProperty] = that.options.useTransform ? cssVendor + 'transform' : 'top left'; + that.scroller.style[transitionDuration] = '0'; + that.scroller.style[transformOrigin] = '0 0'; + if (that.options.useTransition) that.scroller.style[transitionTimingFunction] = 'cubic-bezier(0.33,0.66,0.66,1)'; + + if (that.options.useTransform) that.scroller.style[transform] = 'translate(' + that.x + 'px,' + that.y + 'px)' + translateZ; + else that.scroller.style.cssText += ';position:absolute;top:' + that.y + 'px;left:' + that.x + 'px'; + + if (that.options.useTransition) that.options.fixedScrollbar = true; + + that.refresh(); + + that._bind(RESIZE_EV, window); + that._bind(START_EV); + if (!hasTouch) { + if (that.options.wheelAction != 'none') { + that._bind('DOMMouseScroll'); + that._bind('mousewheel'); + } + } + + if (that.options.checkDOMChanges) that.checkDOMTime = setInterval(function () { + that._checkDOMChanges(); + }, 500); + }; + +// Prototype +iScroll.prototype = { + enabled: true, + x: 0, + y: 0, + steps: [], + scale: 1, + currPageX: 0, currPageY: 0, + pagesX: [], pagesY: [], + aniTime: null, + wheelZoomCount: 0, + + handleEvent: function (e) { + var that = this; + switch(e.type) { + case START_EV: + if (!hasTouch && e.button !== 0) return; + that._start(e); + break; + case MOVE_EV: that._move(e); break; + case END_EV: + case CANCEL_EV: that._end(e); break; + case RESIZE_EV: that._resize(); break; + case 'DOMMouseScroll': case 'mousewheel': that._wheel(e); break; + case TRNEND_EV: that._transitionEnd(e); break; + } + }, + + _checkDOMChanges: function () { + if (this.moved || this.zoomed || this.animating || + (this.scrollerW == this.scroller.offsetWidth * this.scale && this.scrollerH == this.scroller.offsetHeight * this.scale)) return; + + this.refresh(); + }, + + _scrollbar: function (dir) { + var that = this, + bar; + + if (!that[dir + 'Scrollbar']) { + if (that[dir + 'ScrollbarWrapper']) { + if (hasTransform) that[dir + 'ScrollbarIndicator'].style[transform] = ''; + that[dir + 'ScrollbarWrapper'].parentNode.removeChild(that[dir + 'ScrollbarWrapper']); + that[dir + 'ScrollbarWrapper'] = null; + that[dir + 'ScrollbarIndicator'] = null; + } + + return; + } + + if (!that[dir + 'ScrollbarWrapper']) { + // Create the scrollbar wrapper + bar = doc.createElement('div'); + + if (that.options.scrollbarClass) bar.className = that.options.scrollbarClass + dir.toUpperCase(); + else bar.style.cssText = 'position:absolute;z-index:100;' + (dir == 'h' ? 'height:7px;bottom:1px;left:2px;right:' + (that.vScrollbar ? '7' : '2') + 'px' : 'width:7px;bottom:' + (that.hScrollbar ? '7' : '2') + 'px;top:2px;right:1px'); + + bar.style.cssText += ';pointer-events:none;' + cssVendor + 'transition-property:opacity;' + cssVendor + 'transition-duration:' + (that.options.fadeScrollbar ? '350ms' : '0') + ';overflow:hidden;opacity:' + (that.options.hideScrollbar ? '0' : '1'); + + that.wrapper.appendChild(bar); + that[dir + 'ScrollbarWrapper'] = bar; + + // Create the scrollbar indicator + bar = doc.createElement('div'); + if (!that.options.scrollbarClass) { + bar.style.cssText = 'position:absolute;z-index:100;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);' + cssVendor + 'background-clip:padding-box;' + cssVendor + 'box-sizing:border-box;' + (dir == 'h' ? 'height:100%' : 'width:100%') + ';' + cssVendor + 'border-radius:3px;border-radius:3px'; + } + bar.style.cssText += ';pointer-events:none;' + cssVendor + 'transition-property:' + cssVendor + 'transform;' + cssVendor + 'transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);' + cssVendor + 'transition-duration:0;' + cssVendor + 'transform: translate(0,0)' + translateZ; + if (that.options.useTransition) bar.style.cssText += ';' + cssVendor + 'transition-timing-function:cubic-bezier(0.33,0.66,0.66,1)'; + + that[dir + 'ScrollbarWrapper'].appendChild(bar); + that[dir + 'ScrollbarIndicator'] = bar; + } + + if (dir == 'h') { + that.hScrollbarSize = that.hScrollbarWrapper.clientWidth; + that.hScrollbarIndicatorSize = m.max(m.round(that.hScrollbarSize * that.hScrollbarSize / that.scrollerW), 8); + that.hScrollbarIndicator.style.width = that.hScrollbarIndicatorSize + 'px'; + that.hScrollbarMaxScroll = that.hScrollbarSize - that.hScrollbarIndicatorSize; + that.hScrollbarProp = that.hScrollbarMaxScroll / that.maxScrollX; + } else { + that.vScrollbarSize = that.vScrollbarWrapper.clientHeight; + that.vScrollbarIndicatorSize = m.max(m.round(that.vScrollbarSize * that.vScrollbarSize / that.scrollerH), 8); + that.vScrollbarIndicator.style.height = that.vScrollbarIndicatorSize + 'px'; + that.vScrollbarMaxScroll = that.vScrollbarSize - that.vScrollbarIndicatorSize; + that.vScrollbarProp = that.vScrollbarMaxScroll / that.maxScrollY; + } + + // Reset position + that._scrollbarPos(dir, true); + }, + + _resize: function () { + var that = this; + setTimeout(function () { that.refresh(); }, isAndroid ? 200 : 0); + }, + + _pos: function (x, y) { + if (this.zoomed) return; + + x = this.hScroll ? x : 0; + y = this.vScroll ? y : 0; + + if (this.options.useTransform) { + this.scroller.style[transform] = 'translate(' + x + 'px,' + y + 'px) scale(' + this.scale + ')' + translateZ; + } else { + x = m.round(x); + y = m.round(y); + this.scroller.style.left = x + 'px'; + this.scroller.style.top = y + 'px'; + } + + this.x = x; + this.y = y; + + this._scrollbarPos('h'); + this._scrollbarPos('v'); + }, + + _scrollbarPos: function (dir, hidden) { + var that = this, + pos = dir == 'h' ? that.x : that.y, + size; + + if (!that[dir + 'Scrollbar']) return; + + pos = that[dir + 'ScrollbarProp'] * pos; + + if (pos < 0) { + if (!that.options.fixedScrollbar) { + size = that[dir + 'ScrollbarIndicatorSize'] + m.round(pos * 3); + if (size < 8) size = 8; + that[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px'; + } + pos = 0; + } else if (pos > that[dir + 'ScrollbarMaxScroll']) { + if (!that.options.fixedScrollbar) { + size = that[dir + 'ScrollbarIndicatorSize'] - m.round((pos - that[dir + 'ScrollbarMaxScroll']) * 3); + if (size < 8) size = 8; + that[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px'; + pos = that[dir + 'ScrollbarMaxScroll'] + (that[dir + 'ScrollbarIndicatorSize'] - size); + } else { + pos = that[dir + 'ScrollbarMaxScroll']; + } + } + + that[dir + 'ScrollbarWrapper'].style[transitionDelay] = '0'; + that[dir + 'ScrollbarWrapper'].style.opacity = hidden && that.options.hideScrollbar ? '0' : '1'; + that[dir + 'ScrollbarIndicator'].style[transform] = 'translate(' + (dir == 'h' ? pos + 'px,0)' : '0,' + pos + 'px)') + translateZ; + }, + + _start: function (e) { + var that = this, + point = hasTouch ? e.touches[0] : e, + matrix, x, y, + c1, c2; + + if (!that.enabled) return; + + if (that.options.onBeforeScrollStart) that.options.onBeforeScrollStart.call(that, e); + + if (that.options.useTransition || that.options.zoom) that._transitionTime(0); + + that.moved = false; + that.animating = false; + that.zoomed = false; + that.distX = 0; + that.distY = 0; + that.absDistX = 0; + that.absDistY = 0; + that.dirX = 0; + that.dirY = 0; + + // Gesture start + if (that.options.zoom && hasTouch && e.touches.length > 1) { + c1 = m.abs(e.touches[0].pageX-e.touches[1].pageX); + c2 = m.abs(e.touches[0].pageY-e.touches[1].pageY); + that.touchesDistStart = m.sqrt(c1 * c1 + c2 * c2); + + that.originX = m.abs(e.touches[0].pageX + e.touches[1].pageX - that.wrapperOffsetLeft * 2) / 2 - that.x; + that.originY = m.abs(e.touches[0].pageY + e.touches[1].pageY - that.wrapperOffsetTop * 2) / 2 - that.y; + + if (that.options.onZoomStart) that.options.onZoomStart.call(that, e); + } + + if (that.options.momentum) { + if (that.options.useTransform) { + // Very lame general purpose alternative to CSSMatrix + matrix = getComputedStyle(that.scroller, null)[transform].replace(/[^0-9\-.,]/g, '').split(','); + x = +(matrix[12] || matrix[4]); + y = +(matrix[13] || matrix[5]); + } else { + x = +getComputedStyle(that.scroller, null).left.replace(/[^0-9-]/g, ''); + y = +getComputedStyle(that.scroller, null).top.replace(/[^0-9-]/g, ''); + } + + if (x != that.x || y != that.y) { + if (that.options.useTransition) that._unbind(TRNEND_EV); + else cancelFrame(that.aniTime); + that.steps = []; + that._pos(x, y); + if (that.options.onScrollEnd) that.options.onScrollEnd.call(that); + } + } + + that.absStartX = that.x; // Needed by snap threshold + that.absStartY = that.y; + + that.startX = that.x; + that.startY = that.y; + that.pointX = point.pageX; + that.pointY = point.pageY; + + that.startTime = e.timeStamp || Date.now(); + + if (that.options.onScrollStart) that.options.onScrollStart.call(that, e); + + that._bind(MOVE_EV, window); + that._bind(END_EV, window); + that._bind(CANCEL_EV, window); + }, + + _move: function (e) { + var that = this, + point = hasTouch ? e.touches[0] : e, + deltaX = point.pageX - that.pointX, + deltaY = point.pageY - that.pointY, + newX = that.x + deltaX, + newY = that.y + deltaY, + c1, c2, scale, + timestamp = e.timeStamp || Date.now(); + + if (that.options.onBeforeScrollMove) that.options.onBeforeScrollMove.call(that, e); + + // Zoom + if (that.options.zoom && hasTouch && e.touches.length > 1) { + c1 = m.abs(e.touches[0].pageX - e.touches[1].pageX); + c2 = m.abs(e.touches[0].pageY - e.touches[1].pageY); + that.touchesDist = m.sqrt(c1*c1+c2*c2); + + that.zoomed = true; + + scale = 1 / that.touchesDistStart * that.touchesDist * this.scale; + + if (scale < that.options.zoomMin) scale = 0.5 * that.options.zoomMin * Math.pow(2.0, scale / that.options.zoomMin); + else if (scale > that.options.zoomMax) scale = 2.0 * that.options.zoomMax * Math.pow(0.5, that.options.zoomMax / scale); + + that.lastScale = scale / this.scale; + + newX = this.originX - this.originX * that.lastScale + this.x; + newY = this.originY - this.originY * that.lastScale + this.y; + + this.scroller.style[transform] = 'translate(' + newX + 'px,' + newY + 'px) scale(' + scale + ')' + translateZ; + + if (that.options.onZoom) that.options.onZoom.call(that, e); + return; + } + + that.pointX = point.pageX; + that.pointY = point.pageY; + + // Slow down if outside of the boundaries + if (newX > 0 || newX < that.maxScrollX) { + newX = that.options.bounce ? that.x + (deltaX / 2) : newX >= 0 || that.maxScrollX >= 0 ? 0 : that.maxScrollX; + } + if (newY > that.minScrollY || newY < that.maxScrollY) { + newY = that.options.bounce ? that.y + (deltaY / 2) : newY >= that.minScrollY || that.maxScrollY >= 0 ? that.minScrollY : that.maxScrollY; + } + + that.distX += deltaX; + that.distY += deltaY; + that.absDistX = m.abs(that.distX); + that.absDistY = m.abs(that.distY); + + if (that.absDistX < 6 && that.absDistY < 6) { + return; + } + + // Lock direction + if (that.options.lockDirection) { + if (that.absDistX > that.absDistY + 5) { + newY = that.y; + deltaY = 0; + } else if (that.absDistY > that.absDistX + 5) { + newX = that.x; + deltaX = 0; + } + } + + that.moved = true; + that._pos(newX, newY); + that.dirX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0; + that.dirY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0; + + if (timestamp - that.startTime > 300) { + that.startTime = timestamp; + that.startX = that.x; + that.startY = that.y; + } + + if (that.options.onScrollMove) that.options.onScrollMove.call(that, e); + }, + + _end: function (e) { + if (hasTouch && e.touches.length !== 0) return; + + var that = this, + point = hasTouch ? e.changedTouches[0] : e, + target, ev, + momentumX = { dist:0, time:0 }, + momentumY = { dist:0, time:0 }, + duration = (e.timeStamp || Date.now()) - that.startTime, + newPosX = that.x, + newPosY = that.y, + distX, distY, + newDuration, + snap, + scale; + + that._unbind(MOVE_EV, window); + that._unbind(END_EV, window); + that._unbind(CANCEL_EV, window); + + if (that.options.onBeforeScrollEnd) that.options.onBeforeScrollEnd.call(that, e); + + if (that.zoomed) { + scale = that.scale * that.lastScale; + scale = Math.max(that.options.zoomMin, scale); + scale = Math.min(that.options.zoomMax, scale); + that.lastScale = scale / that.scale; + that.scale = scale; + + that.x = that.originX - that.originX * that.lastScale + that.x; + that.y = that.originY - that.originY * that.lastScale + that.y; + + that.scroller.style[transitionDuration] = '200ms'; + that.scroller.style[transform] = 'translate(' + that.x + 'px,' + that.y + 'px) scale(' + that.scale + ')' + translateZ; + + that.zoomed = false; + that.refresh(); + + if (that.options.onZoomEnd) that.options.onZoomEnd.call(that, e); + return; + } + + if (!that.moved) { + if (hasTouch) { + if (that.doubleTapTimer && that.options.zoom) { + // Double tapped + clearTimeout(that.doubleTapTimer); + that.doubleTapTimer = null; + if (that.options.onZoomStart) that.options.onZoomStart.call(that, e); + that.zoom(that.pointX, that.pointY, that.scale == 1 ? that.options.doubleTapZoom : 1); + if (that.options.onZoomEnd) { + setTimeout(function() { + that.options.onZoomEnd.call(that, e); + }, 200); // 200 is default zoom duration + } + } else if (this.options.handleClick) { + that.doubleTapTimer = setTimeout(function () { + that.doubleTapTimer = null; + + // Find the last touched element + target = point.target; + while (target.nodeType != 1) target = target.parentNode; + + if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA') { + ev = doc.createEvent('MouseEvents'); + ev.initMouseEvent('click', true, true, e.view, 1, + point.screenX, point.screenY, point.clientX, point.clientY, + e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, + 0, null); + ev._fake = true; + target.dispatchEvent(ev); + } + }, that.options.zoom ? 250 : 0); + } + } + + that._resetPos(400); + + if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); + return; + } + + if (duration < 300 && that.options.momentum) { + momentumX = newPosX ? that._momentum(newPosX - that.startX, duration, -that.x, that.scrollerW - that.wrapperW + that.x, that.options.bounce ? that.wrapperW : 0) : momentumX; + momentumY = newPosY ? that._momentum(newPosY - that.startY, duration, -that.y, (that.maxScrollY < 0 ? that.scrollerH - that.wrapperH + that.y - that.minScrollY : 0), that.options.bounce ? that.wrapperH : 0) : momentumY; + + newPosX = that.x + momentumX.dist; + newPosY = that.y + momentumY.dist; + + if ((that.x > 0 && newPosX > 0) || (that.x < that.maxScrollX && newPosX < that.maxScrollX)) momentumX = { dist:0, time:0 }; + if ((that.y > that.minScrollY && newPosY > that.minScrollY) || (that.y < that.maxScrollY && newPosY < that.maxScrollY)) momentumY = { dist:0, time:0 }; + } + + if (momentumX.dist || momentumY.dist) { + newDuration = m.max(m.max(momentumX.time, momentumY.time), 10); + + // Do we need to snap? + if (that.options.snap) { + distX = newPosX - that.absStartX; + distY = newPosY - that.absStartY; + if (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) { that.scrollTo(that.absStartX, that.absStartY, 200); } + else { + snap = that._snap(newPosX, newPosY); + newPosX = snap.x; + newPosY = snap.y; + newDuration = m.max(snap.time, newDuration); + } + } + + that.scrollTo(m.round(newPosX), m.round(newPosY), newDuration); + + if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); + return; + } + + // Do we need to snap? + if (that.options.snap) { + distX = newPosX - that.absStartX; + distY = newPosY - that.absStartY; + if (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) that.scrollTo(that.absStartX, that.absStartY, 200); + else { + snap = that._snap(that.x, that.y); + if (snap.x != that.x || snap.y != that.y) that.scrollTo(snap.x, snap.y, snap.time); + } + + if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); + return; + } + + that._resetPos(200); + if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); + }, + + _resetPos: function (time) { + var that = this, + resetX = that.x >= 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x, + resetY = that.y >= that.minScrollY || that.maxScrollY > 0 ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y; + + if (resetX == that.x && resetY == that.y) { + if (that.moved) { + that.moved = false; + if (that.options.onScrollEnd) that.options.onScrollEnd.call(that); // Execute custom code on scroll end + } + + if (that.hScrollbar && that.options.hideScrollbar) { + if (vendor == 'webkit') that.hScrollbarWrapper.style[transitionDelay] = '300ms'; + that.hScrollbarWrapper.style.opacity = '0'; + } + if (that.vScrollbar && that.options.hideScrollbar) { + if (vendor == 'webkit') that.vScrollbarWrapper.style[transitionDelay] = '300ms'; + that.vScrollbarWrapper.style.opacity = '0'; + } + + return; + } + + that.scrollTo(resetX, resetY, time || 0); + }, + + _wheel: function (e) { + var that = this, + wheelDeltaX, wheelDeltaY, + deltaX, deltaY, + deltaScale; + + if ('wheelDeltaX' in e) { + wheelDeltaX = e.wheelDeltaX / 12; + wheelDeltaY = e.wheelDeltaY / 12; + } else if('wheelDelta' in e) { + wheelDeltaX = wheelDeltaY = e.wheelDelta / 12; + } else if ('detail' in e) { + wheelDeltaX = wheelDeltaY = -e.detail * 3; + } else { + return; + } + + if (that.options.wheelAction == 'zoom') { + deltaScale = that.scale * Math.pow(2, 1/3 * (wheelDeltaY ? wheelDeltaY / Math.abs(wheelDeltaY) : 0)); + if (deltaScale < that.options.zoomMin) deltaScale = that.options.zoomMin; + if (deltaScale > that.options.zoomMax) deltaScale = that.options.zoomMax; + + if (deltaScale != that.scale) { + if (!that.wheelZoomCount && that.options.onZoomStart) that.options.onZoomStart.call(that, e); + that.wheelZoomCount++; + + that.zoom(e.pageX, e.pageY, deltaScale, 400); + + setTimeout(function() { + that.wheelZoomCount--; + if (!that.wheelZoomCount && that.options.onZoomEnd) that.options.onZoomEnd.call(that, e); + }, 400); + } + + return; + } + + deltaX = that.x + wheelDeltaX; + deltaY = that.y + wheelDeltaY; + + if (deltaX > 0) deltaX = 0; + else if (deltaX < that.maxScrollX) deltaX = that.maxScrollX; + + if (deltaY > that.minScrollY) deltaY = that.minScrollY; + else if (deltaY < that.maxScrollY) deltaY = that.maxScrollY; + + if (that.maxScrollY < 0) { + that.scrollTo(deltaX, deltaY, 0); + } + }, + + _transitionEnd: function (e) { + var that = this; + + if (e.target != that.scroller) return; + + that._unbind(TRNEND_EV); + + that._startAni(); + }, + + + /** + * + * Utilities + * + */ + _startAni: function () { + var that = this, + startX = that.x, startY = that.y, + startTime = Date.now(), + step, easeOut, + animate; + + if (that.animating) return; + + if (!that.steps.length) { + that._resetPos(400); + return; + } + + step = that.steps.shift(); + + if (step.x == startX && step.y == startY) step.time = 0; + + that.animating = true; + that.moved = true; + + if (that.options.useTransition) { + that._transitionTime(step.time); + that._pos(step.x, step.y); + that.animating = false; + if (step.time) that._bind(TRNEND_EV); + else that._resetPos(0); + return; + } + + animate = function () { + var now = Date.now(), + newX, newY; + + if (now >= startTime + step.time) { + that._pos(step.x, step.y); + that.animating = false; + if (that.options.onAnimationEnd) that.options.onAnimationEnd.call(that); // Execute custom code on animation end + that._startAni(); + return; + } + + now = (now - startTime) / step.time - 1; + easeOut = m.sqrt(1 - now * now); + newX = (step.x - startX) * easeOut + startX; + newY = (step.y - startY) * easeOut + startY; + that._pos(newX, newY); + if (that.animating) that.aniTime = nextFrame(animate); + }; + + animate(); + }, + + _transitionTime: function (time) { + time += 'ms'; + this.scroller.style[transitionDuration] = time; + if (this.hScrollbar) this.hScrollbarIndicator.style[transitionDuration] = time; + if (this.vScrollbar) this.vScrollbarIndicator.style[transitionDuration] = time; + }, + + _momentum: function (dist, time, maxDistUpper, maxDistLower, size) { + var deceleration = 0.0006, + speed = m.abs(dist) / time, + newDist = (speed * speed) / (2 * deceleration), + newTime = 0, outsideDist = 0; + + // Proportinally reduce speed if we are outside of the boundaries + if (dist > 0 && newDist > maxDistUpper) { + outsideDist = size / (6 / (newDist / speed * deceleration)); + maxDistUpper = maxDistUpper + outsideDist; + speed = speed * maxDistUpper / newDist; + newDist = maxDistUpper; + } else if (dist < 0 && newDist > maxDistLower) { + outsideDist = size / (6 / (newDist / speed * deceleration)); + maxDistLower = maxDistLower + outsideDist; + speed = speed * maxDistLower / newDist; + newDist = maxDistLower; + } + + newDist = newDist * (dist < 0 ? -1 : 1); + newTime = speed / deceleration; + + return { dist: newDist, time: m.round(newTime) }; + }, + + _offset: function (el) { + var left = -el.offsetLeft, + top = -el.offsetTop; + + while (el = el.offsetParent) { + left -= el.offsetLeft; + top -= el.offsetTop; + } + + if (el != this.wrapper) { + left *= this.scale; + top *= this.scale; + } + + return { left: left, top: top }; + }, + + _snap: function (x, y) { + var that = this, + i, l, + page, time, + sizeX, sizeY; + + // Check page X + page = that.pagesX.length - 1; + for (i=0, l=that.pagesX.length; i= that.pagesX[i]) { + page = i; + break; + } + } + if (page == that.currPageX && page > 0 && that.dirX < 0) page--; + x = that.pagesX[page]; + sizeX = m.abs(x - that.pagesX[that.currPageX]); + sizeX = sizeX ? m.abs(that.x - x) / sizeX * 500 : 0; + that.currPageX = page; + + // Check page Y + page = that.pagesY.length-1; + for (i=0; i= that.pagesY[i]) { + page = i; + break; + } + } + if (page == that.currPageY && page > 0 && that.dirY < 0) page--; + y = that.pagesY[page]; + sizeY = m.abs(y - that.pagesY[that.currPageY]); + sizeY = sizeY ? m.abs(that.y - y) / sizeY * 500 : 0; + that.currPageY = page; + + // Snap with constant speed (proportional duration) + time = m.round(m.max(sizeX, sizeY)) || 200; + + return { x: x, y: y, time: time }; + }, + + _bind: function (type, el, bubble) { + (el || this.scroller).addEventListener(type, this, !!bubble); + }, + + _unbind: function (type, el, bubble) { + (el || this.scroller).removeEventListener(type, this, !!bubble); + }, + + + /** + * + * Public methods + * + */ + destroy: function () { + var that = this; + + that.scroller.style[transform] = ''; + + // Remove the scrollbars + that.hScrollbar = false; + that.vScrollbar = false; + that._scrollbar('h'); + that._scrollbar('v'); + + // Remove the event listeners + that._unbind(RESIZE_EV, window); + that._unbind(START_EV); + that._unbind(MOVE_EV, window); + that._unbind(END_EV, window); + that._unbind(CANCEL_EV, window); + + if (!that.options.hasTouch) { + that._unbind('DOMMouseScroll'); + that._unbind('mousewheel'); + } + + if (that.options.useTransition) that._unbind(TRNEND_EV); + + if (that.options.checkDOMChanges) clearInterval(that.checkDOMTime); + + if (that.options.onDestroy) that.options.onDestroy.call(that); + }, + + refresh: function () { + var that = this, + offset, + i, l, + els, + pos = 0, + page = 0; + + if (that.scale < that.options.zoomMin) that.scale = that.options.zoomMin; + that.wrapperW = that.wrapper.clientWidth || 1; + that.wrapperH = that.wrapper.clientHeight || 1; + + that.minScrollY = -that.options.topOffset || 0; + that.scrollerW = m.round(that.scroller.offsetWidth * that.scale); + that.scrollerH = m.round((that.scroller.offsetHeight + that.minScrollY) * that.scale); + that.maxScrollX = that.wrapperW - that.scrollerW; + that.maxScrollY = that.wrapperH - that.scrollerH + that.minScrollY; + that.dirX = 0; + that.dirY = 0; + + if (that.options.onRefresh) that.options.onRefresh.call(that); + + that.hScroll = that.options.hScroll && that.maxScrollX < 0; + that.vScroll = that.options.vScroll && (!that.options.bounceLock && !that.hScroll || that.scrollerH > that.wrapperH); + + that.hScrollbar = that.hScroll && that.options.hScrollbar; + that.vScrollbar = that.vScroll && that.options.vScrollbar && that.scrollerH > that.wrapperH; + + offset = that._offset(that.wrapper); + that.wrapperOffsetLeft = -offset.left; + that.wrapperOffsetTop = -offset.top; + + // Prepare snap + if (typeof that.options.snap == 'string') { + that.pagesX = []; + that.pagesY = []; + els = that.scroller.querySelectorAll(that.options.snap); + for (i=0, l=els.length; i= that.maxScrollX) { + that.pagesX[page] = pos; + pos = pos - that.wrapperW; + page++; + } + if (that.maxScrollX%that.wrapperW) that.pagesX[that.pagesX.length] = that.maxScrollX - that.pagesX[that.pagesX.length-1] + that.pagesX[that.pagesX.length-1]; + + pos = 0; + page = 0; + that.pagesY = []; + while (pos >= that.maxScrollY) { + that.pagesY[page] = pos; + pos = pos - that.wrapperH; + page++; + } + if (that.maxScrollY%that.wrapperH) that.pagesY[that.pagesY.length] = that.maxScrollY - that.pagesY[that.pagesY.length-1] + that.pagesY[that.pagesY.length-1]; + } + + // Prepare the scrollbars + that._scrollbar('h'); + that._scrollbar('v'); + + if (!that.zoomed) { + that.scroller.style[transitionDuration] = '0'; + that._resetPos(400); + } + }, + + scrollTo: function (x, y, time, relative) { + var that = this, + step = x, + i, l; + + that.stop(); + + if (!step.length) step = [{ x: x, y: y, time: time, relative: relative }]; + + for (i=0, l=step.length; i 0 ? 0 : pos.left < that.maxScrollX ? that.maxScrollX : pos.left; + pos.top = pos.top > that.minScrollY ? that.minScrollY : pos.top < that.maxScrollY ? that.maxScrollY : pos.top; + time = time === undefined ? m.max(m.abs(pos.left)*2, m.abs(pos.top)*2) : time; + + that.scrollTo(pos.left, pos.top, time); + }, + + scrollToPage: function (pageX, pageY, time) { + var that = this, x, y; + + time = time === undefined ? 400 : time; + + if (that.options.onScrollStart) that.options.onScrollStart.call(that); + + if (that.options.snap) { + pageX = pageX == 'next' ? that.currPageX+1 : pageX == 'prev' ? that.currPageX-1 : pageX; + pageY = pageY == 'next' ? that.currPageY+1 : pageY == 'prev' ? that.currPageY-1 : pageY; + + pageX = pageX < 0 ? 0 : pageX > that.pagesX.length-1 ? that.pagesX.length-1 : pageX; + pageY = pageY < 0 ? 0 : pageY > that.pagesY.length-1 ? that.pagesY.length-1 : pageY; + + that.currPageX = pageX; + that.currPageY = pageY; + x = that.pagesX[pageX]; + y = that.pagesY[pageY]; + } else { + x = -that.wrapperW * pageX; + y = -that.wrapperH * pageY; + if (x < that.maxScrollX) x = that.maxScrollX; + if (y < that.maxScrollY) y = that.maxScrollY; + } + + that.scrollTo(x, y, time); + }, + + disable: function () { + this.stop(); + this._resetPos(0); + this.enabled = false; + + // If disabled after touchstart we make sure that there are no left over events + this._unbind(MOVE_EV, window); + this._unbind(END_EV, window); + this._unbind(CANCEL_EV, window); + }, + + enable: function () { + this.enabled = true; + }, + + stop: function () { + if (this.options.useTransition) this._unbind(TRNEND_EV); + else cancelFrame(this.aniTime); + this.steps = []; + this.moved = false; + this.animating = false; + }, + + zoom: function (x, y, scale, time) { + var that = this, + relScale = scale / that.scale; + + if (!that.options.useTransform) return; + + that.zoomed = true; + time = time === undefined ? 200 : time; + x = x - that.wrapperOffsetLeft - that.x; + y = y - that.wrapperOffsetTop - that.y; + that.x = x - x * relScale + that.x; + that.y = y - y * relScale + that.y; + + that.scale = scale; + that.refresh(); + + that.x = that.x > 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x; + that.y = that.y > that.minScrollY ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y; + + that.scroller.style[transitionDuration] = time + 'ms'; + that.scroller.style[transform] = 'translate(' + that.x + 'px,' + that.y + 'px) scale(' + scale + ')' + translateZ; + that.zoomed = false; + }, + + isReady: function () { + return !this.moved && !this.zoomed && !this.animating; + } +}; + +function prefixStyle (style) { + if ( vendor === '' ) return style; + + style = style.charAt(0).toUpperCase() + style.substr(1); + return vendor + style; +} + +dummyStyle = null; // for the sake of it + +if (typeof exports !== 'undefined') exports.iScroll = iScroll; +else window.iScroll = iScroll; + +})(window, document); diff --git a/WebContent/html/javascript/iconselect.js-1.0/nbproject/private/config.properties b/WebContent/html/javascript/iconselect.js-1.0/nbproject/private/config.properties new file mode 100644 index 0000000..e69de29 diff --git a/WebContent/html/javascript/iconselect.js-1.0/nbproject/private/private.properties b/WebContent/html/javascript/iconselect.js-1.0/nbproject/private/private.properties new file mode 100644 index 0000000..3334426 --- /dev/null +++ b/WebContent/html/javascript/iconselect.js-1.0/nbproject/private/private.properties @@ -0,0 +1,6 @@ +browser.id=Chrome.INTEGRATED +copy.src.on.open=false +debug.url=DEFAULT_URL +index.file=index.html +run.as=LOCAL +url=http://localhost/IconSelectJS/ diff --git a/WebContent/html/javascript/iconselect.js-1.0/nbproject/private/private.xml b/WebContent/html/javascript/iconselect.js-1.0/nbproject/private/private.xml new file mode 100644 index 0000000..6807a2b --- /dev/null +++ b/WebContent/html/javascript/iconselect.js-1.0/nbproject/private/private.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WebContent/html/javascript/iconselect.js-1.0/nbproject/project.properties b/WebContent/html/javascript/iconselect.js-1.0/nbproject/project.properties new file mode 100644 index 0000000..d37ef95 --- /dev/null +++ b/WebContent/html/javascript/iconselect.js-1.0/nbproject/project.properties @@ -0,0 +1,7 @@ +include.path=${php.global.include.path} +php.version=PHP_54 +source.encoding=UTF-8 +src.dir=. +tags.asp=false +tags.short=false +web.root=. diff --git a/WebContent/html/javascript/iconselect.js-1.0/nbproject/project.xml b/WebContent/html/javascript/iconselect.js-1.0/nbproject/project.xml new file mode 100644 index 0000000..a77857e --- /dev/null +++ b/WebContent/html/javascript/iconselect.js-1.0/nbproject/project.xml @@ -0,0 +1,9 @@ + + + org.netbeans.modules.php.project + + + IconSelectJS + + + diff --git a/WebContent/html/javascript/iconselect.js-1.0/profileIcon.js b/WebContent/html/javascript/iconselect.js-1.0/profileIcon.js new file mode 100644 index 0000000..1ad8373 --- /dev/null +++ b/WebContent/html/javascript/iconselect.js-1.0/profileIcon.js @@ -0,0 +1,34 @@ +var iconSelect; + + window.onload = function(){ + + iconSelect = new IconSelect("my-icon-select", + {'selectedIconWidth':23, + 'selectedIconHeight':23, + 'selectedBoxPadding':1, + 'iconsWidth':48, + 'iconsHeight':48, + 'boxIconSpace':1, + 'vectoralIconNumber':2, + 'horizontalIconNumber':6}); + + var icons = []; + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/aquarium.png', 'iconValue':'1'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/bird.png', 'iconValue':'2'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/bird-1.png', 'iconValue':'3'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/diamond.png', 'iconValue':'4'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/doughnut.png', 'iconValue':'5'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/flask.png', 'iconValue':'6'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/fruit.png', 'iconValue':'7'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/gingerbread-man.png', 'iconValue':'8'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/like.png', 'iconValue':'9'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/moon.png', 'iconValue':'10'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/octopus.png', 'iconValue':'11'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/paint-brush.png', 'iconValue':'12'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/snorkel.png', 'iconValue':'13'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/squirrel.png', 'iconValue':'14'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/sweater.png', 'iconValue':'15'}); + + iconSelect.refresh(icons); + + }; \ No newline at end of file diff --git a/WebContent/html/javascript/iconselect.js-1.0/readme.txt b/WebContent/html/javascript/iconselect.js-1.0/readme.txt new file mode 100644 index 0000000..255f2c7 --- /dev/null +++ b/WebContent/html/javascript/iconselect.js-1.0/readme.txt @@ -0,0 +1,18 @@ + Code: IconSelect JS + + Year: 8 Dec 2013 + Autor: Buğra ÖZDEN + Mail: bugra.ozden@gmail.com + Site: bugraozden.com + + + You are free: + + to Share — to copy, distribute and transmit the work + to Remix — to adapt the work + to make commercial use of the work + + + + + Have Fun. \ No newline at end of file diff --git a/WebContent/html/javascript/profileIcon.js b/WebContent/html/javascript/profileIcon.js new file mode 100644 index 0000000..bb819ee --- /dev/null +++ b/WebContent/html/javascript/profileIcon.js @@ -0,0 +1,37 @@ +var iconSelect; + + window.onload = function(){ + + iconSelect = new IconSelect("my-icon-select", + {'selectedIconWidth':23, + 'selectedIconHeight':23, + 'selectedBoxPadding':3, + 'iconsWidth':48, + 'iconsHeight':48, + 'boxIconSpace':5, + 'vectoralIconNumber':2, + 'horizontalIconNumber':8}); + + var icons = []; + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/1.png', 'iconValue':'1'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/2.png', 'iconValue':'2'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/3.png', 'iconValue':'3'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/4.png', 'iconValue':'4'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/5.png', 'iconValue':'5'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/6.png', 'iconValue':'6'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/7.png', 'iconValue':'7'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/8.png', 'iconValue':'8'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/9.png', 'iconValue':'9'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/10.png', 'iconValue':'10'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/11.png', 'iconValue':'11'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/12.png', 'iconValue':'12'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/13.png', 'iconValue':'13'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/14.png', 'iconValue':'14'}); + icons.push({'iconFilePath':'../imgs/my-icons-collection-32px/png/15.png', 'iconValue':'15'}); + + iconSelect.refresh(icons); + + //around here is where you'll have to define the current image, then this will update as the user selects new ones! + $('#profimg').attr("src","../imgs/my-icons-collection-128px/png/11.png"); + + }; \ No newline at end of file diff --git a/WebContent/html/javascript/profileSettings.js b/WebContent/html/javascript/profileSettings.js new file mode 100644 index 0000000..3615b1d --- /dev/null +++ b/WebContent/html/javascript/profileSettings.js @@ -0,0 +1,86 @@ +//event listener on the apply changes button +document.getElementById('apply').addEventListener('click',applyChanges); +document.getElementById('inputName').addEventListener('keyup',checkEmpty); +document.getElementById('inputSSO').addEventListener('keyup',checkEmpty); +document.getElementById('closeBttn').addEventListener('click',function(){document.getElementById('missingcontent').style.display = "none";}); + +var typeTimer; +var doneTypingInterval = 2000 //ms + +$('#inputSSO').keyup(function(){clearTimeout(typeTimer); typeTimer = setTimeout(querySSO,doneTypingInterval);}); + +var flag = 0; +var name; +var SSO; +var telephone; +var email; + +//populates the fields +populate(); + +//sends applied changes to DB +function applyChanges(){ + if(flag == 0){ + name = $('#inputName').val(); + SSO = $('#inputSSO').val(); + telephone = $('#inputTelephone').val(); + email = $('#inputEmail').val(); + + //send these values to DB for updates to be made + //EX + //if(name != "") + //send to database + } + + else + $('#missingcontent').css('display','block'); +} + +//populates form fields if info exists in db already +function populate(){ + //get values from database + + //$('#inputName').val(name); + //$('#inputSSO').val(SSO); + //$('#inputTelephone').val(telephone); + //$('#inputEmail').val(email); +} + +function checkEmpty(){ + var id = this.getAttribute('id'); + if($('#' + id).val() == ""){ + $('#' + id).parent().attr('class','form-group has-error'); + $('#' + id).siblings('span').text(warningtext(id)) + } + else{ + $('#' + id).parent().attr('class','form-group'); + $('#' + id).siblings('span').text('') + } + +} + +function warningtext(id){ + if(id == "inputName") + return "This is a required field."; + else if (id == "inputSSO") + return "This is a required field."; +} + +function querySSO(){ + //query to see if SSO is in database already + + //if so... && val() != "" + //$('#' + id).parent().attr('class','form-group has-error'); + //$('#inputSSO').siblings('span').text('SSO is currently in use.'); + //flag = 1; + + //if not... && val() != "" + //$('#' + id).parent().attr('class','form-group'); + //$('#' + id).siblings('span').text(''); +} + +window.onclick = function(event) { + var modal = document.getElementById('missingcontent'); + if(event.target == modal) + modal.style.display = "none"; +} \ No newline at end of file diff --git a/WebContent/html/webpages/profileSettings.html b/WebContent/html/webpages/profileSettings.html new file mode 100644 index 0000000..5ff5ede --- /dev/null +++ b/WebContent/html/webpages/profileSettings.html @@ -0,0 +1,119 @@ + + + + + + + + + + Synchrony Financial + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+

Change profile image:

+
+
+
+

Profile Settings

+
+ + + +
+
+ + + +
+
+ + +
+
+ + +
+ +
+
+ + + + + + + \ No newline at end of file