CBLinks = function(){
     
    var getCBLinksSuccess = function(paras){
         return function(o){
	     //             alert(o.responseText);
             var parasHTML = YAHOO.lang.JSON.parse(o.responseText);
             for(i=0;i<paras.length;i++){
                 if(parasHTML[i]){
                     parasHTML[i] = parasHTML[i].replace(/\u([0-9a-fA-F]{4})/, function() { 
    return String.fromCharCode(parseInt(arguments[1],16)); 
});
		     paras[i].innerHTML = (parasHTML[i]);
		     //paras[i].innerHTML = "";
                     //paras[i].appendChild(document.createTextElement(parasHTML[i]));
                 }
             }
         }
     }

     var getCBLinksFailure = function(username, paras, max, cbId, titleHTML, keywords, tryAgain){
         return function(o){
             if(tryAgain){
  	         getCBLinks('/cblinks.client.php', username, paras, max, cbId, titleHTML, keywords, false)(null);
             }
         }
     }

    var getCBLinks = function(pathToClientFile, username, paras, max, cbId, titleHTML, keywords, tryAgain){
         return function(e){
    	     var parasHTML = [];
             var parasHTMLItem = null
             for(i=0;i<paras.length;i++){
                 parasHTMLItem = escape(paras[i].innerHTML); 
	         parasHTML[i] = 
                 {
		     html:parasHTMLItem
                 }
	     }
 	     var callback =
	     {
		success: getCBLinksSuccess(paras),
	    	failure: getCBLinksFailure(username, paras, max, cbId, titleHTML, keywords, tryAgain)
	     };  
             var parasHTML = (YAHOO.lang.JSON.stringify(parasHTML));
	     //             parasHTML = parasHTML.replace(/\\u000a/gi, "NNNN");
	     //	     parasHTML = parasHTML.replace(/\\u000d/gi, "NNNN");
	     /*	     parasHTML = parasHTML.replace(/\\u2010/gi, "NNNN");
	     parasHTML = parasHTML.replace(/\\u2011/gi, "NNNN");
	     parasHTML = parasHTML.replace(/\\u2014/gi, "NNNN");
	     parasHTML = parasHTML.replace(/\\u2018/gi, "NNNN");
	     parasHTML = parasHTML.replace(/\\u2019/gi, "NNNN");
	     parasHTML = parasHTML.replace(/\\u201B/gi, "NNNN");
	     parasHTML = parasHTML.replace(/\\u201C/gi, "NNNN");
	     parasHTML = parasHTML.replace(/\\u201D/gi, "NNNN");
	     parasHTML = parasHTML.replace(/\\u201E/gi, "NNNN");
	     parasHTML = parasHTML.replace(/\\u201F/gi, "NNNN");
	     parasHTML = parasHTML.replace(/\\u2022/gi, "NNNN");
	     parasHTML = parasHTML.replace(/\\u2026/gi, "NNNN"); */

	     var cObj = YAHOO.util.Connect.asyncRequest('POST', pathToClientFile, callback, 'parasHTML='+parasHTML+'&cbId='+cbId+'&max='+max+'&titleHTML='+titleHTML+'&keywords='+keywords+'&username='+username); 
	 }
     }    
	         
     return{
	 init : function(max, cbId, username){
	       return function(e){
                   var titles = document.getElementsByTagName('title');
                   var titleHTML = "";
                   if(titles[0]){
                       titleHTML = titles[0].innerHTML;
                   }
                   var metas = document.getElementsByTagName('meta');
                   var keywords = "";
                   var i=0;
                   for(i=0;i<metas.length;i++){
		       if(metas[i].getAttribute('name')=='keywords'){
                           keywords = metas[i].getAttribute('content');
                       }
                   }
		   getCBLinks('cblinks.client.php', username, document.getElementsByTagName('p'), max, cbId, titleHTML, keywords, true)(null);
	       }
	   }
      };

}();



