

var Tagbar = {
	unTagFunc : null,
	tags : {},
        //name_tag : {},
	tag : function(id, name,year, cat, top_query, num_result, search1, tag_id, enter)
	{
                this.tags[id] = name+":"+num_result;
				this.yr = year;
                this.cat = cat;
                this.top_query = top_query;
                this.num_result = num_result;
                this.search1 = search1;
                this.name_tag = name;
				this.enter = enter;
                // this.name_tag[tag_id] = name;
		this.update();
	},
	untag : function(id)
	{

		this.tags[id] = null;

                 mystring = this.getTags().toString();
                  myarray = mystring.split(',');
                  this.query = myarray[this.getTags().length - 1];


                this.update();
                $('new-tag').value = 'Voeg tag toe';
		if((this.unTagFunc != null) && (typeof this.unTagFunc == "function")){
			this.unTagFunc(id);
                }

	},
	update : function()
	{

		var TagBarUL = $("tagbar").childElements()[0];
		var ForAdd = [];
		for(var id in this.tags)
		{
			if($("tag-"+id))
				continue;
			else
				ForAdd.push(id);
		}

		ForAdd.each(function(item)
		{
			var LastChild = getLastChild(TagBarUL);
                        //var rx = /tag\-([0-9a-zA-Z\s\-]+)/
              var rx = /tag\-([a-zA-Z0-9_\?\,\s\-\x81-\xFF]+)/
			if(!rx.match(LastChild.id) && (LastChild.id != "tagheader"))
			{
				var clone = LastChild.cloneNode(true);
				TagBarUL.removeChild(LastChild);
			}

			TagBarUL.appendChild(Tagbar.create(item));

			if(clone)
				TagBarUL.appendChild(clone);
		});
		// remove non-existing tags
		var ForDelete = [];
		TagBarUL.childElements().each(function(item)
		{
			//var rx = /tag\-([0-9a-zA-Z\s\-]+)/
              var rx = /tag\-([a-zA-Z0-9_\?\,\s\-\x81-\xFF]+)/
			if(rx.match(item.id))
			{
				var id = item.id.match(rx)[1];
				if(Tagbar.tags[id] == null){
					ForDelete.push(item);
                                }
			}
		});
		ForDelete.each(function(item)
		{
			TagBarUL.removeChild(item);
		});

                mystring = this.getTags().toString();
                myarray = mystring.split(',');
                $('new-tag').value = 'Voeg tag toe';
                query_tag = myarray[this.getTags().length - 1];

                if(mystring.length > 0) {
                  query = myarray[this.getTags().length - 1];
                  queryString = query.toString();
                  query_tag1 =  queryString.split(':');

                }



                //alert(mystring);
               // alert('top:'+this.top_query+'1:'+mystring+' - 2:'+this.getTags().length+' - 3:'+this.yr+' - 4:'+query_tag[0]+' - 5:'+this.cat);
                if(mystring.length > 0) {
                   doSearchTags(mystring,this.getTags().length,this.yr,query_tag1[0],this.cat,this.top_query, query_tag1[1],this.search1,this.enter);
                }else {
                  doSearchTags(mystring,this.getTags().length,this.yr,query_tag,this.cat,this.top_query,this.num_result,this.search1,this.enter);
                }
				$("tag-suggest").innerHTML = '';
			    toggle_element("ts-container", 'hide');
	},
	create : function(id)
	{
		var li = document.createElement("li");
		li.id = "tag-"+id;
		li.innerHTML = '<div class="tag-container"><em><span>'+id+'</span></em> <b><a href="javascript: void(0);" onclick="Tagbar.untag(\''+id+'\')"><img src="../Images/tag/tag-delete.jpg" /></a></b></div>';

		return li;
	},

//         getTags : function()
//         {
//           var result = [];
//
//           for(var tag in this.name_tag){
//             if(this.name_tag[tag] != null) result.push(this.name_tag[tag]);
//           }
//
//           return result;
//         }

         getTags : function()
        {
          var result = [];

          for(var tag in this.tags){
            if(this.tags[tag] != null) result.push(this.tags[tag]);
          }

          return result;
        }

};



function clearField(el)
{
  $(el).value = '';
}


function enterkey(e, val1, val2,year,category,top_query) {

if (!e) var e = window.event;
var browser=navigator.appName;

	$("tag-suggest").innerHTML = '';
    toggle_element("ts-container", 'hide');
if (browser=="Netscape") {
  if(e.which == 13 && $('new-tag').value.length > 1) {
    //alert(val1);
	Tagbar.tag(val1,val2,year,category,top_query,null,null,null,'1');
	
  	//Tagbar.tag(val1,val2,year);
	return false;
  }


}else{
  if(e.keyCode == 13 && $('new-tag').value.length > 1){
  	Tagbar.tag(val1,val2,year,category,top_query,num_result,null,null,null,'1');
	
  	//Tagbar.tag(val1,val2,year);
	return false;
  }
}

}

