/* processing forms */
function Form101() {
	$("#emptylink").focus();
	if ($('#signinname101').val() == '') { return ShowDialog1011104(); }
	Login($('#signinname101').val(), $('#password101').val());
	return false;
}

function Form102() {
	$("#emptylink").focus();
	if ($('#lastname102').val() == '') { return ShowDialog1021101(); }
	if ($('#birthdate102').val() == '') { return ShowDialog1021101(); }
	if (WSSignUp1($('#lastname102').val(), $('#birthdate102').val())) {
		ShowScreen(103);
	}

	return false;
}

function Form103() {
	$("#emptylink").focus();
	if ($('#signinname103').val() == '') { return ShowDialog1031101(); }
	if ($('#password103').val() == '') { return ShowDialog1031104(); }
	if ($('#password103').val() != $('#repeatpassword103').val()) { return ShowDialog1031105(); }
	if ($('#repeatpassword103').val() == '') { return ShowDialog1031106(); }
	if ($('#secretquestion103').val() == '') { return ShowDialog1031107(); }
	if ($('#secretanswer103').val() == '') { return ShowDialog1031108(); }
	if (!disclaimerAccepted) { return ShowScreen(105); }
	if (WSSignUp2(
		$('#signinname103').val(),
		$('#password103').val(),
		$('#secretquestion103').val(),
		$('#secretanswer103').val(),
		$('#language103').val(),
		ParseDateTime($('#birthdate102').val()).toString('yyyy/MM/dd')
	)) {
		// waiting for effect for 105 -> 103 finished
//		setTimeout(function() {
			var login = $('#signinname103').val();
			var password = $('#password103').val();
			ResetSignUp();
			Login(login, password);
//		}, 1000);
	}
	return false;
}

function Form105() {
	disclaimerAccepted = true;
//	GoBack(103);
	Form103();
	return false;
}

function Form106() {
	$("#emptylink").focus();
	if ($('#secretanswer106').val() == '') { return ShowDialog1061101(); }
	accSecretA = $('#secretanswer106').val();
	if (WSVerifySecretA($('#signinname101').val(), accSecretA)) {
		ShowScreen(107);
	}
	return false;
}
function Form107() {
	$("#emptylink").focus();
	if ($('#password107').val() == '') { return ShowDialog1071101(); }
	if ($('#repeatpassword107').val() == '') { return ShowDialog1071102(); }
	if ($('#password107').val() != $('#repeatpassword107').val()) { return ShowDialog1071103(); }
	if ($('#secretquestion107').val() == '') { return ShowDialog1071104(); }
	if ($('#secretanswer107').val() == '') { return ShowDialog1071105(); }

	if (WSChangePW(
		$('#signinname101').val(),
		accSecretA,
		$('#password107').val(),
		$('#secretquestion107').val(),
		$('#secretanswer107').val()
	)) {
		return ShowDialog1071106();
	}
	return false;
}

function Form107SignIn() {
	$('#password101').val($('#password107').val());
	return Form101();
}

function Form111UpdateEmail(email) {
	$("#emptylink").focus();
	if (!isValidEmail(email)) { return ShowDialogAlert('Please enter valid email'); }
	WSUpdateGuestEmail(email);
	return false;
}

function ForgotPassword() {
	$("#emptylink").focus();
	if ($('#signinname101').val() == '') { return ShowDialog1011104(); }
	if (WSSecretQ($('#signinname101').val())) {
		ShowScreen(106);
	}
	return false;
}

function Login(login, password) {
	if (WSLogin(login, password)) {
		if (WSSearchPassengerByID(accId)) {
			doSound();
			accLogin = login;
			accPass = password;
			RememberLogin(login);
			ShowScreen(screenUser);
			ResetSignIn();
		}
	} else {
		$('#password101').val('');
	}
}

function SignOut() {
	window.location.reload();
	return false;
}


