Help
RSS
API
Feed
Maltego
Contact
Domain > www.comasso.org
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2024-11-18
65.2.101.112
(
ClassC
)
2026-01-26
15.206.20.60
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: awselb/2.0Date: Mon, 26 Jan 2026 17:44:56 GMTContent-Type: text/htmlContent-Length: 134Connection: keep-aliveLocation: https://www.comasso.org:443/ html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Mon, 26 Jan 2026 17:44:57 GMTContent-Type: text/html; charsetutf-8Transfer-Encoding: chunkedConnection: keep-aliveServer: Apache/2.4.37 (Red Hat Enterprise Linux) Phusion_Passenger/6.0.4 mod_fcgid/2.3.9 OpenSSL/1.1.1c SVN/1.10.2 mod_perl/2.0.11 Perl/v5.26.3X-Frame-Options: SAMEORIGINX-XSS-Protection: 1; modeblockX-Content-Type-Options: nosniffX-Download-Options: noopenX-Permitted-Cross-Domain-Policies: noneReferrer-Policy: strict-origin-when-cross-originCache-Control: max-age0, private, must-revalidateX-Request-Id: 597788e2-4371-4227-b6e1-da14eef673bbX-Runtime: 0.035015Set-Cookie: _redmine_sessionR2xNRVN1ZnlyNWlMdmF5M2JpNm5NeGdyWC83SG9lMHl2a1UxNmt6dk9EOFR6UVBmb1hhaVRYWElTY0t0cVpYVDBvNmJla2h1V1huOWd2K0RiZ0puY1p3QlMwL1ZXWTFiVVFBb25FaDhHN3d6SHV6RWRtc0hKdUxGZ0QveGtIZlBacnBxMFV5dGlRZWVDN1lhNVZxOUQ5Q2h2cS94U0tXTmw3dUplc0xQT09Bak9nSFYvMHEvRjZ4T205OGNVTUtGLS1mNFF5Z0hRdVBPRG8wSDRzc1BBSXF3PT0%3D--ff1833a0f7987eb89c0918658b37ea6119d8bf66; path/; HttpOnlyETag: W/94f620ed2b4ecd77907d007af1316590 !DOCTYPE html>html langen>head>meta charsetutf-8 />title>COMASSO@aws/title>meta namedescription contentRedmine />meta namekeywords contentissue,bug,tracker />meta namecsrf-param contentauthenticity_token />meta namecsrf-token contentauCfX52S0wO0d/OJAdc4B0HOlGaP//FMbVfJswdyDHifd7AH0aFa/a87o1Zov1Ggh5dXYMtES+57JkXnfwAf6Q />link relshortcut icon href/redmine/favicon.ico?1584619959 />link relstylesheet mediaall href/redmine/stylesheets/application.css?1591246668 />link relstylesheet mediaall href/redmine/stylesheets/jquery/jquery-ui-1.11.0.css?1584591909 />link relstylesheet mediaall href/redmine/themes/classic/stylesheets/application.css?1584591909 />link relstylesheet mediaall href/redmine/stylesheets/responsive.css?1584591909 />script src/redmine/javascripts/jquery-1.11.1-ui-1.11.0-ujs-4.3.1.js?1584591909>/script>script src/redmine/javascripts/application.js?1584591909>/script>script src/redmine/javascripts/responsive.js?1584591909>/script>script>//!CDATA$(window).load(function(){ warnLeavingUnsaved(The current page contains unsaved text that will be lost if you leave this page.); });//>/script>/head>!-- page specific tags --> link relstylesheet mediascreen href/redmine/plugin_assets/comasso/stylesheets/comasso.css?1585650402 /> link relstylesheet mediaall href/redmine/plugin_assets/comasso/stylesheets/comasso.css?1585650402 />style typetext/css>/* Coding using ref:https://www.script-tutorials.com/musical-drop-down-menu/ */#navgatre,#navgatre ul { list-style: none outside none; margin: 0; padding: 0;}#navgatre { font-family: Lucida Sans Unicode,Verdana,Arial,sans-serif; font-size: 13px; height: 36px; list-style: none outside none; margin: 7px auto 40px 26%; text-shadow: 0 -1px 3px #202020; width: 735px;; margin-top: -5%; /* border radius *//* -moz-border-radius: 4px; -webkit-border-radius: 4px;*/ border-radius: 4px; /* box shadow */ -moz-box-shadow: 0px 3px 3px #cecece; -webkit-box-shadow: 0px 3px 3px #cecece; box-shadow: 0 3px 4px #8b8b8b; /* gradient */ background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #787878), color-stop(0.5, #5E5E5E), color-stop(0.51, #707070), color-stop(1, #838383)); background-image: -moz-linear-gradient(center bottom, #787878 0%, #5E5E5E 50%, #707070 51%, #838383 100%); background-color: #5f5f5f;}#navgatre li { border-bottom: 1px solid #575757; border-left: 1px solid #929292; border-right: 1px solid #5d5d5d; border-top: 1px solid #797979; display: block; float: left; height: 34px; position: relative; width: 180px;}#navgatre > li:first-child { border-left: 0 none; margin-left: 5px;}#navgatre ul { left: -9999px; position: absolute; top: -9999px; z-index: 2;}#navgatre ul li { background: none repeat scroll 0 0 #838383; box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); width: 100%;}#navgatre li a { color: #FFFFFF; display: block; line-height: 34px; outline: medium none; text-align: center; text-decoration: none; /* gradient */ background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #787878), color-stop(0.5, #5E5E5E), color-stop(0.51, #707070), color-stop(1, #838383)); background-image: -moz-linear-gradient(center bottom, #787878 0%, #5E5E5E 50%, #707070 51%, #838383 100%); background-color: #5f5f5f;}/* keyframes #animation */@-webkit-keyframes animation { 0% { -webkit-transform: scale(1); } 30% { -webkit-transform: scale(1.2); } 100% { -webkit-transform: scale(1.1); }}@-moz-keyframes animation { 0% { -moz-transform: scale(1); } 30% { -moz-transform: scale(1.2); } 100% { -moz-transform: scale(1.1); }}#navgatre li > a:hover { /* CSS3 animation */ -webkit-animation-name: animation; -webkit-animation-duration: 0.3s; -webkit-animation-timing-function: linear; -webkit-animation-iteration-count: 1; -webkit-animation-direction: normal; -webkit-animation-delay: 0; -webkit-animation-play-state: running; -webkit-animation-fill-mode: forwards; -moz-animation-name: animation; -moz-animation-duration: 0.3s; -moz-animation-timing-function: linear; -moz-animation-iteration-count: 1; -moz-animation-direction: normal; -moz-animation-delay: 0; -moz-animation-play-state: running; -moz-animation-fill-mode: forwards; color: #2c2c2c; background: #5C9ACD; background: -webkit-gradient( linear, left bottom, left top, color-stop(0.17, rgb(61,111,177)), color-stop(0.51, rgb(80,136,199)), color-stop(1, rgb(92,154,205)) ); background: -moz-linear-gradient( center bottom, rgb(61,111,177) 17%, rgb(80,136,199) 51%, rgb(92,154,205) 100% ); background: -o-linear-gradient( center bottom, rgb(61,111,177) 17%, rgb(80,136,199) 51%, rgb(92,154,205) 100% ); border-bottom: 1px solid rgba(0,0,0,0.6); border-top: 1px solid #7BAED9; text-shadow: 0 1px rgba(255, 255, 255, 0.3);}#navgatre li:hover ul { left: 0; top: 34px; width: 150px;}/style>script typetext/javascript> function highlight_link(link) { var menu_links document.getElementById(navbar).getElementsByTagName(a); var li_links document.getElementById(navbar).getElementsByTagName(li); for (var i 0; i menu_links.length; ++i) { menu_linksi.className (menu_linksi link) ? current : ; li_linksi.className (menu_linksi link)?currentVisited:; } }/script>/head>body classtheme-Classic controller-welcome action-index avatars-off>div idwrapper> div idwrapper2>div idwrapper3>div idtop-menu> div idaccount> ul>li>a classlogin href/login>Sign in/a>/li>li>a classregister href/account/register>Register/a>/li>/ul> /div> ul>li>a classhome href/>Home/a>/li>li>a classprojects href/projects>Projects/a>/li>li>a classhelp hrefhttps://www.redmine.org/guide>Help/a>/li>/ul>/div> div classcontainer> div idheader> div idquick-search> form action/search accept-charsetUTF-8 methodget>input nameutf8 typehidden value✓ /> label forq> a accesskey4 href/search>Search/a>: /label> input typetext nameq idq size20 classsmall accesskeyf />/form> div idproject-jump classdrdn>span classdrdn-trigger>Jump to a project.../span>div classdrdn-content>div classquick-search>input typetext nameq idprojects-quick-search value classautocomplete data-automcomplete-url/projects/autocomplete.js?jumpwelcome autocompleteoff />/div>div classdrdn-items projects selection>/div>div classdrdn-items all-projects selection>a href/projects?jumpwelcome>All Projects/a>/div>/div>/div> /div> !-- h1>COMASSO/h1> -->/div> div classnav>div classlogo>a hrefhttps://www.comasso.org/> img width25% altlogo srchttps://www.comasso.org/images/logo.png stylemargin-bottom: -22px padding10px > /a>/img> /div>ul idnavgatre> li>a href#>ABOUT US /a> ul> li>a hrefhttps://www.comasso.org/comasso_about>About us/li>/a> /ul> /li> li>a href#>PROJECT/a> ul> li>a hrefhttps://www.comasso.org/comasso_downloads>Downloads /li>/a> li>a hrefhttps://www.comasso.org/projects/comasso/wiki/Getting_Started_with_COMASSO_Basic_Software>Getting Started /li>/a> li>a hrefhttps://www.comasso.org/projects/comasso/wiki/Development_Processes>Development Processes/li> /a> li>a hrefhttps://www.comasso.org/projects/comasso/issues>Issues Tracker /li> /a> /ul> /li> li>a href#>Membership/a> ul> li>a hrefhttps://www.comasso.org/comasso_members>Current Members/li>/a> li>a hrefhttps://www.comasso.org/comasso_joinassociation>Joining Association/li>/a> /ul> /li> li>a href#>CONTACT/a> ul> li>a hrefhttps://www.comasso.org/comasso_contactus>Contact/Imprint/li> /a> /ul> /li>/ul> /div> !-- div idmain-menu classproject-menu> ul>li>a href/projects/comasso classoverview selected>Overview/a>/li>li>a hrefhttps://comasso-prd-pb-lb-01-855134473.ap-south-1.elb.amazonaws.com/projects/comasso/issues classissues>Issues/a>/li>li>a hrefhttps://comasso-prd-pb-lb-01-855134473.ap-south-1.elb.amazonaws.com/projects/comasso/issues/new accesskey7 classnew-issue>New issue/a>/li>li>a hrefhttps://comasso-prd-pb-lb-01-855134473.ap-south-1.elb.amazonaws.com/projects/comasso/issues/calendar classcalendar>Calendar/a>/li>li>a hrefhttps://comasso-prd-pb-lb-01-855134473.ap-south-1.elb.amazonaws.com/projects/comasso/news classnews>News/a>/li>li>a hrefhttps://comasso-prd-pb-lb-01-855134473.ap-south-1.elb.amazonaws.com/projects/comasso/wiki classwiki>Wiki/a>/li>li>a hrefhttps://comasso-prd-pb-lb-01-855134473.ap-south-1.elb.amazonaws.com/projects/comasso/boards classboards>Forums/a>/li>li>a hrefhttps://comasso-prd-pb-lb-01-855134473.ap-south-1.elb.amazonaws.com/projects/comasso/settings classsettings>Settings/a>/li>/ul>/div> --> div idmain classnosidebar> div idsidebar> /div> div idcontent> html> head> meta http-equivContent-Type contenttext/html; charsetiso-8859-1 /> title>Home/title> /head> body>style>.tab3s { position: relative; min-height: 200px; /* This part sucks */ clear: both; margin: 25px 0; margin-top: 1.7%; } .tab { float: left; margin: 10px 0 10px 0; } .tab label { background: #eee; padding: 10px; border: 1px solid #ccc; margin: 0px 0 0 -1px; position: relative; left: 1px; } .tab typeradio { display: none; } .tabbedd { position: absolute; top: 37px; left: 0; background: white; right: 0; bottom: 0; padding: 20px; border: 1px solid #ccc; height:68% ; width:960px; } typeradio:checked ~ label { background: white; border-bottom: 1px solid white; z-index: 2; } typeradio:checked ~ label ~ .tabbedd { z-index: 1; }/style>div classbanner>div stylebackground-color: ; color: #FFFFFF; float: right; padding-left: 30px; position: relative; top: 20px; width: 300px;>!--marquee>b stylecolor:#99FFCC>HAPPY b stylecolor:orange>NEW b stylecolor:red>YEAR/b>/b>/b>/marquee>-->marquee>b stylecolor:#D97800>WELCOME TO COMASSO/b>/marquee>/div> div classcontainer1 styletop:51%> strong>Converging towards a Global Implementation Standard... /strong> /div> /div>div classnews> div idpage-wrap> div classtab3s> div classtab> input typeradio idtab-1 nametab-group-1 checked> label fortab-1>Latest News/label> div classtabbedd stylebackground-color:#6699AF> h4 stylecolor:#FF9966>Latest News/h4> p>03-06-2020 Enersys Delaware Inc joins COMASSO e.V./p> p>23-09-2019 Irdeto Security B.V. joins COMASSO e.V. /p> p>24-07-2019 Evolution Synergetique joins COMASSO e.V./p> a hrefhttps://www.comasso.org/comasso_about#tabs-2> img altmore srchttps://www.comasso.org/images/more4.png stylemargin-left: 94%; height: 21%; margin-top: -1%;> /a> /div> /div> div classtab> input typeradio idtab-2 nametab-group-1> label fortab-2>Latest Releases/label> div classtabbedd stylebackground-color: #2488AF;> h4 stylecolor:#FF9966> Releases Of COMASSO /h4> p>31.01.2018 - COMASSO Release Candidate 4.2.2.1.RC1 is available./p> p>18.01.2018 - BSWDT Release 10.0.0 is available./p> p>24.12.2015 - COMASSO Release 4.0.2.6 is available./p> a hrefhttps://www.comasso.org/comasso_downloads> img altmore srchttps://www.comasso.org/images/more4.png stylemargin-left: 94%; height: 21%; margin-top: -1%;> /a> /div> /div> div classtab> input typeradio idtab-3 nametab-group-1> label fortab-3>Upcoming Events/label> div classtabbedd stylebackground-color:#6699AF> h4 stylecolor:#FF9966>COMASSO Upcoming Events/h4> /div> /div> /div>/div>/div>/div> div classabout-us stylemargin:-230px auto auto auto> div classabout-usl> h4>Who are we?/h4> p>COMASSO e.V. is a registered association supporting Common implementation and exploitation of the AUTOSAR standard./p> h4>What is our motivation?/h4> p>After 10 years of AUTOSAR development we observe the existence of various implementations without competition relevant differentiation, causing integration effort in case of SW exchange and reuse. We want to reduce this higher integration effort in case of SW exchange and resuse by supporting a common implementation of the AUTOSAR standard. This provides the members a higher degree of freedom to concentrate on innovation./p> /div> div classabout-usr> h4>What do we provide?/h4> p>The COMASSO association provides br> br> strong> Technical platform /strong> ul> li> To maintain and develop AUTOSAR BSW in a community similar to Open Source communities /li> li> To exchange source code /li> li> To exchange information and experience to implement AUTOSAR-BSW /li> /ul> strong> A legal framework /strong> ul> li> To minimize the risk of warranty issues /li> li> To minimize the risk IP violation and misuse for each member/li> li> To guarantee equal rights and duties for all members /li> /ul> /p> /div> /div>div classsponsers> div idcarousel>h1 stylepadding-left:2%; font-size:170%>Members/h1>a idprev href# stylemargin-left:2%; color:#D97800 >/a> a idnext href# stylemargin-left:89%; color:#D97800>>>/a>img srchttps://www.comasso.org/images/logo_robertbosch.png iditem-1 />img srchttps://www.comasso.org/images/logo_Infobank.png iditem-16>img srchttps://www.comasso.org/images/logo_dias.png iditem-17>img srchttps://www.comasso.org/images/logo_etas.png iditem-2 />img srchttps://www.comasso.org/images/logo_escrypt.png iditem-3 />img srchttps://www.comasso.org/images/logo_cnh.png iditem-21>img srchttps://www.comasso.org/images/logo_man.png iditem-9 />img srchttps://www.comasso.org/images/logo_jasmine.png iditem-11 />img srchttps://www.comasso.org/images/Logo_TataElxsi.png iditem-12>img srchttps://www.comasso.org/images/logo_larsen.png iditem-13>img srchttps://www.comasso.org/images/logo_preh.png iditem-14>img srchttps://www.comasso.org/images/logo_hyundai.png iditem-23>img srchttps://www.comasso.org/images/logo_magnastyer.png iditem-15>img srchttps://www.comasso.org/images/logo_avl.png iditem-19>img srchttps://www.comasso.org/images/logo_esg.png iditem-25>img srchttps://www.comasso.org/images/logo_iav.png iditem-26>img srchttps://www.comasso.org/images/logo_opensynergy.png iditem-28>img srchttps://www.comasso.org/images/logo_esol.png iditem-29>img srchttps://www.comasso.org/images/logo_isys.png iditem-30>img srchttps://www.comasso.org/images/logo_mbtech.png iditem-31>img srchttps://www.comasso.org/images/logo_avelabs.png iditem-33>img srchttps://www.comasso.org/images/logo_dspace.png iditem-34>img srchttps://www.comasso.org/images/logo_etri1.png iditem-37>img srchttps://www.comasso.org/images/logo_gopel.png iditem-38>img srchttps://www.comasso.org/images/logo_popcorn1.png iditem-39>img srchttps://www.comasso.org/images/logo_argus.png iditem-40404040>/div> /div>script typetext/javascript>$(document).ready(function () { var carousel $(#carousel).waterwheelCarousel({ flankingItems: 3, autoPlay: 2000, movingToCenter: function ($item) { $(#callback-output).prepend(movingToCenter: + $item.attr(id) + br/>); }, movedToCenter: function ($item) { $(#callback-output).prepend(movedToCenter: + $item.attr(id) + br/>); }, movingFromCenter: function ($item) { $(#callback-output).prepend(movingFromCenter: + $item.attr(id) + br/>); }, movedFromCenter: function ($item) { $(#callback-output).prepend(movedFromCenter: + $item.attr(id) + br/>); }, clickedCenter: function ($item) { $(#callback-output).prepend(clickedCenter: + $item.attr(id) + br/>); } }); $(#prev).bind(click, function () { carousel.prev(); return false }); $(#next).bind(click, function () { carousel.next(); return false; }); $(#reload).bind(click, function () { newOptions eval(( + $(#newoptions).val() + )); carousel.reload(newOptions); return false; }); }); /*! * Waterwheel Carousel * Version 2.3.0 * https://www.bkosborne.com * * Copyright 2011-2013 Brian Osborne * Dual licensed under GPLv3 or MIT * Copies of the licenses have been distributed * with this plugin. * * Plugin written by Brian Osborne * for use with the jQuery JavaScript Framework * https://www.jquery.com */;(function ($) { use strict; $.fn.waterwheelCarousel function (startingOptions) { // Adds support for intializing multiple carousels from the same selector group if (this.length > 1) { this.each(function() { $(this).waterwheelCarousel(startingOptions); }); return this; // allow chaining } var carousel this; var options {}; var data {}; function initializeCarouselData() { data { itemsContainer: $(carousel), totalItems: $(carousel).find(img).length, containerWidth: $(carousel).width(), containerHeight: $(carousel).height(), currentCenterItem: null, previousCenterItem: null, items: , calculations: , carouselRotationsLeft: 0, currentlyMoving: false, itemsAnimating: 0, currentSpeed: options.speed, intervalTimer: null, currentDirection: forward, leftItemsCount: 0, rightItemsCount: 0, performingSetup: true }; data.itemsContainer.find(img).removeClass(options.activeClassName); } /** * This function will set the autoplay for the carousel to * automatically rotate it given the time in the options * Can clear the autoplay by passing in true */ function autoPlay(stop) { // clear timer clearTimeout(data.autoPlayTimer); // as long as no stop command, and autoplay isnt zeroed... if (!stop && options.autoPlay ! 0) { // set timer... data.autoPlayTimer setTimeout(function () { // to move the carousl in either direction... if (options.autoPlay > 0) { moveOnce(forward); } else { moveOnce(backward); } }, Math.abs(options.autoPlay)); } } /** * This function will preload all the images in the carousel before * calling the passed in callback function. This is only used so we can * properly determine the width and height of the items. This is not needed * if a user instead manually specifies that information. */ function preload(callback) { if (options.preloadImages false) { callback(); return; } var $imageElements data.itemsContainer.find(img), loadedImages 0, totalImages $imageElements.length; $imageElements.each(function () { $(this).bind(load, function () { // Add to number of images loaded and see if they are all done yet loadedImages + 1; if (loadedImages totalImages) { // All done, perform callback callback(); return; } }); // May need to manually reset the src to get the load event to fire // https://stackoverflow.com/questions/7137737/ie9-problems-with-jquery-load-event-not-firing $(this).attr(src, $(this).attr(src)); // If browser has cached the images, it may not call trigger a load. Detect this and do it ourselves if (this.complete) { $(this).trigger(load); } }); } /** * Makes a record of the original width and height of all the items in the carousel. * If we re-intialize the carousel, these values can be used to re-establish their * original dimensions. */ function setOriginalItemDimensions() { data.itemsContainer.find(img).each(function () { if ($(this).data(original_width) undefined || options.forcedImageWidth > 0) { $(this).data(original_width, $(this).width()); } if ($(this).data(original_height) undefined || options.forcedImageHeight > 0) { $(this).data(original_height, $(this).height()); } }); } /** * Users can pass in a specific width and height that should be applied to every image. * While this option can be used in conjunction with the image preloader, the intended * use case is for when the preloader is turned off and the images dont have defined * dimensions in CSS. The carousel needs dimensions one way or another to work properly. */ function forceImageDimensionsIfEnabled() { if (options.forcedImageWidth && options.forcedImageHeight) { data.itemsContainer.find(img).each(function () { $(this).width(options.forcedImageWidth); $(this).height(options.forcedImageHeight); }); } } /** * For each visible item slot (# of flanking items plus the middle), * we pre-calculate all of the properties that the item should possess while * occupying that slot. This saves us some time during the actual animation. */ function preCalculatePositionProperties() { // The 0 index is the center item in the carousel var $firstItem data.itemsContainer.find(img:first); data.calculations0 { distance: 0, offset: 0, opacity: 1 } // Then, for each number of flanking items (plus one more, see below), we // perform the calcations based on our user options var horizonOffset options.horizonOffset; var separation options.separation; for (var i 1; i options.flankingItems + 2; i++) { if (i > 1) { horizonOffset * options.horizonOffsetMultiplier; separation * options.separationMultiplier; } data.calculationsi { distance: data.calculationsi-1.distance + separation, offset: data.calculationsi-1.offset + horizonOffset, opacity: data.calculationsi-1.opacity * options.opacityMultiplier } } // We performed 1 extra set of calculations above so that the items that // are moving out of sight (based on # of flanking items) gracefully animate there // However, we need them to animate to hidden, so we set the opacity to 0 for // that last item if (options.edgeFadeEnabled) { data.calculationsoptions.flankingItems+1.opacity 0; } else { data.calculationsoptions.flankingItems+1 { distance: 0, offset: 0, opacity: 0 } } } /** * Here we prep the carousel and its items, like setting default CSS * attributes. All items start in the middle position by default * and will fan out from there during the first animation */ function setupCarousel() { // Fill in a data array with jQuery objects of all the images data.items data.itemsContainer.find(img); for (var i 0; i data.totalItems; i++) { data.itemsi $(data.itemsi); } // May need to set the horizon if it was set to auto if (options.horizon 0) { if (options.orientation horizontal) { options.horizon data.containerHeight / 2; } else { options.horizon data.containerWidth / 2; } } // Default all the items to the center position data.itemsContainer .css(position,relative) .find(img) .each(function () { // Figure out where the top and left positions for center should be var centerPosLeft, centerPosTop; if (options.orientation horizontal) { centerPosLeft (data.containerWidth / 2) - ($(this).data(original_width) / 2); centerPosTop options.horizon - ($(this).data(original_height) / 2); } else { centerPosLeft options.horizon - ($(this).data(original_width) / 2); centerPosTop (data.containerHeight / 2) - ($(this).data(original_height) / 2); } $(this) // Apply positioning and layering to the images .css({ left: centerPosLeft, top: centerPosTop, visibility: visible, position: absolute, z-index: 0, opacity: 0 }) // Give each image a data object so it remembers specific data about // its original form .data({ top: centerPosTop, left: centerPosLeft, oldPosition: 0, currentPosition: 0, depth: 0, opacity: 0 }) // The image has been setup... Now we can show it .show(); }); } /** * All the items to the left and right of the center item need to be * animated to their starting positions. This function will * figure out what items go where and will animate them there */ function setupStarterRotation() { options.startingItem (options.startingItem 0) ? Math.round(data.totalItems / 2) : options.startingItem; data.rightItemsCount Math.ceil((data.totalItems-1) / 2); data.leftItemsCount Math.floor((data.totalItems-1) / 2); // We are in effect rotating the carousel, so we need to set that data.carouselRotationsLeft 1; // Center item moveItem(data.itemsoptions.startingItem-1, 0); data.itemsoptions.startingItem-1.css(opacity, 1); // All the items to the right of center var itemIndex options.startingItem - 1; for (var pos 1; pos data.rightItemsCount; pos++) { (itemIndex data.totalItems - 1) ? itemIndex + 1 : itemIndex 0; data.itemsitemIndex.css(opacity, 1); moveItem(data.itemsitemIndex, pos); } // All items to left of center var itemIndex options.startingItem - 1; for (var pos -1; pos > data.leftItemsCount*-1; pos--) { (itemIndex > 0) ? itemIndex - 1 : itemIndex data.totalItems - 1; data.itemsitemIndex.css(opacity, 1); moveItem(data.itemsitemIndex, pos); } } /** * Given the item and position, this function will calculate the new data * for the item. One the calculations are done, it will store that data in * the items data object */ function performCalculations($item, newPosition) { var newDistanceFromCenter Math.abs(newPosition); // Distance to the center if (newDistanceFromCenter options.flankingItems + 1) { var calculations data.calculationsnewDistanceFromCenter; } else { var calculations data.calculationsoptions.flankingItems + 1; } var distanceFactor Math.pow(options.sizeMultiplier, newDistanceFromCenter) var newWidth distanceFactor * $item.data(original_width); var newHeight distanceFactor * $item.data(original_height); var widthDifference Math.abs($item.width() - newWidth); var heightDifference Math.abs($item.height() - newHeight); var newOffset calculations.offset var newDistance calculations.distance; if (newPosition 0) { newDistance * -1; } if (options.orientation horizontal) { var center data.containerWidth / 2; var newLeft center + newDistance - (newWidth / 2); var newTop options.horizon - newOffset - (newHeight / 2); } else { var center data.containerHeight / 2; var newLeft options.horizon - newOffset - (newWidth / 2); var newTop center + newDistance - (newHeight / 2); } var newOpacity; if (newPosition 0) { newOpacity 1; } else { newOpacity calculations.opacity; } // Depth will be reverse distance from center var newDepth options.flankingItems + 2 - newDistanceFromCenter; $item.data(width,newWidth); $item.data(height,newHeight); $item.data(top,newTop); $item.data(left,newLeft); $item.data(oldPosition,$item.data(currentPosition)); $item.data(depth,newDepth); $item.data(opacity,newOpacity); } function moveItem($item, newPosition) { // Only want to physically move the item if it is within the boundaries // or in the first position just outside either boundary if (Math.abs(newPosition) options.flankingItems + 1) { performCalculations($item, newPosition); data.itemsAnimating++; $item .css(z-index,$item.data().depth) // Animate the items to their new position values .animate({ left: $item.data().left, width: $item.data().width, height: $item.data().height, top: $item.data().top, opacity: $item.data().opacity }, data.currentSpeed, options.animationEasing, function () { // Animation for the item has completed, call method itemAnimationComplete($item, newPosition); }); } else { $item.data(currentPosition, newPosition) // Move the item to the hidden position if hasnt been moved yet // This is for the intitial setup if ($item.data(oldPosition) 0) { $item.css({ left: $item.data().left, width: $item.data().width, height: $item.data().height, top: $item.data().top, opacity: $item.data().opacity, z-index: $item.data().depth }); } } } /** * This function is called once an item has finished animating to its * given position. Several different statements are executed here, such as * dealing with the animation queue */ function itemAnimationComplete($item, newPosition) { data.itemsAnimating--; $item.data(currentPosition, newPosition); // Keep track of what items came and left the center position, // so we can fire callbacks when all the rotations are completed if (newPosition 0) { data.currentCenterItem $item; } // all items have finished their rotation, lets clean up if (data.itemsAnimating 0) { data.carouselRotationsLeft - 1; data.currentlyMoving false; // If there are still rotations left in the queue, rotate the carousel again // we pass in zero because we dont want to add any additional rotations if (data.carouselRotationsLeft > 0) { rotateCarousel(0); // Otherwise there are no more rotations and... } else { // Reset the speed of the carousel to original data.currentSpeed options.speed; data.currentCenterItem.addClass(options.activeClassName); if (data.performingSetup false) { options.movedToCenter(data.currentCenterItem); options.movedFromCenter(data.previousCenterItem); } data.performingSetup false; // reset & initate the autoPlay autoPlay(); } } } /** * Function called to rotate the carousel the given number of rotations * in the given direciton. Will check to make sure the carousel should * be able to move, and then adjust speed and move items */ function rotateCarousel(rotations) { // Check to see that a rotation is allowed if (data.currentlyMoving false) { // Remove active class from the center item while we rotate data.currentCenterItem.removeClass(options.activeClassName); data.currentlyMoving true; data.itemsAnimating 0; data.carouselRotationsLeft + rotations; if (options.quickerForFurther true) { // Figure out how fast the carousel should rotate if (rotations > 1) { data.currentSpeed options.speed / rotations; } // Assure the speed is above the minimum to avoid weird results data.currentSpeed (data.currentSpeed 100) ? 100 : data.currentSpeed; } // Iterate thru each item and move it for (var i 0; i data.totalItems; i++) { var $item $(data.itemsi); var currentPosition $item.data(currentPosition); var newPosition; if (data.currentDirection forward) { newPosition currentPosition - 1; } else { newPosition currentPosition + 1; } // We keep both sides as even as possible to allow circular rotation to work. // We will wrap the item arround to the other side by negating its current position var flankingAllowance (newPosition > 0) ? data.rightItemsCount : data.leftItemsCount; if (Math.abs(newPosition) > flankingAllowance) { newPosition currentPosition * -1; // If theres an uneven number of flanking items, we need to compenstate for that // when we have an item switch sides. The right side will always have 1 more in that case if (data.totalItems % 2 0) { newPosition + 1; } } moveItem($item, newPosition); } } } /** * The event handler when an image within the carousel is clicked * This function will rotate the carousel the correct number of rotations * to get the clicked item to the center, or will fire the custom event * the user passed in if the center item is clicked $(this).find(img).bind(click, function () { var itemPosition $(this).data().currentPosition; if (options.imageNav false) { return; } // Dont allow hidden items to be clicked if (Math.abs(itemPosition) > options.flankingItems + 1) { return; } // Do nothing if the carousel is already moving if (data.currentlyMoving) { return; } data.previousCenterItem data.currentCenterItem; // Remove autoplay autoPlay(true); options.autoPlay 0; var rotations Math.abs(itemPosition); if (itemPosition 0) { options.clickedCenter($(this)); } else { // Fire the moving callbacks options.movingFromCenter(data.currentCenterItem); options.movingToCenter($(this)); if (itemPosition 0) { data.currentDirection backward; rotateCarousel(rotations); } else if (itemPosition > 0) { data.currentDirection forward; rotateCarousel(rotations); } } }); /** * The user may choose to wrap the images is link tags. If they do this, we need to * make sure that they arent active for certain situations */ $(this).find(a).bind(click, function (event) { var isCenter $(this).find(img).data(currentPosition) 0; // should we disable the links? if (options.linkHandling 1 || // turn off all links (options.linkHandling 2 && !isCenter)) // turn off all links except center { event.preventDefault(); return false; } }); function nextItemFromCenter() { var $next data.currentCenterItem.next(); if ($next.length 0) { $next data.currentCenterItem.parent().children().first(); } return $next; } function prevItemFromCenter() { var $prev data.currentCenterItem.prev(); if ($prev.length 0) { $prev data.currentCenterItem.parent().children().last(); } return $prev; } /** * Intiate a move of the carousel in either direction. Takes care of firing * the moving callbacks */ function moveOnce(direction) { if (data.currentlyMoving false) { data.previousCenterItem data.currentCenterItem; options.movingFromCenter(data.currentCenterItem); if (direction backward) { options.movingToCenter(prevItemFromCenter()); data.currentDirection backward; } else if (direction forward) { options.movingToCenter(nextItemFromCenter()); data.currentDirection forward; } } rotateCarousel(1); } /** * Navigation with arrow keys */ $(document).keydown(function(e) { if (options.keyboardNav) { // arrow left or up if ((e.which 37 && options.orientation horizontal) || (e.which 38 && options.orientation vertical)) { autoPlay(true); options.autoPlay 0; moveOnce(backward); // arrow right or down } else if ((e.which 39 && options.orientation horizontal) || (e.which 40 && options.orientation vertical)) { autoPlay(true); options.autoPlay 0; moveOnce(forward); } // should we override the normal functionality for the arrow keys? if (options.keyboardNavOverride && ( (options.orientation horizontal && (e.which 37 || e.which 39)) || (options.orientation vertical && (e.which 38 || e.which 40)) )) { e.preventDefault(); return false; } } }); /** * Public API methods */ this.reload function (newOptions) { if (typeof newOptions object) { var combineDefaultWith newOptions; } else { var combineDefaultWith {}; } options $.extend({}, $.fn.waterwheelCarousel.defaults, newOptions); initializeCarouselData(); data.itemsContainer.find(img).hide(); forceImageDimensionsIfEnabled(); preload(function () { setOriginalItemDimensions(); preCalculatePositionProperties(); setupCarousel(); setupStarterRotation(); }); } this.next function() { moveOnce(forward); autoPlay(true); options.autoPlay 3000; } this.prev function () { moveOnce(backward); autoPlay(true); options.autoPlay 3000; } this.reload(startingOptions); return this; }; $.fn.waterwheelCarousel.defaults { // number tweeks to change apperance startingItem: 1, // item to place in the center of the carousel. Set to 0 for auto separation: 195, // distance between items in carousel separationMultiplier: 0.6, // multipled by separation distance to increase/decrease distance for each additional item horizonOffset: 0, // offset each item from the horizon by this amount (causes arching) horizonOffsetMultiplier: 1, // multipled by horizon offset to increase/decrease offset for each additional item sizeMultiplier: 0.7, // determines how drastically the size of each item changes opacityMultiplier: 0.8, // determines how drastically the opacity of each item changes horizon: 0, // how far in the horizontal/vertical horizon should be set from the container wall. 0 for auto flankingItems: 3, // the number of items visible on either side of the center // animation speed: 300, // speed in milliseconds it will take to rotate from one to the next animationEasing: linear, // the easing effect to use when animating quickerForFurther: true, // set to true to make animations faster when clicking an item that is far away from the center edgeFadeEnabled: false, // when true, items fade off into nothingness when reaching the edge. false to have them move behind the center image // misc linkHandling: 2, // 1 to disable all (used for facebox), 2 to disable all but center (to link images out) autoPlay: 0, // indicate the speed in milliseconds to wait before autorotating. 0 to turn off. Can be negative orientation: horizontal, // indicate if the carousel should be horizontal or vertical activeClassName: carousel-center, // the name of the class given to the current item in the center keyboardNav: false, // set to true to move the carousel with the arrow keys keyboardNavOverride: true, // set to true to override the normal functionality of the arrow keys (prevents scrolling) imageNav: true, // clicking a non-center image will rotate that image to the center // preloader preloadImages: true, // disable/enable the image preloader. forcedImageWidth: 0, // specify width of all images; otherwise the carousel tries to calculate it forcedImageHeight: 0, // specify height of all images; otherwise the carousel tries to calculate it // callback functions movingToCenter: $.noop, // fired when an item is about to move to the center position movedToCenter: $.noop, // fired when an item has finished moving to the center clickedCenter: $.noop, // fired when the center item has been clicked movingFromCenter: $.noop, // fired when an item is about to leave the center position movedFromCenter: $.noop // fired when an item has finished moving from the center };})(jQuery); /script> /body>/html> div styleclear:both;>/div>/div> /div>/div> /div> div idajax-indicator styledisplay:none;>span>Loading.../span>/div>div idajax-modal styledisplay:none;>/div>div idfooter> div classbgl>div classbgr> Powered by a hrefhttps://www.redmine.org/>Redmine/a> © 2014-2020 Jean-Philippe Lang Disclaimer : Best viewed in 1024x768 resolution/div>/div>/div> /div>/div>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]