/* Oct 2 2015 14:18:15 @London Jianwei liu*/
//Add function for string format to javascript base liberay
String.prototype.format = function () {
var s = this;
for (var i = 0; i < arguments.length; i++) {
var reg = new RegExp("\\{" + i + "\\}", "gm");
s = s.replace(reg, arguments[i]);
}
return s;
}
function jqSelector(str) {
return str.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1');
}
var EntajQuery = {
/* Share */
Share: {
/** Data **/
Data: {
GetDataArrayFromString: function (inputStr, rowSpliter, colSpliter) {
var dataArray = [];
var subRow = inputStr.split(rowSpliter);
if (subRow.length > 0) {
//expand rows
var rows = document.getElementById("ctl00_MainContentPlaceHolder_cboDates").length;
for (var i = 0; i < rows; i++) {
dataArray.push([]);
}
//expand cols
for (var i = 0; i < rows; i++) {
var subColumn = subRow[i].split(colSpliter);
for (var j = 0; j < subColumn.length; j++) {
dataArray[i].push(subColumn[j]);
// if (j == 0) {
// var perIndex = (subColumn[2]);
// if (typeof perIndex !== 'undefined') {
// var timeString = $('option[value="' + perIndex + '"]').html();
// var subTimeArray = timeString.split(' ');
// var dateStr = subTimeArray[1].replace('-', '/').replace('-', '/').replace('Jan', '01').replace('Feb', '02').replace('Mar', '03').replace('Apr', '04').replace('May', '05').replace('Jun', '06').replace('Jul', '07').replace('Aug', '08').replace('Sep', '09').replace('Oct', '10').replace('Nov', '11').replace('Dec', '12');
// var timeStr = subTimeArray[2];
// var finalStr = dateStr + " " + timeStr;
// dataArray[i].push(finalStr);
// }
// }
// else {
// dataArray[i].push(subColumn[j]);
// }
}
}
}
return dataArray;
}
},
/** Data **/
/** Date time **/
DateTime: {
ConvertNETDateTimeToJSDateTime: function (netTime) {
var re = /-?\d+/;
var m = re.exec(netTime);
var d = new Date(parseInt(m[0]));
return d;
}
}
/** Date time **/
},
/* Share */
/* UI */
UI: {
/** Web Pages **/
WebPages: {
/*** Enta Web Show ***/
EntaWebShow: {
/**** Show Calendar ****/
ShowCalendar: {
Initial: function (firstPerformance, soldOutThreshold, limitedThreshold) {
var dataStr = $('input[id*="txtDates"]').val();
var dataArray = EntajQuery.Share.Data.GetDataArrayFromString(dataStr, '|', ';');
//get first available performance date as default
var currentTime = '';
//first available performance(available/limited)
if (firstPerformance == '1') {
for (var i = 0; i < dataArray.length; i++) {
if (dataArray[i][3] == '1') {
currentTime = dataArray[i][0];
break;
}
}
}
//first performance
else {
currentTime = dataArray[0][0];
}
var month = currentTime.substring(3, 5);
var year = currentTime.substring(6, 10);
var day = currentTime.substring(0, 2);
currentTime = year + "-" + month + '-' + day;
//Day format for calendar
var dayFormatStr = $('input[id*="txtDayFormat"]').val();
var subDayFormatStr = dayFormatStr.split('|').filter(Boolean);
//Month format for calendar
var monthFormatStr = $('input[id*="txtMonthFormat"]').val();
var subMonthFormatStr = monthFormatStr.split('|').filter(Boolean);
$('#calDates').datepicker({
//changeMonth: true,
// changeYear: true,
showOtherMonths: true,
selectOtherMonths: true,
monthNames: subMonthFormatStr,
//dayNamesMin: ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"],
dayNamesMin: subDayFormatStr,
firstDay: 0,
prevText: "<",
nextText: ">",
defaultDate: currentTime,
dateFormat: 'yy-mm-dd',
beforeShowDay: function (d) {
var title;
var month = (d.getMonth() + 1);
var day = d.getDate();
var year = d.getFullYear();
if (month < 10)
month = "0" + month;
if (d.getDate() < 10)
day = "0" + day;
title = day + '/' + month + '/' + year;
return [true, "", title];
},
onSelect: function (date, inst) {
//Block orginal click event, this is used to stop refresh the calendar
inst.show();
},
onChangeMonthYear: function (year, month, inst) {
//General all the calendar date item
EntajQuery.UI.WebPages.EntaWebShow.ShowCalendar.DisplayPerformanceOnCalendar(year, month, dataArray, soldOutThreshold, limitedThreshold);
}
});
//General all the calendar date item
EntajQuery.UI.WebPages.EntaWebShow.ShowCalendar.DisplayPerformanceOnCalendar(year, month, dataArray, soldOutThreshold, limitedThreshold);
//Calendar date click
$(document).on('click', '.tdDate', function (event) {
var title = $(this).attr('title');
var htmlDateLinkId = '#htmlDateDetailsLink' + title.replace(/\//g, '');
$(htmlDateLinkId).click();
});
//Performance click
$(document).on('click', '.tdPerformance', function (event) {
var perIndex = $(this).attr('perindex');
if (typeof perIndex != 'undefined') {
$('select[id*="cboDates"]').val(perIndex);
//Call cmdnext to post back
__doPostBack('ctl00$NavigationContentPlaceHolder$CmdNext', '');
}
});
},
DisplayPerformanceOnCalendar: function (year, month, dataArray, soldOutThreshold, limitedThreshold) {
if (month < 10)
month = '0' + month;
var appendTimeout;
clearTimeout(appendTimeout);
appendTimeout = setTimeout(function () {
$('.ui-state-default').each(function () {
var calDate = $(this).parent('td').attr('title');
var totalSeat = 0;
var totalPeformance = 0;
var averageSeats = 0;
var htmlPerformanceInfo = '
';
for (var i = 0; i < dataArray.length; i++) {
var perDate = dataArray[i][0];
var day = $(this).html();
if (day < 10)
day = '0' + day;
//Find match date
if (perDate.indexOf(calDate) != -1) {
var performanceSeat = parseInt(dataArray[i][6]);
totalSeat = totalSeat + performanceSeat;
totalPeformance++;
if (performanceSeat > soldOutThreshold) {
if (performanceSeat > limitedThreshold) {
htmlPerformanceInfo += '' + '' + dataArray[i][0].substring(11, 16) + ' | ' + '
';
}
else {
htmlPerformanceInfo += '' + '' + dataArray[i][0].substring(11, 16) + ' | ' + '
';
}
}
else {
htmlPerformanceInfo += '' + '' + dataArray[i][0].substring(11, 16) + ' | ' + '
';
}
}
}
htmlPerformanceInfo += '
';
if (totalPeformance > 0) {
averageSeats = totalSeat / totalPeformance;
if (averageSeats > soldOutThreshold) {
if (averageSeats > limitedThreshold) {
$(this).parent('td').addClass('tdDate tdAvailable');
}
else {
$(this).parent('td').addClass('tdDate tdLimited');
}
}
else {
$(this).parent('td').addClass('tdDate tdSold');
}
var htmlDateDetailsLinkId = 'htmlDateDetailsLink' + calDate.replace(/\//g, '')
var htmlItem = "";
$('#pnlHidden').append(htmlItem);
$('#' + htmlDateDetailsLinkId).colorbox({
rel: 'nofollow',
html: htmlPerformanceInfo,
current: false
});
}
});
}, 100);
},
},
/**** Show Calendar ****/
/**** Show performance ****/
ShowPerformance: {
Initial: function (firstPerformance, pro, performanceRoleType, performancePerformanceType) {
var dataStr = $('input[id*="txtDates"]').val();
var dataArray = EntajQuery.Share.Data.GetDataArrayFromString(dataStr, '|', ';');
//get first available performance date as default
var currentTime = '';
//first available performance(available/limited)
if (firstPerformance == '1') {
for (var i = 0; i < dataArray.length; i++) {
if (dataArray[i][3] == '1') {
currentTime = dataArray[i][0];
break;
}
}
}
//first performance
else {
currentTime = dataArray[0][0];
}
var month = currentTime.substring(3, 5);
var year = currentTime.substring(6, 10);
var day = currentTime.substring(0, 2);
currentTime = year + "-" + month + '-' + day;
//Day format for calendar
var dayFormatStr = $('input[id*="txtDayFormat"]').val();
var subDayFormatStr = dayFormatStr.split('|').filter(Boolean);
//Month format for calendar
var monthFormatStr = $('input[id*="txtMonthFormat"]').val();
var subMonthFormatStr = monthFormatStr.split('|').filter(Boolean);
$('#calDates').datepicker({
//changeMonth: true,
// changeYear: true,
showOtherMonths: true,
selectOtherMonths: true,
monthNames: subMonthFormatStr,
//dayNamesMin: ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"],
dayNamesMin: subDayFormatStr,
firstDay: 0,
prevText: "<",
nextText: ">",
defaultDate: currentTime,
dateFormat: 'yy-mm-dd',
beforeShowDay: function (d) {
var title;
var month = (d.getMonth() + 1);
var day = d.getDate();
var year = d.getFullYear();
if (month < 10)
month = "0" + month;
if (d.getDate() < 10)
day = "0" + day;
title = day + '/' + month + '/' + year;
return [true, "", title];
},
onSelect: function (date, inst) {
inst.show();
},
onChangeMonthYear: function (year, month, inst) {
EntajQuery.UI.WebPages.EntaWebShow.ShowPerformance.DisplayPerformanceOnCalendar(year, month, dataArray, pro, performanceRoleType, performancePerformanceType);
}
});
EntajQuery.UI.WebPages.EntaWebShow.ShowPerformance.DisplayPerformanceOnCalendar(year, month, dataArray, pro, performanceRoleType, performancePerformanceType);
$(document).on('click', '.lblEvent', function (event) {
var perIndex = $(this).attr('perindex');
if (typeof perIndex != 'undefined') {
$('select[id*="cboDates"]').val(perIndex);
//Call cmdnext to post back
__doPostBack('ctl00$NavigationContentPlaceHolder$CmdNext', '');
}
});
$(document).on('mouseover', ".lblAvailable", function () {
var perindex = $(this).attr('perindex');
if (typeof perindex !== 'undefined') {
$('p[perindex*="' + perindex + '"]').addClass('lblAvailablehover');
}
});
$(document).on('mouseout', ".lblAvailable", function () {
var perindex = $(this).attr('perindex');
if (typeof perindex !== 'undefined') {
$('p[perindex*="' + perindex + '"]').removeClass("lblAvailablehover");
}
});
$(document).on('mouseover', ".lblSold", function () {
var perindex = $(this).attr('perindex');
if (typeof perindex !== 'undefined') {
$('p[perindex*="' + perindex + '"]').addClass('lblSoldhover');
}
});
$(document).on('mouseout', ".lblSold", function () {
var perindex = $(this).attr('perindex');
if (typeof perindex !== 'undefined') {
$('p[perindex*="' + perindex + '"]').removeClass("lblSoldhover");
}
});
$(document).on('mouseover', ".lblLimited", function () {
var perindex = $(this).attr('perindex');
if (typeof perindex !== 'undefined') {
$('p[perindex*="' + perindex + '"]').addClass('lblLimitedhover');
}
});
$(document).on('mouseout', ".lblLimited", function () {
var perindex = $(this).attr('perindex');
if (typeof perindex !== 'undefined') {
$('p[perindex*="' + perindex + '"]').removeClass("lblLimitedhover");
}
});
},
DisplayPerformanceOnCalendar: function (year, month, dataArray, pro, performanceRoleType, performancePerformanceType) {
if (month < 10)
month = '0' + month;
var arrayPerformancePerformanceType = performancePerformanceType.split('|');
var appendTimeout;
clearTimeout(appendTimeout);
appendTimeout = setTimeout(function () {
//Only do it for 'CAR1'
if (performanceRoleType == 'Consecutive') {
for (var m = dataArray.length - 1; m > -1; m--) {
var pftid = dataArray[m][5];
var perindexP2 = dataArray[m][2];
for (var n = 0; n < arrayPerformancePerformanceType.length; n++) {
var arraySub = arrayPerformancePerformanceType[n].split(',');
//for fl2,fx2
if (pftid == arraySub[1]) {
//find paired fl1 or fx1
var perindexP1 = EntajQuery.UI.WebPages.EntaWebShow.ShowPerformance.FindPairedFL1OrFX1PerIndex(m, perindexP2, arraySub[0], dataArray);
$('option[value*="' + perindexP2 + '"]').attr('value', perindexP1);
}
}
}
}
$('.ui-state-default').each(function () {
for (var i = dataArray.length - 1; i > -1; i--) {
var perDate = dataArray[i][0];
var day = $(this).html();
if (day < 10)
day = '0' + day;
//var calDate = day + '/' + month + '/' + year;
var calDate = $(this).parent('td').attr('title');
//Find match date
if (perDate.indexOf(calDate) != -1) {
//add text
var classStr = 'lblAvailable';
if (dataArray[i][3] == '0')
classStr = 'lblSold';
else if (dataArray[i][4] == '0')
classStr = 'lblLimited';
var displayStr = dataArray[i][1];
var str = displayStr.replace(/\\n/g, "
");
var pftid = dataArray[i][5];
var perindex = dataArray[i][2];
if (dataArray[i][5] == 'SD' && classStr == 'lblAvailable')
classStr = 'lblAvailable MobileWithIcon SocialDistancing';
else if (dataArray[i][5] == 'SD' && classStr == 'lblLimited')
classStr = 'lblLimited MobileWithIcon SocialDistancing';
else if (dataArray[i][5] == 'AUD' && classStr == 'lblAvailable')
classStr = 'lblAvailable MobileWithIcon AudioDescribed';
else if (dataArray[i][5] == 'AUD' && classStr == 'lblLimited')
classStr = 'lblLimited MobileWithIcon AudioDescribed';
else if (dataArray[i][5] == 'CAP' && classStr == 'lblAvailable')
classStr = 'lblAvailable MobileWithIcon Captioned';
else if (dataArray[i][5] == 'CAP' && classStr == 'lblLimited')
classStr = 'lblLimited MobileWithIcon Captioned';
else if (dataArray[i][5] == 'REL' && classStr == 'lblAvailable')
classStr = 'lblAvailable MobileWithIcon Relaxed';
else if (dataArray[i][5] == 'REL' && classStr == 'lblLimited')
classStr = 'lblLimited MobileWithIcon Relaxed';
else if (dataArray[i][5] == 'SIG' && classStr == 'lblAvailable')
classStr = 'lblAvailable MobileWithIcon Signed';
else if (dataArray[i][5] == 'SIG' && classStr == 'lblLimited')
classStr = 'lblLimited MobileWithIcon Signed';
else if (dataArray[i][5] == 'PAB' && classStr == 'lblAvailable')
classStr = 'lblAvailable MobileWithIcon ParentAndBaby';
else if (dataArray[i][5] == 'PAB' && classStr == 'lblLimited')
classStr = 'lblLimited MobileWithIcon ParentAndBaby';
else if (dataArray[i][5] == 'DEM' && classStr == 'lblAvailable')
classStr = 'lblAvailable MobileWithIcon Dementia';
else if (dataArray[i][5] == 'DEM' && classStr == 'lblLimited')
classStr = 'lblLimited MobileWithIcon Dementia';
else if (dataArray[i][5] == 'VIP' && classStr == 'lblAvailable')
classStr = 'lblAvailable MobileWithIcon Star';
else if (dataArray[i][5] == 'VIP' && classStr == 'lblLimited')
classStr = 'lblLimited MobileWithIcon Star';
else if (dataArray[i][5] == 'PN' && classStr == 'lblAvailable')
classStr = 'lblAvailable MobileWithIcon Press';
else if (dataArray[i][5] == 'PN' && classStr == 'lblLimited')
classStr = 'lblLimited MobileWithIcon Press';
else if (dataArray[i][5] == 'CHA' && classStr == 'lblAvailable')
classStr = 'lblAvailable MobileWithIcon Charity';
else if (dataArray[i][5] == 'CHA' && classStr == 'lblLimited')
classStr = 'lblLimited MobileWithIcon Charity';
else if (dataArray[i][5] == 'PWD' && classStr == 'lblAvailable')
classStr = 'lblAvailable MobileWithIcon Password';
else if (dataArray[i][5] == 'PWD' && classStr == 'lblLimited')
classStr = 'lblLimited MobileWithIcon Password';
//Only do it for 'CAR1'
if (performanceRoleType == 'Consecutive') {
for (var j = 0; j < arrayPerformancePerformanceType.length; j++) {
var arraySub = arrayPerformancePerformanceType[j].split(',');
//for fl2,fx2
if (pftid == arraySub[1]) {
//find paired fl1 or fx1
perindex = EntajQuery.UI.WebPages.EntaWebShow.ShowPerformance.FindPairedFL1OrFX1PerIndex(i, perindex, arraySub[0], dataArray);
}
}
}
$(this).attr("perindex", perindex);
$(this).attr("pftid", pftid);
$(this).attr("day", $(this).html());
//classStr = 'GOL';
var html = '' + str + '
';
$(this).after(html);
//break;
}
}
});
}, 100);
},
FindPairedFL1OrFX1PerIndex: function (index, perindex, pftIdPart1, dataArray) {
var returnPerIndex = 0;
//find the perindex for previous part1
for (var i = index; i > -1; i--) {
if (dataArray[i][5] == pftIdPart1) {
returnPerIndex = dataArray[i][2];
break;
}
}
return returnPerIndex;
}
}
/**** Show performance ****/
}
/*** Enta Web Show ***/
}
/** Web Pages **/
}
/* UI */
}