var stripId = -1;
var ownStrips = false;
var srchResults = null;
var stripCache = new Array();
var scrnName = '';

function convertBool(obj) {
	var retVal = 'No';
	if( !Object.isUndefined(obj) && obj == 'True' ) {
		retVal = 'Yes';
	}
	return retVal;
}

function hideIfDown(divId, imgId) {
	var img = $(imgId);
	if( !Object.isUndefined(img) ) {
		var s = img.src;
		if(s.endsWith('up_arrow.png')) {
			$(divId).hide();
		}
	}
}

function showIfDown(divId, imgId) {
	var img = $(imgId);
	if( !Object.isUndefined(img) ) {
		var s = img.src;
		if(s.endsWith('up_arrow.png')) {
			$(divId).show();
		}
	}
}

function formatDate(time_value) {
    var values = time_value.split(" ");
    var tmp_yr, tmp_time;
    if( !Object.isUndefined(values[5]) && !values[5].startsWith('+')) {
    	tmp_yr = values[5];
    	tmp_time = values[3];
    }
    else {
    	tmp_yr = values[3];
    	tmp_time = values[4];
    }
    var parsed_date = Date.parse(values[1] + " " + values[2] + ", " + tmp_yr + " " + tmp_time),
        date = new Date(parsed_date),
        relative_to = (arguments.length > 1) ? arguments[1] : new Date(),
        delta = parseInt((relative_to.getTime() - parsed_date) / 1000),
        r = '';
    
    function formatTime(date) {
        var hour = date.getHours(),
            min = date.getMinutes() + "",
            ampm = 'AM';
        
        if (hour == 0) {
            hour = 12;
        } else if (hour > 12) {
            hour -= 12;
            ampm = 'PM';
        }
        
        if (min.length == 1) {
            min = '0' + min;
        }
        
        return hour + ':' + min + ' ' + ampm;
    }
    
    function formatDate(date) {
        var ds = date.toDateString().split(/ /),
            mon = ds[1],
            day = ds[2],
            dayi = parseInt(day),
            year = date.getFullYear(),
            thisyear = (new Date()).getFullYear(),
            th = 'th';
        
        // anti-'th' - but don't do the 11th, 12th or 13th
        if ((dayi % 10) == 1 && day.substr(0, 1) != '1') {
            th = 'st';
        } else if ((dayi % 10) == 2 && day.substr(0, 1) != '1') {
            th = 'nd';
        } else if ((dayi % 10) == 3 && day.substr(0, 1) != '1') {
            th = 'rd';
        }
        
        if (day.substr(0, 1) == '0') {
            day = day.substr(1);
        }
        
        return mon + ' ' + day + th + (thisyear != year ? ', ' + year : '');
    }
    
    delta = delta + (relative_to.getTimezoneOffset() * 60);

    if (delta < 5) {
        r = 'less than 5 seconds ago';
    } else if (delta < 30) {
        r = 'half a minute ago';
    } else if (delta < 60) {
        r = 'less than a minute ago';
    } else if (delta < 120) {
        r = '1 minute ago';
    } else if (delta < (45*60)) {
        r = (parseInt(delta / 60)).toString() + ' minutes ago';
    } else if (delta < (2*90*60)) { // 2* because sometimes read 1 hours ago
        r = 'about 1 hour ago';
    } else if (delta < (24*60*60)) {
        r = 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
    } else {
        if (delta < (48*60*60)) {
            r = formatTime(date) + ' yesterday';
        } else {
            r = formatTime(date) + ' ' + formatDate(date);
            // r = (parseInt(delta / 86400)).toString() + ' days ago';
        }
    }

    return r;
}

function linkify(s) {
    var entities = {
        '"' : '&quot;',
        '&' : '&amp;',
        '<' : '&lt;',
        '>' : '&gt;'
    };
    return s.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g, function(m) {
        return m.link(m);
    }).replace(/(^|[^\w])(#[\d\w\-]+)/g, function(d, m1, m2) {
        return m1 + '<a href="javascript:makeTrendCall(\'http://search.twitter.com/search.json?callback=twitterCallback&q%3D%2523' + m2.substr(1) + '\', \'' + m2 + '\');">' + m2 + '</a>';
    }).replace(/(^|[^\w])(@[\d\w\-]+)/g, function(d, m1, m2) {
        return m1 + '@<a target="_blank" href="http://twitter.com/' + m2.substr(1) + '">' + m2.substr(1) + '</a>';
    }).replace(/"&<>/, function (m) {
        return entities[m];
    });
}

