JSW Steel
  • Products
    • Carbon Steel Plate
    • DSAW Pipe
    • Hot Rolled Coil
  • Sustainability
  • About Us
    • JSW USA
    • Leadership
    • Baytown
    • Mingo Junction
  • Careers
  • Media
  • Steel Path
  • Contact Us
Select Page

JSW Steel USA

  • Follow
  • Follow
  • Follow
Privacy Policy
Terms and Conditions
Site by PREDICTif Solutions
© 2025 JSW Steel USA

Jose Torres

Senior Vice President, Mingo Junction

Biography

Mr. Torres joined JSW Steel USA in 2025 as Senior Vice President, Mingo Junction. He has an Electrical Engineering degree from the University of Los Andes as well as a postgraduate specialization in Design & Industrial Maintenance from the University of Simon Bolivar. He began his professional career in 2002 as a Maintenance Engineer in Venezuela working for Ternium in their EAF-based steel shop. Mr. Torres moved to the United States in 2008 where he began working for Tenaris. Mr. Torres joins JSW USA from his previous role as Vice North American Operations President North American Operations, responsible for the oversight of complex manufacturing processes and guiding strategic initiatives for steelmaking and rolling operations in Pennsylvania and Ohio. He has been part of several turnarounds from multiple acquisitions in North America, successfully integrating multidisciplinary and multicultural teams from former Maverick Tube Corporation, Hydril Company, and TMK-Ipsco Tubulars.

Robert Simon

Chief Executive Officer

Biography

Mr. Simon is a graduate of West Virginia University with a Bachelor of Science in Industrial Engineering. He began his professional career as a Production Manager, and eventually as General Manager for Oregon Brass Works. He held several key positions at Evraz North America’s Rocky Mountain Steel Mills such as Vice-President & General Manager, and Executive Vice-President for the company’s Tubular Division. His career then expanded to Steel Dynamics, taking the role of Vice-President of Structural Products. He then became the Chief Executive Officer for Bayou Steel Group. Prior to joining JSW USA in March of 2024, he was a consultant for several companies based in Colorado. Mr. Simon has also served on the Executive Committee and as Chairman of the Steel Manufacturers Association, and as a Board Member of the American Institute of Steel Construction.

Cory Raimondi

Chief Commercial Officer

Biography

Mr. Raimondi attended Marian University of Indianapolis earning a Bachelor of Science and a Master of Business Administration in Business Commerce from Valparaiso University. Mr. Raimondi began his career in steel in 2005 in operations at ArcelorMittal. Throughout his career, he has taken on various key responsibilities, including roles at Trinity Industries, where he served as Chief Inspector supervising Quality Assurance plate mill inspection activities. He joined JSW Steel USA in July 2017. Since joining, he has held roles in Technical Sales and Marketing, Vice President of Sales and Marketing. As Chief Commercial Officer Mr. Raimondi oversees the Commercial aspects of Pipe, Plate, and Hot Rolled Coil.

Ben Schneider

Vice President of Plate Sales

Biography

Mr. Schneider attended Indiana University-Bloomington earning a Bachelor’s degree in Business Marketing and Management. Mr. Schneider began his career in steel in 2008 as an Account Manager Trainee and has since held several key responsibilities in roles at ArcelorMittal and SSAB Americas. He joined JSW Steel USA in October 2017. Since joining, he has held the role of Western States Sales Manager with customer responsibilities in a wide array of industry segments. As Vice President of Plate Sales, Mr. Schneider oversees the Commercial aspects of Plate.

Jonathan Shank

Chief Operating Officer – Mingo Junction

Biography

Mr. Shank holds a Bachelor and Master of Science in Material Science Engineering, and an Executive Master of Business Administration from the University of Pittsburgh. He also obtained a Lean Six Sigma Black Belt Certification from Kent State University. He joined JSW Steel USA as Director of Operations, Steelmaking in 2019 from a leadership role at Ellwood Quality Steel. Mr. Shank was appointed in 2023 as Chief Operating Officer – Mingo Junction. Mr. Shank began his career in the steel industry in 1998 in a co-op program with AK Steel. 

Vinay Sharma

Vice President of Operations

Biography

