
	// interface and activity

	var $loaded = new Array("home", "profile", "friends", "followers", "updates", "signout");
	var $reload = new Array(true, true, true, true, true, true);
	var $page_loaded = "";
	var $is_login = false;
	var $ajax_loading = false;
	
	function pageLoad($page) {

		switch ($page) {
			case "home" :
				$("#page").css("height", "400px");
				break;
			case "profile" :
				$("#page").css("height", "400px");
				break;
			case "updates" :
				$("#page").css("height", "9300px");
				break;
			default :
				$("#page").css("height", "1000px");
				break;
		}

		$("#page").scrollTo("#page-"+$page, 200);

		for ($loop=0;$loop<6;$loop++) {
	        $('#tab-'+$loaded[$loop]).removeClass('tabactive');
		}

        $('#tab-' + $page).addClass('tabactive');

		$page_loaded = $page;
		$activity = $screen_name + "/" + $page + "/1/";
		
		if (pageLoadActivity($page)) {
			$("#activity-"+$page).html("<div class='activity-window-loading'><p>Loading "+$activity+", please wait...</p></div>");
			$.ajax({
				method: "get",
				cache: false,
				global: false,
				url: $activity,
				dataType: "html",
				data: "",
				timeout: (40 * 1000),
				success: function($html){
					$("#activity-"+$page).html("<div>"+$html+"</div>");
				},
				error: function() {
					$("#activity-"+$page).html("<div style='padding:20px'><p>Twitter is over capacity or taking too long to respond, <a href='javascript:;' onclick=\"javascript:activityLoad('"+$activity+"','"+$page+"')\">shall we try again</a>?</p></div>");
				}
			});
		}

	}

	function pageLoadActivity($page) {

		for ($loop=0; $loop<6; $loop++) {

			if ($loaded[$loop]==$page) {

				if ($reload[$loop]) {
					$reload[$loop] = false;
					$return = true;
				} else {
					$return = false;
				}

				break;
			}

		}

		return $return;
	}

	function activityLoad($activity, $page) {
		$("#activity-"+$page).html("<div class='activity-window-loading'><p>Loading Twitter accounts, please wait...</p></div>");
		$.ajax({
			method: "get",
			cache: false,
			global: false,
			url: $activity+"/?ajax=true",
			dataType: "html",
			data: "",
			timeout: (40 * 1000),
			success: function($html){
				$("#activity-"+$page).html("<div>"+$html+"</div>");
			},
			error: function() {
				$("#activity-"+$page).html("<div style='padding:20px'><p>Twitter is over capacity or taking too long to respond, <a href='javascript:;' onclick=\"javascript:activityLoad('"+$activity+"','"+$page+"')\">shall we try again</a>?</p></div>");
			}
		});
	}

	function optionsLoad($activity) {
		$("#activity-options").html("<div class='activity-window-loading'><p>Loading "+$activity+", please wait...</p></div>");
		$("#activity-options").load($activity);
	}

	function divLoad($div, $url) {
		$("#"+$div).html("<div class='div-loading'><p>Loading...</p></div>");
		$("#"+$div).load($url);
	}

	function searchKeywords($keywords) {
		$keywords = URLEncode($("#keywords").val());
		$page_loaded = "search";
		activityLoad($screen_name+'/search/'+$keywords+'/1');
	}

	function friendLoad($name) {
		
		if ($name=="") {
			$name = $("#friend_screen_name").val();
		}
		
		$page_loaded = "explore";
		activityLoad($screen_name+'/recommend/'+$name+'/1');
	}

	/* filters for friends and followers */
	 
	var $filter_tagged = "all";
	var $filter_follows_back = "on";
	var $filter_new_to_twitter = "on";
	var $filter_follows_more = "on";
	var $filter_2000_barrier = "on";
	var $filter_good_ratio = "on";
	var $filter_follows_less = "on";
	var $filter_power_user = "on";

	var $count_tagged = 0;
	var $count_not_tagged = 0;
	var $count_follows_back = 0;
	var $count_new_to_twitter = 0;
	var $count_follows_more = 0;
	var $count_2000_barrier = 0;
	var $count_good_ratio = 0;
	var $count_follows_less = 0;
	var $count_power_user = 0;

	function filterSet($value, $graph) {

		switch ($value) {
			// check for tags
			case "showall" :
				$filter_tagged = "all";
				$filter_follows_back = "on";
				$filter_new_to_twitter = "on";
				$filter_follows_more = "on";
				$filter_2000_barrier = "on";
				$filter_good_ratio = "on";
				$filter_follows_less = "on";
				$filter_power_user = "on";
				document.getElementById($graph+"-check-follows-back").checked = true;
				document.getElementById($graph+"-check-new-to-twitter").checked = true;
				document.getElementById($graph+"-check-follows-more").checked = true;
				document.getElementById($graph+"-check-2000-barrier").checked = true;
				document.getElementById($graph+"-check-good-ratio").checked = true;
				document.getElementById($graph+"-check-follows-less").checked = true;
				document.getElementById($graph+"-check-power-user").checked = true;

				if ($graph=="friend") {
					radioSet(document.forms['filterOptionsFriend'].elements['radio-tagged'], 'all');
				} else {
					radioSet(document.forms['filterOptionsFollower'].elements['radio-tagged'], 'all');
				}
				
				filter("", "", $graph);
				break;
			case "all" :
				$filter_tagged = $value;
				filter("", "", $graph);
				break;
			case "tagged" :
				$filter_tagged = $value;
				filter("", "user-tagged", $graph);
				break;
			case "not-tagged" :
				$filter_tagged = $value;
				filter("", "user-not-tagged", $graph);
				break;
			// filter by class
			case "follows-back" :
				$filter_follows_back = filterCheckBox($value, $graph);
				filter("class-"+$value, "user-"+$value, $graph);
				break;
			case "new-to-twitter" :
				$filter_new_to_twitter = filterCheckBox($value, $graph);
				filter("class-"+$value, "user-"+$value, $graph);
				break;
			case "follows-more" :
				$filter_follows_more = filterCheckBox($value, $graph);
				filter("class-"+$value, "user-"+$value, $graph);
				break;
			case "2000-barrier" :
				$filter_2000_barrier = filterCheckBox($value, $graph);
				filter("class-"+$value, "user-"+$value, $graph);
				break;
			case "good-ratio" :
				$filter_good_ratio = filterCheckBox($value, $graph);
				filter("class-"+$value, "user-"+$value, $graph);
				break;
			case "follows-less" :
				$filter_follows_less = filterCheckBox($value, $graph);
				filter("class-"+$value, "user-"+$value, $graph);
				break;
			case "power-user" :
				$filter_power_user = filterCheckBox($value, $graph);
				filter("class-"+$value, "user-"+$value, $graph);
				break;
		}

		filterGraph($graph);
	}

	function exploreScreenName($screen_name) {
		$reload[2] = false;
		pageLoad("friends");
		activityLoad($screen_name+"/recommend/"+$("#screen_name").val()+"/1", "friends");
	}
	
    function filter($checkbox, $class, $type){

		// show everything and filter by tagged

        for ($loop = 0; $loop < 100; $loop++) {
            $("#user-" + $type + "-" +$loop).show();
        }

		if ($filter_tagged=="tagged") {
			filterHide("user-not-tagged", $type);
		}

		if ($filter_tagged=="not-tagged") {
			filterHide("user-tagged", $type);
		}

		if ($filter_follows_back=="off") {
			filterHide("filter-user-follows-back", $type);
		}

		if ($filter_new_to_twitter=="off") {
			filterHide("filter-user-new-to-twitter", $type);
		}

		if ($filter_follows_more=="off") {
			filterHide("filter-user-follows-more", $type);
		}

		if ($filter_2000_barrier=="off") {
			filterHide("filter-user-2000-barrier", $type);
		}

		if ($filter_good_ratio=="off") {
			filterHide("filter-user-good-ratio", $type);
		}

		if ($filter_follows_less=="off") {
			filterHide("filter-user-follows-less", $type);
		}

		if ($filter_power_user=="off") {
			filterHide("filter-user-power-user", $type);
		}

    }

	function filterCheckBox($name, $graph) {
		
        if ($("#" + $graph + "-check-" + $name + ":checked").val() == "on") {
            return "on";
        }
        else {
            return "off";
        }

	}
	
	function filterHide($class, $type) {

        for ($loop = 0; $loop < 100; $loop++) {

            if ($("#user-" + $type +"-" + $loop).hasClass($class)) {
	            $("#user-" + $type +"-" + $loop).hide();
			}

        }
		
	}

	function filterGraph($name) {
		
		$count_tagged = 0;
		$count_not_tagged = 0;
		$count_follows_back = 0;
		$count_new_to_twitter = 0;
		$count_follows_more = 0;
		$count_2000_barrier = 0;
		$count_good_ratio = 0;
		$count_follows_less = 0;
		$count_power_user = 0;
		$displayed = 0;

        for ($loop = 0; $loop < 100; $loop++) {

            if ($("#user-" + $name + "-" + $loop).css("display")=="block") {
	            if ($("#user-" + $name + "-" + $loop).hasClass("filter-user-tagged")) { $count_tagged ++; }
	            if ($("#user-" + $name + "-" + $loop).hasClass("filter-user-not-tagged")) { $count_not_tagged ++; }
	            if ($("#user-" + $name + "-" + $loop).hasClass("filter-user-follows-back")) { $count_follows_back ++; }
	            if ($("#user-" + $name + "-" + $loop).hasClass("filter-user-new-to-twitter")) { $count_new_to_twitter ++; }
	            if ($("#user-" + $name + "-" + $loop).hasClass("filter-user-follows-more")) { $count_follows_more ++; }
	            if ($("#user-" + $name + "-" + $loop).hasClass("filter-user-2000-barrier")) { $count_2000_barrier ++; }
	            if ($("#user-" + $name + "-" + $loop).hasClass("filter-user-good-ratio")) { $count_good_ratio ++; }
	            if ($("#user-" + $name + "-" + $loop).hasClass("filter-user-follows-less")) { $count_follows_less ++; }
	            if ($("#user-" + $name + "-" + $loop).hasClass("filter-user-power-user")) { $count_power_user ++; }
				$displayed ++;
			} 

        }

		$count_tagged = ($count_tagged / $displayed) * 100;
		$count_not_tagged = ($count_not_tagged / $displayed) * 100;
		$count_follows_back = ($count_follows_back / $displayed) * 100;
		$count_new_to_twitter = ($count_new_to_twitter / $displayed) * 100;
		$count_follows_more = ($count_follows_more / $displayed) * 100;
		$count_2000_barrier = ($count_2000_barrier / $displayed) * 100;
		$count_good_ratio = ($count_good_ratio / $displayed) * 100;
		$count_follows_less = ($count_follows_less / $displayed) * 100;
		$count_power_user = ($count_power_user / $displayed) * 100;

		if ($displayed > 0) {
			var $data = new Array(['', $count_follows_back], ['', $count_new_to_twitter], ['', $count_follows_more], ['', $count_2000_barrier], ['', $count_follows_less], ['', $count_power_user]);
	
			var $colors = ['#000', '#ffff00', '#ff6600', '#307ac4', '#ff0000', '#00cc33'];
			var myChart = new JSChart('graph-'+$name, 'pie');
			myChart.setDataArray($data);
			myChart.colorizePie($colors);
			myChart.setPiePosition(90, 90);
			myChart.setPieRadius(70);
			myChart.setPieUnitsFontSize(8);
			myChart.setPieUnitsColor('#474747');
			myChart.setPieValuesColor('#000');
			myChart.setPieValuesOffset(+10);
			myChart.setTitle('');
			myChart.setSize(180, 180);
			myChart.draw();
		}

	}

	// helper functions

	function radioSet(radioObj, newValue) {

		if(!radioObj)
				return;
		var radioLength = radioObj.length;

		if(radioLength == undefined) {
			radioObj.checked = (radioObj.value == newValue.toString());
			return;
		}

		for(var i = 0; i < radioLength; i++) {
			radioObj[i].checked = false;
			if(radioObj[i].value == newValue.toString()) {
				radioObj[i].checked = true;
			}
		}

	}
    
	function URLEncode($clearString) {
		var $output = '';
		var $x = 0;
		$clearString = $clearString.toString();
		var $regex = /(^[a-zA-Z0-9_.]*)/;

		while ($x < $clearString.length) {
			var $match = $regex.exec($clearString.substr($x));

			if ($match != null && $match.length > 1 && $match[1] != '') {
				$output += $match[1];
				$x += $match[1].length;
			} else {

				if ($clearString[$x] == ' ')
					$output += '+';
				else {
					var $charCode = $clearString.charCodeAt($x);
					var $hexVal = $charCode.toString(16);
					$output += '%' + ( $hexVal.length < 2 ? '0' : '' ) + $hexVal.toUpperCase();
				}

				$x++;
			}

		}

		return $output;
	}

	function addQtip($div, $content, $position_tip, $position_target) {

		$($div).qtip({
			content : $content,
			show: 'mouseover',
			hide: 'mouseout',
			style: { 
				padding: 7,
				background: '#555',
				color: '#fff',
				textAlign: 'left',
				border: {
					radius: 4,
					color: '#555'
				},
				tip: $position_tip,
				name: 'dark' 
	      	},
			position: {
				corner: {
					target: $position_target,
					tooltip: $position_tip
				}
		   }		
		});
		
	}
	
	function bookmark($url, $sitename) {
		$message="Not using Internet Explorer? Simply press CTRL+D to bookmark this site";
		if ((navigator.appName=='Microsoft Internet Explorer') && (parseInt(navigator.appVersion)>=4)) {
			window.external.AddFavorite($url, $sitename);
		} else {
		    alert($message);
		}
	}