
function UtilUrlParams() {
	this.parseParams = function(searchString) {
		params = new Array();

		pairs = searchString.split("&");

		for (i=0; i<pairs.length; i++) {
			pair = pairs[i].split("=");
			params[unescape(pair[0])] = pair.length>1 ? unescape(pair[1]) : "";
		}

		return params;
	}

	this.parameters = this.parseParams(document.location.search.substr(1));

	this.isSet = function(name) {
		return this.parameters[name] ? true : false;
	}

	this.value = function(name) {
		return this.parameters[name] ? this.parameters[name] : "";
	}
}

function UtilCookies() {
	this.parseCookies = function(cookieString) {
		cookies = new Array();

		if (cookieString != "") {
			pairs = cookieString.split(";");

			for (i=0; i<pairs.length; i++) {
				pair = pairs[i].split('=');
				cookies[unescape(pair[0])] = pair.length>1 ? unescape(pair[1]) : "";
			}
		}

		return cookies;
	}

	this.cookies = this.parseCookies(document.cookie);
	
	this.isSet = function(name) {
		return this.cookies[name] ? true : false;
	}

	this.get = function(name) {
		return this.cookies[name] ? this.cookies[name] : "";
	}

	this.set = function(name, value, expireDays) {
		this.cookies[name] = value;

		cookieString = escape(name)+"="+escape(value)+";";

		if (null != expireDays) {
			expDate = new Date();
			expDate.setDate(expDate.getDate() + expireDays);
			
			cookieString = cookieString+";expires="+expDate.toGMTString();
		}

		document.cookie = cookieString;
	}
}

function MobileClient() {
	this.devices = ["midp","240x320","windows ce","ericsson","panasonic","portalmmm","samsung","sharp","mot-","sie-","sonyericsson","symbian","blackberry","motorola","benq","mda","opera mini","philips","nokia","sagem","netfront","sony","sgh-","vodafone","htc","ipod","iphone","android"];

	this.redirectUrl = "";
	this.urlParamName = "redirect";
	this.urlParamNoRedirectValue = "no";
	this.cookieName = "mobileredirect";
	this.cookieNoRedirectValue = "no-redirect";
	this.cookieExpireDays = 7;
	
	this.browser = navigator.userAgent.toLowerCase();
	
	this.urlParams = new UtilUrlParams();
	this.cookies = new UtilCookies();

	this.isMobile = function() {
		for (i=0; i<this.devices.length; i++) {
			if (this.browser.indexOf(this.devices[i]) != -1) {
				return true;
			}
		}

		return false;
	}

	this.redirect = function(redirectUrl) {
		if (null == redirectUrl) {
			redirectUrl = this.redirectUrl;
		}

		this.cookies.set(this.cookieName, this.cookieNoRedirectValue, -1);

		document.location = redirectUrl;
	}

	this.noRedirect = function() {
		this.cookies.set(this.cookieName, this.cookieNoRedirectValue, this.cookieExpireDays);
	}

	this.conditionalRedirect = function(redirectUrl) {
		if (this.isMobile()) {
			if (this.urlParams.isSet(this.urlParamName)) {
				if (this.urlParamNoRedirectValue == this.urlParams.value(this.urlParamName)) {
					return this.noRedirect();
				}
			}

			if (this.cookies.isSet(this.cookieName)) {
				if (this.cookieNoRedirectValue == this.cookies.get(this.cookieName)) {
					return this.noRedirect();
				}
			}
			
			this.redirect(redirectUrl);
		}
	}
}