Mr. Sharma attended Agra University in India where he received a Bachelor and Master of Science in Organic Chemistry. In July of 2023 he was appointed as Vice President of Operations, responsible for plate mill operations in Baytown, Texas. He began his career with Jindal SAW in Kosi Kalan, India. He joined JSW Steel USA Baytown in 2006. During his tenure, he has held several key positions such as Plant Manager of Coating, Manager and Director of FCHT and Coating, and Superintendent of Finishing and Coating.

Tejas Bhujle

Vice President – Financial Planning and Analysis

Biography

Mr. Bhujle has a Bachelor of Science in Accounting from Narsee Monjee College of Commerce and Economics, a Master of Science in Accounting from Brihan Maharashtra College of Commerce, and a Master of Business Administration from Virginia Polytechnic Institute and State University. He joined JSW Steel USA in 2007 as the Manager of Finance and Accounting. Mr. Bhujle is responsible for overseeing the annual budgeting and planning processes while ensuring the progression of the finance department.

Rahul Singh

Vice President – Finance & Controller Ohio

Biography

Mr. Singh has a Bachelor of Science in Commerce from the University of Mumbai. He is also a Certified Public Accountant in the state of Texas. Mr. Singh joined JSW Steel USA in March of 2019 as Vice President of Finance and Controller in Mingo Junction, Ohio. He previously held leadership positions at Halliburton Offshore Services and Tetra Technologies.

Sanjay Pipalia

Vice President – Finance & Controller Baytown

Biography

Mr. Pipalia is a graduate of the University of Calcutta with a Bachelor of Commerce in Accounting. He also holds a Licentiate and Associate held by the Institute of Insurance Surveyors and Adjusters, Bombay. Prior to joining JSW Group, he worked in Singapore with a trading company from 1992 to 1998. He began his career with JSW in 1998 with Jindal United Steel Corp (part of the O.P. Jindal Group) in Baytown where he was the controller for both the plate and pipe mill (Saw Pipes USA, Inc.). He then joined JSW Steel USA as Controller and Head of Commercial Purchasing when the Baytown facility was acquired in 2007. Mr Pipalia now serves as the Vice President of Finance and Controller operations and is also responsible for Slab Procurement for the Baytown operations of our Baytown operations.

Matt Caprarese

Vice President of Engineering, Health, Safety, & Environmental

Biography

Mr. Caprarese has a Bachelor of Science in Civil Engineering from Point Park University, a Bachelor of Science in Environmental Science from Bethany College, and a Master of Business Administration from Franciscan University of Steubenville and is a registered professional engineer, including licensure in Ohio and Texas. He began his career in the steel industry in 2000, which has since included serving in leadership roles at ArcelorMittal USA and United States Steel Corporation. Mr. Caprarese was the first salaried employee hired in 2018 at Mingo Junction under JSW ownership to help restart steelmaking operations at the site after being idle for nearly 10 years and has since helped to build the HSE, Engineering, and Sustainability teams and programs at both Baytown and Mingo Junction.

Terms & Conditions

Terms & Conditions of Sales – Baytown

Terms and Conditions of Purchase- Ohio 

Terms and Conditions of Sale- Ohio 

Paul Spicker

Vice President of Human Resources

Biography

Mr. Spicker holds a Master’s in Psychology from the University of Houston, a Juris Doctorate from South Texas College of Law, and a certified Senior Professional in Human Resources (SPHR). Mr. Spicker brings over 25 years of Human Resources and employment law expertise. He joined JSW Steel USA in March of 2023 as Vice President of Human Resources where he is responsible for implementing organization structure, strategy, and processes.

 

Mike Panzeri

Chief Operating Officer – Mingo Junction

Biography

Mr. Panzeri holds a Bachelor of Science in Materials Engineering from the Rensselaer Polytechnic Institute and a Master of Business Administration from the University of Maryland. He joined JSW Steel USA from TMK IPSCO in 2020, and as of April 2023, Mr. Panzeri was appointed as Chief Operating Officer – Mingo Junction and inducted as a member of the Board of JSW Steel USA. 

 

 

David Light

Chief Operating Officer – Baytown

Biography

