var deviceDetect = new Object;

deviceDetect.cookieDomain = '.augusta.com';
deviceDetect.redirectURL = 'http://mobile.augusta.com/rd';
deviceDetect.detectURL = 'http://apps.augusta.com/jsx/device-detect.js';

// -------------------------------------------------------------------------------------------------
// UTIL FUNCTIONS
// -------------------------------------------------------------------------------------------------

deviceDetect.setCookie = function ( name,value,domain,days ) {
	if (domain) {
		domain = '; domain=' + domain;
	} else {
		domain = '; domain=' + deviceDetect.cookieDomain;
	}
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires=" + date.toGMTString();
	}
	else var expires = "";
	document.cookie = name + "=" + value + expires + domain + "; path=/";
}

deviceDetect.getCookie = function ( name ) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

deviceDetect.deleteCookie = function ( name ) {
	deviceDetect.setCookie(name,'',deviceDetect.cookieDomain,-1);
}


deviceDetect.embedMessage = function ( params ) {
	if ( typeof params != 'object' ) {
		params = { 'message': params };
	}
	var html = ( params.message ? params.message : '' );
	var choices = ( params.choices ? params.choices : new Array );
	var id = ( params.id ? params.id : 'device-detect-message' );
	var existing = document.getElementById( id );
	if ( existing ) {
		document.body.removeChild( existing );
	}
	var body = document.body ? document.body : window.document.childNodes[0].childNodes[1];
	var first = body.childNodes[0];
	var box = document.createElement('DIV');
	box.id = id;
	box.style.backgroundColor = '#fff';
	box.style.color = '#000';
	box.style.padding = '36px';
	box.style.borderBottom = '6px solid black';
	box.style.fontFamily = 'Arial,Helvetica,sans-serif';
	box.style.fontSize = '72px';
	if ( choices.length > 0 ) {
		var choiceHtml = '';
		for (var i=0; i < choices.length; i++ ) {
			if ( choiceHtml ) {
				choiceHtml += ' | ';
			}
			choiceHtml += '<a style="text-decoration:none;color:#0000dd" href="javascript:deviceDetect.handlePrompt(\'' + choices[i].key + '\')">' + choices[i].label + '</a>';
		}
		html += '<div style="margin:36px 0 12px 0;color:#ccc;font-size:48px;font-weight:bold">' + choiceHtml + '</div>';
	}
	box.innerHTML = html;
	body.insertBefore( box, first );
}

deviceDetect.hideMessage = function ( id ) {
	id = ( id ? id : 'device-detect-message' );
	var box = document.getElementById( id );
	if ( box ) {
		document.body.removeChild( box );
	}
}

deviceDetect.loadJs = function (url){
	var fileref=document.createElement('script');
	fileref.setAttribute("type","text/javascript");
	fileref.setAttribute("src", url);
//	fileref.onload = function () { alert('loaded'); };
	document.getElementsByTagName("head")[0].appendChild(fileref);
}


// -------------------------------------------------------------------------------------------------
// INTERNAL FUNCTIONS
// -------------------------------------------------------------------------------------------------

deviceDetect.prompt = function () {
	var pref = deviceDetect.getCookie('mobile_prompt');
	if ( pref != 'no' ) {
		deviceDetect.embedMessage( {
			'id': 'dd-mobile-prompt',
			'message': 'Switch to <a style="text-decoration:none;color:#0000dd" href="javascript:deviceDetect.redirect();">mobile version</a>.',
			'choices': [
				{ 'label': 'Not now', 'key': 'dismiss' },
				{ 'label': 'Don\'t show again', 'key': 'no_prompt' }
			]
		});
	}
}

