﻿/// <reference path="jQuery.js"/>
/// <reference path="hfs.lib.js"/>
/*
* depends uppon: 
* - jquery.lib.js
* - hfs.lib.js
* - hfs.gmap.js
*/
$(function() {
	BrowserDetect.init();
	var b = BrowserDetect.browser;
	var v = BrowserDetect.version;

	if ((b == 'Firefox' && v < 3) || (b == 'Explorer' && v < 7) || (b == 'Opera' && v < 9.64) || (b == 'Safari' && v < 4)) {
		var dontShowWarning = $.cookieBoolGet('old-browser', false);
		var msgBody = '<b>Zalecamy korzystanie z najnowszych wersji przeglądarek.<br/>W starszych wersjach strona może wyglądać niepoprawnie.</b><br /><br />Strona została zaprojektowana z myślą o najnowszych wersjach najpopularniejszych przeglądarek: <br /><b>FireFox 3.0+</b>, <b>Internet Explorer 7</b>, <b>Opera 9+</b>, <b>Chrome 2.0</b> oraz <b>Safari 4+</b><br /><br /><a href="http://bezpieczenstwo.onet.pl/przegladarki.html" target="_blank">Kliknij tutaj aby pobrać najnowszą wersję preferowanej przez siebie przeglądarki.<br /><br /><img src="App_Themes/Default/images/imgBrowsers.png.ashx" alt="" /></a>';
		var d = $('div.ui-newBrowsers:first')
				.addClass('ui-state-highlight ui-helper-hidden ui-clear-both')
				.attr('title', 'Megabuy.Ostrzeżenie o starej wersji przeglądarki')
				.append(msgBody);

		if (!dontShowWarning) {
			d.dialog({
				bgiframe: true, width: '550px', modal: true, resizable: false,
				buttons: {
					'OK': function() { d.dialog('close'); },
					'OK i nie pokazuj więcej tego komunikatu': function() { $.cookieBoolSet('old-browser', true); d.dialog('close'); }
				}
			});
		} else {
			d.show();
		}
	}
});

function isInt(x) {
	var y = parseInt(x);
	if (isNaN(y)) return false;
	return y >= 0 && x == y && x.toString() == y.toString();
}

function errorMark(message) {
	this.addClass('ui-state-error');
	if (message) this.attr('rel', message).tooltip();
}
function errorUnmark() {
	this.removeClass('ui-state-error').attr('rel', '').tooltip(true);
}

function showEmergencyLogin() {
	var d = $("body:first").prepend('<div id="erLogin" title="Megabuy.Logowanie" class="ui-helper-hidden loginPanel"><div id="loginInformation" class="ui-state-highlight ui-helper-hidden">Błędny login i/lub hasło.</div><div class="ui-align-right"><p><label for="tbLogin">Login: </label><input type="text" id="tbLogin" class="input" /></p><p><label for="tbPass">Hasło: </label><input type="password" id="tbPass" class="input" /></p></div></div>')
		.find("#erLogin");
	var $loginInformaton = $("#loginInformation", d);
	var $login = $("#tbLogin", d);
	var $password = $("#tbPass", d);
	var $loginSubmit = null;
	var $ctrls = null;

	d.dialog({ bgiframe: true, modal: true, resizable: false, width: '300px',
		buttons: {
			'Zaloguj': function() {
				$ctrls.hide();
				tryLogin($login, $password, $loginInformaton, $loginSubmit, function() {
					redirect();
					$(this).dialog('close');
				}, function() {
					$ctrls.show();
				});
			},
			'Anuluj': function() { redirect("Default.aspx"); }
		},
		open: function() {
			$ctrls = $(".ui-dialog-buttonpane");
			$loginSubmit = $("button", $ctrls);
			prepareLogin($login, $password, $loginSubmit);
		},
		close: function() { $("#erLogin").unbind().dialog('destroy').remove(); }
	});
}

function prepareLogin($login, $password, $loginSubmit) {
	var login = $.cookie('last-login');
	if (login != null) {
		if ($login.val() == '')
			$login.val(login);
		$password[0].focus();
	} else
		$login[0].focus();

	$login.onSubmit($loginSubmit);
	$password.onSubmit($loginSubmit);
}

function tryLogin($login, $password, $loginInformaton, $loginSubmit, onSuccess, onFail) {
	var ok = $login.matches(/^.+$/, errorUnmark, errorMark);
	ok &= $password.matches(/^.+$/, errorUnmark, errorMark);
	if (ok) {
		$loginSubmit.hide();
		$login.enabled(false);
		$password.enabled(false);
		$.pageMethod("Default.aspx/Login", "{'login':'" + $login.val() + "','pass':'" + $password.val() + "'}", function(r) {
			if (r.d) {
				$.cookie('last-login', $login.val());
				if (onSuccess != null)
					onSuccess.call(this);
			}
			else {
				$loginInformaton.show();
				$loginSubmit.show();
				$login.enabled(true);
				$password.enabled(true)[0].select();
				if (onFail != null)
					onFail.call(this);
			}
		});
	} else if (onFail != null)
		onFail.call(this);
	return false;
}


