﻿kit.count = {
	_html_get_array : new Array(),
	_html_set_array : new Array(),
	$callJSON : function(url, param, isSet){

		//JSONP
		if( url.indexOf("http") != -1 ) {
			if(isSet){
				param += "&jsoncallback=kit.count.$setCountCallback";	
			}else{
				param += "&jsoncallback=kit.count.$getCountCallback";	
			}
			
			
			var script = document.createElement("script");
			script.setAttribute("src", param);
			script.type = "text/javascript";
			script.charset = "utf-8";
			script.src = url + '?' + param;
			
			document.getElementsByTagName('head')[0].appendChild(script);
		}
		// ajax
		else {
			var ajax = kit.$ajax(url, param, "GET", true);
			ajax.onreadystatechange = function() {
		        if (ajax.readyState == 4) {
		        	if( ajax.status == 200 ) {
		        		var result = eval(ajax.responseText);
		        		kit.count.$countMapping(result);
		        	}
		        }else{
					for(var i = 0; i < kit.count._html_get_array.length; i++ ){
						kit.count._html_get_array[i].innerHTML = ajax.readyState;
					}
					for(var i = 0; i < kit.count._html_set_array.length; i++ ){
						kit.count._html_set_array[i].innerHTML = ajax.readyState;
					}
				}
		    };
		}	
	},
	
	setCountFromClass : function(url, cls){

		this._html_set_array = kit.$class(cls);
		
		var catid = '';
		var artid = '';
		var aid = '';
		
		if(this._html_set_array.length > 0){
			aid = this._html_set_array[0].id;
			catid = aid.split("@")[0];
			artid = aid.split("@")[1];
		}
		
		var param = 'set=true&sid=' + new Date() + '&' + 'catid=' + catid + "&artid=" + artid;
		this.$callJSON(url, param, true);
	},
	getCountFromClass : function(url, cls){
		this._html_get_array = kit.$class(cls);
		
		var artids = new Array();
		var catid = '';
		var artid = '';

		for( var i=0; i < this._html_get_array.length; i++ ){
			catid = this._html_get_array[i].getAttribute('catid');
			var aid = this._html_get_array[i].id;
			catid = aid.split("@")[0];
			artid = aid.split("@")[1];
			
			artids.push(artid);
		}

		var param = 'catid=' + catid + "&artid=" + artids.join('@');
		this.$callJSON(url, param, false);
	},
	$getCountCallback : function(result_array){
		this.$countMapping( result_array );
	},
	$setCountCallback : function(result_array){
		this.$countMapping( result_array );
	},
	$countMapping : function( result_array ){
		for( var i = 0; i < result_array.length; i++ ){
			//kit.$id(result_array[i].catid + '@' + result_array[i].artid).innerHTML = result_array[i].cnt;
		}
		var kititem = kit.count._html_get_array;
		var empty = new Array();
		var notempty = new Array();
		for( var i = 0; i < kititem.length; i++ ) {
			if( kititem[i].innerHTML == "" )
				empty.push(kititem[i]);
			else
				notempty.push(kititem[i]);
		}
		for( var i = 0; i < empty.length; i++ ) {
			for( var j = 0; j < notempty.length; j++ ) {
				if( empty[i].id == notempty[j].id )
					empty[i].innerHTML = notempty[j].innerHTML;
			}
		}
	}

}
