
var initSearch = function() {
	var facetname = $(this).attr('facetname');
	$(".modalTemplateFilterA").click(function(){ displaySearchFacetFilter(facetname, false); return false; });
	$(".modalTemplateFilterB").click(function(){ displaySearchFacetFilter(facetname, true); return false; });
	displaySearchFacetFilter(facetname, false);
}

var displaySearchFacetFilter = function(facetname, alphaSort) {
	var win = "#modalTemplate";
	$('#modalColA', win).empty();
	$('#modalColB', win).empty();
	$('#modalColC', win).empty();

	$('#modalColB', win).append('<li class="loading" style="text-align:center;"><img src="/res/img/modal/loading.gif" /></li>');
	
	
	var facetdata = window['facet_' + facetname];
	var link = window['facetlink_' + facetname];
	facetdata = $.parseJSON(facetdata)
	var size = Object.size(facetdata)
	var parts = Math.ceil(size/3) - 1;
	var rest = size-(Math.ceil(size/3)*2);

	if(alphaSort)
		facetdata = Object.sort(facetdata);
	
	var i = 0;
	$('#modalColB', win).empty();
	$.each(facetdata, function(name, count) {
		var html = '<li><a href="'+link+'&filter['+facetname+']='+encodeURIComponent(name)+'">'+name+'</a> ('+count+')</li>'; 
		if (i <= parts) { $('#modalColA', win).append(html); }
		if (i > parts && i <= parts*2+1) { $('#modalColB', win).append(html); }
		if (i > parts*2+1) { $('#modalColC', win).append(html); }
		i++;		
	});
	
}

//------------------- Helper function -------------------
Object.size = function(obj) {
  var size = 0, key;
  for (key in obj) {
      if (obj.hasOwnProperty(key)) size++;
  }
  return size;
};

Object.sort = function(obj) {
	// Setup Arrays
	var sortedKeys = new Array();
	var sortedObj = {};

	// Separate keys and sort them
	for (var i in obj){
		sortedKeys.push(i);
	}
	sortedKeys.sort();

	// Reconstruct sorted obj based on keys
	for (var i in sortedKeys){
		sortedObj[sortedKeys[i]] = obj[sortedKeys[i]];
	}
	return sortedObj;
}


function var_dump(element, limit, depth)
{
    depth =    depth?depth:0;
    limit = limit?limit:1;

    returnString = '<ol>';

    for(property in element)
    {
        //Property domConfig isn't accessable
        if (property != 'domConfig')
        {
            returnString += '<li><strong>'+ property + '</strong> <small>(' + (typeof element[property]) +')</small>';

            if (typeof element[property] == 'number' || typeof element[property] == 'boolean')
                returnString += ' : <em>' + element[property] + '</em>';
            if (typeof element[property] == 'string' && element[property])
                returnString += ': <div style="background:#C9C9C9;border:1px solid black; overflow:auto;"><code>' +
                                    element[property].replace(/</g, '&amp;lt;').replace(/>/g, '&amp;gt;') + '</code></div>';

            if ((typeof element[property] == 'object') && (depth < limit))
                returnString += var_dump(element[property], limit, (depth + 1));

            returnString += '</li>';
        }
    }
    returnString += '</ol>';

    if(depth == 0)
    {
        winpop = window.open("", "","width=800,height=600,scrollbars,resizable");
        winpop.document.write('<pre>'+returnString+ '</pre>');
        winpop.document.close();
    }   

    return returnString;
}

