//////////////////////////////////////////////////////////////////////////////// // // THIS CODE IS NOT APPROVED FOR USE IN/ON ANY OTHER UI ELEMENT OR PRODUCT COMPONENT. // Copyright (c) 2009 Microsoft Corporation. All rights reserved. // //////////////////////////////////////////////////////////////////////////////// var e = new Array(); var eItem = 0; var eZone = 1; var eOffset = 2; var zones = null; var zonesCount = 0; //////////////////////////////////////////////////////////////////////////////// // // update time zones // //////////////////////////////////////////////////////////////////////////////// function updateTimeZones(sortName) { zones = System.Time.timeZones; zonesCount = zones.count; if (sortName) { var zoneArray = new Array(); for (var i = 0; i < zonesCount; i++) { zoneArray[i] = [i, zones.item(i).displayName, zones.item(i).bias]; } var zoneArrayTemp1 = []; zoneArrayTemp1.push(zoneArray[0]); for (var i = 1; i < zoneArray.length; i++) { for (var j = 0; j < zoneArrayTemp1.length; j++) { if (zoneArray[i][eOffset] >= zoneArrayTemp1[j][eOffset]) { for (var k = zoneArrayTemp1.length - 1; k >= j; k--) { zoneArrayTemp1[k + 1] = zoneArrayTemp1[k]; } zoneArrayTemp1[j] = zoneArray[i]; if (zoneArrayTemp1[j + 1][eOffset] == zoneArrayTemp1[j][eOffset]) { var tempArray1 = []; var tempArray2 = []; for (var l = j; l < zoneArrayTemp1.length; l++) { if (zoneArrayTemp1[j][eOffset] != zoneArrayTemp1[l][eOffset]) { break; } tempArray1[zoneArrayTemp1[l][eZone]] = zoneArrayTemp1[l][eItem]; tempArray2[tempArray2.length] = zoneArrayTemp1[l][eZone]; } if (tempArray2.length > 1) { tempArray2.sort(); for (var l = 0; l < tempArray2.length; l++) { zoneArrayTemp1[j + l][0] = tempArray1[tempArray2[l]]; zoneArrayTemp1[j + l][1] = tempArray2[l]; } } } break; } } } zoneArrayTemp1.length--; var zoneArrayTemp2 = []; zoneArrayTemp2.push(zoneArray[0]); for (var i = 1; i < zoneArray.length; i++) { for (var j = 0; j < zoneArrayTemp2.length; j++) { if (zoneArray[i][eOffset] <= zoneArrayTemp2[j][eOffset]) { for (var k = zoneArrayTemp2.length - 1; k >= j; k--) { zoneArrayTemp2[k + 1] = zoneArrayTemp2[k]; } zoneArrayTemp2[j] = zoneArray[i]; if (zoneArrayTemp2[j + 1][eOffset] == zoneArrayTemp2[j][eOffset]) { var tempArray1 = []; var tempArray2 = []; for (var l = j; l < zoneArrayTemp2.length; l++) { if (zoneArrayTemp2[j][eOffset] != zoneArrayTemp2[l][eOffset]) { break; } tempArray1[zoneArrayTemp2[l][eZone]] = zoneArrayTemp2[l][eItem]; tempArray2[tempArray2.length] = zoneArrayTemp2[l][eZone]; } if (tempArray2.length > 1) { tempArray2.sort(compareDisplayName); for (var l = 0; l < tempArray2.length; l++) { zoneArrayTemp2[j + l][0] = tempArray1[tempArray2[l]]; zoneArrayTemp2[j + l][1] = tempArray2[l]; } } } break; } } } zoneArrayTemp2.reverse(); e = zoneArrayTemp1.concat(zoneArrayTemp2); } } //////////////////////////////////////////////////////////////////////////////// // // //////////////////////////////////////////////////////////////////////////////// function compareDisplayName(string1, string2) { for (var i = 0; i < Math.min(string1.length, string2.length); i++) { if (string1.charAt(i) != string2.charAt(i)) { return (string1.charAt(i) < string2.charAt(i) ? 1 : -1); } } return 0; } //////////////////////////////////////////////////////////////////////////////// // // get current local time // //////////////////////////////////////////////////////////////////////////////// function getCurrentTimeZone() { if (zonesCount > 0) { var curZone = System.Time.currentTimeZone; for (var i = 0; i < zonesCount; i++) { if (zones.item(i).standardDisplayName == curZone.standardDisplayName) { return i; } } } return -1; } //////////////////////////////////////////////////////////////////////////////// // // check to see if time zone within array // //////////////////////////////////////////////////////////////////////////////// function getValidTimeZone(index) { if (parseInt(index) > -1 && parseInt(index) < zonesCount) { return parseInt(index); } else { return -1; } }