Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Excerpt
HTML
<script>
function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
    results = regex.exec(location.search);
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

var product_filter = getParameterByName('prod');
var area_filter = getParameterByName('area');
var type_filter = getParameterByName('type');
</script>

<b>Filter by your interest:</b>
<script>
if(product_filter == "bas") {
document.write('<b><a href="https://training.2n.cz/display/TRG/2N+Training+and+Webinars?prod=bas">Basic Courses</a></b>');
} else {
document.write('<a href="https://training.2n.cz/display/TRG/2N+Training+and+Webinars?prod=bas">Basic Courses</a>');
}

if(product_filter == "adv") {
document.write(' - <b><a href="https://training.2n.cz/display/TRG/2N+Training+and+Webinars?prod=adv">Advanced Courses</a></b>');
} else {
document.write(' - <a href="https://training.2n.cz/display/TRG/2N+Training+and+Webinars?prod=adv">Advanced Courses</a>');
}

if(product_filter == "ovw") {
document.write(' - <b><a href="https://training.2n.cz/display/TRG/2N+Training+and+Webinars?prod=ovw">New Topics</a></b>');
} else {
document.write(' - <a href="https://training.2n.cz/display/TRG/2N+Training+and+Webinars?prod=ovw">New Topics</a>');
}

if(!product_filter) {
document.write(' - <b><a href="https://training.2n.cz/display/TRG/2N+Training+and+Webinars">All Webinars</a></b>&emsp; ');
} else {
document.write(' - <a href="https://training.2n.cz/display/TRG/2N+Training+and+Webinars">All Webinars</a>&emsp; ');
}
</script>



<b>Filter by type:</b>
<script>
if(type_filter == "Sales") {
document.write('<b><a href="https://training.2n.cz/display/TRG/2N+Training+and+Webinars?type=Sales">Sales</a></b>');
} else {
document.write('<a href="https://training.2n.cz/display/TRG/2N+Training+and+Webinars?type=Sales">Sales</a>');
}

if(type_filter == "Technical") {
document.write(' - <b><a href="https://training.2n.cz/display/TRG/2N+Training+and+Webinars?type=Technical">Technical</a></b><br>');
} else {
document.write(' - <a href="https://training.2n.cz/display/TRG/2N+Training+and+Webinars?type=Technical">Technical</a><br>');
}
</script>

<br>

<script>