function formatEntry(entry, odd, tw) {
	var retVal = '';
	if( entry ) {
		var screen_name = '';
		var profile_image_url = '';
		var name = '';
		var txt = '';
		var source = '';
		if( Object.isUndefined(entry.user) ) {
			if( Object.isUndefined(entry.sender) ) {
				screen_name = entry.from_user;
				profile_image_url = entry.profile_image_url;
				source = entry.source.unescapeHTML();
			}
			else {
				screen_name = entry.sender.screen_name;
				profile_image_url = entry.sender.profile_image_url;
				name = entry.sender.name;
				source = '';
			}
		}
		else {
			screen_name = entry.user.screen_name;
			profile_image_url = entry.user.profile_image_url;
			name = entry.user.name;
			source = entry.source;
		}
		var classStr = (odd?'entryOdd':'entryEven');
		retVal = '<tr><td width="100%" valign="top" class="';
		retVal += classStr;
		retVal += '">';
		if( tw ) {
			txt = entry.text;
		}
		else {
			txt = entry.text.gsub('#TS'+stripId, '').strip();
		}
		txt = linkify(txt);
		retVal += '<table><tr><td width="60px" valign="top"><div class="entryUserDiv"><span class="entryUserPic">';
		retVal += '<a target="_blank" href="http://twitter.com/' + screen_name + '">';
		retVal += '<img width="48" height="48" src="' + profile_image_url + '" alt="' + name + '"/></a></span></div></td><td valign="top">';
		retVal += '<span class="entryFrom"><strong><a target="_blank" title="' + name + '" href="http://twitter.com/' + screen_name + '">';
		retVal += screen_name + '</a></strong></span>';
		retVal += '<span class="entryText">' + txt + '</span><br/>';
		retVal += ' <span class="entryTime"><a target="_blank" rel="bookmark" class="" href="http://twitter.com/' + screen_name + '/status/' + entry.id;
		retVal += '"><span>' + formatDate(entry.created_at) + '</span></a> via <span class="entrySource">' + source + '</span></span></td></tr></table>';
		retVal += '</td></tr>';
	}
	else {
		retVal = '<tr><td width="100%" class="entryEven">Null entry</td></tr>';
	}
	return retVal;
}

// Strip Cache
function addToStripCache(obj) {
	if( !Object.isUndefined(obj) && !Object.isUndefined(obj.subscription) ) {
		var sid = obj.stripId;
		var uid = obj.stripOwner;
		var found = false;
		for (var i = 0, len = stripCache.length; i < len && !found; ++i) {
			found = ( (sid == stripCache[i].stripId) && (uid == stripCache[i].stripOwner) );
		}
		if( !found ) {
			// add to cache
			stripCache.push(obj);
		}
	}
}

function getFromCache(sid, uid) {
	var retVal = null;
	var found = false;
	for (var i = 0, len = stripCache.length; i < len && !found; ++i) {
		if( (sid == stripCache[i].stripId) && (uid == stripCache[i].stripOwner) ) {
			found = true;
			retVal = stripCache[i];
		}
	}
	return retVal;
}

function showStripHome(uid, sid, oname, sname) {
	hideIfDown('stripAddDiv', 'stripAddDivImg');
	$('stripAddDivHead').hide();
	hideIfDown('twitterResultsDiv', 'twitterResultsDivImg');
	$('twitterResultsHeadDiv').hide();
	$('stripSelectedHeadDiv').show();
	showIfDown('stripInfoDiv', 'stripSrchSelDivImg');
	showIfDown('stripDiv', 'stripSrchSelDivImg');
	ownStrips = false;
	showStrip(uid, sid, oname, sname, 'stripSelectedHeadDiv', 'stripInfoDiv', false);
}
	
function showStrip(uid, sid, oname, sname, d1name, d2name, alterAdd) {
	stripId = sid;
	var makeCall = true;
	$('stripName').innerHTML = sname;
	var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">Refreshing</span><br/><img src="/images/spinner3-greenie.gif" /></td></tr></table>';
	var s = getFromCache(sid, uid);
	if( !Object.isUndefined(s) && s != null ) {
		makeCall = false;
		divHtml = getStripDetailsHtml(s);
	}
	$(d2name).innerHTML = divHtml;
	$(d1name).style.visibility = 'visible';
	$(d2name).style.visibility = 'visible';

	if( alterAdd ) {
		if( ownStrips ) {
			$('stripAddDivHead').show();
			showIfDown('stripAddDiv', 'stripAddDivImg');
			$('stripAddDivHead').style.visibility = 'visible';
			$('stripAddDiv').style.visibility = 'visible';
		}
		else {
			$('stripAddDivHead').hide();
			$('stripAddDiv').hide();
		}
	}
	
	divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">Refreshing</span><br/><img src="/images/spinner3-greenie.gif" /></td></tr></table>';
	$('stripDiv').innerHTML = divHtml;
	$('stripDiv').style.visibility = 'visible';

    if( makeCall ) {
    	var params = new Array();
    	params['sid'] = sid;
    	params['uid'] = uid;
    	var url = '/stripDetails';
    	var req = new Ajax.Request(url, {
    			method: 'post',
    			parameters: params,
    			evalJSON: 'force',
    			onSuccess: viewStripDetailsCallback,
    			onFailure: viewStripDetailsFail});
    }
    else {
    	if( !Object.isUndefined(s.private) && s.private == 'True') {
    		makePrivateStripCall(s);
    	}
    	else {
        	$('stripLoadDiv').innerHTML = '';
        	var url = 'http://search.twitter.com/search.json?callback=showStripCallback&from=' + oname + '&tag=TS' + sid;
            var scr = document.createElement('script');
            scr.src = url;
            $('stripLoadDiv').appendChild(scr);
    	}
    }
}

function makePrivateStripCall(s) {
	$('stripLoadDiv').innerHTML = '';
	var url = 'http://www.tweetstrips.com/api/get?callback=showStripCallback&stripId=' + s.stripId + '&owner=' + s.stripOwner;
    var scr = document.createElement('script');
    scr.src = url;
    $('stripLoadDiv').appendChild(scr);
}

function getStripDetailsHtml(s) {
	return getStripDetailsHtml(s, false);
}

