/* 
 * Simple Banners - WordPress plugin by OpenLab Ltd.
 *
 */
var SB = {};
SB.selected = '';
SB.baseUrl = '../wp-content/plugins/simple-banners/simple-banners-backend.php';
SB.bannerTypes = new Array();
SB.bannerTypes.push('hlavni banner');
SB.bannerTypes.push('upoutavkovy banner');
SB.bannerTypes.push('obsahovy banner');
SB.bannerTypes.push('textovy banner');

SB.save = function (wpnonce, loadWponce) {
	var banner = new Object();
	banner.client = WPOL.q('sb_client').value;
	banner.desc = WPOL.q('sb_desc').value;
	banner.type = WPOL.q('sb_type').value;
	banner.url = WPOL.q('sb_url').value;
	banner.period_from = WPOL.q('sb_yearfrom').value + "-" + WPOL.q('sb_monthfrom').value + "-" + WPOL.q('sb_dayfrom').value;
	banner.period_to = WPOL.q('sb_yearto').value + "-" + WPOL.q('sb_monthto').value + "-" + WPOL.q('sb_dayto').value;
	banner.priority = WPOL.q('sb_priority').value;
	banner.path = WPOL.q('sb_path').value;
	
	var id = WPOL.q('sb_id').value;
	var update = false;
	if (id && id != null && id > 0) {
		banner.id = id;
		update = true;
	} else {
		banner.id = 0;
	}
	
	var combo = WPOL.q('sb_text_banner_id');
	banner.text_banner_id = combo.options[combo.selectedIndex].value;
	
	banner.enabled = (WPOL.q('sb_enabled').checked == true) ? "1" : "0";
	
	var checkboxes = document.getElementsByTagName('input');
	var themes = '';
	for (var z = 0; z < checkboxes.length; z++) {
		if (checkboxes[z].type == "checkbox" && checkboxes[z].name != 'sb_enabled' && checkboxes[z].checked) {
			themes += checkboxes[z].value + "|";
		}
	}
	banner.themes = themes.substr(0, themes.length - 1);
	
 	if (banner.client != '' && banner.client.length > 0) {
		try {
			WPOL.loading(true);
			var url = SB.baseUrl + '?action=save&banner=' + banner.id;
			WPOL.send('POST', url, "data=" + JSON.stringify(banner), function() {
				if(WPOL.ajax.readyState == 4) {
					if (WPOL.ajax.responseText == 'saved') {
						SB.hide();
						SB.clearForm();
						if (update == false) {
							SB.load(loadWponce);
							alert("Banner byl publikován.");
							WPOL.loading(false);
						} else {
							alert("Banner byl aktualizován.");
							WPOL.loading(false);
							window.location.reload();
						}				
					}
					WPOL.loading(false);						
				}
			}, wpnonce);
		}
		catch (e) {
			SB.handleException(e);
		}
	}
};

