﻿var zone_id;
var today;
var year;
var year_today;
var day_today;
var month_today;
var begin_date;
var weeks;
var anchopost = "#anchopost";
var position = 0;
var begin_date_selected;
var end_date_selected;

function FillYear(){
	var objY1 = document.getElementById("year1");
	if(objY1 != null && objY1.checked){
		year = objY1.value;	
	}
	var objY2 = document.getElementById("year2");
	if(objY2 != null && objY2.checked){
		year = objY2.value;	
	}
}
function getMondayOfYear(year){
	var date = 	new Date(year, 0, 1, 0, 0, 0, 0);
	if(date.getDay() != 1){
		date.setDate(date.getDate() + 8 - date.getDay());	
	}
	return date;
}
function getMondayOfWeek(date){
	var d = new Date();
	d.setYear(date.getFullYear());
	d.setMonth(date.getMonth());
	d.setDate(date.getDate());
	if(d.getDay() > 1){
		d.setDate(d.getDate() - (d.getDay() - 1));	
	}
	if(d.getDay() == 0){
		d.setDate(d.getDate() + 1);	
	}
	return d;
}
function getSundayOfWeek(date){
	var d = new Date();
	d.setYear(date.getFullYear());
	d.setMonth(date.getMonth());
	d.setDate(date.getDate());
	if(d.getDay() > 0){
		d.setDate(d.getDate() + 7 - d.getDay());	
	}
	return d;
}
function getNumWeekBetween2Date(date1, date2){
	if(compare_date(date1, date2) > 0)
		return 0;
	var iweek = 0;
	var d1 = getMondayOfWeek(date1);
	var d2 = getSundayOfWeek(date2);
	if(compare_date(d1,d2) < 0){
		iweek = 1;	
	}
	while(compare_date(getSundayOfWeek(d1),d2) != 0){
			iweek += 1;
			d1.setDate(d1.getDate() + 1);
			d1 = getSundayOfWeek(d1);
	}
	
	if(iweek == 0)
		iweek = 1;
	
	return iweek;
}
function date_select(){
	if(year == today.getFullYear()){
		begin_date_selected = new Date();
	}
	else{
		begin_date_selected = getMondayOfWeek(begin_date);	
	}
	end_date_selected = new Date(begin_date.getFullYear(), 11, 31, 0, 0, 0, 0);
	
	var objDate_from = document.getElementById("dateinput_from");	
	var objDate_to = document.getElementById("dateinput_to");
	
	objDate_from.value = ((begin_date_selected.getDate()<10)?"0":"") + begin_date_selected.getDate() + "-" + ((begin_date_selected.getMonth()+1 < 10)?"0":"") + (begin_date_selected.getMonth()+1) + "-" + begin_date_selected.getFullYear();
	
	objDate_to.value = ((end_date_selected.getDate()<10)?"0":"") + end_date_selected.getDate() + "-" + ((end_date_selected.getMonth()+1 < 10)?"0":"") + (end_date_selected.getMonth()+1) + "-" + end_date_selected.getFullYear();
}

