var toDebug;

function debug(Object) {
	toDebug = Object;
	window.open('SmartTime/javaScriptDebug.xhtml', '_new', 'toolbar=yes,location=no,directories=no,status=no,menubar=no,scrollbars=yes');
}

function dialog(header, content, buttons) {
	var Div = $('<div>' + content + '</div>');
	$('body').append(Div);
	var editedButtons = {};
	for ( var key in buttons) {
		editedButtons[key] = function(event) {
			buttons[$(event.target).html()](this, event);
			$(this).dialog('destroy').remove();
		};
	}

	Div.dialog( {
		buttons : editedButtons,
		modal : true,
		overlay : {
			opacity : 0.5,
			background : 'black'
		},
		title : header
	});
}

function httpGet(url, params) {
	var isFirst = true;
//	if (params) {
//		for ( var i in params) {
//			if (isFirst) {
//				url += '?';
//				isFirst = false;
//			} else {
//				url += '&';
//			}
//			url += i + '=';
//			if (params[i])
//				url += params[i];
//		}
//	}
	if (params) {
		$.each(params, function(i, val) {
			if (isFirst) {
				url += '?';
				isFirst = false;
			} else {
				url += '&';
			}
			url += i + '=';
			if (val)
				url += val;
		});
	}
	window.location = url;
}

function createGet(url, params) {
	var isFirst = true;
	if (params) {
		jQuery.each(params, function(i, val) {
			if (isFirst) {
				url += '?';
				isFirst = false;
			} else {
				url += '&';
			}
			url += i + '=';
			if (val)
				url += val;
			});
		
//		for (var i in params) {
//			if (isFirst) {
//				url += '?';
//				isFirst = false;
//			} else {
//				url += '&';
//			}
//			url += i + '=';
//			if (params[i])
//				url += params[i];
//		}
	}
	return url;
}

function isset(varname) {
	return (typeof (varname) != 'undefined');
}

/**
 * Firebug logging http://getfirebug.com/logging.html
 */
function log(message) {
	window.console && console.log(message);
	// window.console && console.log(arguments);
}

function profile() {
	window.console && console.profile();
}

function profileEnd() {
	window.console && console.profileEnd();
}

function time(id) {
	window.console && console.time(id);
}

function timeEnd(id) {
	window.console && console.timeEnd(id);
}

/**
 * @return Boolean
 */
Array.prototype.contains = function(search) {
	var i;
	var length = this.length;
	for (i = 0; i < length; i++)
		if (this[i] === search)
			return true;
	return false;
}

/**
 * @return Number
 */
Array.prototype.find = function(search) {
	var i;
	var length = this.length;
	for (i = 0; i < length; i++)
		if (this[i] === search)
			return i;
	return -1;
}

Array.prototype.map = function(callbackFunction) {
	var i;
	var length = this.length;
	var returnArray = [];
	for (i = 0; i < length; i++) {
		returnArray.push(callbackFunction(this[i]));
	}
	return returnArray;
}

/**
 * @return String
 */
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g, "");
}

/**
 * @return String
 */
String.prototype.ltrim = function() {
	return this.replace(/^\s+/g, "");
}

/**
 * @return String
 */
String.prototype.rtrim = function() {
	return this.replace(/\s+$/g, "");
}

/*
 * Tämä on väärä tiedosto seuraavalle. SmartBase projektissa oli parempi.
 */
$(document).ready( function() {
	/* JQuery validation classes...*/
	jQuery.validator.addClassRules( {
		timeValidator : {
			time : 'XX:XX'
		}
	});

	jQuery.validator.addClassRules( {
		compareTime : {
			compare : [ "#txtfield1", "#txtfield2" ]
		}
	});

	/* JQuery validation methods... */
	$.validator.addMethod('time', function(value) {
		return /^(20|21|22|23|[01]\d|\d)(([:][0-5]\d){1,2})$/.test(value);
	}, 'Korjaa aika muotoon hh:mm');

	$.validator.addMethod("compare", function(value, element, param) {
		if (jQuery(param[0]).val() != '' && jQuery(param[1]).val() != '') {
			var errorBoolean = jQuery(param[0]).val().replace(/:/, "0") < jQuery(param[1]).val().replace(/:/, "0");

			if (errorBoolean == false) {
				if (element.id == "txtfield1")
					document.getElementById("txtfield2").disabled = true;
				else
					document.getElementById("txtfield1").disabled = true;
			} else {
				document.getElementById("txtfield1").disabled = false;
				document.getElementById("txtfield2").disabled = false;
			}
			return errorBoolean;
		} else {
			return true;
		}
	}, "Aloitusaika pitää olla ennen lopetusaikaa");
});