function getStripDetailsHtml(s,sub) {
	var divHtml = '';
	if( !Object.isUndefined(s) ) {
		divHtml = '<table width="100%" height="100%">';
		divHtml += '<tr><td colspan="4" width="100%">';
		divHtml += s.description;
		divHtml += '</td></tr><tr><td colspan="4" style="padding-top:10px; padding-bottom: 10px" width="100%">Tags : ';
		divHtml += s.tags;
		divHtml += '</td></tr><tr><td width="25%" align="right">Category :</td><td width="25%" align="left">';
	    divHtml += s.category;
		divHtml += '</td><td width="25%" align="right">Created :</td><td width="25%" align="left">';
		divHtml += s.addedWhen;
		divHtml += '</td></tr><tr><td width="25%" align="right">Subscribers :</td><td width="25%" align="left">';
		divHtml += s.followers;
		divHtml += '</td><td width="25%" align="right">Rating :</td><td width="25%" align="left">';
		divHtml += s.rating;
		divHtml += '</td></tr><tr><td width="25%" align="right">Private :</td><td width="25%" align="left">';
	    divHtml += convertBool(s.private);
		divHtml += '</td><td width="25%" align="right">Invite Only :</td><td width="25%" align="left">';
		divHtml += convertBool(s.invite);
		divHtml += '</td></tr><tr><td width="25%" align="right">Allows Replies :</td><td width="25%" align="left">';
		divHtml += convertBool(s.replies);
		divHtml += '</td><td width="25%" align="right">Cost :</td><td width="25%" align="left">';
	    if( s.subscription == 0.0 ) {
	    	divHtml += 'Free';
	    }
	    else {
	    	divHtml += '$' + s.subscription;
	    }
	    if( sub ) {
	    	divHtml += '</td></tr><tr><td colspan="4" style="padding-top: 5px" width="100%" align="center"><div id="subButtonDiv"><input type="button" value="Subscribe" onclick="subSrchStrip();" />';
	    	divHtml += '</div></td></tr>';
	    	divHtml += '<tr><td class="entryEven" style="margin-bottom: 3px" colspan="4" width="100%"></tr></table>';
	    }
	    else {
	    	divHtml += '</td></tr></table>';
	    }
		divHtml += '<input type="hidden" id="strip_sid" value="' + s.stripId + '"/>';
		divHtml += '<input type="hidden" id="strip_uid" value="' + s.stripOwner + '"/>';
	}
	else {
		divHtml = 'Unable to retrieve Strip information.';
	}
	return divHtml;
}

function viewStripDetailsCallback(resp) {
	var obj = resp.responseJSON;
	if( Object.isUndefined(obj) ) {
		$('stripDetailsDiv').innerHTML = '<span style="color: #FF0000">Unknown error.</span>'; 
	}
	else if( obj.result == 'error' ) {
		$('stripDetailsDiv').innerHTML = '<span style="color: #FF0000">' + obj.resultMsg + '</span>'; 
	}
	else {
		var divHtml = '';
		if( Object.isUndefined(obj.strips) || obj.strips.length != 2 ) {
			divHtml = '<span style="color: #FF0000">Details not found.</span>'; 
			var divHtml2 = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"></td></tr></table>';
			$('stripDiv').innerHTML = divHtml2;
		}
		else {
			addToStripCache(obj.strips[1]);
			divHtml = getStripDetailsHtml(obj.strips[1]);
	    	if( !Object.isUndefined(obj.strips[1].private) && obj.strips[1].private == 'True' ) {
	    		makePrivateStripCall(obj.strips[1]);
	    	}
		}
		$('stripDetailsDiv').innerHTML = divHtml;
	}
}

function viewStripDetailsFail(obj) {
	$('stripDetailsDiv').innerHTML = '<span style="color: #FF0000">Server or communications error.</span>'; 
}

function doAddEntry(twit) {
	var txt = $('addEntry_text').getValue();
	var cmpLength = 134;
	if( twit ) {
		cmpLength = 140;
	}
	if( txt.length <= cmpLength ) {
		$('addEntryResp').innerHTML = '<img src="images/wait16trans.gif"/>';
		var params = new Array();
		params['entryText'] = txt;
		var url = '/addEntry';
		if( !twit ) {
			params['sid'] = $('strip_sid').getValue();
			params['uid'] = $('strip_uid').getValue();
		}
		else {
			params['jt'] = 'Yes';
		}
		var req = new Ajax.Request(url, {
				method: 'post',
				parameters: params,
				evalJSON: 'force',
				onSuccess: addEntryCallback,
				onFailure: addEntryFail});
	}
	else {
		alert('Message must be <= ' + cmpLength + ' characters.');
	}
}

function addEntryCallback(resp) {
	var obj = resp.responseJSON;
	if( Object.isUndefined(obj) ) {
		$('addEntryResp').innerHTML = '<span style="color: #FF0000">Unknown error.</span>'; 
	}
	else if( obj.result == 'error' ) {
		$('addEntryResp').innerHTML = '<span style="color: #FF0000">' + obj.resultMsg + '</span>'; 
	}
	else {
		$('addEntryResp').innerHTML = '<span style="color: #000000">' + obj.resultMsg + '</span>';
	}
}

function addEntryFail(obj) {
	$('addEntryResp').innerHTML = '<span style="color: #FF0000">Server or communications error.</span>'; 
}

function doAddStrip() {
	var txt = $('addStrip_name').getValue();
	if( txt.length > 0 ) {
		$('addStripResp').innerHTML = '<img src="images/wait16trans.gif"/>';
		var params = new Array();
		params['name'] = $('addStrip_name').getValue();
		params['desc'] = $('addStrip_desc').getValue();
		params['tags'] = $('addStrip_tags').getValue();
		params['category'] = $('category_select').getValue();
		var url = '/addStrip';
		var req = new Ajax.Request(url, {
				method: 'post',
				parameters: params,
				evalJSON: 'force',
				onSuccess: addStripCallback,
				onFailure: addStripFail});
	}
	else {
		alert('You must enter a name for your strip.');
	}
}