Mr. Light attended Haslam College of Business at the University of Tennessee and Wentworth Institute of Technology. He joined JSW Steel USA in September of 2021 as Vice President of Plate Operations. He was appointed as Chief Operating Officer – Baytown in April of 2023 and inducted as a member of the Board of JSW Steel USA. Mr. Light began his career in the steel industry as a Coil Trimmer at Co-Steel Raritan in Perth Amboy, New Jersey. He has continued his leadership development working within Birmingham Steel, Charter Steel, Evraz USA, and Evraz Canada. He has held key positions in senior leadership from Plant Manager, Director of Operations, Vice President of Operations Canada, and Vice President of Operations in Colorado.

Example bio
Test

Biography

Mr. Pipalia is a graduate of the University of Calcutta with a Bachelor of Commerce in Accounting. He also holds a Licentiate and Associate held by the Institute of Insurance Surveyors and Adjusters, Bombay. Prior to joining JSW Group, he worked in Singapore with a trading company from 1992 to 1998. He began his career with JSW in 1998 with Jindal United Steel Corp (part of the O.P. Jindal Group) in Baytown where he was the controller for both the plate and pipe mill (Saw Pipes USA, Inc.). He then joined JSW Steel USA as Controller and Head of Commercial Purchasing when the Baytown facility was acquired in 2007. Mr Pipalia now serves as the VP of Finance and Controller operations and is also responsible for Slab Procurement for the Baytown operations of our Baytown operations.

Kelly B.

Marketing

Biography

Kelly B. Bio…

 
JSW Steel USA - Mingo Junction - History
JSW Steel USA Mingo Junction History
Jefferson Iron Works 1880 Management
Carnegie Steel at Mingo Junction 1911
1920's
1934
1958 Machine Shop Night Shift
1967 Caster Crew
previous arrow
next arrow
JSW Steel USA - Mingo Junction - History
JSW Steel USA Mingo Junction History
Jefferson Iron Works 1880 Management
Carnegie Steel at Mingo Junction 1911
1920's
1934
1958 Machine Shop Night Shift
1967 Caster Crew
previous arrow
next arrow
 
JSW Steel USA - Baytown - History
1967
US Steel Texas Works 1976
US Steel Texas
previous arrow
next arrow
JSW Steel USA - Baytown - History
1967
US Steel Texas Works 1976
US Steel Texas
previous arrow
next arrow

PROCESS FLOW OF DSAW PIPE

Joe

VP –  Analysis

Biography

Mr. Pipalia is a graduate of the University of Calcutta with a Bachelor of Commerce in Accounting. He also holds a Licentiate and Associate held by the Institute of Insurance Surveyors and Adjusters, Bombay. Prior to joining JSW Group, he worked in Singapore with a trading company from 1992 to 1998. He began his career with JSW in 1998 with Jindal United Steel Corp (part of the O.P. Jindal Group) in Baytown where he was the controller for both the plate and pipe mill (Saw Pipes USA, Inc.). He then joined JSW Steel USA as Controller and Head of Commercial Purchasing when the Baytown facility was acquired in 2007. Mr Pipalia now serves as the VP of Finance and Controller operations and is also responsible for Slab Procurement for the Baytown operations of our Baytown operations.

Mark Bush

Chief Executive Officer

Mr. Bush joined JSW Steel in August 2020.

Previous Work Experience

Mr. Bush comes to JSW Steel USA from SSAB where he was head of the southern business team with responsibility for the cut-to-length facility in Houston, Texas as well as being the General Manager of Mobile Operations. Mark had been with SSAB since 1999 and started in the steel industry in 1994 with Gallatin Steel.

Educational Background

Mr. Bush attended RETS Electronics Institute achieving A.S. Electrical Engineering Technology.

Greg Manfredi

Chief Operating Officer Steel

Biography

Mr. Manfredi holds a Bachelor of Science in Mechanical Engineering from the University of Louisville. In addition, he holds an Executive Master of Business Administration from LeTourneau University and a Certification of Project Management from Xavier University. He joined JSW Steel USA in 2020, serving as the Chief Operating Officer of Steel of US operations. Mr. Manfredi began his career in management at TMK IPSCO in 2007. From there, he held several key positions at SSAB in Alabama, including NAD Superintendent of Primary Operations, Superintendent of Primary Operations, Manager of Maintenance of the Heat Treat Facility at the SSAB Mobile Facility, and Assistant General Manager and Manager of NAD CPDS.

Samir Kalra

Chief Financial Officer

Biography