var trainings_schedule = [


"30","11","2017","13:00","2N Elevator Systems","90","Robin Horniak",
"2N Elevator Systems","Technical","gws",


"31","5","2018","8:00","2N News - IP Intercoms and Access Solution Update","30","Michal Beran",
"hipcc","Technical","ovw",

"14","6","2018","13:00","2N News - 2N LTE Verso and 2N Access Commander Box","30","Michal Beran",
"ovw","Technical","ovw",

"6","9","2018","13:00","2N News - IP Intercoms Solution Update 2.24","35","Michal Beran",
"hipcc","Technical","ovw",

"25","10","2018","8:00","2N News - Answering Units","30","Ladislav Karlovský",
"hipcc","Technical","ovw",

"31","1","2019","9:00","2N News - Elevator Systems Update","50","Robin Horniak",
"lift","Technical","ovw",

"18","2","2019","9:00","2N IP Intercoms - Sales Overview","40","Lucie Sekničková",
"ipiso","Sales","bas",

"4","3","2019","9:00","2N Answering Units - Sales Overview","40","Lucie Sekničková",
"auso","Sales","bas",

"21","3","2019","9:00","2N Elevator Systems","60","Robin Horniak",
"lift","Technical","bas",

"21","8","2019","8:00","IP Solution for Smart City and Emergency Communication","40","Lucie Sekničková",
"acso","Sales","bas",


"26","8","2019","11:00","2N IP Access Control - Sales Overview","40","Lucie Sekničková",
"acso","Sales","bas",

"2","9","2019","8:00","2N IP Intercoms and Answering Units - Sales Overview","40","Lucie Sekničková",
"acso","Sales","bas",

"10","9","2019","9:00","2N Sales News - IP Intercoms in Residential Market","20","Lucie Sekničková",
"acso","Sales","bas",

"19","9","2019","8:00","2N IP Intercoms - Access Configuration","50","Michal Beran",
"hipcc","Technical","bas",

"19","9","2019","12:00","2N SIP Audio","50","Jaroslav Pipek",
"IP Audio","Technical","bas",

"1","10","2019","8:00","2N Residential Market Solution","35","Lucie Sekničková",
"acso","Sales","bas",

"3","10","2018","8:00","2N IP Intercoms - Basic Installation","50","Michal Beran",
"hipbi","Technical","bas",

"3","10","2019","12:00","2N Answering Units","50","Ladislav Karlovský",
"aus","Technical","ovw",

"7","10","2019","9:00","2N News - IP Intercoms Solution Update 2.27","30","Gareth Robinson",
"hipcc","Technical","ovw",

"8","10","2019","8:00","2N IP Access Control - Sales Overview","40","Lucie Sekničková",
"acso","Sales","bas",

"10","10","2018","8:00","2N IP Intercoms - Call Configuration","50","Michal Beran",
"hipcc","Technical","bas",

"10","10","2019","12:00","My2N - Mobile Video","50","Ladislav Karlovsky",
"My2n.","Technical","bas",

"17","10","2019","8:00","2N IP Intercoms - Access Configuration","50","Michal Beran",
"hipcc","Technical","bas",

"17","10","2019","12:00","2N Access Commander","80","Ondrej Sindelar",
"Learn about 2N access system and how it works together with our portfolio of IP intercoms.","Technical","bas",

"315","1011","2019","9:00","2N Residential Market Solution","30","Lucie Sekničková",
"acso","Sales","bas",

"7","11","2019","9:00","2N IP Intercoms - Basic Installation","50","Michal Beran",
"hipbi","Technical","bas",

"317","1011","20182019","13:00","2N Answering Units","50","Ladislav Karlovský",
"aus","Technical","ovw",


"714","11","2019","9:00","2N IP Intercoms - Call Configuration","50","Michal Beran",
"hipcc","Technical","bas",

"714","11","2019","13:00","2N SIP Audio","50","Jaroslav Pipek",
"IP Audio","Technical","bas",

"1419","11","2019","16:00","2N Residential Market Solution","40","Alexander Thatcher",
"acso","Sales","bas",

"21","11","2019","9:00","2N IP Intercoms - Access Configuration","50","Michal Beran",
"hipcc","Technical","bas",

"1421","11","2019","13:00","2N Access Commander","80","Ondrej Sindelar",
"Learn about 2N access system and how it works together with our portfolio of IP intercoms.","Technical","bas",

"27","11","2019","14:00","2N Media Library","30","Marek Chládek",
"Learn about 2N access system and how it works together with our portfolio of IP intercoms.","Sales","bas",

"5","12","2019","9:00","2N IP Intercoms - Basic Installation","50","Michal Beran",
"hipbi","Technical","bas",

"5","12","2019","13:00","2N Answering Units","50","Ladislav Karlovský",
"aus","Technical","ovw",

"12","12","2019","9:00","2N IP Intercoms - Call Configuration","50","Michal Beran",
"hipcc","Technical","bas",

"12","12","2019","13:00","2N IP Intercoms - Access Configuration","50","Michal Beran",
"hipcc","Technical","bas",




 ];

var HIPBI_description = [

"This basic technical training will introduce you to the range of 2N IP Intercoms and available hardware accessories.",

"<li>Understand the advantages of IP hardware and the 2N solution</li><li>Compare 2N Intercom models and discuss the suitable verticals for each one</li><li>Components required for mechanical installation</li><li>What accessories (readers, keypads, tamper switches, etc) are available for each model</li><li>What common accessories are available (answering units, electrical strikes, etc)</li><li>Discover which licenses are available, what they offer and how they work</li><li>Connecting your intercom to an IP network and setting its IP parameters</li><li>Accessing the intercom’s web interface and briefly exploring the main sections</li>",

"<li>Not required</li>"

];

var HIPCC_description = [

"This basic technical training will introduce to all the possibilities and features related to calling and equip you with all the know-how needed to set up audio and video calling between 2N Intercoms and other destinations, whether they be other 2N solutions or some 3rd party answering device. ",

"<li>Add users to the intercom’s directory and assign them multiple phone numbers</li><li>Set up calls to other 2N devices and to 3rd party VoIP destinations</li><li>Call with or without a SIP Proxy</li><li>Register to up to 2 SIP Proxy accounts and tell the intercom which account to use for a given number</li><li>Set up simultaneous calling to multiple destinations</li><li>Set up a chain of ‘fallback’ numbers</li><li>Define time profiles to govern when a number should be used or ignored</li><li>How to trigger calls using buttons, a keypad or a display</li><li>Use automation to trigger or react to calls</li><li>Access the intercom’s video stream even without a Videophone</li><li>Integrate with other platforms and products</li>",

"<li>Not required</li>"

];

