//============= core functions =======================

function getAjaxRequest(params, callback, requestType, url, dataType) {
	// this is a wrapper for all gateway ajax requests
	return jQuery.ajax({
		type: ((requestType === undefined) ? 'GET' : requestType),
		url: ((url === undefined) ? 'gw.php' : url),
		dataType: ((dataType === undefined) ? 'json' : dataType),
		data: params,
		success: callback
	});
}

function getLanguageString(key) {
	if (TJG.languagePackLoaded == true) {
		if ((TJG.languagePack != null) && (TJG.languagePack[key] !== undefined) && (TJG.languagePack[key] != null)) {
			return TJG.languagePack[key];
		} else {
			return '';
		}
	} else {
		//log('language pack missing');
	}
}

function initPage() {
	
	/*
	var params = {action: 'get_lang', lang: TJG.defaultLanguage, ns: 'generic'};
	getAjaxRequest(params, function(response) {
		TJG.languagePack = response;
		TJG.languagePackLoaded = true;
		initDateGlobalConstants();
	});
	*/
	
	TJG.languagePack = {
			'generic_weekday_sunday':		'Sunday',
			'generic_weekday_monday':		'Monday',
			'generic_weekday_tuesday':		'Tuesday',
			'generic_weekday_wednesday':	'Wednesday',
			'generic_weekday_thursday':		'Thursday',
			'generic_weekday_friday':		'Friday',
			'generic_weekday_saturday':		'Saturday',
			'generic_month_january':		'January',
			'generic_month_february':		'February',
			'generic_month_march':			'March',
			'generic_month_april':			'April',
			'generic_month_may':			'May',
			'generic_month_june':			'June',
			'generic_month_july':			'July',
			'generic_month_august':			'August',
			'generic_month_september':		'September',
			'generic_month_october':		'October',
			'generic_month_november':		'November',
			'generic_month_december':		'December'
	};
	
	TJG.languagePackLoaded = true;
	initDateGlobalConstants();
	
	if (TJG.pageJS) {
		
		try {
			
			if ((TJG.page == null) || (TJG.page == ''))
				TJG.page = getPageName(document.URL, true).toLowerCase();
			
			jQuery.getScript('js/ext_' + TJG.page + '.js', function(data, textStatus) {
				
				try {
					var docUrl = getPageName(document.URL, true).toLowerCase();
					if ((docUrl == '') || ((TJG.page != null) && (TJG.page != '') && (TJG.page == docUrl))) {
						var fn = window['onLoad_' + TJG.page];
						if ((fn !== undefined) && (fn != null) && jQuery.isFunction(fn))
							fn();
					}
				} catch (e) {}
				
			});
			
		} catch (e) {}
		
	}
	
	if (TJG.fbappid)
		FB.init({appId: TJG.fbappid, status: true, cookie: true, xfbml: true});

}

//============= globals ==============================

var TJG = {};

TJG.page = null;
TJG.pageJS = true;

// make sure the flag is set in PHP too; see assets/gateway.php
TJG.GWResBase64 = false;

// make sure this flag is turned off in prod
TJG.extPageDebug = true;

TJG.defaultLanguage = 'EN';
TJG.languagePackLoaded == false;
TJG.languagePack = null;
TJG.LPWeekdays = null;
TJG.LPMonths = null;

TJG.signInModalWin = null;
TJG.statusLineModalWin = null;
TJG.journalImgModalWin = null;

TJG.fbappid = ((fbappid !== undefined) && (fbappid != null)) ? fbappid : null;

//========== debug-enabled getscript method; turned off on prod =====

if (TJG.extPageDebug) {

	jQuery.extend({
		getScript: function(url, callback) {
			var head = document.getElementsByTagName("head")[0];
			var script = document.createElement("script");
			script.src = url;
			{
				var done = false;
				script.onload = script.onreadystatechange = function() {
					if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
						done = true;
						if (callback)
							callback();
						script.onload = script.onreadystatechange = null;
					}
				};
			}
			head.appendChild(script);
			return undefined;
		}
	});

}

//============= global date constants ================

function initDateGlobalConstants() {
	
	TJG.LPWeekdays = [
		getLanguageString('generic_weekday_sunday'),
		getLanguageString('generic_weekday_monday'),
		getLanguageString('generic_weekday_tuesday'),
		getLanguageString('generic_weekday_wednesday'),
		getLanguageString('generic_weekday_thursday'),
		getLanguageString('generic_weekday_friday'),
		getLanguageString('generic_weekday_saturday')
	];
	
	TJG.LPMonths = [
		getLanguageString('generic_month_january'),
		getLanguageString('generic_month_february'),
		getLanguageString('generic_month_march'),
		getLanguageString('generic_month_april'),
		getLanguageString('generic_month_may'),
		getLanguageString('generic_month_june'),
		getLanguageString('generic_month_july'),
		getLanguageString('generic_month_august'),
		getLanguageString('generic_month_september'),
		getLanguageString('generic_month_october'),
		getLanguageString('generic_month_november'),
		getLanguageString('generic_month_december')
	];
}

//============= external js loading ==================

jQuery.getScript('js/prototype_ext.js');
jQuery.getScript('js/common.js');
jQuery.getScript('js/libs/jquery.json-2.2.min.js');
jQuery.getScript('js/libs/json2.min.js');
jQuery.getScript('js/jquery.plugins.js');
//jQuery.getScript('js/jquery.simplemodal.js');
jQuery.getScript('js/classes/base64.js');
jQuery.getScript('js/classes/modalwindow.js');

//============= init =================================

jQuery(document).ready(initPage);

