function CreateDateSelector(control, prev, next, curr) {
	control.find('[val=prev]').click(prev);
	control.find('[val=next]').click(next);

	var dtmin = ParseDateTime(objSearchPassenger.gdEmbDate).toString('yyyyMMdd000000');
	var dtmax = ParseDateTime(objSearchPassenger.gdDisDate).toString('yyyyMMdd235959');
	var dtcur = curr ? curr : new Date().toString('yyyyMMddHHmmss');

	if (dtcur < dtmin) { dtcur = dtmin; }
	if (dtcur > dtmax) { dtcur = dtmax; }

	control.attr('min', dtmin);
	control.attr('max', dtmax);
	control.attr('cur', dtcur);
	control.find('[val=date]').html(ParseDateTime(dtcur).toString('dddd, dd.MM.yyyy'));
}

function ChangeDateSelector(control, shift) {
	var dtmin = ParseDateTime(control.attr('min'));
	var dtmax = ParseDateTime(control.attr('max'));
	var dtcur = ParseDateTime(control.attr('cur'));

	dtcur.setDate(dtcur.getDate() + shift);

	if (dtcur < dtmin) { dtcur = dtmin; }
	if (dtcur > dtmax) { dtcur = dtmax; }

	control.attr('cur', dtcur.toString('yyyyMMddHHmmss'));
	control.find('[val=prev]').toggle(dtcur > dtmin);
	control.find('[val=next]').toggle(dtcur < dtmax);
	control.find('[val=date]').html(dtcur.toString('dddd, dd.MM.yyyy'));
	return dtcur.toString('yyyyMMdd');
}

function ChangeDateSelectorTo(control, newdate) {
	var dtmin = ParseDateTime(control.attr('min'));
	var dtmax = ParseDateTime(control.attr('max'));
	var dtcur = ParseDateTime(newdate);

	if (dtcur < dtmin) { dtcur = dtmin; }
	if (dtcur > dtmax) { dtcur = dtmax; }

	control.attr('cur', dtcur.toString('yyyyMMddHHmmss'));
	control.find('[val=prev]').toggle(dtcur > dtmin);
	control.find('[val=next]').toggle(dtcur < dtmax);
	control.find('[val=date]').html(dtcur.toString('dddd, dd.MM.yyyy'));
	return dtcur.toString('yyyyMMdd');
}


/* new controls */

function CreateDatePicker(prev, next, cur, min, max) {
	var control = GetTemplateByCode('t007');
	UpdateClickable(prev, control.find('[val=prev]'), true);
	UpdateClickable(next, control.find('[val=next]'), true);

	var dtcur = cur ? GetDate(cur) : new Date().toString('yyyyMMdd');
	var dtmin = min ? GetDate(min) : GetDate(objSearchPassenger.gdEmbDate);// + '000000';
	var dtmax = max ? GetDate(max) : GetDate(objSearchPassenger.gdDisDate);// + '235959';

	if (dtcur < dtmin) { dtcur = dtmin; }
	if (dtcur > dtmax) { dtcur = dtmax; }

	control.attr('min', dtmin);
	control.attr('max', dtmax);
	control.attr('cur', dtcur);
	control.find('[val=date]').html(ParseDate(dtcur).toString('dddd, dd.MM.yyyy'));
	return control;
}

function UpdateDatePicker(identifier, value, shift) {
	var control = $(identifier);
	
	var dtmin = ParseDate(control.attr('min'));
	var dtmax = ParseDate(control.attr('max'));
	var dtcur = ParseDate(control.attr('cur'));

	if (value) { dtcur = ParseDate(value); }	
	if (shift) { dtcur.setDate(dtcur.getDate() + shift); }

	if (dtcur < dtmin) { dtcur = dtmin; }
	if (dtcur > dtmax) { dtcur = dtmax; }

	control.attr('cur', dtcur.toString('yyyyMMdd'));
	control.find('[val=prev]').toggle(dtcur > dtmin);
	control.find('[val=next]').toggle(dtcur < dtmax);
	control.find('[val=date]').html(dtcur.toString('dddd, dd.MM.yyyy'));
	return dtcur.toString('yyyyMMdd');
}


function CreateTabBar(items) {
	var tabbar = GetTemplateByCode('t008');
	$.each(items, function(index, value) {
		AppendTplItem(tabbar, PrepareT103(value[0], value[1], value[2], value[3]));
	});
	return tabbar;
}

function CreateFilter(title, items, value, onchange) {
	var filter = PrepareT011(title, onchange);
	$.each(items, function(index, text) {
		var selected = index == value;
		AppendTplItem(filter, PrepareT012(text, index, selected));
	});
	return filter;
}