Mr. Kalra has a Master of Business Administration from the Indian Institute of Management, Calcutta. In addition, he is a Chartered Accountant from the Institute of Chartered Accountants of India. He joined JSW Steel USA as Chief Financial Officer in September of 2019. Mr. Kalra comes to JSW Steel USA from GFG Alliance, New York where he served as CFO (US). Prior to that, Mr. Kalra was CFO, United States Steel Corporation – Tubular Products in Houston, and CFO, United States Steel Corporation – Europe in Slovakia. He worked at Essar Steel in New York from 2012 to 2016 and at ArcelorMittal from 2004 to 2012 in several roles of increasing responsibility in Poland, the UK, and Luxembourg including his last role with ArcelorMittal as CFO of ArcelorMittal International S.A. in Luxembourg.

Karen Renz

General Counsel

Biography

Ms. Renz has a Bachelor of Science in Business Administration, Finance from East Carolina University. In Addition, Ms. Renz has a JD, Law from the University of Miami School of Law. She joined JSW Steel USA as General Counsel in February 2019. Ms. Renz comes to JSW Steel USA from Graydon Head & Ritchey LLP, where her practice concentrated in the areas of corporate law with an emphasis on mergers and acquisitions.

Debasish Bhowmick

Chief Operating Officer – Pipe

Biography

Mr. Bhowmick attended Birla Institute of Technology where he achieved his LME Mechanical Engineering and LME-Sandwich, Mechanical Engineering. He joined JSW Steel USA in April 2020 as Chief Operating Officer of Pipe. Mr. Bhowmick was previously Vice President of Pipe Manufacturing at Welspun Tubular LLC. He began his career in the steel industry in 1987. He is a member of the American Society of Mechanical Engineers and the American Society for Nondestructive Testing.

Beth Krivosh

Vice President of Business Services

Biography

Mrs. Krivosh has a Bachelor of Science in Accounting and Business Administration from PennWest Edinboro University. Mrs. Krivosh joined JSW Steel in October 2019. Prior to joining JSW Steel USA, she served as Director of Corporate Procurement with NLMK USA (formerly Duferco Farrell) in Farrell, Pennsylvania for 28 years where she held a variety of managerial positions, and developed a broad-based knowledge of Procurement, Accounting, and Logistics.

Rick Middaugh
Vice President of Information Technology

Biography

Mr. Middaugh holds a Bachelor of Science in Management of Information Systems from the University of San Francisco. He joined JSW Steel USA in February of 2021 as Vice President of Information Technology. Mr. Middaugh has over 20 years of enterprise experience utilizing established and emerging technology to create innovative solutions for complex challenges. His portfolio of experience includes Director of Trading Systems at Dynegy and VP of IT at Ion Geophysical.

Albert Labasse

Vice President of Pipe Sales

Biography

Mr. Labasse has a Bachelor of Arts and a Master of Business Administration from Millsaps College. He joined JSW Steel USA in July of 2021 as Vice President of Pipe Sales. He has a reputation for building solid customer relationships and executing strong sales strategies. Mr. Labasse began his career in steel in 1996. He has expertise in global enterprise roles, including Director of Business Development at Pe Ben USA, and Project Sales Manager at Berg Pipe.

Jack Morrow

Vice President of Sales & Marketing – Coil

Biography

Mr. Morrow has a Bachelor of Science in Business Administration, Marketing and Management, from West Virginia University. He also is actively obtaining a variety of knowledge by attending industry and business seminars. He began his career in the steel industry in 1986 at Wheeling-Pittsburgh Steel. His leadership experience includes positions at Oxbow Steel International, and most recently Algoma Inc. He joined JSW Steel USA in August of 2022 where he serves as the Vice President of Sales & Marketing – Coil at our Mingo Junction, OH location.

Mingo Junction History Timeline

Jefferson Iron Works established

Labelle Iron Works purchased Jefferson Iron Works

Mingo Iron and Steel Works Company was established

Mingo Iron and Steel Works AKA Mingo Iron works merged with Junction Iron and Steel

Junction Iron and Steel Company changed the company name to Laughlin Junction Iron and Steel Company

Laughlin Steel sold to Aetna Standard Iron and Steel

National Steel Company bought out Aetna Standard Iron and Steel

Carnegie-Illinois Steel Company purchased National Steel (Subsidiary of United States Steel)

Carnegie Steel Plant in Mingo began operations

