/********** Twittr handling ************/
var callbackID = 0;

var twConstants = {
  twUrl : "http://search.twitter.com/search.json?",
  tmpl : '<div class = "twUserpicContainer"><img class = "twUserpic" /></div><div class = "twContent"><div class = "twBg"><div class = "twText"><a class = "twitUrl" target = "_top"></a></div></div><div class = "twUsername"></div><div class = "twDate"></div></div><div class = "genieoClear"></div>',
  defaultTerm : "Genieo",
  defaultTweetsNumber : 7,
  defaultTimeout : 10*60*1000
};

var twHandler = function (jTwitView, term, tweetsNumber, refresh, timeout) {
		if (jTwitView.length == 0) {
			return;
		}
		if (! term) {
       this.term = twConstants.defaultTerm;
    }
    else {
       this.term = term;
    }
		if (! tweetsNumber) {
      this.tweetsNumber = twConstants.defaultTweetsNumber;
    }
    else {
         this.tweetsNumber = tweetsNumber;
    }
    
    if(! refresh) {
      this.refresh = false;
    }
    else {
       this.refresh = refresh;
    }
    
    if (! timeout) {
        this.timeout =  twConstants.defaultTimeout;
    }
    else {
        this.timeout = timeout;
    }

  this._init(jTwitView);
}

twHandler.prototype = new Object();

twHandler.prototype._init = function (jTwitView) {
  var t;
  var that = this;
  
  //alert(this.term);
  
	var updSection = function() {
    that.loadTwittrData(jTwitView, that.term);
   } 
   
   	if (jTwitView.length) {
  		updSection.call();
  		if (this.refresh) {
  		    t = setInterval(updSection, this.timeout);
      }
  	}

    
}

twHandler.prototype.loadTwittrData = function(twitView, twitTerm) {
//var loadTwittrData = function(twitView, twitTerm) {
	var scp = document.createElement("script");
	var url = twConstants.twUrl;	
	var f = function(twitData) {
		var func = arguments.callee;
		var data = func.cbData;
		window[data.name] = null;
		var script = data.script;
		if (script && script.parentNode) {
			script.parentNode.removeChild(script);
		}
		var view = data.view;
		utils.triggerCallback(func, [view, twitData]);
	}
	var name = "AnabelUITwittrCB" + callbackID++;
	//alert(this);

	utils.setupCallback(f, this, this.onTwittrData, {
		name : name,
		script : scp,
		view : twitView
	});
	url += 'q=' + encodeURIComponent(twitTerm);
	url += '&callback=' + name;
	window[name] = f;
	scp.setAttribute("src", url);
	document.getElementsByTagName('head')[0].appendChild(scp);
}

twHandler.prototype.onTwittrData = function(view, data) {
//var onTwittrData = function(view, data) {
//alert("tw data");
  var oneTwit; 
  var jOneTwit;
  
	if (data && data.results && data.results.length) {
//	 alert(data.results.length);
  
   var twNumber = this.tweetsNumber;
   if (this.tweetsNumber > data.results.length) {
      twNumber = data.results.length;
   }
   //alert(twNumber);
   view.empty();	 
	 for(var i = 0; i < twNumber; i++) {
        oneTwit = document.createElement("div");
        jOneTwit = $(oneTwit);
        jOneTwit.addClass('oneTwit');
        jOneTwit.html(twConstants.tmpl);
        view.append(jOneTwit);
		    this.renderTwit(data.results[i], jOneTwit);
		    
		    //view.append(data.results[i].text+'<br />');
		  }
		view.show();
	}
	else {
		view.hide();
	} 
}


/*********** Twittr renderer *************************/

twHandler.prototype.renderTwit = function(item, view) {
	view.hide();
	var str, jUrl, jPic, jDate, jUser;
	var twitUrl;
//	var imgCnt = '<div class = "tp_twitPicContainer"><img class = "tp_twitPic" /></div>';
	var fullText, twitCntnt;
	
	if (! item || ! item.text) {
		return;
	}
	
	twitUrl = "http://twitter.com/" + item.from_user + "/status/" + item.id;
		
	jUrl = view.find(".twitUrl");
	if (jUrl.length) {
		jUrl.attr("href", twitUrl);		
	} 
	
//	var regex = new RegExp("(israel)", "i"); 
	var regex = new RegExp("("+this.term+")", "gi"); 

	
	//alert(regex); //   /israel/
//	var lc = this.term.toLowerCase();
//	var str = item.text.replace(/(israel)/gi, '<span class="twTerm">'+'$1'+'</span>');	
	var str = item.text.replace(regex, '<h2 class="twTerm">$1</h2>');	
	
//  var str = item.text.replace(this.term, '<span class="twTerm">'+this.term+'</span>', "g");	
//  str = str.replace(lc, '<span class="twTerm">'+lc+'</span>', "g");	
	
	jUrl.html(str);
	
	jUser = view.find(".twUsername");
	if (jUser.length) {
	   jUser.html(item.from_user);
  }
	
	if (item.profile_image_url) {
		jPic = view.find(".twUserpic");
		if (jPic.length) {	
			jPic.attr('src', item.profile_image_url);
		}
	}  

	//-----------------------------------------------------
	var twitDate = new Date(item.created_at).getTime();
	var now = new Date();
	var timeAgo = DataProcessor.processDate(twitDate, now);

	
	jDate = view.find(".twDate");
	if (jDate.length) {
		jDate.html(timeAgo);
	}
	view.show();
	return view;

}