function addStripCallback(resp) {
	var obj = resp.responseJSON;
	if( Object.isUndefined(obj) ) {
		$('addStripResp').innerHTML = '<span style="color: #FF0000">Unknown error.</span>'; 
	}
	else if( obj.result == 'error' ) {
		$('addStripResp').innerHTML = '<span style="color: #FF0000">' + obj.resultMsg + '</span>'; 
	}
	else {
		myStrips();
	}
}

function addStripFail(obj) {
	$('addStripResp').innerHTML = '<span style="color: #FF0000">Server or communications error.</span>'; 
}

function showStripCallback(obj) {
	var divHtml = '<table width="100%">';
	if(obj) {
		res = obj.results;
		if( res ) {
			var odd = false;
			for (var index = 0, len = res.length; index < len; ++index) {
				var entry = res[index];
				if( entry ) {
					if( entry ) {
						divHtml += formatEntry(entry, odd, false);
						odd = !odd;
					}
					else {
						divHtml += '<tr><td width="100%" class="entryEven">Null entry</td></tr>';
					}
					odd = !odd;
				}
				else {
					divHtml += '<tr><td width="100%" class="entryEven">Null entry</td></tr>';
				}
			}
		}
		else {
			divHtml += '<tr><td>Cuttently unable to retrieve strip. Please try again later.</td></tr>';
		}
	}
	divHtml += '</table>'
	$('stripDiv').innerHTML = divHtml;
}

function initialLoad() {
	showTwitHome();
}

function showTwitHome() {
	//var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">Refreshing</span><br/><img src="/images/spinner3-greenie.gif" /></td></tr></table>';
	var divHtml = '<table width="100%"><tr><td width="25%" valign="top"><div id="topStripsHead" class="sectionHeader"><table width="100%"><tr><td width="50%" align="left" valign="middle">Top Strips</div></td><td width="50%" align="right" valign="middle"><a href="javascript:doBlindDiv(\'topStripsDiv\');"><img id="topStripsDivImg" src="/images/up_arrow.png" /></a></td></tr></table>';
	divHtml += '</div><div id="topStripsDiv" class="greenSectionBody"></div><div id="twitterHead" class="sectionHeader"><table width="100%"><tr><td width="50%" align="left" valign="middle">My Twitter</div></td><td width="50%" align="right" valign="middle"><a href="javascript:doBlindDiv(\'twitterDiv\');"><img id="twitterDivImg" src="/images/up_arrow.png" /></a></td></tr></table>';
	divHtml += '</div><div id="twitterDiv" class="greenSectionBody"><ul class="greenMenu"><li><a title="" href="javascript:twitterCall(0);">Home</a></li><li><a title="" href="javascript:twitterCall(1);">Mentions</a></li><li><a title="" href="javascript:twitterCall(2);">Directs</a></li><li><a title="" href="javascript:twitterCall(3);">Faves</a></li></ul>';
	divHtml += '<table><tr><td><input type="text" id="twitterSrch" />&nbsp;<input type="button" value="Search" onclick="javascript:twitterCall(4);"/></td></tr></table></div><div id="trendsHead" class="sectionHeader">';
	divHtml += '<table width="100%"><tr><td width="50%" align="left" valign="middle">Twitter Trends</div></td><td width="50%" align="right" valign="middle"><a href="javascript:doBlindDiv(\'trendsDiv\');"><img id="trendsDivImg" src="/images/up_arrow.png" /></a></td></tr></table></div><div id="trendsDiv" class="greenSectionBody"></div><div id="trendsLoadDiv" style="visibility: hidden;"></div></td><td width="80%" valign="top"><div id="stripAddDivHead"><table width="100%"><tr><td width="50%" align="left" valign="middle">Post to Twitter</td><td width="50%" align="right" valign="middle"><a href="javascript:doBlindDiv(\'stripAddDiv\');"><img id="stripAddDivImg" src="/images/up_arrow.png" /></a></td></tr></table></div><div id="stripAddDiv"><form>';
	divHtml += '<table width="100%"><tr><td width="100%"><textarea id="addEntry_text" name="entryText" cols="50" rows="3"></textarea></td></tr><tr><td width="100%" align="center" style="padding-top:10px; padding-bottom:10px;"><input type="button" id="addEntryButton" onclick="doAddEntry(true);" value="Add"/></td></tr><tr><td width="100%" align="center"><div id="addEntryResp"></div></td>';
	divHtml += '</tr></table></form></div><div id="twitterResultsHeadDiv" class="sectionHeader" style="visibility: hidden;"><table width="100%"><tr><td width="50%" align="left" valign="middle"><div id="twitTitle"></div></td><td width="50%" align="right" valign="middle"><a href="javascript:doBlindDiv(\'twitterResultsDiv\');"><img id="twitterResultsDivImg" src="/images/up_arrow.png" /></a></td></tr></table></div>';
	divHtml += '<div id="twitterResultsDiv" class="stripSrchDiv" style="visibility: hidden;"></div><div id="twitterLoadDiv" style="visibility: hidden;"></div><div id="stripSelectedHeadDiv" style="visibility: hidden;"><table width="100%"><tr><td width="50%" align="left" valign="middle"><div id="stripName"></div></td><td width="50%" align="right" valign="middle"><a href="javascript:doBlindSelectedStripDiv();"><img id="stripSrchSelDivImg" src="/images/up_arrow.png" /></a></td></tr></table></div>';
	divHtml += '<div id="stripInfoDiv" style="visibility: hidden;"></div><div id="stripDiv" class="stripSrchDiv" style="visibility: hidden;"></div><div id="stripLoadDiv" style="visibility: hidden;"></div></td></tr></table>';
	$('mainContent').innerHTML = divHtml;	
	twitterCall(0);
	refreshTrends();
	refreshTopStrips();
	/*var url = 'html/home.html';
	var req = new Ajax.Request(url, {
			method: 'get',
			evalJSON: 'false',
			evalJS: 'false',
			onSuccess: doHomePageCallback,
			onFailure: getStripsFail});*/
}