/** UI methods **/
SB.update = function (bannerId, wpnonce, saveWponce) {
	WPOL.loading(true);
	try {
		WPOL.send('GET', SB.baseUrl + '?action=get_banner&id=' + bannerId, null, function() {
			if(WPOL.ajax.readyState == 4) {
				var item = JSON.parse(WPOL.ajax.responseText);

				SB.clearForm();

				// show form
				WPOL.q('sbedit').style.display = 'block';
				WPOL.q('sbeditheadline').innerHTML = "Banner - " + item.path;
				WPOL.q('sb_path').value = item.path;

				// load form data
				WPOL.q('sb_client').value = item.client;
				WPOL.q('sb_desc').value = item.description;
				WPOL.q('sb_type').value = item.type;
				WPOL.q('sb_url').value = item.url;
				WPOL.q('sb_priority').value = item.priority;
				WPOL.q('sb_enabled').checked = (item.enabled == "1") ? true : false;
				if (item.display_from != null) {
					var from = item.display_from.split('-');
					WPOL.q('sb_yearfrom').value = from[0];
					WPOL.q('sb_monthfrom').value = from[1];
					WPOL.q('sb_dayfrom').value = from[2];
				} else {
					WPOL.q('sb_yearfrom').value = '';
					WPOL.q('sb_monthfrom').value = '';
					WPOL.q('sb_dayfrom').value = '';
				}
				if (item.display_to != null) {
					var to = item.display_to.split('-');
					WPOL.q('sb_yearto').value = to[0];
					WPOL.q('sb_monthto').value = to[1];
					WPOL.q('sb_dayto').value = to[2];
				} else {
					WPOL.q('sb_yearto').value = '';
					WPOL.q('sb_monthto').value = '';
					WPOL.q('sb_dayto').value = '';
				}
				if (item.themes) {
					var parts = item.themes.toString().split('|');
					var checkboxes = document.getElementsByTagName('input');
					for (var z = 0; z < checkboxes.length; z++) {
						var checkbox = checkboxes[z];
						if (checkbox.type == "checkbox") {
							if (checkbox.id.indexOf('sb_theme_') >= 0) {
								var checkboxId = checkbox.id.replace("sb_theme_", "");
								for (var y = 0; y < parts.length; y++) {
									if (parts[y] == checkboxId) {
										checkbox.checked = true;
										break;
									}
								}
							}
						}
					}
				}		

				// handle text banners
				if (item.type == "4") {
					WPOL.q('sb_text_banner_id').value = item.text_banner_id;
					WPOL.q('sb_text_banner_id').disabled = false;
					WPOL.q('sb_url').disabled = true;
				} else {
					WPOL.q('sb_text_banner_id').selectedIndex = 0;
					WPOL.q('sb_text_banner_id').disabled = true;
					WPOL.q('sb_url').disabled = false;
				}

				WPOL.q('sb_id').value = bannerId;

				window.scroll(100, 0);

				WPOL.loading(false);	
			}
		}, wpnonce);
	}
	catch (e) {
		SB.handleException(e);
		WPOL.loading(false);
	}	
};
SB.hide = function () {
	WPOL.q('sbedit').style.display = 'none';
};
SB.edit = function (file) {
	WPOL.loading(true);
	SB.selected = file;
	WPOL.q('sbedit').style.display = 'block';
	WPOL.q('sbeditheadline').innerHTML = "Banner - " + file;
	WPOL.q('sb_path').value = file;
	WPOL.loading(false);
};
SB.load = function (wpnonce) {
	try {
		WPOL.loading(true);
		WPOL.send('GET', SB.baseUrl + '?action=load', null, function() {
			if(WPOL.ajax.readyState == 4) {
				var items = JSON.parse(WPOL.ajax.responseText);
				var lis = '';
				if (items.length > 0) {
					for (var i = 0; i < items.length;i++) {
						lis += '<li>' + items[i] + '</li>';
					}
				} else {
					lis += '<li>--/--</li>';
				}
				WPOL.q('sb_new_banners').innerHTML = lis;
				WPOL.loading(false);						
			}
		}, wpnonce);
	}
	catch (e) {
		SB.handleException(e);
	}
};
SB.loadClients = function (wpnonce) {
	try {
		WPOL.loading(true);
		WPOL.send('GET', SB.baseUrl + '?action=get_clients', null, function() {
			if(WPOL.ajax.readyState == 4) {
				var items = JSON.parse(WPOL.ajax.responseText);
				WPOL.q('sb_clients').innerHTML = SB.createCombo(items);
				WPOL.loading(false);	
			}
		}, wpnonce);
	}
	catch (e) {
		SB.handleException(e);
	}
};
SB.showReports = function (wpnonce) {
	try {
		WPOL.loading(true);
		var clientCombo = WPOL.q('sb_clients');
		var client = clientCombo.options[clientCombo.selectedIndex].value;		
		var url = SB.baseUrl + '?action=get_client_reports&client=' + client;
		WPOL.send('GET', url, null, function() {
			if(WPOL.ajax.readyState == 4) {
				var items = JSON.parse(WPOL.ajax.responseText);
				var rows = '';
				var url = '#';
				for (var i = 0; i < items.length;i++) {
					var item = items[i];
					var previewLink = '../wp-content/plugins/simple-banners/reklama/' + SB.bannerTypes[item.type] + '/' + item.display_period + '/' + item.path;
					var displayTo = (item.display_to == null || item.display_to == '0000-00-00') ? '...' : ' do ' + SB.formatDate(item.display_to);
					rows += '<tr><td>' + SB.createLink(previewLink, item.path) + '</td>';			
					rows += '<td>' + SB.bannerTypes[item.type] + '</td>';
					rows += '<td> od ' + SB.formatDate(item.display_from) + displayTo + '</td>';
					rows += '<td>' + item.priority + '</td>';
					rows += '<td>' + SB.formatNumber(item.views) + '</td>';
					rows += '<td>' + SB.formatNumber(item.clicks) + '</td>';
					rows += '<td><a href="#">Zobrazit reporty</a></td></tr>';
				}
				SB.fillTable('sb_reposrts_1', rows);
				WPOL.loading(false);						
			}
		}, wpnonce);
	}
	catch (e) {
		SB.handleException(e);
	}
};