/* screens processing */
function CreateTopBar(id, data) {
	var control = $('<div/>');
	control.addClass('bar bar' + id);
	
	if (!data) { data = {}; }
	
	if (data.b1event) {
		var b1 = $('<div/>');
		b1.html(data.b1text);
		b1.addClass('pos1 size4');
		b1.addClass(data.b1class);
		b1.click(data.b1event);
		control.append(b1);
	}
	if (data.b2event) {
		var b2 = $('<div/>');
		b2.html(data.b2text);
		b2.addClass('pos2 size4');
		b2.addClass(data.b2class);
		b2.click(data.b2event);
		control.append(b2);
	}
	if (data.h1 != undefined) {
		var h1 = $('<h1/>');
		h1.html(data.h1);
		if (data.h2) { h1.addClass('reduced'); }
		control.append(h1);
		if (data.h2 != undefined) {
			var h2 = $('<h2/>');
			h2.html(data.h2);
			control.append(h2);
		}	
	} else {
		var logo = $('<div/>');
		logo.addClass('logo');
		logo.click(ToggleSkin);
		control.append(logo);
	}
	control.hide();
	return control;
}

function CreateNativeBar(id) {
	var nativeControls = window.plugins.nativeControls;
}


function ShowControls(id) {


	var homeSet = id == screenGuest;
	var feedSet = (accId != 0) && (id >= 281 && id <= 287);
	var mainSet = (accId != 0) && !feedSet;
	
	if (useWrapper) {
		var nativeControls = window.plugins.nativeControls;

		var data = screens[id];
		if (data) {
			navBarEvents[0] = data.b2event ? data.b2event : null;
			navBarEvents[1] = data.b1event ? data.b1event : null;
		
			nativeControls.createNavBarItems(
				data.b1event ? data.b1text : '', (data.b1class == 'button7') ? 1 : 0, 
				data.b2event ? data.b2text : '', 0, 
				data.h2 ? '' : (data.h1 ? data.h1 : ''), 0, 
				' ', 
				' ', 
				250, 
				data.h2 ? (data.h1 ? data.h1 : '') + '\r\n' + data.h2 : ' ',
				{ 'onTap' : onNavBarItem }
			);
		}
		
		nativeControls.showTabBarItems(
			!homeSet ? 'id_home' : '', 
			mainSet ? 'id_msgs' : '', 
			mainSet ? 'id_actv' : '', 
			mainSet ? 'id_venu' : '', 
			mainSet ? 'id_frnd' : '',
			feedSet ? 'id_feed' : '',
			feedSet ? 'id_onbd' : '',
			feedSet ? 'id_srch' : '',
			feedSet ? 'id_catg' : ''
		);

		return true;
	}

	$('#bar-top .bar').hide();
	if ($('#bar-top .bar'+id).size() == 0) { $('#bar-top').append(CreateTopBar(id, screens[id])); }
	$('#bar-top .bar'+id).show();
	
	$('#bar-bottom .tbhome').css('display', !homeSet ? 'inline-block' : 'none');
	
	$('#bar-bottom .tbmsgs').css('display', mainSet ? 'inline-block' : 'none');
	$('#bar-bottom .tbactv').css('display', mainSet ? 'inline-block' : 'none');
	$('#bar-bottom .tbvenu').css('display', mainSet ? 'inline-block' : 'none');
	$('#bar-bottom .tbfrnd').css('display', mainSet ? 'inline-block' : 'none');
	$('#bar-bottom .tbfeed').css('display', feedSet ? 'inline-block' : 'none');
	$('#bar-bottom .tbonbd').css('display', feedSet ? 'inline-block' : 'none');
	$('#bar-bottom .tbsrch').css('display', feedSet ? 'inline-block' : 'none');
	$('#bar-bottom .tbcatg').css('display', feedSet ? 'inline-block' : 'none');

	$('#bar-top').toggleClass('shade3', screens[id]['panel-top'] == null);
	$('#bar-bottom').toggleClass('shade4', screens[id]['panel-bottom'] == null);
}

function RefreshScroll(id) {
	if (myScroll[id]) { myScroll[id].refresh(); }
}

function LoadingBegin() {
	if (useWrapper) return true;
	loadingCnt++;
	if (loadingCnt >= 1) { $('#screenlock').show(); }
	return loadingCnt;
}

