RedirectController = {
	
	RC: '',
	VIEWTYPE: '',
	ISMOBILE: '',
	HOST: {
		type: '',
		path: location.host
	},
	URL: {
		mobile: '',
		desktop: ''
	},
	
	init: function () {
		log('---->RedirectController.init()');
		RC = this; // shorthand namespace
		RC.setURLs();
		RC.paramCheck(Utils.queryParam('siteview'));
	}, //-- init()
	
	setFooterLinks: function () {
		log('---->RedirectController.setFooterLinks()');
		if (typeof sessionStorage !== 'undefined') {
			try {
				jQuery('.linkToMobile').attr('href','http://' + RC.URL.mobile + '?siteview=mobile');
				jQuery('.linkToDesktop').attr('href','http://' + RC.URL.desktop + '?siteview=desktop');
				jQuery('.linkToMobile').click(function() {
					sessionStorage.siteView = 'mobile';
				});
				jQuery('.linkToDesktop').click(function() {
					sessionStorage.siteView = 'desktop';
				});
			} catch (err) {
				log('ERROR-->RedirectController.setFooterLinks() error\n' + err);
			}
		} else {
			log('ERROR-->RedirectController.setFooterLinks()no session storage');
		}
	}, //-- setFooterLinks()
	
	paramCheck: function ( param ) {
		log('---->RedirectController.paramCheck()');
		if (typeof sessionStorage !== 'undefined') {
			try {
				switch (param) {
					case 'desktop':
						log('param: desktop | setting sessionStorage.siteView: desktop');
						sessionStorage.siteView = 'desktop';
						break;
					case 'mobile':
						log('param: mobile | setting sessionStorage.siteView: mobile');
						sessionStorage.siteView = 'mobile';
						break;
					default:
						log('param: "" | moving on');
				}
			} catch (err) {
				log('ERROR-->RedirectController.paramCheck() switch error\n' + err);
			}
			RC.sessionCheck();
		} else {
			log('ERROR-->RedirectController.paramCheck() - no session storage');
		}
	}, //-- paramCheck()
	
	sessionCheck: function () {
		log('---->RedirectController.sessionCheck()');
		log('sessionStorage.siteView: ' + sessionStorage.siteView);
		try {
			switch (sessionStorage.siteView) {
				case 'desktop':
					log('sessionStorage.siteView: desktop | setting RC.VIEWTYPE: desktop');
					RC.VIEWTYPE = 'desktop';
					break;
				case 'mobile':
					log('sessionStorage.siteView: mobile | setting RC.VIEWTYPE: mobile');
					RC.VIEWTYPE = 'mobile';
					break;
				default:
					log('sessionStorage.siteView: "" | moving on');
			}
		} catch (err) {
			log('ERROR-->RedirectController.sessionCheck() switch error\n' + err);
		}
		RC.mobileDetect();
	}, //-- sessionCheck()
	
	mobileDetect: function () {
		log('---->RedirectController.mobileDetect()');
		try {
			switch (jQuery.browser.mobile) {
				case true:
					log('RC.ISMOBILE: true');
					RC.ISMOBILE = 'true';
					break;
				case false:
					log('RC.ISMOBILE: false');
					RC.ISMOBILE = 'false';
					break;
				default:
					log('Error checking mobile within switch');
			}
		} catch (err) {
			log('ERROR-->RedirectController.mobileDetect() switch error\n' + err);
		}
		RC.determineRedirectType();
	}, //-- mobileDetect()
	
	determineRedirectType: function () {
		log('---->RedirectController.determineRedirectType()');
		try {
			switch (RC.ISMOBILE) {
				case 'true':
					if (RC.VIEWTYPE !== 'desktop') {
						log('doRedirect: mobile');
						RC.doRedirect('mobile');
					} else if (RC.VIEWTYPE === 'desktop'){
						log('doRedirect: desktop');
						RC.doRedirect('desktop');
					}
					break;
				case 'false':
					if (RC.VIEWTYPE !== 'mobile') {
						log('doRedirect: desktop');
						RC.doRedirect('desktop');
					} else if (RC.VIEWTYPE === 'mobile') {
						log('doRedirect: mobile');
						RC.doRedirect('mobile');
					}
					break;
				default:
					log('Error: no boolean value passed for RC.ISMOBILE: ' + RC.ISMOBILE);
			}
		} catch (err) {
			log('ERROR-->RedirectController.determineRedirectType() switch error\n' + err);
		}
	}, //-- determineRedirectType()
	
	getCurrentHost: function () {
		log('---->RedirectController.getCurrentHost()');
		if (RC.HOST.path !== RC.URL.mobile) {
			log('hostType: desktop');
			RC.HOST.hostType = 'desktop';
		} else {
			log('hostType: mobile');
			RC.HOST.hostType = 'mobile';
		}
		RC.setFooterLinks();
	}, //-- getCurrentHost()
	
	doRedirect: function ( viewType ) {
		log('---->RedirectController.doRedirect()');
		log('viewType: ' + viewType + '\nhostType: ' + RC.HOST.hostType + '\npath: ' + RC.HOST.path);
		if (viewType === 'mobile' && RC.HOST.hostType !== 'mobile') {
			log('redirecting to mobile');
			location.href = 'http://' + RC.URL.mobile;
		} else if (viewType === 'desktop' && RC.HOST.hostType !== 'desktop') {
			log('redirecting to desktop');
			location.href = 'http://' + RC.URL.desktop;
		} else {
			log('no redirect needed');
		}
	}, //-- doRedirect()
	
	setURLs: function () {
		log('---->RedirectController.setURLs()');
		var urlSet;
		switch (RC.HOST.path) {
			case 'm.dev.tomsofmaine.com':
				log('setting to dev');
				urlSet = 'dev';
				break;
			case 'm.stage.tomsofmaine.com':
				log('setting to stage');
				urlSet = 'stage';
				break;
			case 'm.test.tomsofmaine.com':
				log('setting to preview');
				urlSet = 'preview';
				break;
			case 'origin.m.tomsofmaine.com':
				log('setting to origin');
				urlSet = 'origin';
				break;
			case 'dev.tomsofmaine.com':
				log('setting to dev');
				urlSet = 'dev';
				break;
			case 'stage.tomsofmaine.com':
				log('setting to stage');
				urlSet = 'stage';
				break;
			case 'preview.tomsofmaine.com':
				log('setting to preview');
				urlSet = 'preview';
				break;
			case 'origin.www.tomsofmaine.com':
				log('setting to origin');
				urlSet = 'origin';
				break;
			default:
				log('defaulting to www');
				urlSet = 'www';
		}
		switch (urlSet) {
			case 'dev':
				RC.URL.mobile = 'm.dev.tomsofmaine.com';
				RC.URL.desktop = 'dev.tomsofmaine.com';
				break;
			case 'stage':
				RC.URL.mobile = 'm.stage.tomsofmaine.com';
				RC.URL.desktop = 'stage.tomsofmaine.com';
				break;
			case 'preview':
				RC.URL.mobile = 'm.preview.tomsofmaine.com';
				RC.URL.desktop = 'preview.tomsofmaine.com';
				break;
			case 'origin':
				RC.URL.mobile = 'm.origin.tomsofmaine.com';
				RC.URL.desktop = 'origin.www.tomsofmaine.com';
				break;
			case 'www':
				RC.URL.mobile = 'm.tomsofmaine.com';
				RC.URL.desktop = 'www.tomsofmaine.com';
				break;
			default:
				RC.URL.mobile = 'm.tomsofmaine.com';
				RC.URL.desktop = 'www.tomsofmaine.com';
		}
		log('URLs set to: ' + urlSet + '\nMobile: ' + RC.URL.mobile + '\nDesktop: ' + RC.URL.desktop);
		RC.getCurrentHost();
	} //-- setURLs()
	
};
jQuery(function($) {
	RedirectController.init();
});