function doHomePageCallback(resp) {
	var divHtml = '';
	if( Object.isUndefined(resp) ) {
		divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #FF0000">Server response error.</span></td></tr></table>';
		$('mainContent').update(divHtml);
	}
	else {
		divHtml += resp.responseText;
		$('mainContent').update(divHtml);
		twitterCall(0);
		refreshTrends();
		refreshTopStrips();
	}
	//$('mainContent').innerHTML = divHtml;
}

function myStrips() {
	srchResults = null;
	ownStrips = true;
	var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">Refreshing</span><br/><img src="/images/spinner3-greenie.gif" /></td></tr></table>';
	$('mainContent').innerHTML = divHtml;
	var url = '/getStrips?ownStrips=1';
	var req = new Ajax.Request(url, {
			method: 'get',
			evalJSON: 'false',
			evalJS: 'false',
			onSuccess: getStripsCallback,
			onFailure: getStripsFail});
}

function mySubs() {
	srchResults = null;
	ownStrips = false;
	var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">Refreshing</span><br/><img src="/images/spinner3-greenie.gif" /></td></tr></table>';
	$('mainContent').innerHTML = divHtml;
	var url = '/getStrips?ownStrips=0';
	var req = new Ajax.Request(url, {
			method: 'get',
			evalJSON: 'false',
			evalJS: 'false',
			onSuccess: getStripsCallback,
			onFailure: getStripsFail});
}

function showBrowse() {
	srchResults = null;
	var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">Refreshing</span><br/><img src="/images/spinner3-greenie.gif" /></td></tr></table>';
	$('mainContent').innerHTML = divHtml;
	var url = '/html/browse.html';
	var req = new Ajax.Request(url, {
			method: 'get',
			evalJSON: 'false',
			evalJS: 'false',
			onSuccess: getHtmlCallback,
			onFailure: getStripsFail});
}

function showHelp() {
	var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">Refreshing</span><br/><img src="/images/spinner3-greenie.gif" /></td></tr></table>';
	$('mainContent').innerHTML = divHtml;
	var url = '/html/help.html';
	var req = new Ajax.Request(url, {
			method: 'get',
			evalJSON: 'false',
			evalJS: 'false',
			onSuccess: getHtmlCallback,
			onFailure: getStripsFail});
}

function showAccount() {
	var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">Refreshing</span><br/><img src="/images/spinner3-greenie.gif" /></td></tr></table>';
	//var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">This page will contain user account info.</td></tr></table>';
	$('mainContent').innerHTML = divHtml;	
	var url = '/getAccount';
	var req = new Ajax.Request(url, {
			method: 'get',
			evalJSON: 'false',
			evalJS: 'false',
			onSuccess: showAccountCallback,
			onFailure: getStripsFail});
}

function showAccountCallback(resp) {
	var divHtml = '';
	if( Object.isUndefined(resp) ) {
		divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #FF0000">Server response error.</span></td></tr></table>';
		$('mainContent').update(divHtml);
	}
	else {
		divHtml += resp.responseText;
		$('mainContent').update(divHtml);
		accountHome();
	}
	//$('mainContent').innerHTML = divHtml;
}

function accountHome() {
	var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">Refreshing</span><br/><img src="/images/spinner3-greenie.gif" /></td></tr></table>';
	$('stripDetailsDiv').innerHTML = divHtml;
	$('stripLoadDiv').innerHTML = '';
    var scr = document.createElement('script');
    scr.src = 'http://twitter.com/users/show/' + $('scrnName').innerHTML + '.json?callback=twitterAccountCallback';
    $('stripLoadDiv').appendChild(scr);
	
}

function twitterAccountCallback(obj) {
	var divHtml = '<table width="100%">';
	if( !Object.isUndefined(obj) ) {
		if( !Object.isUndefined(obj.error) ) {
			divHtml += '<tr><td>' + obj.error + '</td></tr>';
		}
		else {
			sn = obj.screen_name;
			if( Object.isUndefined(sn) ) {
				divHtml += '<tr><td>User details not found.</td></tr>';
			}
			else {
				divHtml += '<tr><td>' + obj.description + '</td></tr>';
			}
		}
	}
	else {
		divHtml += '<tr><td>Currently unable to retrieve data. Please try again later.</td></tr>';
	}
	divHtml += '</table>';
	$('stripDetailsDiv').innerHTML = divHtml;
	
}

function getHtmlCallback(resp) {
	var divHtml = '';
	if( Object.isUndefined(resp) ) {
		divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #FF0000">Server response error.</span></td></tr></table>';
	}
	else {
		divHtml += resp.responseText;
	}
	$('mainContent').update(divHtml);
	//$('mainContent').innerHTML = divHtml;
}