deviceDetect.redirect = function () {
	if ( ( deviceDetect.getCookie('mobile_prompt') == 'no' ) && ( deviceDetect.getCookie('mobile_redirect') == 'no' ) ) {
		deviceDetect.setCookie( 'mobile_prompt', 'yes', deviceDetect.cookieDomain ); 
		deviceDetect.setCookie( 'mobile_redirect', 'no', deviceDetect.cookieDomain ); 
	} else if ( ( deviceDetect.getCookie('mobile_prompt') == 'yes' ) && ( deviceDetect.getCookie('mobile_redirect') == 'no' ) ) {
		deviceDetect.setCookie( 'mobile_prompt', 'no', deviceDetect.cookieDomain ); 
		deviceDetect.setCookie( 'mobile_redirect', 'yes', deviceDetect.cookieDomain ); 
	} else if ( ( deviceDetect.getCookie('mobile_prompt') != 'no' ) && ( deviceDetect.getCookie('mobile_redirect') != 'no' ) ) {
		deviceDetect.setCookie( 'mobile_prompt', 'no', deviceDetect.cookieDomain ); 
		deviceDetect.setCookie( 'mobile_redirect', 'yes', deviceDetect.cookieDomain ); 
	}
	var d = new Date();
	var from = window.location;
	window.location = deviceDetect.redirectURL + '/' + d.getTime() + '?from=' + from;
}

deviceDetect.handlePrompt = function ( choice ) {
	if ( choice == 'no_prompt' ) {
		deviceDetect.setCookie( 'mobile_prompt', 'no', deviceDetect.cookieDomain, 7 ); 
		deviceDetect.setCookie( 'mobile_redirect', 'no', deviceDetect.cookieDomain ); 
		deviceDetect.hideMessage( 'dd-mobile-prompt' );
		deviceDetect.embedMessage( {
			'id': 'dd-mobile-prompt',
			'message': 'Preference saved. If you change your mind, you\'ll find a mobile link at the bottom of every page.',
			'choices': [
				{ 'label': 'OK', 'key': 'ok' }
			]
		});
	} else if ( choice == 'dismiss' ) {
		deviceDetect.setCookie( 'mobile_prompt', 'yes', deviceDetect.cookieDomain, 7 ); 
		deviceDetect.setCookie( 'mobile_redirect', 'no', deviceDetect.cookieDomain ); 
		deviceDetect.hideMessage( 'dd-mobile-prompt' );
	} else if ( choice == 'ok' ) {
		deviceDetect.hideMessage( 'dd-mobile-prompt' );
	} else if ( choice == 'reset' ) {
		deviceDetect.deleteCookie( 'mobile_prompt' ); 
		deviceDetect.deleteCookie( 'mobile_redirect' ); 
	}
}

deviceDetect.handleDetect = function() {
	if ( deviceDetect.isMobile == true ) {
		var prompt = ( deviceDetect.getCookie( 'mobile_prompt' ) == 'no' ? false : true );
		var redirect = ( deviceDetect.getCookie( 'mobile_redirect' ) == 'yes' ? true : false );
		if ( redirect == true )	{
			deviceDetect.redirect();
		} else if ( prompt == true ) {
			deviceDetect.prompt();
		}
	} else {
//		alert( 'No mobile for you.' );
//		deviceDetect.embedMessage( 'No mobile for you.' );
	}
}

// -------------------------------------------------------------------------------------------------
// MAIN FUNCTION
// -------------------------------------------------------------------------------------------------

deviceDetect.detect = function () {
	deviceDetect.isMobile = false;
	if ( deviceDetect.info ) {
		deviceDetect.isMobile = ( deviceDetect.info.id > 0 ? true : false );
		deviceDetect.handleDetect();
	} else if ( deviceDetect.getCookie('device') ) {
		var data = deviceDetect.getCookie('device').split(',');
		deviceDetect.info = new Object;
		deviceDetect.info.id = data[0] ? data[0] : 0;
		deviceDetect.info.resWidth = data[1] ? data[1] : 0;
		deviceDetect.info.resHeight = data[2] ? data[2] : 0;
		deviceDetect.info.exact = data[3] ? true : false;
		deviceDetect.isMobile = ( deviceDetect.info.id > 0 ? true : false );
		deviceDetect.handleDetect();
	} else {
		deviceDetect.loadJs( deviceDetect.detectURL );
	}
}


//deviceDetect.deleteCookie('device');
//deviceDetect.deleteCookie('mobile_prompt');
//deviceDetect.deleteCookie('mobile_redirect');

if ( (deviceDetect.getCookie('mobile_redirect') == 'yes') && ( deviceDetect.getCookie('mobile_prompt') == 'no' ) ) {
	deviceDetect.redirect();
}

deviceDetect.detect();