function CreateList(title, items) {
	var list = GetTemplateByCode('t002');
	if (title) { AppendTplItem(list, PrepareT141(title)); }
	$.each(items, function(index, value) {
		AppendTplItem(list, (value.length == 3) ? PrepareT150(value[0], value[1], value[2]) : PrepareT100(value[0], value[1]));
	});
	return list;
}

function CreateListWithParams(title, items) {
	var list = GetTemplateByCode('t002');
	if (title) { AppendTplItem(list, PrepareT141(title)); }
	$.each(items, function(index, value) {
		AppendTplItem(list, (value.length == 4) ? PrepareT150(value[0], value[1], value[2], value[3]) : PrepareT100(value[0], value[1], value[2]));
	});
	return list;
}

function CreateIconizedList(title, items, nobullets, noicons) {
	var list = GetTemplateByCode('t002');
	if (title) { AppendTplItem(list, PrepareT105(title)); }
	$.each(items, function(index, value) {
		AppendTplItem(list, PrepareT152(value[0], value[1], value[2], value[3], value[4], nobullets, noicons)
		
		);
	});
	return list;
}

function CreateMulticolList(title, items) {
	var list = GetTemplateByCode('t002');
	if (title) { AppendTplItem(list, PrepareT105(title)); }
	$.each(items, function(index, value) {
		AppendTplItem(list, PrepareT123(value[0], value[1]));
	});
	return list;
}

function CreateTextPicker(values, texts, index) {
	var control = GetTemplateByCode('t034');

	var values2 = values.split('|');
	var texts2 = texts.split('|');
	if (values2.length != texts2.length) { return false; }

	if (index < 0) { index = 0; }
	if (index > values2.length - 1) { index = 0; }
	control.find('[val=prev]').toggle(index > 0);
	control.find('[val=next]').toggle(index < values2.length - 1);

	
	control.attr('values', values);
	control.attr('texts', texts);
	control.attr('index', index);
	control.find('[val=text]').html(texts2[index]);
	
	control.find('[val=prev]').click(function() { var control = $(this).parent(); return UpdateTextPicker(control, -1); });
	control.find('[val=next]').click(function() { var control = $(this).parent(); return UpdateTextPicker(control, +1); });
	control.find('[val=text]').click(function() { var control = $(this).parent(); return UpdateTextPicker(control, +1); });
//	control.find('[val=text]').swipe({
//		swipeLeft: function(e) { var control = $(e.target).parent(); return UpdateTextPicker(control, -1); },
//		swipeRight: function(e) { var control = $(e.target).parent(); return UpdateTextPicker(control, +1); }
//	});
	
	return control;
}

function UpdateTextPicker(control, shift) {
	var values = control.attr('values');
	var texts = control.attr('texts');
	
	var values2 = values.split('|');
	var texts2 = texts.split('|');
	if (values2.length != texts2.length) { return false; }

	var index = control.attr('index');
	index = parseInt(index);
	index += parseInt(shift);
	
	if (index < 0) { index = 0; }
	if (index > values2.length - 1) { index = 0; }
	control.find('[val=prev]').toggle(index > 0);
	control.find('[val=next]').toggle(index < values2.length - 1);
	
	control.attr('index', index);
	control.find('[val=text]').html(texts2[index]);

	return false; 
}

function CreateCheckBox(uid, name, value, checked, enabled, onclick, style) {
	return PrepareT035(uid, name, value, checked, enabled, onclick, style);
}

function CreateRadioBox(uid, name, value, checked, enabled, onclick, style) {
	return PrepareT038(uid, name, value, checked, enabled, onclick, style);
}

function CreateManagerBlock(id) {
	var objs = WSPositionDisplay(id);
	if (objs && objs[0]) {
		var obj = objs[0];
		if (!obj) { return false; }

		var block = PrepareT003(
			obj.LINK_DESCRIPTION, 
			obj.PICTURE ? 'data:image/jpg;base64,' + obj.PICTURE : '',
			obj.GREATINGS + ' ' + obj.FIRST_NAME + ' ' + obj.LAST_NAME,
			obj.NATIONALITY,
			function(iId) { screens[163].friends = [iId]; return ShowScreen(163); },
			obj.LOGIN_ID + '|' + obj.LOGIN_ACC_ID + '|' + obj.LOGIN_NAME + '|' + obj.FIRST_NAME + ' ' + obj.LAST_NAME

		);
		return block;
	}
	return false;	
}

