var states = [];
states['Total'] = 51;
states['AL'] = {text:'Alabama', value:'AL'};
states['AK'] = {text:'Alaska', value:'AK'};
states['AZ'] = {text:'Arizona', value:'AZ'};
states['AR'] = {text:'Arkansas', value:'AR'};
states['CA'] = {text:'California', value:'CA'};
states['CO'] = {text:'Colorado', value:'CO'};
states['CT'] = {text:'Connecticut', value:'CT'};
states['DE'] = {text:'Delaware', value:'DE'};
states['FL'] = {text:'Florida', value:'FL'};
states['GA'] = {text:'Georgia', value:'GA'};
states['HI'] = {text:'Hawaii', value:'HI'};
states['ID'] = {text:'Idaho', value:'ID'};
states['IL'] = {text:'Illinois', value:'IL'};
states['IN'] = {text:'Indiana', value:'IN'};
states['IA'] = {text:'Iowa', value:'IA'};
states['KS'] = {text:'Kansas', value:'KS'};
states['KY'] = {text:'Kentucky', value:'KY'};
states['LA'] = {text:'Louisiana', value:'LA'};
states['ME'] = {text:'Maine', value:'ME'};
states['MD'] = {text:'Maryland', value:'MD'};
states['MA'] = {text:'Massachusetts', value:'MA'};
states['MI'] = {text:'Michigan', value:'MI'};
states['MN'] = {text:'Minnesota', value:'MN'};
states['MS'] = {text:'Mississippi', value:'MS'};
states['MO'] = {text:'Missouri', value:'MO'};
states['MT'] = {text:'Montana', value:'MT'};
states['NE'] = {text:'Nebraska', value:'NE'};
states['NV'] = {text:'Nevada', value:'NV'};
states['NH'] = {text:'New Hampshire', value:'NH'};
states['NJ'] = {text:'New Jersey', value:'NJ'};
states['NM'] = {text:'New Mexico', value:'NM'};
states['NY'] = {text:'New York', value:'NY'};
states['NC'] = {text:'North Carolina', value:'NC'};
states['ND'] = {text:'North Dakota', value:'ND'};
states['OH'] = {text:'Ohio', value:'OH'};
states['OK'] = {text:'Oklahoma', value:'OK'};
states['OR'] = {text:'Oregon', value:'OR'};
states['PA'] = {text:'Pennsylvania', value:'PA'};
states['RI'] = {text:'Rhode Island', value:'RI'};
states['SC'] = {text:'South Carolina', value:'SC'};
states['SD'] = {text:'South Dakota', value:'SD'};
states['TN'] = {text:'Tennessee', value:'TN'};
states['TX'] = {text:'Texas', value:'TX'};
states['UT'] = {text:'Utah', value:'UT'};
states['VT'] = {text:'Vermont', value:'VT'};
states['VA'] = {text:'Virginia', value:'VA'};
states['WA'] = {text:'Washington', value:'WA'};
states['DC'] = {text:'Washington DC', value:'DC'};
states['WV'] = {text:'West Virginia', value:'WV'};
states['WI'] = {text:'Wisconsin', value:'WI'};
states['WY'] = {text:'Wyoming', value:'WY'};

var callbacks = [];

var mouseover = false;

function getText() {
	return CookieManager.getCookie('StateText').toString();
}

function getValue() {
	return CookieManager.getCookie('StateValue').toString();
}

function closeStateChange () {
	if (!mouseover) {
		Ext.getDom('clickerText').className = 'clickerText';
		Ext.getDom('stateDiv').className = 'stateHolder hidden';
	}
}

function showStateChange () {
	mouseover = true;
	
	var stateDiv = Ext.getDom('stateDiv');
	var clickerText = Ext.getDom('clickerText');

	if (stateDiv.className == 'stateHolder') {
		clickerText.className = 'clickerText';
		stateDiv.className = 'stateHolder hidden';
	} else {
		clickerText.className = 'clickerText clicked';
		stateDiv.className = 'stateHolder';
	}

	return false;
}

function changeState ()  {
	var oldCookieValue = CookieManager.getCookie('StateValue');

	if (oldCookieValue) {
		Ext.getDom(oldCookieValue).className = 'stateLink';
	}

	CookieManager.setCookie('StateText', states[this.id].text);
	CookieManager.setCookie('StateValue', this.id);

	this.className = 'selectedStateLink';

	Ext.get('clickerText').update(' ' + states[this.id].text + ' ');

	Ext.getDom('clickerText').className = 'clickerText';
	Ext.getDom('stateDiv').className = 'stateHolder hidden';
	
	if ( typeof loadData == 'function' ) {
		loadData();
	}

	for(var i = 0; i < callbacks.length; i++) {
		if (typeof callbacks[i] == 'function') {
			var callback = callbacks[i];
			callback(this.id.toString());
		}
	}

	return false;
}

