﻿jQuery(document).ready(function () {
	utils = {
		serializeUrlParameters: function (url) {
			url = url.replace('#', '?');
			var result = {
				initialUrl: url,
				path: url.split('?')[0],
				paramsLine: ''
			};
			if (url.indexOf('?') != -1) {
				var paramsLine = url.split('?')[1]
				result['paramsLine'] = paramsLine;
				var paramsSet = paramsLine.split('&');
				for (var i in paramsSet) {
					var name = paramsSet[i].split('=')[0];
					var value = paramsSet[i].split('=')[1];
					result[name] = value;
				}
			}
			return result;
		},

		serializeParams: function (line) {
			var result = {};
			if (line.length > 0) {
				var collection = line.split('&');
				for (var i in collection) {
					if (collection[i].length > 0) {
						var name = collection[i].split('=')[0];
						var value = collection[i].split('=')[1];
						result[name] = value;
					}
				}
			}
			return result;
		},

		scrollOffsetX: function () {
			return window.pageXOffset ?
                      window.pageXOffset : document.documentElement.scrollLeft ?
                          document.documentElement.scrollLeft : document.body.scrollLeft;
		},

		scrollOffsetY: function () {
			return window.pageYOffset ?
                      window.pageYOffset : document.documentElement.scrollTop ?
                          document.documentElement.scrollTop : document.body.scrollTop;
		},

		screenWidth: function () {
			return document.innerWidth ?
                      document.innerWidth : document.documentElement.clientWidth ?
                          document.documentElement.clientWidth : document.body.clientWidth;
		},

		screenHeight: function () {
			return document.innerHeight ?
                      document.innerHeight : document.documentElement.clientHeight ?
                          document.documentElement.clientHeight : document.body.clientHeight;
		}
	}


	String.prototype.replaceAll = function (search, replace) {
		return this.split(search).join(replace);
	}


	hashListeners = {};

	String.prototype.bindHash = function (handler) {
		handle = function (str) {
			if (window.location.hash.indexOf(str) > -1) {
				handler(str);
				clearInterval(hashListeners[str]);
			}
		}
		hashListeners[this] = setInterval(handle, 100, this);
	}
});
