Ext.onReady(function(){
	//load resolution-independent CSS
	if(
		(BrowserDetect.browser == "Safari" && BrowserDetect.version >= 5 && BrowserDetect.OS == "Windows") || 
		(BrowserDetect.browser == "Safari" && BrowserDetect.version >= 5 && BrowserDetect.OS == "Mac")
	){
		enableSVG();
	}

	try {
		FB.init({
			appId  : "bd3be90df3ba334d1935bf185bb9ab53",
			status : true,
			cookie : true
		});

		FB.getLoginStatus(function(response) {
		  if (response.session) {
		    // logged in and connected user, someone you know
		    login();
		    Ext.get('renderlogin').dom.innerHTML = '<a onclick="logout()"><div id="logoutimage"><img style="cursor:pointer;" id="fb_logout_image" src = "/images/fb_logout.gif" alt="Logout"/></div></a>';
		  } else {
		    // no user session available, someone you dont know
		    loadPublicTabs();
		    Ext.get('renderlogin').dom.innerHTML = '<a onclick="FB.login(facebookLogin);"><div id="loginimage"><img style="cursor:pointer;" id="fb_login_image" src = "/images/fb_login.gif" alt="Login"/></div></a>';
		  }
		});
	} catch (exception) {
		//FB undefined, so don't show login button
		loadPublicTabs();
	}
});


var mainTabsJSON = new Array();
var loggedInUserName = null;

function loadPublicTabs(){
	Ext.Ajax.request({
	      url: 'php/query.php',
	      success: function(response, opts){
				renderMainTabs(response, opts);
	      },
	      failure: function(response,opts){
document.getElementById('rendermaintabs').innerHTML = '';
				Ext.Msg.alert('Error','A communication error has occurred.');
			},
	      params: { 
		operation: 'getMainTabs'
	      }
	});
}

function renderMainTabs(response, opts, activeTab){
	if(response){
		mainTabsJSON = Ext.util.JSON.decode(response.responseText);
	} else {
		mainTabsJSON[0] = new Object({mainTabs_title:'Error',mainTabs_content:'An error has occurred: ' + response.responseText});
	}
	
	if(Ext.ComponentMgr.get('maintabs')){
		Ext.ComponentMgr.get('maintabs').destroy();
	}
	
	document.getElementById('rendermaintabs').innerHTML = '';

	var mainTabs = new Ext.TabPanel({
		id:'maintabs',
		width:750,
        autoHeight: true,
		defaults:{
            autoHeight: true
        },
		plain:true,
		enableTabScroll: true,
		bodyStyle: 'padding:5px',
		renderTo:'rendermaintabs'
	});
	
    mainTabs.doLayout();
    
	for(i=0; i<mainTabsJSON.length; i++){
        mainTabs.add(new Ext.Panel({
            title: mainTabsJSON[i].mainTabs_title
            //html: mainTabsJSON[i].mainTabs_content
        }));
        //Ext.getCmp('maintabs').getItem(i).doLayout();
        
        mainTabs.setActiveTab(i);
        
        mainTabs.items.get(i).getEl().update(platformContentFilter(mainTabsJSON[i].mainTabs_content,'desktop'), true);
        //mainTabs.items.get(i).getEl().update(mainTabsJSON[i].mainTabs_content, true);
        
        if (!activeTab && mainTabsJSON[i].mainTabs_default == '1'){
			activeTab = i;
		}
	}

    mainTabs.setActiveTab(activeTab);
    
    mainTabs.doLayout();
}

function login(){
	Ext.Ajax.request({
        method: "POST",
		url: 'php/login.php',
		success: function(response, opts){
            try{
				var head = document.getElementsByTagName("head")[0];
				var js = document.createElement('script');
				js.setAttribute("type", "text/javascript");
				js.text = response.responseText;
				head.appendChild(js);

                renderMainTabs(loginMainTabsResponse);
                
		Ext.get('renderlogin').dom.innerHTML = '<a onclick="logout()"><div id="logoutimage"><img style="cursor:pointer;" id="fb_logout_image" src = "/images/fb_logout.gif" alt="Logout"/></div></a>';
            } catch (exception) {
                    document.getElementById('rendermaintabs').innerHTML = '';
                    Ext.Msg.alert('Error','A communication error has occurred.');
            }
		},
		failure: function(response, opts){
            document.getElementById('rendermaintabs').innerHTML = '';
			Ext.Msg.alert('Error','A communication error has occurred.');
		}
	});
}

