// globals
var bIsLoading = false;
var bPageLoading = false;
var sCurrPage = window.location.href;
var iRequest = 0;
var aUrl = sCurrPage.split('/');
var sHost = 'http://' + aUrl[iRequest + 2] + '/';
var sRequest = sCurrPage.replace(sHost, '');
var initController = aUrl[iRequest + 3];
var prevController = (initController == '' || initController == '#') ? 'home' : initController;
var aNavControllers = Array();
var docTitles = Object();
var sLoadingHtml = '<div class="loading"><img src="../img/loading.gif" alt="Loading..." /></div>';
var bSafari = (/safari/.exec(navigator.userAgent.toLowerCase())) ? true : false;
var ie = false;
var ie6 = false;
var ie7 = false;
/*@cc_on
	ie = true;
	@if (@_jscript_version < 5.7)
		ie6 = true;
	@else
		ie7 = true;
	@end
@*/
var iScrollToOffset = ie6 ? 0 : -88;
var sTitlePrefix = 'Salon Matos - ';
docTitles[''] = sTitlePrefix + 'A Paul Mitchell Focus Salon - Spring, TX | Houston, TX';
docTitles['services'] = sTitlePrefix + 'Our Services';
docTitles['appointment'] = sTitlePrefix + 'Appointment Request';
docTitles['team'] = sTitlePrefix + 'Meet The Team';
docTitles['gallery'] = sTitlePrefix + 'Gallery and Portfolio';
docTitles['contact'] = sTitlePrefix + 'Contact Us';
docTitles['links'] = sTitlePrefix + 'Links';
// onload events
Element.observe(window, 'load', initAsyncLinks);
Element.observe(window, 'load', function() {
	var aLinks = $('mainNav').getElementsByTagName('a');
	/*
	aLinks.each(function(item) {
		var sCurrController = item.href.split('/')[iRequest + 3];
		aNavControllers.push(sCurrController);
		alert(sCurrController);
	});
	*/
	for (var i = 0; i < aLinks.length; i++) {
		var sUrlController = aLinks[i].href.split('/')[3];
		var sCurrController = (sUrlController == '') ? 'home' : sUrlController;
		aNavControllers.push(sCurrController);
	}
	registerBehaviors(initController);
	externalLinks();
});
// functions
function registerBehaviors(controller) {
	for (var i = 0; (form = document.forms[i]); i++) {
		form.onsubmit = function() {
			return updateContent('content', this.action, true, 'post', Form.serialize(this));
		};
	}
	/*
	Event.observe(window.location, 'change', function() {
		sRequestChange = sCurrPage.split('#')[1];
		if (typeof sRequestChange != 'undefined' && sRequestChange != sRequest) {
			updateContent('contentContainer', sRequestChange, true);
		}
	});
	*/
}
function initAsyncLinks() {
	var link, href;
	for (i = 0; (link = document.links[i]); i++) {
		if (link.rel == '' && !(/external/.exec(link.className))) {
			link.onclick = function() {
				return updateContent('content', this.href, true);
			};
		}
	}
}
function loadingContent(eid) {
	Element.update(eid, sLoadingHtml);
}
function updateContent(eid, url, isPage, method, postBody) {
	url = unescape(url);
	url = url.replace(sHost, '');
	url = (url.charAt(0) == '/' ? '' : '/') + url;
	var controller = '';
	var sMethod = (typeof method == 'undefined' || (method != 'post' && method != 'get')) ? 'post' : method;
	var sPostBody = (typeof postBody == 'undefined') ? '' : postBody;
	var bPage = typeof isPage != 'undefined' && isPage && !bIsLoading;
	var sTargetSplit = url.split('#')[1];
	var sScrollToId = (typeof sTargetSplit != 'undefined') ? sTargetSplit : false;
	if (bPage) {
		bPageLoading = true;
		//var iSplitVal = (sPostBody != '' && ie) ? 1 : 3;
		controller = url.split('#')[0].split('/')[iRequest + 1];
		sCurrPage = url;
		if (typeof docTitles[controller] != 'undefined' && docTitles[controller] != '') document.title = docTitles[controller];
		updateNav(controller);
	}
	var onComplete = function() {
		if (bPage) {
			var afterFinish = function() {
				if (typeof urchinTracker != 'undefined') urchinTracker(url);
				if (sPostBody != '') sScrollToId = 'formResponse';
				if (sScrollToId && $(sScrollToId)) new Effect.ScrollTo(sScrollToId, {offset:iScrollToOffset});
				Shadowbox.clearCache();
				Shadowbox.setup();
			}
			if (bSafari) afterFinish();
			else {
				new Effect.Opacity('content', {from:0, to:1, duration:0.5, afterFinish:afterFinish, queue:{position:'end', scope:'pageLoad'}});
			}
		}
		initAsyncLinks(url);
		registerBehaviors(controller);
	};
	var loadContent = function() {
		window.scrollTo(0,0);
		new Ajax.Updater(eid, url+'?a=1', {method:sMethod, postBody:sPostBody, evalScripts:true, onComplete:onComplete});
	};
	if (bPage) {
		if (controller == prevController && sScrollToId && $(sScrollToId)) new Effect.ScrollTo(sScrollToId, {offset:iScrollToOffset});
		else {
			if (bSafari) {
				//Element.update('content', '');
				loadContent();
			} else {
				new Effect.Opacity('content', {from:1, to:0, duration:0.5, afterFinish:loadContent, queue:{position:'front', scope:'pageLoad'}});
			}
		}
		sRequest = (url.charAt(0) == '/') ? url.substring(1) : url;
		document.location.href = sHost + '#' + sRequest;
	} else loadContent();
	return false;
}
function updateNav(controller) {
	if (controller == '') controller = 'home';
	if (controller != prevController) {
		if (aNavControllers.inArray(prevController) && !aNavControllers.inArray(controller)) {
			if ($('mainNav_'+prevController)) $('mainNav_'+prevController).className = '';
		} else {
			if (aNavControllers.inArray(prevController)) $('mainNav_'+prevController).className = '';
			if ($('mainNav_'+controller)) $('mainNav_'+controller).className = 'current';
		}
		prevController = controller;
	}
	return false;
}
function loadSequence(url) {
	Shadowbox.loadSkin('classic', '/css/shadowbox');
	Event.observe(window, 'load', Shadowbox.init);
	url = unescape(url);
	var sUrlPrefix = sCurrPage.split('#')[0];
	var sUrlSuffix = sCurrPage.split('#')[1];
	sUrlSuffix = (typeof sUrlSuffix != 'undefined') ? sUrlSuffix : '';
	var sScrollToId = sCurrPage.split('#')[2];
	sScrollToId = (typeof sScrollToId != 'undefined') ? sScrollToId : false;
	if (sUrlPrefix != sHost) {
		sUrlSuffix = (sUrlSuffix != '') ? sUrlSuffix : sRequest;
		if (sScrollToId) sUrlSuffix = sUrlSuffix + '#' + sScrollToId;
		prevController = '';
		window.location.href = sHost + '#' + sUrlSuffix;
	}
	var sTargetUrl = sUrlSuffix + (sScrollToId ? '#' + sScrollToId : '');
	var controller = (sTargetUrl.length > 0) ? sTargetUrl.split('/')[iRequest] : false;
	switch (url) {
		case '/':
			Element.observe(window, 'load', function() {
				if (controller) {
					//Element.hide('content');
					if (!bSafari) Element.update('content', '');
					prevController = 'home';
					initController = controller;
					updateContent('content', sHost+sTargetUrl, true);
				} else if (initController == '') {
					//Element.hide('wrapper');	
				}
			});
		break;
	}
}
var MediaClass = Class.create();
MediaClass.prototype = {
	initialize: function() {},
	sendEvent: function(swf, typ, prm) {
		this.movie(swf).sendEvent(typ,prm);
	},
	//getUpdate: function(typ, pr1, pr2, swf) {},
	movie: function(swf) {
		if (navigator.appName.indexOf('Microsoft') != -1) {
			return window[swf];
		} else {
			return document[swf];
		}
	},
	loadFile: function(swf, obj) {
		//var sTarget = ((typeof sUri.split('#')[1] != 'undefined') ? sUri.replace(sUri.split('#')[1], '') : sUri + '#') + obj.target;
		//window.location.href = sTarget; // Update uri for bookmarking
		this.movie(swf).loadFile(obj);
		this.sendEvent(swf, 'playpause');
	}
};
function sendEvent(swf, typ, prm) {
	thisMovie(swf).sendEvent(typ,prm);
}
function thisMovie(swf) {
	if (navigator.appName.indexOf('Microsoft') != -1) {
		return window[swf];
	} else {
		return document[swf];
	}
}
Ajax.Responders.register(
	{
		onCreate: function() {
			if (Ajax.activeRequestCount > 0) {
				bIsLoading = true;
				if (bPageLoading) {
					//Element.update('contentContainer', sLoadingHtml);
					new Effect.Appear('pageLoading', {duration:0.3});
				}
			}
		},
		onComplete: function() {
			if (Ajax.activeRequestCount == 0) {
				externalLinks();
				bIsLoading = false;
				if (bPageLoading) {
					new Effect.Fade('pageLoading', {duration:0.3});
					bPageLoading = false;
				}
			}
		}
	}
);