function LoadingEnd() {
	if (useWrapper) return true;
	loadingCnt--;
	if (loadingCnt == 0) { setTimeout(function(){ $('#screenlock').hide(); }, 300); }
	return loadingCnt;
}

function LoadScreen(id) {
	var result = '';
	$.ajax({
		'url': 'pages/' + id + '.html?' + Math.random(),
		'async': false,
		'beforeSend': LoadingBegin,
		'complete': LoadingEnd,
		'success': function(data) { result = data; }
	});
	return result;
}

function HideScreenAnim(id) {
	if (useAnimation && $.browser.webkit) {
		var eff = '';
		if (id < 800) eff = 'slidedown';
		if (id < 600) eff = 'cubeouttoleft';
		if (id < 400) eff = 'swapouttoleft';
		if (id < 200) eff = 'flipouttoleft';

		// flipouttoleft swapouttoleft cubeouttoleft slidedown
		$('#page #outer' + id).css({ '-webkit-animation-duration': '400ms', '-webkit-animation-name': eff });

	} else {
		$('#page #outer' + id).hide();
	}
}

function ShowScreenAnim(id) {
	if (!useWrapper && $.browser.webkit) {
		if (useScroll && myScroll[id] == null) { myScroll[id] = new iScroll('screen' + id); }
		RefreshScroll(id);
	}
	
	if (androidAnimation && $.browser.webkit) {
		window.plugins.animationSample.list(    "fadeout", null, null);
	}
	
	if (useAnimation && $.browser.webkit) {
		var eff = '';
		if (id < 800) eff = 'slideup';
		if (id < 600) eff = 'cubeinfromright';
		if (id < 400) eff = 'swapinfromright';
		if (id < 200) eff = 'flipinfromright';

		// flipinfromright swapinfromright cubeinfromright slideup
		$('#page #outer' + id).css({ '-webkit-animation-duration': '400ms', /*'-webkit-animation-delay': '800ms',*/ '-webkit-animation-name': eff });

	} else {
		$('#page #outer' + id).show();
		$('#page #outer' + screenPrev).css({ 'display': 'none', 'opacity': 0, 'z-index': 1 });
		$('#page #outer' + screenThis).css({ 'display': 'block', 'opacity': 1, 'z-index': 2 });
	}
}

function ShowScreen(id) {
	if (!screens[id]) { alert('Screen ' + id + ' not available'); return false; }

	if (showingLock) { return false; }
	showingLock = true;

	$("#emptylink").focus();


	if ($('#page div.screen' + id).size() == 0) {
		var outer = $('<div/>');
		outer.addClass('screen-outer');
		outer.attr('id', 'outer' + id);
		outer.append(LoadScreen(id));
		$('#page').append(outer);
		$('#page div.screen.screen' + id).attr('id', 'screen' + id);
	}

	ShowControls(id);

	if (LoadScreenData(id) != false) {
		if (screenThis != id) {
			screenPrev = screenThis;
			screenThis = id;
			$('#page > div').css({ 'display': 'none', 'opacity': 0, 'z-index': 1 });
			$('#page #outer' + screenPrev).css({ 'display': 'block', 'opacity': 1, 'z-index': 2 });
			$('#page #outer' + screenThis).css({ 'display': 'block', 'opacity': 0, 'z-index': 1 });
			if (screens[screenPrev]) { HideScreenAnim(screenPrev); }
			if (screens[screenThis]) { ShowScreenAnim(screenThis); }
			HistoryAdd(id);
		}
	}
	
	showingLock = false;
	return false;
}

/* history navigation */
function HistoryAdd(id) {
	var len = navHistory.length;
	if (navHistory[len - 1] != id) { navHistory[len] = id; }
	return false;
}

function HistoryBack(id, count) {
	var len = navHistory.length;
	if (len > count) {
		var new_id = navHistory[len - 1 - count];
		navHistory.length = len - 1 - count;
		return ShowScreen(new_id);
	}
	navHistory.length = 0;
	return false;
}

/* show help */
function ShowHelp(id, context) {
	if (id == null) { id = screenThis; }
	if (screens[id] == null) { return alert('Help Topic not available for screen id ' + id + '.'); }
	/* fill screen message here */
	ShowScreen(761);
	return false;
}

