var pelog__ = {
url: "//www.gutto.jp/pelog/", // user customize ok. please pelog server URL
page_id: "page_id",
uid: "",
start_time: "",
page: "",
// user customize ok
timeSplit: ":", 
// user customize ok
callback: function(res){},

// user customize ok
// ! value only
// ex: {"click": "name_click"}
targetClassNames: {"click": "peclick__", "mouseover": "peover__" ,"out": "peout__"},

// user customize ok
targetChangeClassName: "pechange__",

init: function(){
	this.page = $("span#" + this.page_id).html();
	this.uid = pelog__.getRandomString();
	this.start_time = new Date();
	this.urlParams = pelog__.getUrlQuery();

// add event
// !! no indent
for(var key in pelog__.targetClassNames){
	var value = pelog__.targetClassNames[key];
	$("[class*='" + value + "']").each(
	function(index,element){
		el = $(element);
		el.bind(key, function(e){
			var val = pelog__.targetClassNames[e.type];
			var search = $(this).attr("class");
			search = search.substr(search.indexOf(val));
			search = (search.indexOf(" ") == -1)? search.replace(val, "") : search.substr(0,search.indexOf(" ")).replace(val, "");
			var params = {type: e.type, search: search};
			pelog__.pelog(params);
		});
	}
	);
}

$("[class*='" + pelog__.targetChangeClassName + "']").each(
function(index,element){
	el = $(element);
	el.change(function(){
		var val = pelog__.targetChangeClassName;
		var so = $(this).children("option:selected");
		var search = so.val() + "_" + so.text();
		var params = {type: "change", search: search};
		pelog__.pelog(params);
	});
}
);

pelog__.pelogp({type:"1", mode:this.page, search:location.href + "_%UANDR%_" + document.referrer}, pelog__.url, pelog__.callback);
}, //init

// pelog simpe version
pe: function(type, search){
	var params = {type: type, search: search};
	pelog__.pelog(params);
}, // pe

// pelog 
// start ajax request
pelog: function(params){
	var url = this.url;
	params = $.param(params);
	$.ajax({
		type: "GET",
		dataType: "json",
		url: url,
		data: params
	});
}, // pelog

// pelog jsonp
// start ajax request
pelogp: function(params, url, callback){
	params = $.param(params);
	$.ajax({
		type: "GET",
		dataType: "jsonp",
		url: url,
		data: params,
		success: callback
	});
}, // pelog jsonp

// get user stay time. this page
getStayTime: function (start_time){
	var tsp = pelog__.timeSplit;
	now = new Date();
	datet = parseInt((now.getTime() - start_time.getTime()) / 1000);
	return datet;
/*
	hour = parseInt(datet / 3600);
	min = parseInt(datet / 60);
	sec = datet % 60;

	if(hour < 10) { hour = "0" + hour; }
	if(min < 10) { min = "0" + min; }
	if(sec < 10) { sec = "0" + sec; }

	return hour + tsp + min + tsp + sec;
*/
}, // getStayTime

// get GET parameter to hash
getUrlQuery: function() {
	var data = new Array();
	var query = window.location.search.substring(1);
	var parms = query.split('&');
	for (var i=0; i<parms.length; i++) {
		var pos = parms[i].indexOf('=');
		if (pos > 0) {
			var key = parms[i].substring(0,pos);
			var val = parms[i].substring(pos+1);
			data[key] = val;
 		}
 	}
	return data;
}, // getUrlQuery

// get ramdom string
getRandomString: function() {
    var chars = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789";
    var size = 28;
    var max  = 100;
    var challenged = 0;
	var now = new Date();
	now = String(now.getFullYear()) + 
		  String(now.getMonth()+1) + 
		  String(now.getDate());
	var rand = "";
	var no = "";

    for( i=0; i<size; i++ ) {
        no = Math.floor(Math.random() * chars.length);
        rand = String(rand) + String(chars.charAt(no));
    }
	return String(rand) + String(now);
}

} // pelog__

// start pelog
pelog__.init();

$(document).ready(function(){
	$(window).unload(function(){
		var start = pelog__.start_time;
		var end   = pelog__.getStayTime(start);
		pelog__.pelogp({type:"1", mode: pelog__.page, search:"end_" + end}, pelog__.url, pelog__.callback);
	});
});