function onChange_date_1(){
	var objDate_from = document.getElementById("dateinput_from");	
	if(objDate_from != null){
		if(objDate_from.value != '' | objDate_from.value != ' '){
			begin_date_selected = convertToDate(objDate_from.value);
			
			if(compare_date(begin_date_selected, end_date_selected) > 0){
				alert("Ngày đầu phải nhỏ (<) ngày đến");
			}
		}
		position = 0;
		genWeeks();
		scrollToPos(position);
	}
}
function onChange_date_2(){
	
	var objDate_to = document.getElementById("dateinput_to");
	if(objDate_to != null){
		if(objDate_to.value != '' | objDate_to.value != ' '){
			end_date_selected = convertToDate(objDate_to.value);
			if(compare_date(begin_date_selected, end_date_selected) > 0){
				alert("Ngày đầu phải nhỏ (<) ngày đến");
			}
		}
		position = 0;
		genWeeks();
		scrollToPos(position);
	}
}
function convertToDate(str){
	var arr = str.split('-');
	if(arr != null){
		if(arr.length < 3){
			return new Date();	
		}
		
		var date = new Date();
		date.setYear(arr[2]);
		date.setMonth(arr[1] - 1);
		date.setDate(arr[0]);
		
		return date;
	}
}
function begin_start(){
	year = year_today;
	position = 0;
	var i;
	today = new Date();
	today.setYear(year_today);
	today.setMonth(month_today-1);
	today.setDate(day_today);
	
	FillYear();
	
	begin_date = getMondayOfYear(year);
	weeks = new Array();
	
	for(i = 0; i < 53 ; i++){		
		weeks[i] = 0	
	}
	updateWeekbookedByUser(year);
	updateWeekbooked(year);
	date_select();
	genWeeks();
	scrollToPos(position);
}
function updateWeekbookedByUser(year){
	var str_week_booked = getUserWeekBookedForYear(year);
	if(str_week_booked != "" && str_week_booked != null){
		var week_booked = str_week_booked.split(",");
		for(i = 0; i < week_booked.length; i++){
			weeks[week_booked[i]] = 1;
		}
	}	
}
function updateWeekbooked(year){
	var str_week_booked = getWeekBookedForYear(year);
	if(str_week_booked != "" && str_week_booked != null){
		var week_booked = str_week_booked.split(",");
		for(i = 0; i < week_booked.length; i++){
			
			weeks[parseInt(week_booked[i])-1] = 2;
			
		}
	}	
}	
function AddZone(izoneyear){
	var name_cookie = "zoneList";
	var value = ReadCookie(name_cookie);
	if(value != null && value != ''){
		if(value.indexOf("," + izoneyear + ",") < 0){
			value += izoneyear + ",";	
		}
	}else{
		value = "," + izoneyear + ",";	
	}
	CreateCookie(name_cookie, value, 24);
}
function RemoveZone(izoneyear){
	var name_cookie = "zoneList";
	var value = ReadCookie(name_cookie);
	if(value != null && value != ''){
		value = value.replace("," + izoneyear + ",", ",");	
	}
	CreateCookie(name_cookie, value, 24);	
}
function getZoneListingAlert(){
	alert("Mời bạn đăng nhập để sử dụng dịch vụ này");
}
function getZoneListing(){
	var zonelist = ReadCookie("zoneList");
	if(zonelist != null && zonelist != '' && zonelist != ','){
		var list = zonelist.split(",");	
		for(var i=0; i < list.length; i++){
			var arr = list[i].split(":");
			var arr_thanhnhx = new Array();
			var weekbooks = getTimeZoneYearList(arr[0], arr[1]);
			if(weekbooks != "" && weekbooks != null){
				for(var j = 0; j < weekbooks.length; j++){
					//var url = "addbook_week_active.php";
					//url += "?zoneid=" + arr[0];
					//url += "&start=" + weekbooks[j][0];
					//url += "&end=" + weekbooks[j][1];
					//url += "&iweek=" + weekbooks[j][2];
					//url += "&week_start=" + weekbooks[j][3];
					//url += "&week_end=" + weekbooks[j][4];
					//alert(url);
					//AddWeekBooked(url);
					arr_thanhnhx[j] = new Array();
					arr_thanhnhx[j][0] = arr[0];//zoneid
					arr_thanhnhx[j][1] = weekbooks[j][0];//start
					arr_thanhnhx[j][2] = weekbooks[j][1];//end
					arr_thanhnhx[j][3] = weekbooks[j][2];//iweek
					arr_thanhnhx[j][4] = weekbooks[j][3];//week_start
					arr_thanhnhx[j][5] = weekbooks[j][4];//week_end
					if(j != (weekbooks.length - 1)){arr_thanhnhx[j][6] = "--";}
					
				}
				
				AddWeekBooked("addbook_week_active.php",arr_thanhnhx);
				
				var name = "year" + arr[1] + "zone" + arr[0];
				CreateCookie(name,"",-1);
				name = "weekbooked" + arr[0] + ":" + arr[1];
				CreateCookie(name,"",-1);
			}
		}
		CreateCookie("zoneList", "", -1);
		var obj = document.getElementById("CartTime");
		if(obj){
			obj.innerHTML = "<tr><th>STT</th><th>Thơi gian</th><th>Số tuần</th></tr>";	
		}
		//window.location.href = window.location.href;
	}
	return true;
}
function getBoundDate(week_b, iweek, year){
	var arr = new Array();
	var d = getMondayOfYear(year);
	var str = "";
	var d1 = new Date();
	var d2 = new Date();
	d1.setYear(d.getFullYear());
	d1.setMonth(d.getMonth());
	d1.setDate(d.getDate() + week_b*7);
	d2.setYear(d1.getFullYear());
	d2.setMonth(d1.getMonth());
	d2.setDate(d1.getDate() + iweek*7 - 1);
	arr[0] = d1.getDate() + "/" + (d1.getMonth()+1) + "/" + d1.getFullYear();
	arr[1] = d2.getDate() + "/" + (d2.getMonth()+1) + "/" + d2.getFullYear();
	arr[2] = iweek;
	arr[3] = parseInt(week_b, 10) + 1;
	arr[4] = parseInt(week_b, 10) + parseInt(iweek, 10);
	return arr;
}
function sortWeek(week_array){
	var tg;
	for(var i = 0 ; i < week_array.length - 1; i++){
		for(var j = i + 1; j < week_array.length; j++)
			if(parseInt(week_array[i]) > parseInt(week_array[j])){
				tg = week_array[i];
				week_array[i] = week_array[j];
				week_array[j] = tg;
			}
	}
	return week_array;
}
function getTimeZoneYear(zone, year){
	var str = "<table  border=\"1\" bordercolor=\"#FF6600\" style=\"border-collapse:collapse; margin-top:50px;\" cellpadding=\"4\">";
	str += "<tr><th>STT</th><th>Thơi gian</th><th>Số tuần</th></tr>";
	var str_week = ReadCookie("year" + year + "zone" + zone);
	var k = 0;
	if(str_week != null && str_week != '' && str_week != ','){
		str_week = str_week.substr(1, str_week.length - 2);
		
		str_week = str_week.split(',');
		var arr_week = sortWeek(str_week);
		var w_b = arr_week[0];
		var w_e = arr_week[0];
		var iw = 1;
		if(arr_week.length == 1){
			var arr = getBoundDate(w_b, iw, year)
			str += "<tr><td>" + (k+1) + "</td><td>" + arr[0] + "-" + arr[1] + "</td><td>" + iw + "</td></tr>";
		}
		for(var i = 1; i < arr_week.length; i++){
			
			if(parseInt(w_e) + 1 == parseInt(arr_week[i])){
				iw += 1;	
				w_e = arr_week[i];
				if(i == arr_week.length - 1){
					var arr = getBoundDate(w_b, iw, year)
					str += "<tr><td>" + (k+1) + "</td><td>" + arr[0] + "-" + arr[1] + "</td><td>" + iw + "</td></tr>";
				}
			}else{
				var arr = getBoundDate(w_b, iw, year)
				str += "<tr><td>" + (k+1) + "</td><td>" + arr[0] + "-" + arr[1] + "</td><td>" + iw + "</td></tr>";
				w_b = arr_week[i];
				w_e = w_b;
				iw = 1;
				k += 1;
				if(i == arr_week.length - 1){
					var arr = getBoundDate(w_b, iw, year)
					str += "<tr><td>" + (k+1) + "</td><td>" + arr[0] + "-" + arr[1] + "</td><td>" + iw + "</td></tr>";
				}
			}
		}
	}
	str += "</table>";
	var obj = document.getElementById("CartTime");
	if(obj){
		
		obj.innerHTML = str;	
	}
	return true;
}
function getTimeZoneYearList(zone, year){
	var str_value = new Array();
	var str_week = ReadCookie("year" + year + "zone" + zone);
	var k = 0;
	if(str_week != null && str_week != '' && str_week != ','){
		str_week = str_week.substr(1, str_week.length - 2);
		
		str_week = str_week.split(',');
		var arr_week = sortWeek(str_week);
		var w_b = arr_week[0];
		var w_e = arr_week[0];
		var iw = 1;
		if(arr_week.length == 1){
			str_value[k] = getBoundDate(w_b, iw, year);
		}
		for(var i = 1; i < arr_week.length; i++){
			
			if(parseInt(w_e) + 1 == parseInt(arr_week[i])){
				iw += 1;	
				w_e = arr_week[i];
				if(i == arr_week.length - 1){
					str_value[k] = getBoundDate(w_b, iw, year);
				}
			}else{
				str_value[k] = getBoundDate(w_b, iw, year);
				w_b = arr_week[i];
				w_e = w_b;
				iw = 1;
				k += 1;
				if(i == arr_week.length - 1){
					str_value[k] = getBoundDate(w_b, iw, year);
				}
			}
		}
	}
	
	return str_value;
}
function getWeekBookedForYear(year_value){
	var name = "weekbooked" + zone_id + ":" + year_value;
	var weekbooked = ReadCookie(name);
	if(weekbooked == '' | weekbooked == null){
		
		getListWeekBooked("show_week_active.php?year=" + year_value + "&zoneid=" + zone_id);	
		
	}
	return weekbooked;
}