function GoHome(id) {
	if (id == null) { id = screenThis; }
	return accId ? ShowScreen(screenUser) : ShowScreen(screenGuest);
}

function GoBack(id, count) {
	if (!count) count = 1;
	return HistoryBack(id, count);
}

function NA() {
	alert('Not Active');
	return false;
}

function SuggestLogin(firstname, lastname) {
	var login = '';
	if (firstname[0]) { login += firstname[0]; }
	if (lastname) { login += lastname; }
	return login.toLowerCase();
}

function ChangeDateInput(y, m, d, full) {
	$(full).val($(y).val() + $(m).val() + $(d).val() + '000000');
}

function ResetSignUp() {
	$('#lastname102').val('');
	var currentYear = (new Date).getFullYear();
	$('#by102').val(currentYear - 60);
	$('#bm102').val('01');
	$('#bd102').val('01');
	ChangeDateInput('#by102', '#bm102', '#bd102', '#birthdate102');
	$('#signinname103').val('');
	$('#password103').val('');
	$('#password103').val('');
	$('#repeatpassword103').val('');
	$('#secretquestion103').val('');
	$('#secretanswer103').val('');
}

function ResetSignIn() {
	$('#signinname101').val('');
	$('#password101').val('');
}

function Salutation() {
	var title = Trim(objSearchPassenger.gsTitle);
	var result = '';
	result += (title != '') ? title + '. ' : '';
	result += Trim(objSearchPassenger.gsFirstName) + ' ';
	result += Trim(objSearchPassenger.gsLastName);
	return result;
}


function BookExcById(excid, aqty, cqty) {
	if (WSExcBooking(excid, aqty, cqty)) {
		ShowDialog5171102();
		objGetItinerary = null;
		objGetItineraryShorex = null;
		objGetExcursion = null;
		objGetExcFolio = null;
		screens[513].itemId = excid;
		ShowScreen(513);
	}
	return false;
}

function BookEvents(events) {
	var booked = false;
	var tquantity = 0;

	events.each(function(index, evt) {
		var quantity = parseInt($(evt).val());
		tquantity += quantity;
		if (quantity > 0) {
			var evtid = $(evt).attr('evtid');
			var evtpricecategory = $(evt).attr('evtpricecategory');
			var evtpersoncode = $(evt).attr('evtpersoncode');
			if (WSEvtBooking(evtid, evtpricecategory, evtpersoncode, quantity)) { booked = true; }
		}
	});
	if (booked) {
		ShowDialog3171102();
		objGetItinerary = null;
		objGetItineraryTicket = null;
		objGetEvent = null;
		objGetEvtFolio = null;
		screens[313].itemId = screens[317].itemId;
		ShowScreen(313);
	}
	if (tquantity == 0) { ShowDialog3171103(); }
	return false;
}

function BGCountEvents( cached, nobg ) {
	if (accId == 0) { return false; }

	var unread = 0;
	if (!cached) { objInfoCount = null; }
	if (WSInfoCount(nobg == null)) {
		for (i = 0; i < objInfoCount.length; i++) {
			unread += objInfoCount[i].MESSAGES_CNT;
		}
	}
	var ctrl = $('div.toolbar').find('[val=notify1]');
	ctrl.html(unread);
	ctrl.toggle(unread > 0);
	
	if (window.plugins && window.plugins.badge) { 
		window.plugins.badge.set(unread); 
	}
	
	if (window.plugins && window.plugins.nativeControls) { 
		if (unread == 0) { unread = ''; }
		window.plugins.nativeControls.updateTabBarItem("id_msgs", { badge : unread.toString() }); 
	}
}