Wheeling Steel-Steubenville Works held World’s Record for Speed and Size for Hot Rolled Sheet Steel

Carnegie Illinois Steel Corporation – Mingo Works was bought out by Wheeling Steel Corporation – Renamed Steubenville South Plant

Wheeling Steel bought Carnegie Steel, and it was known as the Steubenville South or South Works

Wheeling Steel merged with Pittsburgh Steel to become Wheeling Pittsburgh Steel Corporation

The mill sold one-fourth of all steel in the US

Purchased by JSW Steel Ltd

JSW Steel USA Ohio has a vertically integrated model where scrap is used as a feedstock in the Electric Arc Furnace (EAF) and modified in the Ladle Metallurgy Furnace (LMF) to customer’s specifications to produce steel slabs

  1. 16 Jan
  2. 28 Feb
  3. 20 Mar
  4. 20 May
  5. 09 Jul
  6. 30 Aug
  7. 15 Sep
  8. 01 Nov
  9. 10 Dec
  10. 29 Jan
  11. 3 Mar

  • Prev
  • Next

  1. Horizontal Timeline

    January 16th, 2014

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum praesentium officia, fugit recusandae ipsa, quia velit nulla adipisci? Consequuntur aspernatur at, eaque hic repellendus sit dicta consequatur quae, ut harum ipsam molestias maxime non nisi reiciendis eligendi! Doloremque quia pariatur harum ea amet quibusdam quisquam, quae, temporibus dolores porro doloribus.

  2. Event title here

    February 28th, 2014

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum praesentium officia, fugit recusandae ipsa, quia velit nulla adipisci? Consequuntur aspernatur at, eaque hic repellendus sit dicta consequatur quae, ut harum ipsam molestias maxime non nisi reiciendis eligendi! Doloremque quia pariatur harum ea amet quibusdam quisquam, quae, temporibus dolores porro doloribus.

  3. Event title here

    March 20th, 2014

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum praesentium officia, fugit recusandae ipsa, quia velit nulla adipisci? Consequuntur aspernatur at, eaque hic repellendus sit dicta consequatur quae, ut harum ipsam molestias maxime non nisi reiciendis eligendi! Doloremque quia pariatur harum ea amet quibusdam quisquam, quae, temporibus dolores porro doloribus.

  4. Event title here

    May 20th, 2014

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum praesentium officia, fugit recusandae ipsa, quia velit nulla adipisci? Consequuntur aspernatur at, eaque hic repellendus sit dicta consequatur quae, ut harum ipsam molestias maxime non nisi reiciendis eligendi! Doloremque quia pariatur harum ea amet quibusdam quisquam, quae, temporibus dolores porro doloribus.

  5. Event title here

    July 9th, 2014

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum praesentium officia, fugit recusandae ipsa, quia velit nulla adipisci? Consequuntur aspernatur at, eaque hic repellendus sit dicta consequatur quae, ut harum ipsam molestias maxime non nisi reiciendis eligendi! Doloremque quia pariatur harum ea amet quibusdam quisquam, quae, temporibus dolores porro doloribus.

  6. Event title here

    August 30th, 2014

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum praesentium officia, fugit recusandae ipsa, quia velit nulla adipisci? Consequuntur aspernatur at, eaque hic repellendus sit dicta consequatur quae, ut harum ipsam molestias maxime non nisi reiciendis eligendi! Doloremque quia pariatur harum ea amet quibusdam quisquam, quae, temporibus dolores porro doloribus.

  7. Event title here

    September 15th, 2014

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum praesentium officia, fugit recusandae ipsa, quia velit nulla adipisci? Consequuntur aspernatur at, eaque hic repellendus sit dicta consequatur quae, ut harum ipsam molestias maxime non nisi reiciendis eligendi! Doloremque quia pariatur harum ea amet quibusdam quisquam, quae, temporibus dolores porro doloribus.

  8. Event title here

    November 1st, 2014

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum praesentium officia, fugit recusandae ipsa, quia velit nulla adipisci? Consequuntur aspernatur at, eaque hic repellendus sit dicta consequatur quae, ut harum ipsam molestias maxime non nisi reiciendis eligendi! Doloremque quia pariatur harum ea amet quibusdam quisquam, quae, temporibus dolores porro doloribus.

  9. Event title here

    December 10th, 2014

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum praesentium officia, fugit recusandae ipsa, quia velit nulla adipisci? Consequuntur aspernatur at, eaque hic repellendus sit dicta consequatur quae, ut harum ipsam molestias maxime non nisi reiciendis eligendi! Doloremque quia pariatur harum ea amet quibusdam quisquam, quae, temporibus dolores porro doloribus.

  10. Event title here

    January 19th, 2015

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum praesentium officia, fugit recusandae ipsa, quia velit nulla adipisci? Consequuntur aspernatur at, eaque hic repellendus sit dicta consequatur quae, ut harum ipsam molestias maxime non nisi reiciendis eligendi! Doloremque quia pariatur harum ea amet quibusdam quisquam, quae, temporibus dolores porro doloribus.

  11. Event title here

    March 3rd, 2015

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum praesentium officia, fugit recusandae ipsa, quia velit nulla adipisci? Consequuntur aspernatur at, eaque hic repellendus sit dicta consequatur quae, ut harum ipsam molestias maxime non nisi reiciendis eligendi! Doloremque quia pariatur harum ea amet quibusdam quisquam, quae, temporibus dolores porro doloribus.