function doSearchTags(keyword, objlength, year, origquery, category, first_keyword, num, search1, enter) {
     //first_keyword = top_query;
	  
      if(origquery == null) origquery = first_keyword;
      if(objlength > 1) {
        new Ajax.Request("search_result_tags.php?",

                {method: 'post',
                parameters: "txtSearch="+encodeURIComponent(escape(keyword))+
                            "&type=tag&ajax=1&more=1&year="+year+
                            "&keyword="+encodeURIComponent(escape(first_keyword))+
                            "&query="+encodeURIComponent(escape(origquery))+
                            "&category="+category,
                onComplete: function(request) {

					   responseString = request.responseText;
					   count = responseString.split(';');
					   if (enter == '1') $('num_result').innerHTML = (num == 'undefined') ? '0' : count[0];
                       $('divResult').innerHTML = responseString.substring(count[0].length+1);
                }});

        new Ajax.Request("search_result_tags.php?",

                {method: 'post',
                parameters: "txtSearch="+encodeURIComponent(escape(keyword))+
                            "&type=tag&more=1&tag_list=1&year="+year+
                            "&keyword="+encodeURIComponent(escape(first_keyword))+
                            "&query="+encodeURIComponent(escape(origquery))+
                            "&category="+category,
                onComplete: function(request) {
                      $('tag_lists').innerHTML = request.responseText;
                      if (enter == null) $('num_result').innerHTML = (num == 'undefined') ? '0' : num;
                      $('tag_query').innerHTML = 'de tag '+"\'"+origquery+"\'";
                }});

      }else {
          if(!keyword) {

             // keyword = document.getElementById('txtsearch').value;
          // alert(search1);
                if(search1 == "Search") {
                  window.location = "/search_result.php?txtSearch="+encodeURIComponent(escape(first_keyword))+
                                        "&year="+year+
                                        "&category="+category;
                }
                else {

                  window.location = "/search_result.php?txtSearch="+encodeURIComponent(escape(first_keyword))+
                                        "&year="+year+
                                        "&category="+category+
                                        "&type=tag";
                }

          }else {

            new Ajax.Request("search_result_tags.php?",

                          {method: 'post',
                          parameters: "txtSearch="+encodeURIComponent(escape(keyword))+
                                      "&type=tag&ajax=1&year="+year+
                                      "&keyword="+encodeURIComponent(escape(first_keyword))+
                                      "&query="+encodeURIComponent(escape(origquery))+
                                      "&category="+category,
                          onComplete: function(request) {
						  	  responseString = request.responseText;
   					           count = responseString.split(';');		    		  	 
		                      if (enter == '1') $('num_result').innerHTML = (num == 'undefined') ? '0' : count[0];
                              $('divResult').innerHTML = responseString.substring(count[0].length+1);
                          }});

            new Ajax.Request("search_result_tags.php?",
                {method: 'post',
                parameters: "txtSearch="+encodeURIComponent(escape(keyword))+
                            "&type=tag&tag_list=1&year="+year+
                            "&keyword="+encodeURIComponent(escape(first_keyword))+
                            "&query="+encodeURIComponent(escape(origquery))+
                            "&category="+category,
                onComplete: function(request) {
                    $('tag_lists').innerHTML = request.responseText;
                    if (enter == null) $('num_result').innerHTML = (num == 'undefined') ? '0' : num;
                    $('tag_query').innerHTML = 'de tag '+"\'"+origquery+"\'";
                }});
         }
    }



}

function getLastChild(element)
{
	var lastChild = element.lastChild;
	while(lastChild.nodeType != 1)
	{
		lastChild = lastChild.previousSibling;
	}
	return lastChild;
}


function getURL( name,href )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( href);
  if( results == null )
    return "";
  else
    return results[1];
}

function page(href) {

  var page = getURL('page',href);
  var year = getURL('year',href);
  var query = getURL('query', href);
  var keyword = getURL('keyword', href);
  var category = getURL('category', href);

  new Ajax.Request("search_result_tags.php?",
            {method: 'post',
            parameters: "txtSearch="+encodeURIComponent(escape(query))+
                        "&type=tag&ajax=1&page="+page+
                        "&year="+year+
                        "&query="+encodeURIComponent(escape(query))+
                        "&keyword="+encodeURIComponent(escape(keyword))+"&category="+category,
            onComplete: function(request) {
                responseString = request.responseText;
   				count = responseString.split(';');		    		  	 
		        if (enter == '1') $('num_result').innerHTML = (num == 'undefined') ? '0' : count[0];
                $('divResult').innerHTML = responseString.substring(count[0].length+1);
            }});


 }

function putInTag(href) {

    var search1 = getURL('search', window.location);
    var top_query = getURL('top', href);
    var txt = getURL('txtSearch',href);
    var year = getURL('year',href);
    var category = getURL('category', href);
    var num_result = getURL('num', href);
    var tag_id = getURL('tag_id', href);
    $('new-tag').value = txt;
    Tagbar.tag(txt,txt,year,category,top_query,num_result,search1,tag_id, null);
	$("tag-suggest").innerHTML = '';
    toggle_element("ts-container", 'hide');

}


function urlencode(str) {
    str = escape(str);

    return str;
}


function var_dump(obj) {
   if(typeof obj == "object") {
      return "Type: "+typeof(obj)+((obj.constructor) ? "\nConstructor: "+obj.constructor : "")+"\nValue: " + obj;
   } else {
      return "Type: "+typeof(obj)+"\nValue: "+obj;
   }
}

function toggle_element(element_id, override)
{	
	
	if(override)
	{
        try
        {
            $(element_id).removeClassName('hide');
            $(element_id).removeClassName('show');
            $(element_id).addClassName(override);
        } catch(e){}
	}
	else{
       if($(element_id).hasClassName('hide'))
           $(element_id).toggleClassName('hide');
       else
           $(element_id).addClassName('hide');
	}	
}

function update_suggestion(input, keyword, year, category)
{
	$("tag-suggest").innerHTML = '';
    toggle_element("ts-container", 'hide');
	var value = input.value.strip();
	if(!value.empty())
	{	
		
		  new Ajax.Request('/tag_suggest.php?', 
			{
				parameters: 
					"keyword="+keyword+
					"&year="+year+
					"&category="+category+
					"&input="+value,
				onSuccess : function(response)
				{	
				    
                    $("tag-suggest").innerHTML = response.responseText + '<div id="ts-footer"></div>';
                    toggle_element("ts-container", 'show');
				}
			});
	}
	else
		toggle_element("ts-container", 'hide');
}