function getStripsCallback(resp) {
	var divHtml = '';
	if( Object.isUndefined(resp) ) {
		divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #FF0000">Server response error.</span></td></tr></table>';
	}
	else {
		divHtml += resp.responseText;
	}
	//$('mainContent').innerHTML = divHtml;
	$('mainContent').update(divHtml);
	if( ownStrips ) {
		$('stripsHeading').innerHTML = 'My Strips';
		$('addStripButton').style.visibility = 'visible';
	}
	else {
		$('stripsHeading').innerHTML = 'My Subs';
		$('addStripButton').style.visibility = 'hidden';
	}
}

function getStripsFail(obj) {
	var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #FF0000">Server or communications error.</span></td></tr></table>';
	$('mainContent').innerHTML = divHtml;
}

// Blind functions
function doBlindDiv(divId) {
	var s = $(divId + 'Img').src;
	if(s.endsWith('up_arrow.png')) {
		$(divId + 'Img').src = '/images/down_arrow.png';
		Effect.BlindUp($(divId), {duration:0.3});
	}
	else {
		$(divId + 'Img').src = '/images/up_arrow.png';
		Effect.BlindDown($(divId), {duration:0.3});
	}
}

function doBlindSelectedStripDiv() {
	var s = $('stripSrchSelDivImg').src;
	if(s.endsWith('up_arrow.png')) {
		$('stripSrchSelDivImg').src = '/images/down_arrow.png';
		Effect.BlindUp($('stripDiv'), {duration:0.3});
		Effect.BlindUp($('stripInfoDiv'), {duration:0.3});
	}
	else {
		$('stripSrchSelDivImg').src = '/images/up_arrow.png';
		Effect.BlindDown($('stripInfoDiv'), {duration:0.3});
		Effect.BlindDown($('stripDiv'), {duration:0.3});
	}
}

function doShowAddStripDiv() {
	var s = $('stripAddNewDivImg').src;
	if(s.endsWith('add_strip.png')) {
		$('stripAddNewDivImg').src = '/images/add_strip_dis.png';
		Effect.BlindDown($('stripAddNewDiv'), {duration:0.3});
	}
}

function doHideAddStripDiv() {
	$('stripAddNewDivImg').src = '/images/add_strip.png';
	Effect.BlindUp($('stripAddNewDiv'), {duration:0.3});
}

function doUnsubStrip() {
//	if( txt.length > 0 ) {
		var params = new Array();
		params['sid'] = $('strip_sid').getValue();
		params['uid'] = $('strip_uid').getValue();
		var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">Unsubscribing</span><br/><img src="/images/spinner3-greenie.gif" /></td></tr></table>';
		$('stripDetailsDiv').innerHTML = divHtml;
		var url = '/unsubStrip';
		var req = new Ajax.Request(url, {
				method: 'post',
				parameters: params,
				evalJSON: 'force',
				onSuccess: unsubStripCallback,
				onFailure: unsubStripFail});
	//}
	//else {
	//	alert('You must enter a name for your strip.');
	//}
}

function unsubStripCallback(resp) {
	var obj = resp.responseJSON;
	if( Object.isUndefined(obj) ) {
		$('stripDetailsDiv').innerHTML = '<span style="color: #FF0000">Unknown error.</span>'; 
	}
	else if( obj.result == 'error' ) {
		$('stripDetailsDiv').innerHTML = '<span style="color: #FF0000">' + obj.resultMsg + '</span>'; 
	}
	else {
		mySubs();
	}
}

function unsubStripFail(obj) {
	$('stripDetailsDiv').innerHTML = '<span style="color: #FF0000">Server or communications error.</span>'; 
}

function doEditStrip() {
	alert('Coming soon.');
}


// Search

function searchCategory(cat) {
	var params = new Array();
	params['cat'] = cat;
	makeSearchCall(params);
}

function searchUser() {
	var u = $('srch_name').getValue();
	if( Object.isUndefined(u) || u == '' ) {
		alert('You must enter a username before searching.');
	}
	else {
		var params = new Array();
		params['u'] = u;
		makeSearchCall(params);
	}
}

function doSearch() {
	alert('Full search coming soon.');
}

function makeSearchCall(params) {
	srchResults = null;
	var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">Searching</span><br/><img src="/images/spinner3-greenie.gif" /></td></tr></table>';
	$('searchDetailsDiv').innerHTML = divHtml;
	$('searchResultsDivHead').style.visibility = 'visible';
	$('searchDetailsDiv').style.visibility = 'visible';
	Element.scrollTo($('menu'));
	var url = '/search';
	var req = new Ajax.Request(url, {
			method: 'post',
			parameters: params,
			evalJSON: 'force',
			onSuccess: searchCallback,
			onFailure: searchFail});
}