function removeState(state) {
	var tempStates = [];
	tempStates['Total'] = states['Total'] - 1;

	for (var i in states) {
		if (i != 'Total' && i != state) {
			tempStates[i] = states[i];
		}
	}

	states = tempStates;
}

function addChangeEvent(callback) {
	callbacks.push(callback);
}

function showStateInfo () {
	var location = Ext.get('stateSelect');
	location.update('');

	location.dom.onmouseout = function () {
		mouseover = false;
		setTimeout(function () {
			closeStateChange();
		}, 500);
	};

	location.dom.onmouseover = function () {
		mouseover = true;
	}
	
	location.dom.className = 'stateSelect';

	var cookieText = CookieManager.getCookie('StateText');

	var clickerDiv = document.createElement('div');

	clickerDiv.className = 'stateClicker';

	var clickerTextDiv = document.createElement('div');

	clickerTextDiv.id = "clickerText";
	clickerTextDiv.className = 'clickerText';

	if (cookieText) {
		clickerTextDiv.innerHTML = ' ' + cookieText + ' ';
	} else {
		clickerTextDiv.innerHTML = 'Select a State ';
	}

	clickerDiv.appendChild(clickerTextDiv);
	var clickerImgDiv = document.createElement('div');

	clickerImgDiv.className = 'clickerImg';

	clickerDiv.appendChild(clickerImgDiv);

	clickerDiv.onclick = showStateChange;

	location.appendChild(clickerDiv);

	var stateDiv = document.createElement('div');

	stateDiv.id = 'stateDiv';
	stateDiv.className = 'stateHolder hidden';

	var leftColumnDiv = document.createElement('div');

	leftColumnDiv.className = 'leftColumn';

	var leftList = document.createElement('ul');

	var middleColumnDiv = document.createElement('div');

	middleColumnDiv.className = 'middleColumn';

	var middleList = document.createElement('ul');

	var rightColumnDiv = document.createElement('div');

	rightColumnDiv.className = 'rightColumn';

	var rightList = document.createElement('ul');

	var leftover = states['Total'] % 3;
	var amount = Math.floor(states['Total'] / 3);
	var count = 0;

	for ( var i in states ) {
		if (states[i].text && states[i].value) {
			var item = document.createElement('li');

			var stateLink = document.createElement('a');

			stateLink.id = states[i].value;
			stateLink.className = 'stateLink';

			stateLink.href = '#';
			stateLink.onclick = changeState;

			stateLink.innerHTML = states[i].text;

			item.appendChild(stateLink);

			if (count < amount + (leftover > 0 ? 1 : 0)) {
				leftList.appendChild(item);
			} else if (count < (amount * 2) + (leftover > 1 ? 2 : (leftover > 0 ? 1 : 0))) {
				middleList.appendChild(item);
			} else {
				rightList.appendChild(item);
			}

			count++;
		}
	}

	leftColumnDiv.appendChild(leftList);
	middleColumnDiv.appendChild(middleList);
	rightColumnDiv.appendChild(rightList);

	stateDiv.appendChild(leftColumnDiv);
	stateDiv.appendChild(middleColumnDiv);
	stateDiv.appendChild(rightColumnDiv);
	location.appendChild(stateDiv);
}

function setStates(states) {

}

Ext.onReady(function () {
	/*
	var statedata = [];
	var extraStates = new Ext.data.XmlReader({
        record:'altstates/state',
        fields: [
            {name:'State'}
        ]
    });

    var info = Ext.data.Record.create([
        {name:'State', mapping:'state'},
        {name:'ExtraStates', mapping:'altstates', convert: function (v, rec) {
                return extraStates.readRecords(rec).records;
        }}
    ]);

    var reader = new Ext.data.XmlReader({
        record:'info'
    }, info);

    var store = new Ext.data.Store({
        url:'/files/agentinfo.xml',
        reader:reader
    });

    store.on('load', function() {
        var info;

        for (var i = 0 ; i < store.getCount() ; i++) {
            info = store.getAt(i);

            var state = arrayInfo.state.toString().toLowerCase();

			if (statedata[state] == undefined) {
				statedata[state] = state;
			}

            for ( var c = 0 ; c < info.get('ExtraStates').length ; c++ ) {
                state = info.get('ExtraStates')[c].node.childNodes[0].data.toLowerCase ();

                if (statedata[state] == undefined) {
                    statedata[state] = state;
                }
            }
        }
    });

	store.load();

	setStates(statedata);
	*/

	showStateInfo();
});