var HIPAC_description = [

"This basic technical training introduces all the possibilities and features related to providing and restricting access via a 2N Intercom or Access unit.",

"<li>Add users to the intercom’s directory and enroll their access credentials</li><li>Connect a door lock to the intercom and control lock behavior</li><li>Control additional outputs, like parking barriers or window shutters</li><li>Grant access to your visitor from a remote location</li><li>Discover which access technologies (RFID, PIN Code, Bluetooth, NFC, Fingerprint) are supported by each 2N device </li><li>Control user access by time profile</li><li>Require multiple authentication </li><li>Enforce differing security policies according to time profile or direction of access</li><li>Switch on or off IP connected devices from the Intercom or Access Unit</li><li>Manipulate the Intercom or Access Unit’s outputs via its API</li><li>Detect door state changes and trigger alerts</li><li>Send or receive credentials via Wiegand</li>",

"<li>Not required</li>"

];

var HIPBS_description = [

"This basic technical training covers settings of most typical installations. Setup voice and video communication together with access control.",

"<li>Interconnection of 2N and 3rd party devices</li><li>Call routing scenarios</li><li>Access control scenarios</li><li>Call routing settings</li><li>Access control settings</li>",

"<li>Elementary networking (IP address, LAN, WAN, VoIP, SIP)</li>"

];

var HIPAS_description = [

"Find out extra features and learn how to set them up. Examples: Picture to email, External camera, Sound and Motion detection, Automation.",

"<li>Explanation of licensed features</li><li>Settings of licensed features</li><li>Other settings not mentioned in basic training</li>",

"<li>Elementary networking (IP address, LAN, WAN, VoIP, SIP)</li>"

];


var LIFT_description = [

"General trainning on Lift products.",

"<li>2N® Lift1 hardware and software configuration</li><li>2N® Lift8 hardware and software configuration</li><li>2N® LiftIP hardware and software configuration</li>",

"<li>No requirements</li>"

];


var IPISO_description = [

"Join our free sales training for 2N IP Intercoms overview that helps you to understand benefits of different solutions we offer, how and where you can use them!",

"<li>Market trends in IP intercoms</li><li>Focus on verticals and customers</li><li>Sales arguments why to use 2N solution</li><li>Licences</li><li>Success stories, unique features and benefits</li>",

"<li>No requirements</li>"

];

var AUSO_description = [
"The training is focused on presentation of all answering units 2N offers and will launch in the next months.",
"<li>General overview on 2N answering units.</li><li>What we sell now and how you can use it</li><li>2N Mobile Video from the sales perspective</li><li>What is coming in 2019 </li>",
"<li>No requirements</li>"
];



var IPAUSO_description = [
"The training is focused on presentation of all IP intercoms and answering units that 2n  offers and will launch in the next months.",
"<li>General overview on 2N IP intercoms and answering units</li><li>What we sell now and how you can offer it</li><li>Success stories</li><li>What is coming in 2019 </li><li>Ask questions and discuss your projects </li>",
"<li>No requirements</li>"
];

var ACSO_description = [
"The training is focused on presentation of all IP access control solutions 2N offers and will launch in the next months.",
"<li>General overview on 2N IP access control solutions</li><li>What we sell now and how you can offer it</li><li>Success stories</li><li>What is coming in 2019 </li><li>Ask questions and discuss your projects </li>",
"<li>No requirements</li>"
];



 var ACB_description = [

"This basic training introduces 2N® Access Commander and explains how it can be used to manage access via 2N® Access Units and 2N® IP Intercoms.",

"<li>The advantages of Access Control from 2N</li><li>Comparison with traditional access control systems (technology and price)</li><li>What licenses are available for Access Commander and what they provide</li><li>Installing and running Access Commander</li><li>Adding users and their access credentials</li><li>Adding 2N access devices and establishing Access Rules</li><li>Managing visitor access via Access Commander</li><li>Monitoring presence and Attendance in Access Commander</li><li>Setting up event-based notification and camera logs</li><li>Establishing and managing anti-passback areas</li>",

"<li>Elementary knowledge of networking<br>(IP address, LAN, WAN, SIP, virtual machine).</li>"

];

var HIPM_description = [

"The training is focused on the new features of the latest 2N® Indoor Touch FW and 2N® Helios IP Mobile application releases.",

"<li>New features of the 2N® Indoor Touch FW version 1.6.7</li><li>New features of the 2N® Helios IP Mobile version 4</li>",

"<li>Advanced training and experience with 2N® Helios IP usage</li><li>Experience with 2N® Indoor Touch usage</li>"

];

var HIPV_description = [

"Join our free sales training for 2N Helios IP Verso that helps you understand benefits of IP technology in intercom world and how and where you can offer it!",

"<li>Market trends for intercoms</li><li>Focus on verticals and customers (top 3 verticals)</li><li>What are customer's requirements</li><li>Sales arguments why to use 2N solution</li><li>How to create quotation</li><li>Success stories, unique features and benefits</li>",

"<li>No requirements</li>"

];

