﻿// File epgCommon.js
var Storage = {
	init : function(){},
	save : function(key, object){
		if (typeof(localStorage) != "undefined"){
			try {
				localStorage.setItem(key, JSON.stringify(object));
				return true;
			} catch (e) {
				// fall back to cookies
			}
		} 
		// fall back to cookies
		$.jCookie(key, JSON.stringify(object), { expires: 65535 });
	},
	load : function(key){
		if (typeof(localStorage) != "undefined"){
			if (JSON.parse(localStorage.getItem(key))) return JSON.parse(localStorage.getItem(key));
		} else {
			// read from cookies
		}
		if ($.jCookie(key)) return JSON.parse($.jCookie(key));
		else return false;
	},
	remove : function(key){},
	clear : function(){
		if (typeof(localStorage) != "undefined"){
			localStorage.clear();
		}
	}
}

var Cache = {
	Data : function(rs, data, expire){
		this.timestamp = new Date().getTime();
		this.request = rs;
		this.data = data;
		if (expire) this.expire = expire;
		else this.expire = 0;
	},
	Cache : [],
	init : function(){
		// return false;
		if (typeof(sessionStorage) == "undefined") return false;
		try {
			this.Cache = JSON.parse(sessionStorage.getItem('cache'));
		} catch(e) { this.Cache = []; }
	},
	save : function(requestString, data, expire){
		// return false;
		if (typeof(sessionStorage) == "undefined") return false;
		newData = new Cache.Data(requestString, data, expire);
		try {
			this.Cache.push(newData);
		} catch(e) {
			this.Cache = [newData];
		}
		sessionStorage.setItem('cache', JSON.stringify(this.Cache));
		
	},
	load : function(requestString){
		// return false;
		if (typeof(sessionStorage) == "undefined") return false;
		result = false;
		$.each(Cache.Cache, function(idx, obj){
			if (obj.request == requestString){
				result = obj.data;
				return false;
			}
		});
		return result;
	}
}

var EpgTools = {
	display : function(minute){
		minute = parseInt(minute);
		// minute = ui.position.top / _self.pixelPerMinute;
		hour = Math.floor(minute/60);
		min = minute%60;
		
		if (hour < 0){ hour = 0; min = 0; }
		
		ampm = (hour >= 12)? "pm" : "am";
		
		if (hour != 12) hour%=12;
		// display = hour + ":" + min + " " + ampm;
		display = sprintf("%1$d:%2$02d %3$s", hour, min, ampm);
		
		return display;
	},
	displayEx : function(ts){
		d = new Date(parseInt(ts));
		minute = d.getHours() * 60 + d.getMinutes();
		return this.display(minute);
	},
	removeArray : function(array, idx){
		if (idx == 0) array.shift();
		else {
		// a.slice(0, idx)
		// b = a;
		// b = b.slice(0, idx - 1);
		// console.info(b.concat(a.slice(idx)))
			head = array.slice(0, idx);
			tail = array.slice(idx + 1);
			// array.slice(idx, idx + 1).concat(array.slice(idx));
			array = head.concat(tail);
		}
		return array;
	},
	insertArray : function(array, idx, val){
		array.splice(idx, 0, val);
		return array;
	},
	swapArrayIndex : function(array, from, to){
		
		return array;
	}
}

var EpgTranslation = {
	BACK : {
		zh : '返回節目表',
		en : 'Back to Schedule'
	},
	NOW : {
		zh : 'NOW',
		en : 'NOW'
	},
	DAY_OF_WEEK : {
		zh : ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
		en : ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
	},
	MONTH : {
		zh : ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
		en : ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
	},
	SEARCH_RESULT : {
		zh : '「%1$s」的搜尋結果',
		en : 'Search Results for “ %1$s ”'
	},
	EPG_SEARCH_TEXT : {
		zh : '',
		en : ''
	},
	CHANNEL_LIST : {
		zh : '頻道列表',
		en : 'Channel List'
	},
	FAVOURITE : {
		zh : '最愛頻道',
		en : 'Favourite'
	},
	MOVIE : {
		zh : '電影',
		en : 'Movie / Drama'
	},
	TRAVEL : {
		zh : '旅遊',
		en : 'Travel / Documentary'
	},
	NEWS : {
		zh : '新聞',
		en : 'News / Info'
	},
	KIDS : {
		zh : '兒童',
		en : 'Kids'
	},
	ENTERTAINMENT : {
		zh : '娛樂',
		en : 'Entertainment / Leisure'
	},
	SPORTS : {
		zh : '體育',
		en : 'Sports'
	},
	FOREIGN : {
		zh : '外語',
		en : 'Foreign Language'
	},
	TVB : {
		zh : '無綫收費頻道',
		en : 'TVB Pay Vision'
	},
	ADULT : {
		zh : '成人',
		en : 'Adult'
	},
	ALL : {
		zh : '所有頻道',
		en : 'All'
	},
	CHANNEL : {
		zh : '頻道',
		en : 'Channels'
	},
	PROGRAM : {
		zh : '節目',
		en : 'Programmes'
	},
	SEARCH_NO_RESULT : {
		zh : '無搜尋結果',
		en : 'Your search enquiry has returned no matching results'
	}
}