/*function updateServerCookie(){
    Ext.Ajax.request({
        method: "POST",
		url: 'php/login.php',
		success: function(response, opts){
            location.reload(true);
		},
		failure: function(response, opts){
            document.getElementById('rendermaintabs').innerHTML = '';
			Ext.Msg.alert('Error','A communication error has occurred.');
		}
	});
}*/

function logout(){
	FB.logout(function(response) {
		// user is now logged out
		location.reload(true);
	});
}

var locationWindow;

function showLocationWindow(){
	if(navigator.appName == "Microsoft Internet Explorer") {
		window.location = 'http://maps.google.com/maps?f=q&source=embed&hl=en&geocode=&q=Cutting+Hall&sll=42.113057,-88.039622&sspn=0.006311,0.009656&g=150+E.+Wood+Street,+Palatine,+IL+60067&ie=UTF8&cid=7228883943715649505&ll=42.115543,-88.039134&spn=0.012622,0.019312&t=h&z=16&iwloc=A';
	} else {
		if(locationWindow == null){
			locationWindow = new Ext.Window({
				title:'Show Location',
				contentEl:'locationWindowContent',
				resizable: false,
				closeAction: 'hide'
			});
		}

		locationWindow.show();	
	}
}

function facebookLogin(response){
  if (response.session) {
    // user successfully logged in
    location.reload(true);
    //Ext.get('renderadminbar').dom.innerHTML = '';
    //Ext.get('rendermaintabs').dom.innerHTML = "<center><img src='images/loading.gif'></center>";
    //login();
  } else {
    // user cancelled login
    //Ext.Msg.alert('Error','A communication error has occurred.');
  }
}

function sortNumber(a,b){
	return a - b;
}

var platformList = ['mobile','desktop'];
	
function platformContentFilter(html,platform){
	var beginTags = [];
	var endTags = [];
		
	for(var j=0; j<platformList.length; j++){
		if(platformList[j] != platform){ //remove unwanted content
			var dist = -1;
			var pos = 0;
			do {
				dist = html.substr(pos).indexOf('['+platformList[j]+']');
				pos += dist;
				if(dist!=-1){
					beginTags.push(pos);
					pos += platformList[j].length+2;
				}
			} while(dist!=-1);
			dist = -1;
			pos = 0;
			do {
				dist = html.substr(pos).indexOf('[/'+platformList[j]+']');
				pos += dist;
				if(dist!=-1){
					pos+=platformList[j].length+3;
					endTags.push(pos);
				}
			} while(dist!=-1);
		} else { //remove begin and end tags
			var dist = -1;
			var pos = 0;
			do {
				dist = html.substr(pos).indexOf('['+platformList[j]+']');
				pos += dist;
				if(dist!=-1){
					beginTags.push(pos);
					pos += platformList[j].length+2;
					endTags.push(pos);
				}
			} while(dist!=-1);
			dist = -1;
			pos = 0;
			do {
				dist = html.substr(pos).indexOf('[/'+platformList[j]+']');
				pos += dist;
				if(dist!=-1){
					beginTags.push(pos);
					pos += platformList[j].length+3;
					endTags.push(pos);
				}
			} while(dist!=-1);
		}
	}
	
	if(beginTags.length > 0){
		beginTags.sort(sortNumber);
		endTags.sort(sortNumber);

		var filteredHtml = '';
		var n=0;
		for(var m=0; m<beginTags.length; m++){
			filteredHtml += html.substr(n,beginTags[m]-n);
			n = endTags[m];
		}
		filteredHtml += html.substr(n);
	} else {
		filteredHtml = html;
	}
	
	return filteredHtml;
}

function includeCSS(destination) {
	var e=window.document.createElement('link');
	e.setAttribute('rel','stylesheet');
	e.setAttribute('type','text/css');
	e.setAttribute('href',destination);
	window.document.body.appendChild(e);
}

//detect browser
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.userAgent,
			subString: "iPhone",
			identity: "iPhone/iPod"
		},
		{
			string: navigator.userAgent,
			subString: "iPad",
			identity: "iPad"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

function showBrowser(){
	alert("Browser: " + BrowserDetect.browser + "\nVersion: " + BrowserDetect.version + "\nOS: " + BrowserDetect.OS);
}

function enableSVG(){
	includeCSS('../css/uac_svg.css');
}