function searchCallback(resp) {
	var obj = resp.responseJSON;
	var resTxt = 'Error';
	if( Object.isUndefined(obj) ) {
		$('searchDetailsDiv').innerHTML = '<span style="color: #FF0000">Unknown error.</span>'; 
	}
	else if( obj.result == 'error' ) {
		$('searchDetailsDiv').innerHTML = '<span style="color: #FF0000">' + obj.resultMsg + '</span>'; 
	}
	else if( obj.result == 'none' ) {
		if( Object.isUndefined(obj.srchCat) || obj.srchCat.length<=0 ) {
			resTxt = 'Results';
		}
		else {
			resTxt = 'Results (' + obj.srchCat + ')';
		}
		$('searchResultsDivTxt').innerHTML = resTxt;
		$('searchDetailsDiv').innerHTML = '<span style="color: #000000">' + obj.resultMsg + '</span>'; 
	}
	else {
		var divHtml = '';
		if( Object.isUndefined(obj.srchCat) || obj.srchCat.length<=0 ) {
			resTxt = 'Results';
		}
		else {
			resTxt = 'Results (' + obj.srchCat + ')';
		}
		$('searchResultsDivTxt').innerHTML = resTxt;
		if( !Object.isUndefined(obj.user) ) {
			divHtml += '<table width="100%">';
			divHtml += '<tr><td width="100%" class="entryEven">Strips by ' + obj.user.userName + '</td></tr>';
			divHtml += '</table>'
		}
		if( !Object.isUndefined(obj.strips) && obj.strips.length > 1) {
			srchResults = obj.strips;
			divHtml += '<table width="100%">';
			for (var i = 1; i < obj.strips.length; ++i) {
				var s = obj.strips[i];
				if( !Object.isUndefined(s) ) {
					divHtml += '<tr><td width="80%" class="entryEven">' + s.stripName;
					divHtml += '</td><td class="entryEven" width="20%" align="right"><table width="100%"><tr>';
					divHtml += '<td class="searchDetailsDivTD" align="right">' + s.followers + '</td>';
					divHtml += '<td class="searchDetailsDivTD" width="30px" align="left"><img src="images/subs.png" class="srchImg"/></td>';
					divHtml += '<td class="searchDetailsDivTD" width="60px" align="right">' + s.rating + '</td>';
					divHtml += '<td class="searchDetailsDivTD" width="30px" align="left"><img src="images/rating.png" class="srchImg"/></td>';
					if( s.private == 'True' ) {
						divHtml += '<td class="searchDetailsDivTD" width="30px" align="left"><img src="images/private.png" class="srchImg"/></td>';
					}
					else {
						divHtml += '<td class="searchDetailsDivTD" width="30px" align="left"><img src="images/blank.png" class="srchImg"/></td>';
					}
					divHtml += '<td class="searchDetailsDivTD" width="30px" align="center"><a class="srchImg" href="javascript:viewSrchStrip(' + i;
					divHtml += ');"><img src="images/view.png" class="srchImg"/></a></td></tr></table></tr>';
				}
			}
			divHtml += '</table>'
		}
		else {
			divHtml += '<span style="color: #000000">No strips found.</span>';
		}
		$('searchDetailsDiv').innerHTML = divHtml;
	}
}

function searchFail(obj) {
	$('searchDetailsDiv').innerHTML = '<span style="color: #FF0000">Server or communications error.</span>'; 
}

function viewSrchStrip(sid) {
	if( srchResults != null ) {
		if( sid < srchResults.length ) {
			var s = srchResults[sid];
			if( !Object.isUndefined(s) ) {
				stripId = s.stripId;
				var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">Refreshing</span><br/><img src="/images/spinner3-greenie.gif" /></td></tr></table>';
				$('stripDiv').innerHTML = divHtml;
				$('stripDiv').style.visibility = 'visible';
				$('stripName').innerHTML = s.stripName + ' by ' + s.stripOwnerName;
				$('stripSelectedHeadDiv').style.visibility = 'visible';
				divHtml = getStripDetailsHtml(s, true);
				$('stripInfoDiv').innerHTML = divHtml;
				$('stripInfoDiv').style.visibility = 'visible';
				
				$('stripLoadDiv').innerHTML = '';
				var url = 'http://search.twitter.com/search.json?callback=showStripCallback&from=' + s.stripOwnerName + '&tag=TS' + s.stripId;
			    var scr = document.createElement('script');
			    scr.src = url;
			    $('stripLoadDiv').appendChild(scr);
			}
			else {
				alert('An unknown error has occurred. Please close this page and try again.');
			}
		}
		else {
			alert('An unknown error has occurred. Please close this page and try again.');
		}
	}
	else {
		alert('An unknown error has occurred. Please close this page and try again.');
	}
}

function subSrchStrip(i) {
	$('subButtonDiv').innerHTML = '<img src="images/wait16trans.gif"/>';
	var params = new Array();
	params['sid'] = $('strip_sid').getValue();
	params['uid'] = $('strip_uid').getValue();
	var url = '/subStrip';
	var req = new Ajax.Request(url, {
			method: 'post',
			parameters: params,
			evalJSON: 'force',
			onSuccess: subStripCallback,
			onFailure: subStripFail});
}

function subStripCallback(resp) {
	var obj = resp.responseJSON;
	if( Object.isUndefined(obj) ) {
		$('subButtonDiv').innerHTML = '<span style="color: #FF0000">Unknown error.</span>'; 
	}
	else if( obj.result == 'error' ) {
		$('subButtonDiv').innerHTML = '<span style="color: #FF0000">' + obj.resultMsg + '</span>'; 
	}
	else {
		$('subButtonDiv').innerHTML = '<span style="color: #000000">Subscribed.</span>'; 
	}
}

function subStripFail(obj) {
	$('subButtonDiv').innerHTML = '<span style="color: #FF0000">Server or communications error.</span>'; 
}