var MY2NT_description = [

"This basic training introduces the MY2N platform and its 2N® Mobile Video service, which lets you receive calls from your intercom remotely and remotely configure its calling behavior.",

"<li>What is the MY2N platform and what does it offer?</li><li>What is 2N® Mobile Video and how does it work?</li><li>Which products can I use with MY2N? (2N products or otherwise)</li><li>How to set up a Mobile Video account</li><li>How to add both calling sources and destinations</li><li>Setting up calls form the intercom to a Mobile Video device</li><li>Calling to several devices simultaneously</li><li>Triggering multiple switches form the Mobile Video app</li><li>Managing multiple sites or installations</li><li>Subscription pricing and payment</li>",

"<li>No requirements</li>"

];



var IPISEC_description = [
"You can sign up for our free commercial training on IP solution for smart city and emergency communication. The training helps you to understand the benefits of our solution and the possibilities of its commercialization.",
"<li>General info about 2N</li><li>Case studies on how you can use the solution</li><li>What products we offer for the solution</li><li>Integration with other systems</li><li>Possibility to consult your projects </li>",
"<li>No requirements</li>"
];

var AUS_description = [
"This basic technical training introduces the 2N® answering unit portfolio explores suitable installation environments for each model. You will learn how each product compares with the others and how to configure the devices to exploit the key features.",
"<li>Introduction to  the 2N Indoor Talk, 2N Indoor Compact and 2N Indoor Touch 2.0</li><li>Compare functional capabilities of each device</li><li>How to set up or restrict calls between intercoms and answering units</li><li>How to set up or restrict calls between answering units</li><li>How 3rd party apps can be used on the Indoor Touch and how to install them</li><li>Connecting an external camera for an alternative viewpoint of the door</li><li>Connecting a separate doorbell</li><li>Other features, like: Do Not Disturb mode, Video Preview, Missed Call Photo Log</li><li>Networking requirements for installations of various sizes</li>",
"<li>No requirements</li>"
];

var SIPA_description = [
"This basic technical training introduces the 2N® SIP Audio portfolio and typical use case scenarios. It also explores a range of features and how to configure them.",
"<li>Product description and comparison</li><li>Suitable verticals and use case scenarios</li><li>Transmitting sounds via an IP network to the 2N® SIP Speaker for indoor use</li><li>Transmitting sounds via an IP network to the 2N® SIP Speaker Horn, the loudest IP horn on the market, for indoor or outdoor use</li><li>How to transmit from an IP source to an analogue speaker or from an analogue source to an IP speaker using the 2N® SIP Audio Converter </li><li>Making live announcements to individual devices or entire zones via the 2N® SIP Mic</li><li>Playing stored recordings and messages on the fly or according to a schedule</li><li>Triggering HTTP requests and other actions from the 2N® SIP Mic</li>",
"<li>No requirements</li>"
];


var training_URI;

document.write('<table class="bordered"><tr><th>Date</th><th colspan="1">Your Time (24h)</th><th>Training</th><th>Duration</th><th>Type</th><th colspan="1">UTC Time</th></tr>');

var showall = false;