var dialogTimeout = 0;
var dialogTimeoutInterval = null;
function showAlert(message, timeout, onClosing, onClosed) {
	var d = $("body:first").prepend('<div id="dialog"><p></p></div>').find("#dialog");

	changeAlert(message, timeout, onClosing);

	var boxtitle = "Megabuy";
	if (dialogTimeout > 0)
		boxtitle = "Megabuy (" + dialogTimeout + "s.)";

	var d = $("#dialog").dialog({ bgiframe: true, modal: true, resizable: false, title: boxtitle, width: '400px',
		buttons: {
			OK: function() { $(this).dialog('close'); }
		}, close: function() {
			$("#dialog").unbind().dialog('destroy').remove();
			dialogTimeout = 0;
			if (dialogTimeoutInterval != null) {
				clearInterval(dialogTimeoutInterval);
				dialogTimeoutInterval = null;
			}
			if (onClosed != null)
				onClosed.call(this);
		}
	});
}

function changeAlert(message, timeout, onClosing) {
	$("#dialog p:first").html(message);

	if (onClosing != null)
		$("#dialog").unbind('dialogbeforeclose').bind('dialogbeforeclose', onClosing);

	if (timeout != null && timeout > 0) {
		dialogTimeout = timeout / 1000;
		setTimeout(function() { $("#dialog").dialog('close'); }, timeout);
		dialogTimeoutInterval = setInterval(function() { dialogTimeout--; $("#dialog").dialog('option', 'title', "Megabuy (" + dialogTimeout + "s.)"); }, 1000)
	}
}

function showConfirm(message, enableDontShow, onYes, onNo) {
	var d = $("body:first").prepend('<div id="dialogC"><p></p></div>').find("#dialogC");

	$("p:first", d).html(message);
	if (enableDontShow)
		$("p:first", d).append("<br/><br/><input type='checkbox' id='dontShow'/><label for='dontShow'>Nie pokazuj więcej tego potwierdzenia</label>");

	$("#dialogC").dialog({ bgiframe: true, modal: true, resizable: false, title: "Megabuy", width: '400px',
		buttons: {
			"Nie": function() { $(this).dialog('close'); if (onNo) onNo.call(this); },
			"Tak": function() { $(this).dialog('close'); if (onYes) onYes.call(this, $("#dialogC input:first").attr('checked')); }
		},
		open: function() { $(this).parents('.ui-dialog-buttonpane button:eq(0)').focus(); },
		close: function() { $("#dialogC").unbind().dialog('destroy').remove(); }
	});
}

function showInformation(message) {
	var d = $('<div id="dialogT"></div>').appendTo("body:first");
	d.append('<p>' + message + '</p>');
	d.dialog({ bgiframe: true, modal: true, resizable: false, title: "Megabuy", width: '400px',
		close: function() { d.dialog('destroy').remove(); }
	});
	return d;
}

function redirect(url) {
	if (url === undefined) window.location.reload();
	else window.location = url;
}

var BrowserDetect = {
	init: function() {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function(data) {
		for (var i = 0; i < data.length; i++) {
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function(dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
	},
	dataBrowser: [
		{ string: navigator.userAgent, subString: "Chrome", identity: "Chrome" },
		{ string: navigator.userAgent, subString: "OmniWeb", versionSearch: "OmniWeb/", identity: "OmniWeb" },
		{ string: navigator.vendor, subString: "Apple", identity: "Safari", versionSearch: "Version" },
		{ prop: window.opera, identity: "Opera" },
		{ string: navigator.vendor, subString: "iCab", identity: "iCab" },
		{ string: navigator.vendor, subString: "KDE", identity: "Konqueror" },
		{ string: navigator.userAgent, subString: "Firefox", identity: "Firefox" },
		{ string: navigator.vendor, subString: "Camino", identity: "Camino" },
		{ string: navigator.userAgent, subString: "Netscape", identity: "Netscape" },
		{ string: navigator.userAgent, subString: "MSIE", identity: "Explorer", versionSearch: "MSIE" },
		{ string: navigator.userAgent, subString: "Gecko", identity: "Mozilla", versionSearch: "rv" },
		{ string: navigator.userAgent, subString: "Mozilla", identity: "Netscape", versionSearch: "Mozilla" }
	],
	dataOS: [
		{ string: navigator.platform, subString: "Win", identity: "Windows" },
		{ string: navigator.platform, subString: "Mac", identity: "Mac" },
		{ string: navigator.userAgent, subString: "iPhone", identity: "iPhone/iPod" },
		{ string: navigator.platform, subString: "Linux", identity: "Linux" }
	]
};


function initContact(isShort) {
	$(document).unload(GUnload);

	if (isShort) {
		var tab = $("table.contact").css('width', '580px');
		//tab.find("div.map").css('width', '580px');
	}

	initContact2();

	function initContact2() {
		var ms = new Array();
		$("table.contact div.map").each(function() {
			ms.push(new GMapMarker($(this)));
		});
		//cała polska
		var _lat = 52.17393169256846;
		var _lng = 19.40185546875;
		var _zoom = 6;

		//widok z zoomem na oddziały
		//var _lat = 51.406059404992746
		//var _lng = 19.2919921875
		//var _zoom = 7
		var gm = $("div#map").gmap({ markers: ms, lat: _lat, lng: _lng, zoom: _zoom });

		$("a#resetMap").click(function() {
			gm.moveViewTo(_lat, _lng, _zoom);
			return false;
		});
	}

	function loadMap(name, lat, lng, lat_diff, lng_diff, markerOptions, zoom) {
		var map = new GMap2(document.getElementById(name));
		map.setCenter(new GLatLng(lat + lat_diff, lng + lng_diff), zoom);
		map.addControl(new GSmallMapControl());
		map.addOverlay(new GMarker(new GLatLng(lat, lng), markerOptions));
	}
}