function ActivityOverlappedTime(timeBegin, timeEnd, noalert) {
	
//	objGetItinerary = null;
//	WSGetItinerary();
//	var obj2 = objGetItinerary;
	var obj2 = WSGetItinerary();
	if (!obj2) { return false; }
	var isOverlapped = false;

	for (var i = 0; i < obj2.length; i++) {
		
		var eventDate = obj2[i].EVENTDATE;
		var eventTime = obj2[i].EVENTTIME; if (eventTime == null) { eventTime = '00:00'; }
		var eventDuration = obj2[i].EVENTDURATION; // minutes

		// Parse timeBegin1
		eventDate = eventDate.substring(0,8);
		eventTime = eventTime.replace(':', '');	if (eventTime.length == 3) { eventTime = '0' + eventTime; }
		var timeBegin1 = eventDate + eventTime + '00';

		// Parse timeEnd1
		var timeEnd1 = ActivityGetTimeEnd(timeBegin1, eventDuration);

		if(IsOverlappedTime(timeBegin, timeEnd, timeBegin1, timeEnd1)) {
			isOverlapped = true;
			break;
		}
	}
	
	if(isOverlapped && !noalert) {
		ShowDialogAlert('You already have activity at this time.');
		return true;
	}
	return isOverlapped;
}


function SetProfileName(name) {
	if (!name) { name = Trim(objSearchPassenger.gsFirstName) + ' ' + Trim(objSearchPassenger.gsLastName); }
	screens[701].name = name;
	screens[705].name = name;
	screens[752].name = name;
}


function canPhoto() {
	return navigator.camera ? true : false;
}

function doPhoto(onPhotoDataSuccess) {
	if (canPhoto()) {
		navigator.camera.getPicture(
			onPhotoDataSuccess, 
			null, 
			{
				quality: 50,
				targetWidth: 70,
				targetHeight: 70
			}
		);
	}
}

function pickPhoto(onPhotoDataSuccess) {
	if (canPhoto()) {
		navigator.camera.getPicture(
			onPhotoDataSuccess, 
			null, 
			{
				quality: 50,
				sourceType: 0,
				allowEdit: true,
				EncodingType: 0,
				targetWidth: 200,
				targetHeight: 200
			}
		);
		return true;
	}
	return false;
}


function doSound() {
	if (navigator.notification) { 
		navigator.notification.vibrate(500); 
		navigator.notification.beep(1);
	}
}


function ToggleSkin() {
	if ($("head").find('[href="skin1.css"]').size() > 0) {
		$("head").find('[href="skin1.css"]').remove();
	} else {
		var link = $("<link>");
		link.attr({
				type: 'text/css',
				rel: 'stylesheet',
				href: 'skin1.css'
		});
		$("head").append( link );
	}
}

function ShowTimeAgo(time) {
	var dt1 = ParseDateTime(time);
	if (!dt1) { return ''; }
	var dt2 = new Date();
	var diff = dt2.getTime() - dt1.getTime();
	
	diff = diff / 1000; if (diff < 60) { return Math.round(diff) + ' Seconds ago'; }
	diff = diff / 60;  if (diff < 60) { return Math.round(diff) + ' Minutes ago'; }
	diff = diff / 60;  if (diff < 24) { return Math.round(diff) + ' Hours ago'; }
	diff = diff / 24;  return Math.round(diff) + ' Days ago';
}

function TimeAgo() {
	var items = $('.ago');
	for (var i = 0; i < items.size(); i++) {
		var item = items.eq(i);
		item.html(ShowTimeAgo(item.attr('time')));
	}
}

function RedirectToLocationByCode(locationCode) {
	var li = WSLocationImages(locationCode);
	var lt = (li && li[0] && li[0].LOCATION_TYPE) ? li[0].LOCATION_TYPE : '';
	var ln = (li && li[0] && li[0].LOCATION_NAME) ? li[0].LOCATION_NAME : '';
	if (lt == 'RESTAURANT') {
		screens[326].restaurant = locationCode; 
		screens[326].name = ln;
		return ShowScreen(326); 
	}
	if (lt == 'BAR') {
		screens[331].itemId = locationCode; 
//		screens[331].name = ln;
		return ShowScreen(331); 
	}
	if (lt == 'SPA') {
		screens[410].itemId = locationCode;
		return ShowScreen(410); 
	}
	if (lt == 'LOC_DESK') {
		var art = li[0].LOCATION_ART;
		if (art == 'EXC_DESK') { return ShowScreen(510); }
		if (art == 'TKT_DESK') { return ShowScreen(310); }
	}
	screens[251].itemId = locationCode;
	return ShowScreen(251);
}