jQuery(document).ready(function($){ var timelines = $('.cd-horizontal-timeline'), eventsMinDistance = 60; (timelines.length > 0) && initTimeline(timelines); function initTimeline(timelines) { timelines.each(function(){ var timeline = $(this), timelineComponents = {}; //cache timeline components timelineComponents['timelineWrapper'] = timeline.find('.events-wrapper'); timelineComponents['eventsWrapper'] = timelineComponents['timelineWrapper'].children('.events'); timelineComponents['fillingLine'] = timelineComponents['eventsWrapper'].children('.filling-line'); timelineComponents['timelineEvents'] = timelineComponents['eventsWrapper'].find('a'); timelineComponents['timelineDates'] = parseDate(timelineComponents['timelineEvents']); timelineComponents['eventsMinLapse'] = minLapse(timelineComponents['timelineDates']); timelineComponents['timelineNavigation'] = timeline.find('.cd-timeline-navigation'); timelineComponents['eventsContent'] = timeline.children('.events-content'); //assign a left postion to the single events along the timeline setDatePosition(timelineComponents, eventsMinDistance); //assign a width to the timeline var timelineTotWidth = setTimelineWidth(timelineComponents, eventsMinDistance); //the timeline has been initialize - show it timeline.addClass('loaded'); //detect click on the next arrow timelineComponents['timelineNavigation'].on('click', '.next', function(event){ event.preventDefault(); updateSlide(timelineComponents, timelineTotWidth, 'next'); }); //detect click on the prev arrow timelineComponents['timelineNavigation'].on('click', '.prev', function(event){ event.preventDefault(); updateSlide(timelineComponents, timelineTotWidth, 'prev'); }); //detect click on the a single event - show new event content timelineComponents['eventsWrapper'].on('click', 'a', function(event){ event.preventDefault(); timelineComponents['timelineEvents'].removeClass('selected'); $(this).addClass('selected'); updateOlderEvents($(this)); updateFilling($(this), timelineComponents['fillingLine'], timelineTotWidth); updateVisibleContent($(this), timelineComponents['eventsContent']); }); //on swipe, show next/prev event content timelineComponents['eventsContent'].on('swipeleft', function(){ var mq = checkMQ(); ( mq == 'mobile' ) && showNewContent(timelineComponents, timelineTotWidth, 'next'); }); timelineComponents['eventsContent'].on('swiperight', function(){ var mq = checkMQ(); ( mq == 'mobile' ) && showNewContent(timelineComponents, timelineTotWidth, 'prev'); }); //keyboard navigation $(document).keyup(function(event){ if(event.which=='37' && elementInViewport(timeline.get(0)) ) { showNewContent(timelineComponents, timelineTotWidth, 'prev'); } else if( event.which=='39' && elementInViewport(timeline.get(0))) { showNewContent(timelineComponents, timelineTotWidth, 'next'); } }); }); } function updateSlide(timelineComponents, timelineTotWidth, string) { //retrieve translateX value of timelineComponents['eventsWrapper'] var translateValue = getTranslateValue(timelineComponents['eventsWrapper']), wrapperWidth = Number(timelineComponents['timelineWrapper'].css('width').replace('px', '')); //translate the timeline to the left('next')/right('prev') (string == 'next') ? translateTimeline(timelineComponents, translateValue - wrapperWidth + eventsMinDistance, wrapperWidth - timelineTotWidth) : translateTimeline(timelineComponents, translateValue + wrapperWidth - eventsMinDistance); } function showNewContent(timelineComponents, timelineTotWidth, string) { //go from one event to the next/previous one var visibleContent = timelineComponents['eventsContent'].find('.selected'), newContent = ( string == 'next' ) ? visibleContent.next() : visibleContent.prev(); if ( newContent.length > 0 ) { //if there's a next/prev event - show it var selectedDate = timelineComponents['eventsWrapper'].find('.selected'), newEvent = ( string == 'next' ) ? selectedDate.parent('li').next('li').children('a') : selectedDate.parent('li').prev('li').children('a'); updateFilling(newEvent, timelineComponents['fillingLine'], timelineTotWidth); updateVisibleContent(newEvent, timelineComponents['eventsContent']); newEvent.addClass('selected'); selectedDate.removeClass('selected'); updateOlderEvents(newEvent); updateTimelinePosition(string, newEvent, timelineComponents, timelineTotWidth); } } function updateTimelinePosition(string, event, timelineComponents, timelineTotWidth) { //translate timeline to the left/right according to the position of the selected event var eventStyle = window.getComputedStyle(event.get(0), null), eventLeft = Number(eventStyle.getPropertyValue("left").replace('px', '')), timelineWidth = Number(timelineComponents['timelineWrapper'].css('width').replace('px', '')), timelineTotWidth = Number(timelineComponents['eventsWrapper'].css('width').replace('px', '')); var timelineTranslate = getTranslateValue(timelineComponents['eventsWrapper']); if( (string == 'next' && eventLeft > timelineWidth - timelineTranslate) || (string == 'prev' && eventLeft < - timelineTranslate) ) { translateTimeline(timelineComponents, - eventLeft + timelineWidth/2, timelineWidth - timelineTotWidth); } } function translateTimeline(timelineComponents, value, totWidth) { var eventsWrapper = timelineComponents['eventsWrapper'].get(0); value = (value > 0) ? 0 : value; //only negative translate value value = ( !(typeof totWidth === 'undefined') && value < totWidth ) ? totWidth : value; //do not translate more than timeline width setTransformValue(eventsWrapper, 'translateX', value+'px'); //update navigation arrows visibility (value == 0 ) ? timelineComponents['timelineNavigation'].find('.prev').addClass('inactive') : timelineComponents['timelineNavigation'].find('.prev').removeClass('inactive'); (value == totWidth ) ? timelineComponents['timelineNavigation'].find('.next').addClass('inactive') : timelineComponents['timelineNavigation'].find('.next').removeClass('inactive'); } function updateFilling(selectedEvent, filling, totWidth) { //change .filling-line length according to the selected event var eventStyle = window.getComputedStyle(selectedEvent.get(0), null), eventLeft = eventStyle.getPropertyValue("left"), eventWidth = eventStyle.getPropertyValue("width"); eventLeft = Number(eventLeft.replace('px', '')) + Number(eventWidth.replace('px', ''))/2; var scaleValue = eventLeft/totWidth; setTransformValue(filling.get(0), 'scaleX', scaleValue); } function setDatePosition(timelineComponents, min) { for (i = 0; i < timelineComponents['timelineDates'].length; i++) { var distance = daydiff(timelineComponents['timelineDates'][0], timelineComponents['timelineDates'][i]), distanceNorm = Math.round(distance/timelineComponents['eventsMinLapse']) + 2; timelineComponents['timelineEvents'].eq(i).css('left', distanceNorm*min+'px'); } } function setTimelineWidth(timelineComponents, width) { var timeSpan = daydiff(timelineComponents['timelineDates'][0], timelineComponents['timelineDates'][timelineComponents['timelineDates'].length-1]), timeSpanNorm = timeSpan/timelineComponents['eventsMinLapse'], timeSpanNorm = Math.round(timeSpanNorm) + 4, totalWidth = timeSpanNorm*width; timelineComponents['eventsWrapper'].css('width', totalWidth+'px'); updateFilling(timelineComponents['timelineEvents'].eq(0), timelineComponents['fillingLine'], totalWidth); return totalWidth; } function updateVisibleContent(event, eventsContent) { var eventDate = event.data('date'), visibleContent = eventsContent.find('.selected'), selectedContent = eventsContent.find('[data-date="'+ eventDate +'"]'), selectedContentHeight = selectedContent.height(); if (selectedContent.index() > visibleContent.index()) { var classEnetering = 'selected enter-right', classLeaving = 'leave-left'; } else { var classEnetering = 'selected enter-left', classLeaving = 'leave-right'; } selectedContent.attr('class', classEnetering); visibleContent.attr('class', classLeaving).one('webkitAnimationEnd oanimationend msAnimationEnd animationend', function(){ visibleContent.removeClass('leave-right leave-left'); selectedContent.removeClass('enter-left enter-right'); }); eventsContent.css('height', selectedContentHeight+'px'); } function updateOlderEvents(event) { event.parent('li').prevAll('li').children('a').addClass('older-event').end().end().nextAll('li').children('a').removeClass('older-event'); } function getTranslateValue(timeline) { var timelineStyle = window.getComputedStyle(timeline.get(0), null), timelineTranslate = timelineStyle.getPropertyValue("-webkit-transform") || timelineStyle.getPropertyValue("-moz-transform") || timelineStyle.getPropertyValue("-ms-transform") || timelineStyle.getPropertyValue("-o-transform") || timelineStyle.getPropertyValue("transform"); if( timelineTranslate.indexOf('(') >=0 ) { var timelineTranslate = timelineTranslate.split('(')[1]; timelineTranslate = timelineTranslate.split(')')[0]; timelineTranslate = timelineTranslate.split(','); var translateValue = timelineTranslate[4]; } else { var translateValue = 0; } return Number(translateValue); } function setTransformValue(element, property, value) { element.style["-webkit-transform"] = property+"("+value+")"; element.style["-moz-transform"] = property+"("+value+")"; element.style["-ms-transform"] = property+"("+value+")"; element.style["-o-transform"] = property+"("+value+")"; element.style["transform"] = property+"("+value+")"; } //based on https://stackoverflow.com/questions/542938/how-do-i-get-the-number-of-days-between-two-dates-in-javascript function parseDate(events) { var dateArrays = []; events.each(function(){ var dateComp = $(this).data('date').split('/'), newDate = new Date(dateComp[2], dateComp[1]-1, dateComp[0]); dateArrays.push(newDate); }); return dateArrays; } function parseDate2(events) { var dateArrays = []; events.each(function(){ var singleDate = $(this), dateComp = singleDate.data('date').split('T'); if( dateComp.length > 1 ) { //both DD/MM/YEAR and time are provided var dayComp = dateComp[0].split('/'), timeComp = dateComp[1].split(':'); } else if( dateComp[0].indexOf(':') >=0 ) { //only time is provide var dayComp = ["2000", "0", "0"], timeComp = dateComp[0].split(':'); } else { //only DD/MM/YEAR var dayComp = dateComp[0].split('/'), timeComp = ["0", "0"]; } var newDate = new Date(dayComp[2], dayComp[1]-1, dayComp[0], timeComp[0], timeComp[1]); dateArrays.push(newDate); }); return dateArrays; } function daydiff(first, second) { return Math.round((second-first)); } function minLapse(dates) { //determine the minimum distance among events var dateDistances = []; for (i = 1; i < dates.length; i++) { var distance = daydiff(dates[i-1], dates[i]); dateDistances.push(distance); } return Math.min.apply(null, dateDistances); } /* How to tell if a DOM element is visible in the current viewport? https://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport */ function elementInViewport(el) { var top = el.offsetTop; var left = el.offsetLeft; var width = el.offsetWidth; var height = el.offsetHeight; while(el.offsetParent) { el = el.offsetParent; top += el.offsetTop; left += el.offsetLeft; } return ( top < (window.pageYOffset + window.innerHeight) && left < (window.pageXOffset + window.innerWidth) && (top + height) > window.pageYOffset && (left + width) > window.pageXOffset ); } function checkMQ() { //check if mobile or desktop device return window.getComputedStyle(document.querySelector('.cd-horizontal-timeline'), '::before').getPropertyValue('content').replace(/'/g, "").replace(/"/g, ""); } });