function clearAll(){
	
}
function getUserWeekBookedForYear(year_value){
	var name_cookie = "year" + year + "zone" + zone_id;
	var str = ReadCookie(name_cookie);
	
	if(str != null)
		str = str.substr(1, str.length - 2);
	
	return 	str;
}
function change_year(value){
	year = value;
	begin_start();
}
function genWeekBetween2Date(date1, date2){
	
	var iweek_b = getNumWeekBetween2Date(begin_date, date1);	
	var iweek_e = getNumWeekBetween2Date(begin_date, date2);
	var str = "";
	var d_b = new Date();
	var d_e = new Date();
	//alert(begin_date.getFullYear());
	d_b = getMondayOfWeek(date1);
	/*d_b.setYear(date1.getFullYear());
	d_b.setMonth(date1.getMonth());
	d_b.setDate(date1.getDate());*/
	d_e.setYear(date1.getFullYear());
	d_e.setMonth(date1.getMonth());
	d_e.setDate(date1.getDate() + 6);
	
	str = "<table>";
	str += "<tr></tr>";
	if(iweek_b > 1)
		iweek_b -= 1;
	if(iweek_b == iweek_e)
		iweek_e += 1;
	for(i = iweek_b; i < iweek_e; i++){
		str += genWeek(i-1, d_b, d_e);
		d_b.setDate(d_b.getDate() + 7);
		d_e.setYear(d_b.getFullYear());
		d_e.setMonth(d_b.getMonth());
		d_e.setDate(d_b.getDate() + 6);
		
	}
	str += "</table>";
	document.getElementById("week_list").innerHTML = str;
	getTimeZoneYear(zone_id, year)
}
function genWeeks(){
	
	if(zone_id > 0){
		genWeekBetween2Date(begin_date_selected, end_date_selected);
	}else{
		var obj = document.getElementById("week_list");

		obj.innerHTML = "Bạn hãy chọn vị trí cần đặt banner";	
	}
}
function genWeek(iweek, d, d2){
	//alert(compare_date(d,today));
	if((compare_date(today, d2) >= 0)){
		weeks[iweek] = 2;	
		position += 20;
	}
	
	var str = "";
	var class_style = "class=\"week_unselect\" onMouseOut=\"change_status(this,'week_unselect');\" onMouseOver=\"change_status(this,'week_over');\"";	
	if(weeks[iweek] == 1){
		class_style = "class='week_select'";	
	}
	if(weeks[iweek] == 2){
		class_style = "class='week_select_old'";	
	}
	class_style += " onClick=\"Select_week(this," + (iweek) + ");\" ";
	str = "<tr " + class_style + "><td>Tuần " + (iweek + 1) + " <font style='font-size:9px;'>(" + d.getDate() + "/" + (d.getMonth() + 1) + " - " + d2.getDate() + "/" + (d2.getMonth() + 1) + ")</font></td>" + genDayWeek(d) + "</tr>";
	return str;
}
function scrollToPos(pos){
	var obj = document.getElementById("week_list");	
	if(obj){
		obj.scrollTop = pos;	
	}
}
function genDayWeek(d){
	var str = "";	
	var d2 = new Date();
	var s = "";
	d2.setYear(d.getFullYear());
	d2.setMonth(d.getMonth());
	d2.setDate(d.getDate());
	for(var i=0; i < 7; i++){
		s = " " + d2.getDate() + "";
		if(i == 0 | d2.getDate() == 1){
			s = "<font color='orange'>" + s + "/" + (d2.getMonth() + 1) + "</font>";
		}
		str += "<td class='Day'>" + s + "</td>";
		d2.setDate(d2.getDate() + 1);
	}
	
	return str;
}
function change_status(obj, class_name){
	obj.className=class_name;
}
function AddWeek(iweek){
	var name_cookie = "year" + year + "zone" + zone_id;
	var value = ReadCookie(name_cookie);
	if(value != null && value != ''){
		value += iweek + ",";	
	}else{
		value = "," + iweek + ",";	
	}
	AddZone(zone_id + ":" + year);
	CreateCookie(name_cookie, value, 24);
}
function RemoveWeek(iweek){
	var name_cookie = "year" + year + "zone" + zone_id;
	var value = ReadCookie(name_cookie);
	
	if(value != null && value != ''){
		value = value.replace("," + iweek + ",", ",");	
	}
	
	CreateCookie(name_cookie, value, 24);	
}
function Select_week(obj, iweek){
	
	var i = weeks[iweek];
	if(i == 0){
		weeks[iweek] = 1;
		change_status(obj, 'week_select');
		AddWeek(iweek);
	}else if(i == 1){
		weeks[iweek] = 0;
		change_status(obj, 'week_unselect');	
		RemoveWeek(iweek);
	}
	genWeeks();
	
}
function compare_date(d1,d2){
	if(d1.getYear() > d2.getYear()){
		return 1;	
	}else if (d1.getYear() == d2.getYear()){
		if(d1.getMonth() > d2.getMonth()){
			return 1;	
		}else if(d1.getMonth() == d2.getMonth()){
			if(d1.getDate() > d2.getDate()){
				return 1;	
			}else if(d1.getDate() == d2.getDate()){
				return 0;
				
			}
		}
	}
	return -1;
}