for (i = 0; i < trainings_schedule.length;) { 

if ((trainings_schedule[i+1] < 3) || ((trainings_schedule[i+1] == 3) && (trainings_schedule[i] < 12))) {
switch(trainings_schedule[i+3]) {
case "6:00" : training_hour = 6; phoenix = "1:00 (1AM)"; cape = "7:00 (7AM)"; tokyo = "15:00 (3PM)"; break;
case "7:00" : training_hour = 7; phoenix = "2:00 (2AM)"; cape = "8:00 (8AM)"; tokyo = "16:00 (4PM)"; break;
case "8:00" : training_hour = 8; phoenix = "3:00 (3AM)"; cape = "9:00 (9AM)"; tokyo = "17:00 (5PM)"; break;
case "9:00" : training_hour = 9; phoenix = "4:00 (4AM)"; cape = "10:00 (10AM)"; tokyo = "18:00 (6PM)"; break;
case "10:00" : training_hour = 10; phoenix = "5:00 (5AM)"; cape = "11:00 (11AM)"; tokyo = "19:00 (7PM)"; break;
case "11:00" : training_hour = 11; phoenix = "6:00 (6AM)"; cape = "12:00 (12PM)"; tokyo = "20:00 (8PM)"; break;
case "12:00" : training_hour = 12; phoenix = "7:00 (7AM)"; cape = "13:00 (1PM)"; tokyo = "21:00 (9PM)"; break;
case "13:00" : training_hour = 13; phoenix = "8:00 (8AM)"; cape = "14:00 (2PM)"; tokyo = "22:00 (10PM)"; break;
case "14:00" : training_hour = 14; phoenix = "9:00 (9AM)"; cape = "15:00 (3PM)"; tokyo = "23:00 (11PM)"; break;
case "15:00" : training_hour = 15; phoenix = "10:00 (10AM)"; cape = "16:00 (4PM)"; tokyo = "24:00 (12AM)"; break;
case "16:00" : training_hour = 16; phoenix = "11:00 (11AM)"; cape = "17:00 (5PM)"; tokyo = "1:00 (1AM,+1d)"; break;
case "17:00" : training_hour = 17; phoenix = "12:00 (12PM)"; cape = "18:00 (6PM)"; tokyo = "2:00 (2AM,+1d)"; break;
case "18:00" : training_hour = 18; phoenix = "13:00 (1PM)"; cape = "19:00 (7PM)"; tokyo = "3:00 (3AM,+1d)"; break;
case "19:00" : training_hour = 19; phoenix = "14:00 (2PM)"; cape = "20:00 (8PM)"; tokyo = "4:00 (4AM,+1d)"; break;
case "20:00" : training_hour = 20; phoenix = "15:00 (3PM)"; cape = "21:00 (9PM)"; tokyo = "5:00 (5AM,+1d)"; break;
case "21:00" : training_hour = 21; phoenix = "16:00 (4PM)"; cape = "22:00 (10PM)"; tokyo = "6:00 (6AM,+1d)"; break;
default : training_hour = "WrongTime"; break;
}
}

if (((trainings_schedule[i+1] == 3)  && (trainings_schedule[i] > 12)) && ((trainings_schedule[i+1] == 3) && (trainings_schedule[i] < 26))) {
switch(trainings_schedule[i+3]) {
case "6:00" : training_hour = 6; phoenix = "2:00 (2AM)"; cape = "7:00 (7AM)"; tokyo = "15:00 (3PM)"; break;
case "7:00" : training_hour = 7; phoenix = "3:00 (3AM)"; cape = "8:00 (8AM)"; tokyo = "16:00 (4PM)"; break;
case "8:00" : training_hour = 8; phoenix = "4:00 (4AM)"; cape = "9:00 (9AM)"; tokyo = "17:00 (5PM)"; break;
case "9:00" : training_hour = 9; phoenix = "5:00 (5AM)"; cape = "10:00 (10AM)"; tokyo = "18:00 (6PM)"; break;
case "10:00" : training_hour = 10; phoenix = "6:00 (6AM)"; cape = "11:00 (11AM)"; tokyo = "19:00 (7PM)"; break;
case "11:00" : training_hour = 11; phoenix = "7:00 (7AM)"; cape = "12:00 (12PM)"; tokyo = "20:00 (8PM)"; break;
case "12:00" : training_hour = 12; phoenix = "8:00 (8AM)"; cape = "13:00 (1PM)"; tokyo = "21:00 (9PM)"; break;
case "13:00" : training_hour = 13; phoenix = "9:00 (9AM)"; cape = "14:00 (2PM)"; tokyo = "22:00 (10PM)"; break;
case "14:00" : training_hour = 14; phoenix = "10:00 (10AM)"; cape = "15:00 (3PM)"; tokyo = "23:00 (11PM)"; break;
case "15:00" : training_hour = 15; phoenix = "11:00 (11AM)"; cape = "16:00 (4PM)"; tokyo = "24:00 (12AM)"; break;
case "16:00" : training_hour = 16; phoenix = "12:00 (12PM)"; cape = "17:00 (5PM)"; tokyo = "1:00 (1AM,+1d)"; break;
case "17:00" : training_hour = 17; phoenix = "13:00 (1PM)"; cape = "18:00 (6PM)"; tokyo = "2:00 (2AM,+1d)"; break;
case "18:00" : training_hour = 18; phoenix = "14:00 (2PM)"; cape = "19:00 (7PM)"; tokyo = "3:00 (3AM,+1d)"; break;
case "19:00" : training_hour = 19; phoenix = "15:00 (3PM)"; cape = "20:00 (8PM)"; tokyo = "4:00 (4AM,+1d)"; break;
case "20:00" : training_hour = 20; phoenix = "16:00 (4PM)"; cape = "21:00 (9PM)"; tokyo = "5:00 (5AM,+1d)"; break;
case "21:00" : training_hour = 21; phoenix = "17:00 (5PM)"; cape = "22:00 (10PM)"; tokyo = "6:00 (6AM,+1d)"; break;
default : training_hour = "WrongTime"; break;
}
}

if ((trainings_schedule[i+1] > 3) || ((trainings_schedule[i+1] == 3) && (trainings_schedule[i] > 26))) {
switch(trainings_schedule[i+3]) {
case "6:00" : training_hour = 6; phoenix = "2:00 (2AM)"; cape = "8:00 (8AM)"; tokyo = "15:00 (3PM)"; break;
case "7:00" : training_hour = 7; phoenix = "3:00 (3AM)"; cape = "9:00 (9AM)"; tokyo = "16:00 (4PM)"; break;
case "8:00" : training_hour = 8; phoenix = "4:00 (4AM)"; cape = "10:00 (10AM)"; tokyo = "17:00 (5PM)"; break;
case "9:00" : training_hour = 9; phoenix = "5:00 (5AM)"; cape = "11:00 (11AM)"; tokyo = "18:00 (6PM)"; break;
case "10:00" : training_hour = 10; phoenix = "6:00 (6AM)"; cape = "12:00 (12PM)"; tokyo = "19:00 (7PM)"; break;
case "11:00" : training_hour = 11; phoenix = "7:00 (7AM)"; cape = "13:00 (1PM)"; tokyo = "20:00 (8PM)"; break;
case "12:00" : training_hour = 12; phoenix = "8:00 (8AM)"; cape = "14:00 (2PM)"; tokyo = "21:00 (9PM)"; break;
case "13:00" : training_hour = 13; phoenix = "9:00 (9AM)"; cape = "15:00 (3PM)"; tokyo = "22:00 (10PM)"; break;
case "14:00" : training_hour = 14; phoenix = "10:00 (10AM)"; cape = "16:00 (4PM)"; tokyo = "23:00 (11PM)"; break;
case "15:00" : training_hour = 15; phoenix = "11:00 (11AM)"; cape = "17:00 (5PM)"; tokyo = "24:00 (12AM)"; break;
case "16:00" : training_hour = 16; phoenix = "12:00 (12PM)"; cape = "18:00 (6PM)"; tokyo = "1:00 (1AM,+1d)"; break;
case "17:00" : training_hour = 17; phoenix = "13:00 (1PM)"; cape = "19:00 (7PM)"; tokyo = "2:00 (2AM,+1d)"; break;
case "18:00" : training_hour = 18; phoenix = "14:00 (2PM)"; cape = "20:00 (8PM)"; tokyo = "3:00 (3AM,+1d)"; break;
case "19:00" : training_hour = 19; phoenix = "15:00 (3PM)"; cape = "21:00 (9PM)"; tokyo = "4:00 (4AM,+1d)"; break;
case "20:00" : training_hour = 20; phoenix = "16:00 (4PM)"; cape = "22:00 (10PM)"; tokyo = "5:00 (5AM,+1d)"; break;
case "21:00" : training_hour = 21; phoenix = "17:00 (5PM)"; cape = "23:00 (11PM)"; tokyo = "6:00 (6AM,+1d)"; break;
default : training_hour = "WrongTime"; break;
}
}

if (((trainings_schedule[i+1] == 11)  && (trainings_schedule[i] < 6)) || ((trainings_schedule[i+1] == 10) && (trainings_schedule[i] == 31))) {
switch(trainings_schedule[i+3]) {
case "6:00" : training_hour = 6; phoenix = "2:00 (2AM)"; cape = "7:00 (7AM)"; tokyo = "15:00 (3PM)"; break;
case "7:00" : training_hour = 7; phoenix = "3:00 (3AM)"; cape = "8:00 (8AM)"; tokyo = "16:00 (4PM)"; break;
case "8:00" : training_hour = 8; phoenix = "4:00 (4AM)"; cape = "9:00 (9AM)"; tokyo = "17:00 (5PM)"; break;
case "9:00" : training_hour = 9; phoenix = "5:00 (5AM)"; cape = "10:00 (10AM)"; tokyo = "18:00 (6PM)"; break;
case "10:00" : training_hour = 10; phoenix = "6:00 (6AM)"; cape = "11:00 (11AM)"; tokyo = "19:00 (7PM)"; break;
case "11:00" : training_hour = 11; phoenix = "7:00 (7AM)"; cape = "12:00 (12PM)"; tokyo = "20:00 (8PM)"; break;
case "12:00" : training_hour = 12; phoenix = "8:00 (8AM)"; cape = "13:00 (1PM)"; tokyo = "21:00 (9PM)"; break;
case "13:00" : training_hour = 13; phoenix = "9:00 (9AM)"; cape = "14:00 (2PM)"; tokyo = "22:00 (10PM)"; break;
case "14:00" : training_hour = 14; phoenix = "10:00 (10AM)"; cape = "15:00 (3PM)"; tokyo = "23:00 (11PM)"; break;
case "15:00" : training_hour = 15; phoenix = "11:00 (11AM)"; cape = "16:00 (4PM)"; tokyo = "24:00 (12AM)"; break;
case "16:00" : training_hour = 16; phoenix = "12:00 (12PM)"; cape = "17:00 (5PM)"; tokyo = "1:00 (1AM,+1d)"; break;
case "17:00" : training_hour = 17; phoenix = "13:00 (1PM)"; cape = "18:00 (6PM)"; tokyo = "2:00 (2AM,+1d)"; break;
case "18:00" : training_hour = 18; phoenix = "14:00 (2PM)"; cape = "19:00 (7PM)"; tokyo = "3:00 (3AM,+1d)"; break;
case "19:00" : training_hour = 19; phoenix = "15:00 (3PM)"; cape = "20:00 (8PM)"; tokyo = "4:00 (4AM,+1d)"; break;
case "20:00" : training_hour = 20; phoenix = "16:00 (4PM)"; cape = "21:00 (9PM)"; tokyo = "5:00 (5AM,+1d)"; break;
case "21:00" : training_hour = 21; phoenix = "17:00 (5PM)"; cape = "22:00 (10PM)"; tokyo = "6:00 (6AM,+1d)"; break;
default : training_hour = "WrongTime"; break;
}
}

if ((trainings_schedule[i+1] == 12) || ((trainings_schedule[i+1] == 11) && (trainings_schedule[i] > 6))) {
switch(trainings_schedule[i+3]) {
case "0:00" : training_hour = 0; phoenix = "X:00 (XAM)"; cape = "1:00 (1AM)"; tokyo = "9:00 (9AM)"; break;
case "6:00" : training_hour = 6; phoenix = "1:00 (1AM)"; cape = "7:00 (7AM)"; tokyo = "15:00 (3PM)"; break;
case "7:00" : training_hour = 7; phoenix = "2:00 (2AM)"; cape = "8:00 (8AM)"; tokyo = "16:00 (4PM)"; break;
case "8:00" : training_hour = 8; phoenix = "3:00 (3AM)"; cape = "9:00 (9AM)"; tokyo = "17:00 (5PM)"; break;
case "9:00" : training_hour = 9; phoenix = "4:00 (4AM)"; cape = "10:00 (10AM)"; tokyo = "18:00 (6PM)"; break;
case "10:00" : training_hour = 10; phoenix = "5:00 (5AM)"; cape = "11:00 (11AM)"; tokyo = "19:00 (7PM)"; break;
case "11:00" : training_hour = 11; phoenix = "6:00 (6AM)"; cape = "12:00 (12PM)"; tokyo = "20:00 (8PM)"; break;
case "12:00" : training_hour = 12; phoenix = "7:00 (7AM)"; cape = "13:00 (1PM)"; tokyo = "21:00 (9PM)"; break;
case "13:00" : training_hour = 13; phoenix = "8:00 (8AM)"; cape = "14:00 (2PM)"; tokyo = "22:00 (10PM)"; break;
case "14:00" : training_hour = 14; phoenix = "9:00 (9AM)"; cape = "15:00 (3PM)"; tokyo = "23:00 (11PM)"; break;
case "15:00" : training_hour = 15; phoenix = "10:00 (10AM)"; cape = "16:00 (4PM)"; tokyo = "24:00 (12AM)"; break;
case "16:00" : training_hour = 16; phoenix = "11:00 (11AM)"; cape = "17:00 (5PM)"; tokyo = "1:00 (1AM,+1d)"; break;
case "17:00" : training_hour = 17; phoenix = "12:00 (12PM)"; cape = "18:00 (6PM)"; tokyo = "2:00 (2AM,+1d)"; break;
case "18:00" : training_hour = 18; phoenix = "13:00 (1PM)"; cape = "19:00 (7PM)"; tokyo = "3:00 (3AM,+1d)"; break;
case "19:00" : training_hour = 19; phoenix = "14:00 (2PM)"; cape = "20:00 (8PM)"; tokyo = "4:00 (4AM,+1d)"; break;
case "20:00" : training_hour = 20; phoenix = "15:00 (3PM)"; cape = "21:00 (9PM)"; tokyo = "5:00 (5AM,+1d)"; break;
case "21:00" : training_hour = 21; phoenix = "16:00 (4PM)"; cape = "22:00 (10PM)"; tokyo = "6:00 (6AM,+1d)"; break;
default : training_hour = "WrongTime"; break;
}
}

var time_friendly;
time_friendly = false;

if(area_filter) {

if((area_filter == "AME") && (parseInt(training_hour) >= 13)) time_friendly = true;
if((area_filter == "EUR") && (parseInt(training_hour) >= 7) && (parseInt(training_hour) <= 15) ) time_friendly = true;
if((area_filter == "ASI") && (parseInt(training_hour) <= 10) ) time_friendly = true;
}

switch (trainings_schedule[i+4]) {

case "2N IP Intercoms Basic":
product = "hip";
training_type= "Technical";
break;
case "2N IP Intercoms Advanced":
product = "hip";
training_type= "Technical";
break;
case "2N IP Audio Basic":
product = "ipa";
training_type= "Technical";
break;
case "2N IP Audio Advanced":
product = "ipa";
training_type= "Technical";
break;
case "2N Elevator Systems":
product = "gws";
training_type= "Technical";
break;
case "2N Access Control Basic":
training_type= "Technical";
product = "ac";
break;
case "2N Access Control Sales":
training_type= "Sales";
product = "ac";
break;
case "2N Products Overview":
product = "ovw";
training_type= "Technical";
break;
case "2N IP Intercoms and Access Control Overview":
product = "ovw";
training_type= "Sales";
break;
case "2N Helios IP Verso Sales":
product = "hip";
training_type= "Sales";
break;
case "2N Helios IP Firmware 2.14":
product = "hip";
training_type= "Technical";
break;
default:
product = "unknown";
training_type= "Technical";
break;
}

if(!product_filter) {
if(!area_filter) {
if(!type_filter) showall = true;
}
}

var datumskoleni = new Date(trainings_schedule[i+2], trainings_schedule[i+1]-1, trainings_schedule[i], training_hour, 0, 0, 0);
var rozdilhodin = datumskoleni.getTimezoneOffset();
rozdilhodin = rozdilhodin/60;
tvuj_cas_skoleni = training_hour - rozdilhodin;






if (TrainingInFuture(training_hour,trainings_schedule[i],trainings_schedule[i+1],trainings_schedule[i+2]) && ((type_filter == trainings_schedule[i+8]) || (product_filter == trainings_schedule[i+9]) || showall || time_friendly)) {

if (trainings_schedule[i+4] == "2N IP Intercoms Basic") document.write('<tr class="basic">');
if (trainings_schedule[i+4] == "2N IP Intercoms Advanced") document.write('<tr class="advanced">');
if (trainings_schedule[i+4] == "2N IP Audio Basic") document.write('<tr class="basic">');
if (trainings_schedule[i+4] == "2N IP Audio Advanced") document.write('<tr class="advanced">');
if (trainings_schedule[i+4] == "2N Gateways Basic") document.write('<tr class="basic">');
if (trainings_schedule[i+4] == "2N Access Control Basic") document.write('<tr class="basic">');
 
document.write("<td>"+trainings_schedule[i]+"."+trainings_schedule[i+1]+"."+trainings_schedule[i+2]+"</td><td>"+tvuj_cas_skoleni+":00</td><td>");

 
document.write('<b><a href="https://training.2n.cz/display/TRG/Training+Registration+Form?D='+trainings_schedule[i]+'&M='+trainings_schedule[i+1]+'&Y='+trainings_schedule[i+2]+'&time='+trainings_schedule[i+3]+'&trg='+encodeURIComponent(trainings_schedule[i+4])+'&dur='+trainings_schedule[i+5]+'&who='+encodeURIComponent(trainings_schedule[i+6])+'">'+trainings_schedule[i+4]+'</a></b>');


 
document.write("</td><td>"+trainings_schedule[i+5]+" Minutes</td><td>"+trainings_schedule[i+8]+"</td><td>"+trainings_schedule[i+3]+"</td></tr>");

}

i=i+10;

}
document.write("</table>");

function TrainingInFuture(thour,tday,tmonth,tyear) {
var computer_time = new Date();
var UTC_day = computer_time.getUTCDate();
var UTC_hour = computer_time.getUTCHours()-1;
var UTC_month = computer_time.getUTCMonth()+1;
var UTC_year = computer_time.getUTCFullYear();

UTC_hour=UTC_hour+1;

if(tyear<UTC_year) return false;
if(tyear>UTC_year) return true;
if(tmonth<UTC_month) return false;
if(tmonth>UTC_month) return true;
if(tday<UTC_day) return false;
if(tday>UTC_day) return true;
if(thour<=UTC_hour) return false;
if(thour>UTC_hour) return true;

return true;

}
</script>

...