function isShowAllTags() {
    return ($('all-tags') != undefined);
}
function isShowMyTags(){
    return ($('my-tags') != undefined);	    
}

function toggleTagPannel() {
    var type = this.id.split('-')[1];
    var elementName = getTagPannelName();
    if (type == 'list') {
          showTagsList(elementName);                
    } else {
        showTagsCloud(elementName);
    }
		deleteCookie('tag_pannel_style', '/');
    setCookie('tag_pannel_style', type, getExpDate(90, 0, 0), '/');
    return false;
}

function getTagPannelName(){
    var elementName;
      if (isShowAllTags()) {
          elementName = 'all-tags';
      } else if (isShowMyTags()) {
          elementName = 'my-tags';
      }
    return elementName;
}

function showTagPannelFromCookie() {
    var type = getCookie('tag_pannel_style');
    var elementName = getTagPannelName();
    if (type == 'cloud') {
        showTagsCloud(elementName);
    } else {
        showTagsList(elementName);
    }
  }
  
	var isActive =false;
	var hasNextRequest =false;

  function searchTagAjax() {
	if (!isActive) {
			isActive = true;
	  	new Ajax.Request(urlBase + '/search/look_up_tags_by_match_text',
	  	    {
	  		    asynchronous: true, 
	  		    method: 'get',
	  		    parameters: 'match_text=' + encodeURIComponent($('tag-search').value),
	 					onComplete: function(request){
						},
	  		    onSuccess: function(request) { 
							  isActive = false;
								if (!hasNextRequest) {
		  		        setTagObjList(eval(request.responseText));
		      		    showTagPannelFromCookie();  
 								  $('tags-searching').style.display = 'none';
								} else {
									hasNextRequest = false;
									searchTagAjax();
								}
	  		    },
	  		    onFailure: function(request) {alert('failuer' + encodeURIComponent($('tag-search').value));},
						onLoading: function(request) {
							if ($('tags-searching')) {
							 $('tags-searching').style.display = 'block';
							}
						}
	  	    }
	  	);
		} else {
			hasNextRequest = true;
		}
  }

 function searchTag(){
   showTagPannelFromCookie();
 }

function refreshTags() {
  	new Ajax.Request(urlBase + '/user/look_up_tags',
  	    {
  		    asynchronous: true, 
  		    method: 'get',
  		    onSuccess: function(request) { 
  		        setTagObjList(eval(request.responseText));
      		    showTagPannelFromCookie();            	    
  		    },
  		    onFailure: function(request) {}
  	    }
  	);
  }
 

function loadTagsTemplate() {
    if (isShowMyTags()) {
          tagListProcessor = getProcessor(urlBase + "/ajp/my-tags-list.ajp");
          tagCloudProcessor = getProcessor(urlBase + "/ajp/my-tags-cloud.ajp");
      } else if (isShowAllTags()) {
          tagListProcessor = getProcessor(urlBase + "/ajp/tags-list.ajp");
          tagCloudProcessor = getProcessor(urlBase + "/ajp/tags-cloud.ajp");
      }	    
}

function showTagsList(elementName) {
    var searchValue = $('tag-search').value.replace(/　/g, ' ').replace(/\s/g, '');
      $(elementName).innerHTML = tagListProcessor({tagNameList: tagObjList.getNameList,
                                                  tagCountList: tagObjList.getCountList,
                                                  tagStyleList: tagObjList.getStyleList,
                                                  searchValue: searchValue});
}

function showTagsCloud(elementName) {
    var searchValue = $('tag-search').value.replace(/　/g, ' ').replace(/\s/g, '');
      $(elementName).innerHTML = tagCloudProcessor({tagNameList: tagObjList.getNameList,
                                                  tagCountList: tagObjList.getCountList,
                                                  tagStyleList: tagObjList.getStyleList,
                                                  searchValue: searchValue});
}

function getProcessor(fileName) {
      var ajp = new AjaxPages();
      ajp.load(fileName);
      var processor = ajp.getProcessor();
      return processor;
  }

/* for AjaxPages ver 0.51
function loadTagsTemplate() {
  	ajaxPages = new AjaxPages();
    if (isShowMyTags()) {
				ajaxPages.addPage("/ajp/my-tags-list.ajp");
				ajaxPages.addPage("/ajp/my-tags-cloud.ajp");
      } else if (isShowAllTags()) {
          ajaxPages.addPage("/ajp/tags-list.ajp");
          ajaxPages.addPage("/ajp/tags-cloud.ajp");
      }
			console.debug('loaded')
			ajaxPages.loadPages();
}

function showTagsList(elementName) {
    var searchValue = $('tag-search').value.replace(/　/g, ' ').replace(/\s/g, '');
      $(elementName).innerHTML = ajaxPages.process("/ajp/tags-list.ajp", {tagNameList: tagObjList.getNameList,
                                                  tagCountList: tagObjList.getCountList,
                                                  searchValue: searchValue});
}

function showTagsCloud(elementName) {
    var searchValue = $('tag-search').value.replace(/　/g, ' ').replace(/\s/g, '');
      $(elementName).innerHTML = ajaxPages.process("/ajp/tags-list.ajp", {tagNameList: tagObjList.getNameList,
                                                 tagCountList: tagObjList.getCountList,
                                                  searchValue: searchValue});
}
 */