SB.loadThemes = function (wpnonce) {
	try {
		// display only for text banners
		var type = WPOL.q('sb_type');
		if (type.selectedIndex == 3) {
			WPOL.loading(true);
			SB.selectThemePost(true);
			WPOL.send('GET', SB.baseUrl + '?action=get_themes', null, function() {
				if(WPOL.ajax.readyState == 4) {
					var items = JSON.parse(WPOL.ajax.responseText);
					WPOL.q('sb_text_banner_id').innerHTML = SB.createCombo(items);
					WPOL.loading(false);	
				}
			}, wpnonce);
		} else {
			WPOL.q('sb_text_banner_id').innerHTML = "";
			SB.selectThemePost(false);
		}
	}
	catch (e) {
		SB.handleException(e);
	}
};
SB.selectThemePost = function (disabled) {
	WPOL.q("sb_url").disabled = disabled;
};
SB.clearForm = function() {	
	WPOL.q('sb_client').value = '';
	WPOL.q('sb_desc').value = '';
	WPOL.q('sb_type').value = '';
	WPOL.q('sb_url').value = '';
	WPOL.q('sb_yearfrom').value = '';
	WPOL.q('sb_monthfrom').value = '';
	WPOL.q('sb_dayfrom').value = '';
	WPOL.q('sb_yearto').value = '';
	WPOL.q('sb_monthto').value = '';
	WPOL.q('sb_dayto').value = '';
	WPOL.q('sb_priority').value = '';

	var checkboxes = document.getElementsByTagName('input');
	for (var z = 0; z < checkboxes.length; z++) {
		if (checkboxes[z].type == "checkbox" && checkboxes[z].checked) {
			checkboxes[z].checked = false;
		}
	}
};
SB.show = function (wpnonce, editWponce, saveWponce) {
	try {
		WPOL.loading(true);
		WPOL.send('GET', SB.baseUrl + '?action=get', null, function() {
			if(WPOL.ajax.readyState == 4) {
				var items = JSON.parse(WPOL.ajax.responseText);
				for (var x = 1; x <= SB.bannerTypes.length;x++) {
					var rows = '';
					var url = '#';
					for (var i = 0; i < items.length;i++) {
						var item = items[i];
						if (item.type == x) {
							var previewLink = '../wp-content/plugins/simple-banners/reklama/' + SB.bannerTypes[(x - 1)] + '/' + item.display_from + '/' + item.path;
							var displayTo = (item.display_to == null || item.display_to == '0000-00-00') ? ' ... ' : ' do ' + SB.formatDate(item.display_to);
							rows += '<tr><td>' + item.client + '</td>';
							//rows += '<td>' + SB.createLink(previewLink, item.path) + '</td>';							
							rows += '<td>' + SB.previewLink(x, item.id, item.path) + '</td>';
							rows += '<td> od ' + SB.formatDate(item.display_from) + displayTo + '</td>';
							rows += '<td>' + item.priority + '</td>';
							rows += '<td>' + item.themes + '</td>';
							rows += '<td align="right">' + SB.formatNumber(item.views) + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>';
							rows += '<td align="right">' + SB.formatNumber(item.clicks) + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>';
							rows += '<td>' + ((item.enabled == 1)? 'Ano': 'Ne') + '</td>';
							rows += '<td><a href="javascript:void(0);" onclick="SB.update(' + item.id + ', \'' + editWponce + '\', \'' + saveWponce + '\');">Upravit</a></td></tr>';
						}
					}
					SB.fillTable('sb_banners_' + x, rows);
				}
				WPOL.loading(false);						
			}
		}, wpnonce);
	}
	catch (e) {
		SB.handleException(e);
	}
};

/** Helper methods **/
SB.createLink = function (href, text) {
	return '<a href="' + href + '" target="_blank">' + text + '</a>';
};
SB.previewLink = function(type, id, text) {
	return '<a href="#" onclick="SB.previewBanner(' + type + ', ' + id + ');">' + text + '</a>';
};
SB.previewBanner = function (type, id) {
	try {
		WPOL.loading(true);
		WPOL.send('GET', SB.baseUrl + '?action=get_banner_preview&id='+id+'&type='+type, null, function() {
			if(WPOL.ajax.readyState == 4) {
				WPOL.q('bannerPreviewContent').innerHTML = WPOL.ajax.responseText;				
				WPOL.q('bannerPreview').style.display = "block";

				WPOL.loading(false);						
			}
		}, null);
	}
	catch (e) {
		SB.handleException(e);
	}
};
SB.formatNumber = function (num) {
	var result = parseInt(num);
	var tmp = result.toString();
	if (result >= 1000) {
		result = tmp.substring(0, tmp.length - 3) + " " + tmp.substring(tmp.length - 3, tmp.length);
	} else if (result >= 1000000) {
		result = tmp.substring(0, tmp.length - 6) + " " + tmp.substring(tmp.length - 6, tmp.length - 3) + " " + tmp.substring(tmp.length - 3, tmp.length);
	}

	return result.toString();
};
SB.formatDate = function(ymd) {
	var parts = ymd.split('-');
	var day = (parts[2].substr(0,1) == 0) ? parts[2].substr(1, 1) : parts[2];	
	var month = (parts[1].substr(0,1) == 0) ? parts[1].substr(1, 1) : parts[1];	
	return day + "." + month + "." + parts[0];
};
SB.fillTable = function (id, rows) {
	WPOL.q(id).getElementsByTagName('tbody')[0].innerHTML = (rows != '') ? rows : '<tr><td colspan="6">Žádný záznam.</td></tr>';
};
SB.createCombo = function(items) {
	var sb = "";
	for (var i = 0; i < items.length;i++) {
		sb += '<option value="' + items[i].value + '">' + items[i].text + '</option>'
	}
	return sb;
};
SB.handleException = function (e) {
	WPOL.debug(e);
	WPOL.loading(false);
};
