function GetTemplate(id) {
	var tpl = $(id).clone();
	tpl.removeClass('template');
	tpl.removeAttr('template');
	return tpl;
}

function GetTemplateByCode(code) {
	return GetTemplate('#templates [template='+code+']');
}

function UpdateClickable(event, element, hide, nohl) {
	if (event) {
		if (!nohl) { element.addClass('linked'); }
		element.click(function(e) {
			cancelEvent(e);
			e.stopPropagation();
			element.addClass('taphl');			
			setTimeout(function(){ $('.taphl').removeClass('taphl'); }, 1000);

			var iId = $(this).attr('itemId'); // need to pass identifiers somehow
			var siId = $(this).attr('subItemId'); // need to pass identifiers somehow
			setTimeout(function(){ return event(iId, siId); }, 50);
		});
	} else {
		if (hide) { element.hide(); } else { element.addClass('disabled'); }
	}
}

function UpdateChangeable(event, element) {
	if (event) {
		element.change(event);
	}
}

function AppendTplItem(block, item) {
	block.find('[val=items]').eq(0).append(item);
}

function PrepareT003(title, photo, name, country, message, itemId) {
	var template = GetTemplateByCode('t003');
	template.find('[val=title]').html(title);
	template.find('[val=name]').html(name);
	template.find('[val=country]').html(country);
	if (photo) template.find('[val=photo]').css('background-image', 'url("'+photo+'")');
	template.find('[val=message]').attr('itemId', itemId);
	UpdateClickable(message, template.find('[val=message]'), true);
	return template;
}

function PrepareT004(title, portdays, seadays, itemId, call, calltext, location, locationCode, locationtext) {
	var template = GetTemplateByCode('t004');
	template.find('[val=title]').html(title);
	template.find('[val=portdays]').html(portdays);
	template.find('[val=seadays]').html(seadays);
	template.find('[val=call]').attr('itemId', itemId);
	UpdateClickable(call, template.find('[val=call]'), false);
	template.find('[val=calltext]').html(calltext);
	template.find('[val=location]').attr('itemId', locationCode);
	UpdateClickable(location, template.find('[val=location]'), false);
	template.find('[val=locationtext]').html(locationtext);
	return template;
}

function PrepareT005(uid, title) {
	var template = GetTemplateByCode('t005');
	template.find('[val=title]').attr('uid', uid);
	template.find('[val=title]').html(title);
	return template;
}