function CreateStorybookFrame(id) {
	var block = GetTemplateByCode('t002');
	var row = PrepareT105('My Storybook');
	row.append(PrepareT160('&nbsp;', '&nbsp;', '', function(iId) { return ShowScreen(640); }));
	AppendTplItem(block, row);

	var row = PrepareT179('Add to Storybook', '', null, function(iId) { return NA(); });
	var check = CreateCheckBox('check-' + id + '-1', 'check-' + id + '-1', '', true, true, null, true);
	var cell = PrepareT157(check);
	cell.find('[val=value]').eq(0).click(function(e) { e.stopPropagation(); });
	row.append(cell);
	AppendTplItem(block, row);
	
	var row = PrepareT180('img/bubble-comment.png', 'post a note', '', null, null, true);
	var check = CreateCheckBox('check-' + id + '-2', 'check-' + id + '-2', '', true, true, null, true);
	var cell = PrepareT157(check);
	cell.find('[val=value]').eq(0).click(function(e) { e.stopPropagation(); });
	row.append(cell);
//	row.removeClass('line1');
	AppendTplItem(block, row);
	
	var row = PrepareT180('img/bubble-photo.png', 'post a photo', '', null, null, true);
	var check = CreateCheckBox('check-' + id + '-3', 'check-' + id + '-3', '', false, true, null, true);
	var cell = PrepareT157(check);
	cell.find('[val=value]').eq(0).click(function(e) { e.stopPropagation(); });
	row.append(cell);
	row.removeClass('line1');
	AppendTplItem(block, row);
	
	return block;	
}


function CreateOpeningHoursBlock(id) {
	var objs = WSLocationOpeningHours(id);
	if (objs && objs[0]) {
		return CreateOpeningHoursBlock2(objs);
	}
	return false;	
}

function CreateOpeningHoursBlock2(data) {
	if (data.length < 1) { return false; }
	data.sort(function(a, b) { return a.AVAIL_FROM_TIME > b.AVAIL_FROM_TIME ? 1 : -1; });
	
	var S = '';
	var P = '';
	
	for (var i = 0; i < data.length; i++) {
		var obj = data[i];
		if (obj.PORT_TYPE == 'P') { P += ' ' + obj.AVAIL_FROM_TIME + '-' + obj.AVAIL_TO_TIME; }
		if (obj.PORT_TYPE == 'S') { S += ' ' + obj.AVAIL_FROM_TIME + '-' + obj.AVAIL_TO_TIME; }
	}
	
	var obj = data[0];

	var block = PrepareT004(
		'Opening Hours ' + obj.LOCATION_NAME,
		P,
		S,
		obj.LOCATION_PHONE,
		function(iId) { location.href = 'tel:' + iId; return false; },
		'Call - ' + obj.LOCATION_PHONE,
		RedirectToLocationByCode,
		obj.LINK_CODE,
		'Show ' + obj.LOCATION_NAME + ' Location'
	);
	return block;
}


function CreateCallBlock(obj, message) {
	var list = CreateListCommon('');
	AppendTplItem(list, CreateListItemCommon(
		{ 
			'className' : 'title', 
			'subtitle' : message,
			'subname' : '<span class="clrOrange">Phone: ' + obj.LOCATION_PHONE + '</span>',
			'itemId' : obj.LOCATION_PHONE,
			'onclick' : function(itemId) { location.href = 'tel:' + itemId; return false; }
		},
		{ 'className' : 'imageC', 'data' : 'img/call.png' },
		{ 'className' : 'bulletB' }
	));
	return list;
}

function CreateCrewBlock(obj) {
	var list = CreateListCommon('');
	list.css({ 'overflow' : 'visible' });
	AppendTplItem(list, CreateListItemCommon(
		{ 
			'className' : 'hl2', 
			'subtitle' : 'You can also send a message directly to me',
			'name' : obj.GREATINGS + ' ' + obj.FIRST_NAME + ' ' + obj.LAST_NAME,
			'subname' : obj.LINK_DESCRIPTION,
			'onclick' : function(iId) { screens[163].friends = [iId]; return ShowScreen(163); },
			'itemId': obj.LOGIN_ID + '|' + obj.LOGIN_ACC_ID + '|' + obj.LOGIN_NAME + '|' + obj.FIRST_NAME + ' ' + obj.LAST_NAME,
			'bubble' : true
		},
		{ 'className' : 'imageC framePic2 shadePic1', 'data' : obj.PICTURE ? photo_prefix + obj.PICTURE : '' },
		{ 'className' : 'bulletB' }
	));
	return list;
}