function twitterCall(type) {
	hideIfDown('stripInfoDiv', 'stripSrchSelDivImg');
	hideIfDown('stripDiv', 'stripSrchSelDivImg');
	$('stripSelectedHeadDiv').hide();
	$('stripAddDivHead').show();
	showIfDown('stripAddDiv', 'stripAddDivImg');
	$('twitterResultsHeadDiv').show();
	showIfDown('twitterResultsDiv', 'twitterResultsDivImg');
	var callStr = '';
	var title = '';
	switch(type) {
		case 0:
			title = 'Twitter Home';
			callStr = 'http://twitter.com/statuses/friends_timeline.json?callback=twitterCallback';
			break;
		case 1:
			title = 'Twitter Mentions';
			callStr = 'http://twitter.com/statuses/mentions.json?callback=twitterCallback';
			break;
		case 2:
			title = 'Twitter Directs';
			callStr = 'http://twitter.com/direct_messages.json?callback=twitterCallback';
			break;
		case 3:
			title = 'Twitter Faves';
			callStr = 'http://twitter.com/favorites.json?callback=twitterCallback';
			break;
		case 4:
			title = 'Twitter Search';
			//var searchStr = 'q=' + 
			callStr = 'http://search.twitter.com/search.json?callback=twitterCallback&q=' + encodeURIComponent($('twitterSrch').getValue());
			break;
	}
	if( callStr != '' ) {
		var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">Refreshing</span><br/><img src="/images/spinner3-greenie.gif" /></td></tr></table>';
		$('twitterResultsDiv').innerHTML = divHtml;
		$('twitTitle').innerHTML = title;
		$('twitterResultsHeadDiv').style.visibility = 'visible';
		$('twitterResultsDiv').style.visibility = 'visible';
		$('twitterLoadDiv').innerHTML = '';
	    var scr = document.createElement('script');
	    scr.src = callStr;
	    $('twitterLoadDiv').appendChild(scr);
	}
}

function twitterCallback(obj) {
	var divHtml = '<table width="100%">';
	if( !Object.isUndefined(obj) ) {
		if( !Object.isUndefined(obj.error) ) {
			divHtml += '<tr><td>' + obj.error + '</td></tr>';
		}
		else {
			res = obj.results;
			if( Object.isUndefined(res) ) {
				res = obj;
			}
			var odd = false;
			for (var index = 0, len = res.length; index < len; ++index) {
				var entry = res[index];
				divHtml += formatEntry(entry, odd, true);
			}
		}
	}
	else {
		divHtml += '<tr><td>Currently unable to retrieve data. Please try again later.</td></tr>';
	}
	divHtml += '</table>';
	$('twitterResultsDiv').innerHTML = divHtml;
}

function refreshTopStrips() {
	var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">Refreshing</span><br/><img src="/images/spinner3-greenie.gif" /></td></tr></table>';
	$('topStripsDiv').innerHTML = divHtml;	
	var url = '/getTopStrips';
	var req = new Ajax.Request(url, {
			method: 'get',
			evalJSON: 'false',
			evalJS: 'false',
			onSuccess: refreshTopStripsCallback,
			onFailure: refreshTopStripsFail});
}

function refreshTopStripsCallback(resp) {
	var divHtml = '';
	if( Object.isUndefined(resp) ) {
		divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #FF0000">Server response error.</span></td></tr></table>';
	}
	else {
		divHtml += resp.responseText;
	}
	$('topStripsDiv').update(divHtml);
}

function refreshTopStripsFail() {
	var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #FF0000">Server or communications error.</span></td></tr></table>';
	$('topStripsDiv').innerHTML = divHtml;	
}

function refreshTrends() {
	callStr = 'http://search.twitter.com/search.json?callback=showStripCallback&q=' + encodeURIComponent($('twitterSrch').getValue());
	var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">Refreshing</span><br/><img src="/images/spinner3-greenie.gif" /></td></tr></table>';
	$('trendsDiv').innerHTML = divHtml;
	$('trendsLoadDiv').innerHTML = '';
	var scr = document.createElement('script');
	scr.src = 'http://search.twitter.com/trends.json?callback=trendsCallback';
	$('trendsLoadDiv').appendChild(scr);
}

function trendsCallback(obj) {
	var divHtml = '<table><tr><td>Currently unable to retrieve data. Please try again later.</td></tr></table>';
	if( !Object.isUndefined(obj) ) {
		res = obj.trends;
		if( !Object.isUndefined(res) ) {
			divHtml = '<ul class="greenMenu">';
			for (var index = 0, len = res.length; index < len; ++index) {
				var entry = res[index];
				if( !Object.isUndefined(entry) ) {
					divHtml += '<li><a title="" href="javascript:makeTrendCall(\'http://search.twitter.com/search.json?callback=twitterCallback&' + encodeURIComponent(entry.url.substr(33)) + '\',\'' + entry.name + '\');">' + entry.name + '</a></li>';
				}
			}
			divHtml += '</ul>';
		}
	}
	$('trendsDiv').innerHTML = divHtml;
}

function makeTrendCall(callStr, title) {
	var divHtml = '<table width="100%" height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"><span style="color: #000000">Refreshing</span><br/><img src="/images/spinner3-greenie.gif" /></td></tr></table>';
	$('twitterResultsDiv').innerHTML = divHtml;
	$('twitTitle').innerHTML = 'Trend: ' + title;
	hideIfDown('stripInfoDiv', 'stripSrchSelDivImg');
	hideIfDown('stripDiv', 'stripSrchSelDivImg');
	$('stripSelectedHeadDiv').hide();
	$('stripAddDivHead').show();
	showIfDown('stripAddDiv', 'stripAddDivImg');
	$('twitterResultsHeadDiv').show();
	showIfDown('twitterResultsDiv', 'twitterResultsDivImg');
	$('twitterResultsHeadDiv').style.visibility = 'visible';
	$('twitterResultsDiv').style.visibility = 'visible';
	$('twitterLoadDiv').innerHTML = '';
    var scr = document.createElement('script');
    scr.src = callStr;
    $('twitterLoadDiv').appendChild(scr);
}