function PrepareT010(className, html, itemId, onclick, wide) {
	var template = GetTemplateByCode('t010');
	template.addClass(className);
	template.find('[val=text]').html(html);
	template.attr('itemId', itemId);
	if (wide) { template.addClass('ewide'); }
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT011(title, onchange) {
	var template = GetTemplateByCode('t011');
	template.find('[val=title]').html(title);
	UpdateChangeable(onchange, template.find('[val=items]'));
	return template;
}

function PrepareT012(title, value, selected) {
	var template = GetTemplateByCode('t012');
	template.html(title);
	template.attr('value', value);
	if (selected) { template.attr('selected', 'selected'); }
	return template;
}

function PrepareT013(title) {
	var template = GetTemplateByCode('t013');
	template.find('[val=title]').html(title);
	return template;
}


function PrepareT014(icon, name, price, score, scorenum, onclick, text, btn1, btn1click, btn2, btn2click) {
	var template = GetTemplateByCode('t014');
	template.find('[val=icon]').css('background-image', 'url("'+icon+'")');
	template.find('[val=name]').html(name);
	template.find('[val=buy]').html(price);

	template.find('[val=score]').stars({
		cancelShow: false,
		inputType: "select",
		callback: function(ui, type, value) { return false; }
	});
	template.find('[val=score]').stars('select', score);
	template.find('[val=scorenum]').html(scorenum);
	UpdateClickable(onclick, template.find('[val=buy]'), false);

	template.find('[val=text]').html(text);

	template.find('[val=btn1]').html(btn1);
	UpdateClickable(btn1click, template.find('[val=btn1]'), false);
	template.find('[val=btn2]').html(btn2);
	UpdateClickable(btn2click, template.find('[val=btn2]'), false);
	return template;
}

function PrepareT015(title1, title2, title3, title4) {
	var template = GetTemplateByCode('t015');
	template.find('[val=title1]').html(title1);
	template.find('[val=title2]').html(title2);
	template.find('[val=title3]').html(title3);
	template.find('[val=title4]').html(title4);
	return template;
}

function PrepareT016(title1, title2) {
	var template = GetTemplateByCode('t016');
	template.find('[val=title1]').html(title1);
	template.find('[val=title2]').html(title2);
	return template;
}

function PrepareT017(sender, message, time, unread, photo, actreply, actdelete, actmarkread) {
	var template = GetTemplateByCode('t017');
	template.find('[val=sender]').html(sender);
	template.find('[val=message]').html(message);
	template.find('[val=time]').html(time);
	template.find('[val=unread]').css('background-image', unread ? 'url("img/msgn.png")' : 'url("img/msgo.png")');
	if (photo) { template.find('[val=photo]').css('background-image', 'url("'+photo+'")'); }
	if (actreply) {
		template.find('[val=reply]').show();
		UpdateClickable(actreply, template.find('[val=reply]'), false);
	}
	if (actdelete) {
		template.find('[val=delete]').show();
		UpdateClickable(actdelete, template.find('[val=delete]'), false);
	}
	if (actmarkread) {
		if (!unread) { template.find('[val=markread1] input').attr({"checked":"checked"}); }
		template.find('[val=markread1] input').css('display', 'none');
		template.find('[val=markread1] input').ezMark({checkboxCls: 'check2-off', checkedCls: 'check2-on'});
		template.find('[val=markread1] input').parent().css('margin', '0 auto');
		template.find('[val=markread1] input').trigger('change');
//		template.find('[val=markread1] input').attr('itemId', itemId);
		template.find('[val=markread1] input').change(actmarkread);
		template.find('[val=markread1]').show();
		template.find('[val=markread2]').show();
	}
	return template;
}

function PrepareT018(accept, onaccept, send, email, onemail) {
	var template = GetTemplateByCode('t018');
	if (accept) { template.find('[val=accept]').attr({"checked":"checked"}); }
	template.find('[val=accept]').css('display', 'none');
	template.find('[val=accept]').ezMark({checkboxCls: 'check2-off', checkedCls: 'check2-on'});
	template.find('[val=accept]').parent().css('margin', '0 auto');
	template.find('[val=accept]').trigger('change');
	template.find('[val=accept]').change(onaccept);
	
	UpdateClickable(send, template.find('[val=send]'), false);
	
	template.find('[val=email]').val(email);
	template.find('[val=email]').change(onemail);
	return template;
}

function PrepareT019(title, onclick) {
	var template = GetTemplateByCode('t019');
	template.html(title);
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT020(weather, hi, lo) {
	var template = GetTemplateByCode('t020');
	template.find('[val=weather]').css('background-image', 'url("'+weather+'")');
	template.find('[val=hi]').html(hi);
	template.find('[val=lo]').html(lo);
	return template;
}

function PrepareT021(name, type, photo, recipient, subject, message) {
	var template = GetTemplateByCode('t021');
	template.find('[val=name]').html(name);
	template.find('[val=type]').html(type);
	template.find('[val=photo]').css('background-image', 'url("'+photo+'")');
	UpdateClickable(recipient, template.find('[val=recipient]'), false);
//	template.find('[val=subject]').val(subject);
//	template.find('[val=message]').val(message);
//	UpdateClickable(send, template.find('[val=send]'), false);
	return template;
}

function PrepareT022(filter, onchange, onadvanced, hint) {
	var template = GetTemplateByCode('t022');
	template.find('[val=filter]').val(filter);
	template.find('[val=filter]').change(onchange);
	if (hint) { template.find('[val=filter]').attr('placeholder', hint); }	
	UpdateClickable(onadvanced, template.find('[val=advanced]'), true);
	return template;
}

function PrepareT023(name) {
	var template = GetTemplateByCode('t023');
	template.find('[val=name]').html(name);
	return template;
}

function PrepareT024(message, send) {
	var template = GetTemplateByCode('t024');
	template.find('[val=message]').val(message);
	UpdateClickable(send, template.find('[val=send]'), false);
	return template;
}

function PrepareT026(aicon, aname, atype, photo, name, type, recipient) {
	var template = GetTemplateByCode('t026');
	template.find('[val=aicon]').css('background-image', 'url("'+aicon+'")');
	template.find('[val=aname]').html(aname);
	template.find('[val=atype]').html(atype);
	template.find('[val=photo]').css('background-image', 'url("'+photo+'")');
	template.find('[val=name]').html(name);
	template.find('[val=type]').html(type);
	UpdateClickable(recipient, template.find('[val=recipient]'), false);
	return template;
}

function PrepareT027(title, subtitle, name, status, photo) {
	var template = GetTemplateByCode('t027');
	template.find('[val=title]').html(title);
	template.find('[val=subtitle]').html(subtitle);
	template.find('[val=name]').html(name);
	template.find('[val=status]').html(status);
	template.find('[val=photo]').css('background-image', 'url("'+photo+'")');
	return template;
}

function PrepareT029(score, message, onchange) {
	var template = GetTemplateByCode('t029');
	
	template.find('[val=score]').stars({
		cancelValue: 0,
		cancelShow: true,
		inputType: "select",
		callback: onchange
	});
	template.find('[val=score]').stars('select', score);

	template.find('[val=score]').change(onchange);
	template.find('[val=message]').val(message);
	template.find('[val=message]').change(onchange);
	
	template.find('[var=tweet]').attr('href', 'http://twitter.com/home?status=' + encodeURIComponent(message));	
	template.find('[val=message]').change(function() {
		var msg = $(this).val();
		$(this).closest('table').find('[var=tweet]').attr('href', 'http://twitter.com/home?status=' + encodeURIComponent(msg));	
	});
	
	return template;
}

function PrepareT031(name, time_from, time_to, guests, readonly) {
	var template = GetTemplateByCode('t031');
	template.find('[val=header]').html(name);
	template.find('[val=timefrom]').val(time_from);
	template.find('[val=timeto]').val(time_to);
	template.find('[val=guests]').val(guests);
	if (readonly) { 
		template.find('[val=guestslabel]').css({ 'display': 'none' }); 
		template.find('[val=guests]').attr('disabled', 'disabled'); 
	}
	return template;
}

function PrepareT032(photo) {
	var template = GetTemplateByCode('t032');
	template.find('[val=photo]').css('background-image', 'url("'+photo+'")');
	return template;
}

function PrepareT033(email, onchange) {
	var template = GetTemplateByCode('t033');
	template.find('[val=email]').val(email);
	template.find('[val=email]').change(onchange);
	return template;
}

function PrepareT035(uid, name, value, checked, enabled, onclick, style) {
	var template = GetTemplateByCode('t035');
	
	var st1 = enabled ? 'check7' : 'check5';
	var st2 = enabled ? 'check2' : 'check6';
	style = !style ? st1 : st2;
	
	if (enabled) { 
		template.attr('for', uid); 
	} else {
		template.find('input').attr('disabled', 'disabled');
		template.find('input').attr('readonly', 'readonly');
	}
	template.find('input').attr('id', uid);
	template.find('input').attr('name', name);
	template.find('input').attr('value', value);
	if (checked) { template.find('input').attr({"checked": "checked"}); }
	template.find('input').css('display', 'none');
	template.find('input').parent().css('display', 'inline-block');
	template.find('input').ezMark({checkboxCls: style + '-off', checkedCls: style + '-on'});

	template.find('input').trigger('change');
	template.find('input').click(onclick);
	return template;
}

function PrepareT036(text, onchange) {
	var template = GetTemplateByCode('t036');
	template.find('[val=text]').val(text);
	template.find('[val=text]').change(onchange);
	return template;
}

function PrepareT037(name, itemId, onclick) {
	var template = GetTemplateByCode('t037');
	template.html(name);
	template.attr('itemId', itemId);
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT038(uid, name, value, checked, enabled, onclick, style) {
	var template = GetTemplateByCode('t038');
	
	var st1 = enabled ? 'check7' : 'check5';
	var st2 = enabled ? 'check2' : 'check6';
	style = !style ? st1 : st2;
	
	if (enabled) { 
		template.attr('for', uid); 
	} else {
		template.find('input').attr('disabled', 'disabled');
		template.find('input').attr('readonly', 'readonly');
	}
	template.find('input').attr('id', uid);
	template.find('input').attr('name', name);
	template.find('input').attr('value', value);
	if (checked) { template.find('input').attr({"checked": "checked"}); }
	template.find('input').css('display', 'none');
	template.find('input').parent().css('display', 'inline-block');
	template.find('input').ezMark({radioCls: style + '-off', selectedCls: style + '-on'});

	template.find('input').trigger('change');
	template.find('input').click(onclick);
	return template;
}

function PrepareT039(video) {
	var template = GetTemplateByCode('t039');
	template.attr('src', video);
	return template;
}

function PrepareT040(title, onclick) {
	var template = GetTemplateByCode('t040');
	template.html(title);
	template.click(onclick);
	return template;
}

function PrepareT041(value, placeholder, id, name) {
	var template = GetTemplateByCode('t041');
	template.val(value);
	template.attr('placeholder', placeholder);
	template.attr('id', id);
	template.attr('name', name);
	template.keyup(function(e) { 
		var h = this.scrollHeight;
		if (h != this.offsetHeight) {
			this.style.height = '1px';
			this.style.height = this.scrollHeight + 'px';
		}
	});
	template.change(function(e) { 
		this.style.height = '1px';
		this.style.height = this.scrollHeight + 'px';
	});
	return template;
}

function PrepareT042(filter, onchange) {
	var template = GetTemplateByCode('t042');
	template.find('[val=filter]').val(filter);
	template.find('[val=filter]').change(onchange);
	return template;
}

function PrepareT100(name, onclick, itemId) {
	var template = GetTemplateByCode('t100');
	template.find('[val=name]').html(name);
	template.attr('itemId', itemId);
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT101(icon_id, name, onclick) {
	var template = GetTemplateByCode('t101');
	template.find('[val=name]').html(name);
	if (icon_id) { template.find('[val=icon]').css('background-image', 'url("res/icons/'+icon_id+'.png")'); }
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT102(uid, time, m00, m30) {
	var template = GetTemplateByCode('t102');
	template.attr('id', uid);
	template.find('[val=time]').html(time);
	template.find('[val=m00]').html(m00);
	template.find('[val=m30]').html(m30);
	return template;
}

function PrepareT103(width, active, title, onclick) {
	var template = GetTemplateByCode('t103');
	template.css('width', width);
	template.find('a').toggleClass('active', active);
	template.find('a').html(title);
	UpdateClickable(onclick, template.find('a'), false);
	return template;
}

function PrepareT104(time, name, type, len, itemId, onclick) {
	var template = GetTemplateByCode('t104');
	template.find('[val=time]').html(time);
	template.find('[val=name]').html(name);
	template.find('[val=type]').html(type);
	template.find('[val=len]').html(len);
	template.attr('itemId', itemId);
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT105(title) {
	var template = GetTemplateByCode('t105');
	template.find('[val=title]').html(title);
	return template;
}

function PrepareT106(time, name, type, len, score, showscore, itemId, onclick) {
	var template = GetTemplateByCode('t106');
	template.find('[val=time]').html(time);
	template.find('[val=name]').html(name);
	template.find('[val=type]').html(type);
	template.find('[val=len]').html(len);

	template.find('[val=showscore]').toggle(showscore);
	template.find('[val=score]').stars({
		cancelShow: false,
		inputType: 'select',
		callback: function(ui, type, value) { return false; }
	});
	template.find('[val=score]').stars('select', score);
	
	template.attr('itemId', itemId);
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT107(icon, name, score, id_name, id_value, onclick) {
	var template = GetTemplateByCode('t107');
	template.find('[val=icon]').css('background-image', 'url("'+icon+'")');
	template.find('[val=name]').html(name);

	template.find('[val=score]').stars({
		cancelShow: false,
		inputType: 'select',
		callback: function(ui, type, value) { return false; }
	}).select(score);
	template.find('[val=score]').stars('select', score);

	if (id_name) { template.find('[val=linked]').attr(id_name, id_value); }
	UpdateClickable(onclick, template.find('[val=linked]'), false);
	return template;
}

function PrepareT108(icon, name, price, score, scorenum, id_name, id_value, onclick) {
	var template = GetTemplateByCode('t108');
	template.find('[val=icon]').css('background-image', 'url("'+icon+'")');
	template.find('[val=name]').html(name);
	template.find('[val=price]').html(price);

	template.find('[val=score]').stars({
		cancelShow: false,
		inputType: "select",
		callback: function(ui, type, value) { return false; }
	});
	template.find('[val=score]').stars('select', score);
	template.find('[val=scorenum]').html(scorenum);

	if (id_name) { template.find('[val=linked]').attr(id_name, id_value); }
	UpdateClickable(onclick, template.find('[val=linked]'), false);
	return template;
}

function PrepareT109(check, id, type, name, screen) {
	var template = GetTemplateByCode('t109');
	template.find('[val=id]').html(id);
	template.find('[val=type]').html(type);
	template.find('[val=name]').html(name);
	template.find('[val=check]').attr('id', 'check'+screen+'-'+id);
	template.find('[val=label]').attr('for', 'check'+screen+'-'+id);
	template.find('[val=id]').attr('for', 'check'+screen+'-'+id);
	template.find('[val=type]').attr('for', 'check'+screen+'-'+id);
	template.find('[val=name]').attr('for', 'check'+screen+'-'+id);

	if (check) { template.find('[val=check]').attr({"checked":"checked"}); }
	template.find('[val=check]').css('display', 'none');
	template.find('[val=check]').ezMark({checkboxCls: 'check2-off', checkedCls: 'check2-on'});
	template.find('[val=check]').parent().css('margin', '0 auto');
	template.find('[val=check]').trigger('change');
	return template;
}

function PrepareT110(name1, name2, onclick) {
	var template = GetTemplateByCode('t110');
	template.find('[val=name1]').html(name1);
	template.find('[val=name2]').html(name2);
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT111(itemId, sender, message, time, unread, photo, onclick) {
	var template = GetTemplateByCode('t111');
	template.find('[val=sender]').html(sender);
	template.find('[val=message]').html(message);
	template.find('[val=message]').addClass('fontNormal');
	template.find('[val=time]').html(time);
	template.find('[val=time]').addClass('clrBlue fontNormal');
	template.find('[val=unread]').css('background-image', unread ? 'url("img/msgn.png")' : 'url("img/msgo.png")');
//	if (photo) { template.find('[val=photo]').css('background-image', 'url()'); }
	template.attr('itemId', itemId);
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT112(person, category, price) {
	var template = GetTemplateByCode('t112');
	template.find('[val=person]').html(person);
	template.find('[val=category]').html(category);
	template.find('[val=price]').html(price);
	return template;
}

function PrepareT113(person, category, quantity, evtid, evtprice, evtpricecategory, evtpersoncode, onchange) {
	var template = GetTemplateByCode('t113');
	template.find('[val=person]').html(person);
	template.find('[val=category]').html(category);
	template.find('[val=quantity]').val(quantity);
	template.find('[val=quantity]').attr('evtid', evtid);
	template.find('[val=quantity]').attr('evtprice', evtprice);
	template.find('[val=quantity]').attr('evtpricecategory', evtpricecategory);
	template.find('[val=quantity]').attr('evtpersoncode', evtpersoncode);
	if (onchange) { template.find('[val=quantity]').change(onchange); }
	return template;
}

function PrepareT114(itemId, name, amount, onclick) {
	var template = GetTemplateByCode('t114');
	template.find('[val=name]').html(name);
	template.find('[val=amount]').html(amount);
	template.attr('itemId', itemId);
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT115(amount) {
	var template = GetTemplateByCode('t115');
	template.find('[val=amount]').html(amount);
	return template;
}

function PrepareT116(name, amount) {
	var template = GetTemplateByCode('t116');
	template.find('[val=name]').html(name);
	template.find('[val=amount]').html(amount);
	return template;
}

function PrepareT117(date, name, amount) {
	var template = GetTemplateByCode('t117');
	template.find('[val=date]').html(date);
	template.find('[val=name]').html(name);
	template.find('[val=amount]').html(amount);
	return template;
}

function PrepareT118(amount) {
	var template = GetTemplateByCode('t118');
	template.find('[val=amount]').html(amount);
	return template;
}

function PrepareT119(title) {
	var template = GetTemplateByCode('t119');
	template.find('[val=title]').html(title);
	return template;
}

function PrepareT120(title, subtitle) {
	var template = GetTemplateByCode('t120');
	template.find('[val=title]').html(title);
	template.find('[val=subtitle]').html(subtitle);
	return template;
}

function PrepareT121(itemId, name, saving, price, onclick) {
	var template = GetTemplateByCode('t121');
	template.find('[val=name]').html(name);
	template.find('[val=saving]').html(saving);
	template.find('[val=price]').html(price);
	template.attr('itemId', itemId);
	template.attr('subItemId', name);
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT122(name, amount) {
	var template = GetTemplateByCode('t122');
	template.find('[val=name]').html(name);
	template.find('[val=amount]').html(amount);
	return template;
}

function PrepareT123(name, value) {
	var template = GetTemplateByCode('t123');
	template.find('[val=name]').html(name);
	template.find('[val=value]').html(value);
	return template;
}

function PrepareT124(value) {
	var template = GetTemplateByCode('t124');
	template.find('[val=value]').html(value);
	return template;
}

function PrepareT125(name, image) {
	var template = GetTemplateByCode('t125');
	template.find('[val=name]').html(name);
	template.find('[val=image]').attr('src', image);
	return template;
}

function PrepareT126(itemId, port, date, weather, onclick) {
	var template = GetTemplateByCode('t126');
	template.find('[val=port]').html(port);
	template.find('[val=date]').html(date);
	template.find('[val=weather]').css('background-image', 'url("'+weather+'")');
	template.attr('itemId', itemId);
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT127(name, login, id, onclick) {
	var template = GetTemplateByCode('t127');
	template.find('[val=name]').html(name);
	template.find('[val=login]').html(login);
//	template.attr('user_name', name);
//	template.attr('user_login', login);
//	template.attr('user_id', id);
	template.attr('itemId', id + '|' + login + '|' + name);
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT128(name, login, onclick) {
	var template = GetTemplateByCode('t128');
	template.find('[val=name]').html(name);
	return template;
}

function PrepareT129(time, subject, message, direction, unread, itemId, ondelete) {
	var template = GetTemplateByCode('t129');
	template.find('[val=time]').html(time);
	template.find('[val=subject]').html(subject);
	template.find('[val=message]').html(message);
	template.find('[val=edit]').addClass(direction ? 'incoming_edit' : 'outgoing_edit');
	template.find('[val=direction]').addClass(direction ? 'incoming' : 'outgoing');
	if (unread) { template.find('[val=message]').addClass('unread'); }
	template.find('[val=delete]').attr('itemId', itemId);
	UpdateClickable(ondelete, template.find('[val=delete]'), false);
	return template;
}

function PrepareT130(date) {
	var template = GetTemplateByCode('t130');
	template.find('[val=date]').html(date);
	return template;
}

function PrepareT131(sid, cid, id, name, login, type, status, onclick, action, aclass, onaction, onchange) {
	var template = GetTemplateByCode('t131');
	template.find('[val=name]').html(name);
	template.find('[val=login]').html(login);

	var uid = 'row-sid-' + sid + '-cid-' + cid + '-s-' + Math.floor(Math.random()*1000000).toString();
	template.attr('row', uid);

	template.find('[val=linked]').attr('itemId', id + '|' + login + '|' + name + '|' + type);
	UpdateClickable(onclick, template.find('[val=linked]'), false);
	
	template.find('input[type="radio"]').css('display', 'none');
	template.find('input[type="radio"]').parent().css('display', 'inline-block');

	if (type == 1) { template.find('input[val=f]').attr({"checked": "checked"}); }
	if (type == 2) { template.find('input[val=c]').attr({"checked": "checked"}); }
	if (type == 3) { template.find('input[val=o]').attr({"checked": "checked"}); } 

	template.find('label[val=f]').attr('for', 'check-' + sid + '-' + login + '-' + '-f');
	template.find('input[val=f]').attr('id', 'check-' + sid + '-' + login + '-' + '-f');
	template.find('input[val=f]').attr('name', 'check-' + sid + '-' + login + '-');
	template.find('input[val=f]').attr('itemId', cid + '|' + login + '|' + name + '|' + type + '|' + status + '|' + uid);
	template.find('input[val=f]').ezMark({radioCls: (status == 0) ? 'check6-off' : 'check2-off', selectedCls: (status == 0) ? 'check6-on' : 'check2-on'});
	template.find('input[val=f]').trigger('change');
	template.find('input[val=f]').click(onchange);

	template.find('label[val=c]').attr('for', 'check-' + sid + '-' + login + '-' + '-c');
	template.find('input[val=c]').attr('id', 'check-' + sid + '-' + login + '-' + '-c');
	template.find('input[val=c]').attr('name', 'check-' + sid + '-' + login + '-');
	template.find('input[val=c]').attr('itemId', cid + '|' + login + '|' + name + '|' + type + '|' + status + '|' + uid);
	template.find('input[val=c]').ezMark({radioCls: (status == 0) ? 'check6-off' : 'check2-off', selectedCls: (status == 0) ? 'check6-on' : 'check2-on'});
	template.find('input[val=c]').trigger('change');
	template.find('input[val=c]').click(onchange);

	if (onaction) {
		template.find('[val=action]').attr('itemId', cid + '|' + login + '|' + name + '|' + type + '|' + status + '|' + uid);
		template.find('[val=action]').html(action);
		template.find('[val=action]').addClass(aclass);
		UpdateClickable(onaction, template.find('[val=action]'), true);
	} else {
		template.find('[val=action]').hide();		
	}
	return template;
}

function PrepareT132(name, login, onclick) {
	var template = GetTemplateByCode('t132');
	template.find('[val=name]').html(name);
	return template;
}

function PrepareT133(name1, name2, name3, name4) {
	var template = GetTemplateByCode('t133');
	template.find('[val=name1]').html(name1);
	template.find('[val=name2]').html(name2);
	template.find('[val=name3]').html(name3);
	template.find('[val=name4]').html(name4);
	return template;
}

function PrepareT134(name, onclick) {
	var template = GetTemplateByCode('t134');
	template.find('[val=name]').html(name);
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT135(photo) {
	var template = GetTemplateByCode('t135');
	template.find('[val=photo]').css('background-image', 'url("'+photo+'")');
	return template;
}

function PrepareT136(icon, name) {
	var template = GetTemplateByCode('t136');
	template.find('[val=icon]').css('background-image', 'url("'+icon+'")');
	template.find('[val=name]').html(name);
	return template;
}

function PrepareT137(itemId, delId, time, name, place, duration, icon, onclick, ondelete, onbook) {
	var template = GetTemplateByCode('t137');
	template.find('[val=time]').html(time);
	template.find('[val=name]').html(name);
	template.find('[val=place]').html(place);
	template.find('[val=duration]').html(duration);
	template.find('[val=icon]').css('background-image', 'url("'+icon+'")');

	template.attr('itemId', itemId);
	if (onclick) { UpdateClickable(onclick, template, false); }

	template.find('[val=delete]').attr('itemId', delId);
	UpdateClickable(ondelete, template.find('[val=delete]'), true);
	
	template.find('[val=book]').attr('itemId', itemId);
	UpdateClickable(onbook, template.find('[val=book]'), true);
	return template;
}

function PrepareT138(itemId, delId, time, name, type, place, duration, photo, uname, onclick, ondelete, onbook) {
	var template = GetTemplateByCode('t138');
	template.find('[val=time]').html(time);
	template.find('[val=name]').html(name);
	template.find('[val=type]').html(type);
	template.find('[val=place]').html(place);
	template.find('[val=duration]').html(duration);
	template.find('[val=photo]').css('background-image', 'url("'+photo+'")');
	template.find('[val=uname]').html(uname);

	template.attr('itemId', itemId);
	if (onclick) { UpdateClickable(onclick, template, false); }

	template.find('[val=delete]').attr('itemId', delId);
	UpdateClickable(ondelete, template.find('[val=delete]'), true);

	template.find('[val=book]').attr('itemId', itemId);
	UpdateClickable(onbook, template.find('[val=book]'), true);
	return template;
}

function PrepareT140(id, name, type, len, onclick) {
	var template = GetTemplateByCode('t140');
	template.find('[val=name]').html(name);
	template.find('[val=type]').html(type);
	template.find('[val=len]').html(len + ' Min');
	template.attr('itemId', id + '|' + name + '|' + len);

	UpdateClickable(onclick, template, false);
	return template;
}


function PrepareT141(name) {
	var template = GetTemplateByCode('t141');
	template.find('[val=name]').html(name);
	return template;
}

function PrepareT142(name) {
	var template = GetTemplateByCode('t142');
	template.find('[val=name]').html(name);
	return template;
}

function PrepareT143(name) {
	var template = GetTemplateByCode('t143');
	template.find('[val=name]').html(name);
	return template;
}

function PrepareT144(sid, pid, grp_id, setup_id, active, enabled, edit, onclick) {
	var template = GetTemplateByCode('t144');
	
	template.find('input[type="checkbox"]').css('display', 'none');
	template.find('input[type="checkbox"]').parent().css('display', 'inline-block');

	if (active) { template.find('input[val=check]').attr({"checked": "checked"}); }
	
	var uid = 'check'+ sid + '-' + grp_id + '-' + setup_id;
	template.find('label[val=label]').attr('for', uid);
	template.find('input[val=check]').attr('id', uid);
	template.find('input[val=check]').attr('name', uid);
	template.find('input[val=check]').attr('itemId', pid + '|' + active + '|' + enabled + '|' + edit);
	template.find('input[val=check]').ezMark({checkboxCls: edit ? 'check2-off' : 'check5-off', checkedCls: edit ? 'check2-on' : 'check5-on'});
	template.find('input[val=check]').trigger('change');
	template.find('input[val=check]').change(onclick);

	return template;
}

function PrepareT145(id, i00, i30, time, m00, m30) {
	var template = GetTemplateByCode('t145');
	template.attr('id', id);
	template.find('[val=i00]').html(i00);
	template.find('[val=i30]').html(i30);
	template.find('[val=time]').html(time);
	template.find('[val=m00]').html(m00);
	template.find('[val=m30]').html(m30);
	return template;
}

function PrepareT146(sid, time, price, value, checked, onchange) {
	var template = GetTemplateByCode('t146');
	template.find('[val=time]').html(time);
	template.find('[val=price]').html(price);
	
	template.find('input[type="radio"]').css('display', 'none');
	template.find('input[type="radio"]').parent().css('display', 'inline-block');
	if (checked) { template.find('input[val=radio]').attr({"checked": "checked"}); }
	
	var uid = 'radio'+ sid;
	template.find('label[val=label]').attr('for', uid + 'v' + value);
	template.find('input[val=radio]').attr('id', uid + 'v' + value);
	template.find('input[val=radio]').attr('name', uid);
	template.find('input[val=radio]').attr('value', value);
	template.find('input[val=radio]').attr('sub', price);
	template.find('input[val=radio]').ezMark({radioCls: 'check2-off', selectedCls: 'check2-on'});
	template.find('input[val=radio]').trigger('change');
	template.find('input[val=radio]').change(onchange);

	return template;
}

function PrepareT147(name, subname, value1, value2) {
	var template = GetTemplateByCode('t147');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	template.find('[val=value1]').html(value1);
	template.find('[val=value2]').html(value2);
	return template;
}

function PrepareT148(name, value) {
	var template = GetTemplateByCode('t148');
	template.find('[val=name]').html(name);
	template.find('[val=value]').html(value);
	return template;
}

function PrepareT149(title1, title2) {
	var template = GetTemplateByCode('t149');
	template.find('[val=title1]').html(title1);
	template.find('[val=title2]').html(title2);
	return template;
}

function PrepareT150(name, subname, onclick, itemId) {
	var template = GetTemplateByCode('t150');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	template.attr('itemId', itemId);
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT151(image) {
	var template = GetTemplateByCode('t151');
	template.find('[val=image]').attr('src', image);
	return template;
}

function PrepareT152(icon, name, subname, itemId, onclick, nobullets, noicons) {
	var template = GetTemplateByCode('t152');
	
	if (icon && (icon.indexOf('/') >= 0 || icon.indexOf(photo_prefix) >= 0)) {
		template.find('[val=icon]').addClass('photo2');
		template.find('[val=icon]').css('background-image', 'url("'+icon+'")');
	} else {
		template.find('[val=icon]').addClass(icon);
	}
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	template.attr('itemId', itemId);
	UpdateClickable(onclick, template, false);
	
	if (nobullets) { template.find('.bullet2').hide(); }
	if (noicons) { template.find('td.listicon1').hide(); }
	return template;
}

function PrepareT153(icon, name, subname) {
	var template = GetTemplateByCode('t153');
	template.find('[val=icon]').addClass(icon);
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	return template;
}

function PrepareT154(sid, cid, id, name, login, type, status, onclick, action, aclass, onaction, onchange) {
	var template = GetTemplateByCode('t131');
	template.find('[val=name]').html(name);
	template.find('[val=login]').html(login);

	var uid = 'row-sid-' + sid + '-cid-' + cid + '-s-' + Math.floor(Math.random() * 1000000).toString();
	template.attr('row', uid);

	template.find('[val=linked]').attr('itemId', id + '|' + login + '|' + name + '|' + type);
	UpdateClickable(onclick, template.find('[val=linked]'), false);
	
	template.find('input[type="radio"]').css('display', 'none');
	template.find('input[type="radio"]').parent().css('display', 'inline-block');

	if (type == 1) { template.find('input[val=f]').attr({"checked": "checked"}); }
	if (type == 2) { template.find('input[val=c]').attr({"checked": "checked"}); }
	if (type == 3) { template.find('input[val=o]').attr({"checked": "checked"}); } 

	template.find('label[val=f]').attr('for', 'check-' + sid + '-' + login + '-' + '-f');
	template.find('input[val=f]').attr('id', 'check-' + sid + '-' + login + '-' + '-f');
	template.find('input[val=f]').attr('name', 'check-' + sid + '-' + login + '-');
	template.find('input[val=f]').attr('itemId', cid + '|' + login + '|' + name + '|' + type + '|' + status + '|' + uid);
	template.find('input[val=f]').ezMark({radioCls: (status == 0) ? 'check6-off' : 'check2-off', selectedCls: (status == 0) ? 'check6-on' : 'check2-on'});
	template.find('input[val=f]').trigger('change');
	template.find('input[val=f]').click(onchange);

	template.find('label[val=c]').attr('for', 'check-' + sid + '-' + login + '-' + '-c');
	template.find('input[val=c]').attr('id', 'check-' + sid + '-' + login + '-' + '-c');
	template.find('input[val=c]').attr('name', 'check-' + sid + '-' + login + '-');
	template.find('input[val=c]').attr('itemId', cid + '|' + login + '|' + name + '|' + type + '|' + status + '|' + uid);
	template.find('input[val=c]').ezMark({radioCls: (status == 0) ? 'check6-off' : 'check2-off', selectedCls: (status == 0) ? 'check6-on' : 'check2-on'});
	template.find('input[val=c]').trigger('change');
	template.find('input[val=c]').click(onchange);

	if (onaction) {
		template.find('[val=action]').attr('itemId', cid + '|' + login + '|' + name + '|' + type + '|' + status + '|' + uid);
		template.find('[val=action]').html(action);
		template.find('[val=action]').addClass(aclass);
		UpdateClickable(onaction, template.find('[val=action]'), true);
	} else {
		template.find('[val=action]').hide();		
	}
	return template;
}

function PrepareT155(name, subname, category, action, price) {
	var template = GetTemplateByCode('t155');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	template.find('[val=category]').html(category);
	template.find('[val=action]').html(action);
	template.find('[val=price]').html(price);
	return template;
}

function PrepareT156(name1, name2, name3, name4) {
	var template = GetTemplateByCode('t156');
	template.find('[val=name1]').html(name1);
	template.find('[val=name2]').html(name2);
	template.find('[val=name3]').html(name3);
	template.find('[val=name4]').html(name4);
	return template;
}

function PrepareT157(value) {
	var template = GetTemplateByCode('t157');
	template.find('[val=value]').html(value);
	return template;
}

function PrepareT158(value) {
	var template = GetTemplateByCode('t158');
	template.find('[val=value]').html(value);
	return template;
}

function PrepareT159(title) {
	var template = GetTemplateByCode('t159');
	template.find('[val=title]').html(title);
	return template;
}

function PrepareT160(name, subname, itemId, onclick) {
	var template = GetTemplateByCode('t160');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	template.find('[val=linked]').attr('itemId', itemId);
	UpdateClickable(onclick, template.find('[val=linked]'), false);
	return template;
}

function PrepareT161(title1, title2, title3, title4) {
	var template = GetTemplateByCode('t161');
	template.find('[val=title1]').html(title1);
	template.find('[val=title2]').html(title2);
	template.find('[val=title3]').html(title3);
	return template;
}

function PrepareT162(name, subname, onclick) {
	var template = GetTemplateByCode('t162');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT163(name, value) {
	var template = GetTemplateByCode('t163');
	template.find('[val=name]').html(name);
	template.find('[val=value]').html(value);
	return template;
}

function PrepareT164(name, subname, price, itemId, ondelete) {
	var template = GetTemplateByCode('t164');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	template.find('[val=price]').html(price);
	template.find('[val=delete]').attr('itemId', itemId);
	template.find('[val=delete]').click(ondelete);
//	UpdateClickable(ondelete, template.find('[val=delete]'), true);
	return template;
}

function PrepareT165(value) {
	var template = GetTemplateByCode('t165');
	template.find('[val=value]').html(value);
	return template;
}

function PrepareT166(value) {
	var template = GetTemplateByCode('t166');
	template.find('[val=value]').html(value);
	return template;
}

function PrepareT167(name, subname, act1, act2, data, itemId, onclick) {
	var template = GetTemplateByCode('t167');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	template.find('[val=data]').html(data);
	template.find('[val=act1]').html(act1);
	template.find('[val=act2]').html(act2);
	template.attr('itemId', itemId);
	UpdateClickable(onclick, template.eq(0), false);
	return template;
}

function PrepareT168(name, type, value, itemId, onclick, check) {
	var template = GetTemplateByCode('t168');
	template.find('[val=check]').html(check);
	template.find('[val=name]').html(name);
	template.find('[val=type]').html(type);
	template.find('[val=value]').html(value);
	template.attr('itemId', itemId);
	template.click(onclick);
	return template;
}

function PrepareT169(name, type, value, itemId, onclick) {
	var template = GetTemplateByCode('t169');
	template.find('[val=name]').html(name);
	template.find('[val=type]').html(type);
	template.find('[val=value]').html(value);
	template.attr('itemId', itemId);
	template.click(onclick);
	return template;
}


function PrepareT170(name, type, photo, onclick) {
	var template = GetTemplateByCode('t170');
	template.find('[val=name]').html(name);
	template.find('[val=type]').html(type);
	template.find('[val=photo]').css('background-image', 'url("'+photo+'")');
	UpdateClickable(onclick, template, false);
	return template;
}

function PrepareT171(value) {
	var template = GetTemplateByCode('t171');
	template.find('[val=value]').html(value);
	return template;
}

function PrepareT172(value) {
	var template = GetTemplateByCode('t172');
	template.find('[val=value]').html(value);
	return template;
}

function PrepareT173(value) {
	var template = GetTemplateByCode('t173');
	template.find('[val=value]').html(value);
	return template;
}

function PrepareT174(value) {
	var template = GetTemplateByCode('t174');
	template.find('[val=value]').html(value);
	return template;
}

function PrepareT175(name, subname, itemId, onclick) {
	var template = GetTemplateByCode('t175');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	template.find('[val=linked]').attr('itemId', itemId);
	UpdateClickable(onclick, template.find('[val=linked]'), false);
	return template;
}

function PrepareT176(title1, title2) {
	var template = GetTemplateByCode('t176');
	template.find('[val=title1]').html(title1);
	template.find('[val=title2]').html(title2);
	return template;
}

function PrepareT177(name, subname, value) {
	var template = GetTemplateByCode('t177');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	template.find('[val=value]').html(value);
	return template;
}

function PrepareT178(photo, name, subname, itemId, onclick) {
	var template = GetTemplateByCode('t178');
	template.find('[val=photo]').css('background-image', 'url("'+photo+'")');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	if (itemId) {
		template.attr('itemId', itemId);
		UpdateClickable(onclick, template, false);
	}
	return template;
}

function PrepareT179(name, subname, itemId, onclick) {
	var template = GetTemplateByCode('t179');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	if (itemId) {
		template.attr('itemId', itemId);
		UpdateClickable(onclick, template, false);
	}
	return template;
}

function PrepareT180(icon, name, subname, itemId, onclick, nobullets, noicons) {
	var template = GetTemplateByCode('t180');
	
	if (icon && icon.indexOf('/') >= 0) {
//		template.find('[val=icon]').addClass('photo2');
		template.find('[val=icon]').css('background-image', 'url("'+icon+'")');
	} else {
		template.find('[val=icon]').addClass(icon);
	}
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	if (itemId) {
		template.attr('itemId', itemId);
		UpdateClickable(onclick, template, false);
	}
	if (nobullets) { template.find('.bullet2').hide(); }
	if (noicons) { template.find('td.listicon1').hide(); }
	return template;
}

function PrepareT181(name, subname, itemId, onclick) {
	var template = GetTemplateByCode('t181');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	if (itemId) {
		template.attr('itemId', itemId);
		UpdateClickable(onclick, template, false);
	}
	return template;
}

function PrepareT182(title) {
	var template = GetTemplateByCode('t182');
	template.find('[val=title]').html(title);
	return template;
}

function PrepareT183(photo) {
	var template = GetTemplateByCode('t183');
	template.find('[val=photo]').css('background-image', 'url("'+photo+'")');
	return template;
}

function PrepareT184(name, subname, itemId, onclick) {
	var template = GetTemplateByCode('t184');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	if (itemId) {
		template.attr('itemId', itemId);
		UpdateClickable(onclick, template, false);
	}
	return template;
}

function PrepareT185(icon, name, subname) {
	var template = GetTemplateByCode('t185');
	template.find('[val=icon]').css('background-image', 'url("'+icon+'")');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	return template;
}

function PrepareT186(name, subname, itemId, onclick) {
	var template = GetTemplateByCode('t186');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	if (itemId) {
		template.attr('itemId', itemId);
		UpdateClickable(onclick, template, false);
	}
	return template;
}

function PrepareT187(name, subname, itemId, onclick) {
	var template = GetTemplateByCode('t187');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	if (itemId) {
		template.attr('itemId', itemId);
		UpdateClickable(onclick, template, false);
	}
	return template;
}

function PrepareT188(name, subname, itemId, onclick, data) {
	var template = GetTemplateByCode('t188');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	template.find('[val=data]').html(data);
	template.find('[val=linked]').attr('itemId', itemId);
	template.find('[val=linked]').click(onclick);
	return template;
}

function PrepareT189(name, subname, onclick, itemId) {
	var template = GetTemplateByCode('t189');
	template.find('[val=name]').html(name);
	template.find('[val=subname]').html(subname);
	template.attr('itemId', itemId);
	UpdateClickable(onclick, template, false);
	return template;
}

