$(document).ready(function() {
	$.validator.addMethod(
		"enlishDate",
		function(value, element) {
		
			var result = true;
			//is the date valid?
			//is it within the allowed range
			
			var dateArr = value.split(" ");
			
			if (dateArr.length != 2) {
				return false;
			}
			
			var myDate = dateArr[0].split("-");
			var myTime = dateArr[1].split(":");
			
			if (myDate.length != 3 || myTime.length != 2) {
				return false;
			}
			
			var subDay = myDate[0];
			var subMonth = myDate[1]-1;
			var subYear = myDate[2];
			var subHour = myTime[0];
			var subMin = myTime[1];
			
			// this will "correct" any out of range input
			var subDate = new Date(subYear, subMonth, subDay);
			var calcDay = subDate.getDate();
			var calcMonth = subDate.getMonth();
			var calcYear = subDate.getFullYear();

			return result;
		},
		"Enter in format dd-mm-yyyy hh:mm"
	);
});

/* Sees if an element exists on the page */
function doesElementExist(element) {
	
	var output = false;
	if ($(element).length > 0){
		output = true;
	}
	return output;
}

function pulseElement(element) {

	$(element).css('background-color', '#666');
	$(element).animate({"background-color": "#ffffff"});
}

function arrayToString(array) {
	
	
}

function urlSegment(segment) {

	var out = '';
	var segments = window.location.pathname;

	//console.log(segments);
	
	return out;
}

function getParameterByName(name) {

	name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
	var regexS = "[\\?&]" + name + "=([^&#]*)";
	var regex = new RegExp(regexS);
	var results = regex.exec(window.location.href);
	if(results == null)
		return "";
	else
		return decodeURIComponent(results[1].replace(/\+/g, " "));
}

function ajaxReplaceElement(element, ajax_path, success_callback) {
	
	// prepear the target
	var target = element;
	target.empty();
	target.addClass('ajax-loading');
	
	// fire the ajax request
	$.ajax({
		url: ajax_path,
		success: success_callback,
	});
}

function addPlusMinus(element) {

	var element_id = $(element).attr('id');
	var html = "<a href=\"#\" class=\"plus\" onclick=\"addPlus_click('" + element_id + "')\">+</a><a href=\"#\" class=\"minus\" onclick=\"addMinus_click('" + element_id + "')\">-</a>";
	$(element).parent().append(html);
}

function addMinus_click(element_id) {

	var element = $('#' + element_id);
	var element_value = parseInt($(element).val());
	
	if(isNaN(element_value) == true) {
		element_value = 0;
	}
	
	if(element_value > 0) {
		element_value--;
		element.val(element_value);
	}
}

function u(url) {
	
	var out = '';
	
	if(client_directory != '') {
		out += '/' + client_directory;
	}
	
	out += url;
	
	return out;
}

function addPlus_click(element_id) {
	
	var element = $('#' + element_id);
	var element_value = parseInt($(element).val());
	
	if(isNaN(element_value) == true) {
		element_value = 0;
	}
	
	element_value++;
	element.val(element_value);
}

function AlphaToNumericBase10(value) {

	var out = '';
	
	var list = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var nums = "0123456789ABCDEFGHIJKLMNOP";
	
	for(i=0;i<value.length;i++) {
		
		var number = list.indexOf(value[i]);
		out += nums.charAt(number + 1);
		out = changeBase(out, 26, 10);
	}
	
	return out;
}

function isNumeric(input) {
	
	var out = true;
	
	if (input == NaN) {
		out = false;
	}
	else {
		var nums = "0123456789";
		
		for(i=0;i<input.length;i++) {
			
			var number = nums.indexOf(input[i]);
			
			if (number == -1) {
				out = false;
				break;
			}
		}
	}
	return out;
}

function base24NumericToAlpha(value) {
	
	var out = '';
	
	//var base26val = baseConverter(value, 10, 27);
	var base26val = changeBase(value, 10, 26);
	
	var list = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var nums = "0123456789ABCDEFGHIJKLMNOP";
	
	for(i=0;i<base26val.length;i++) {
		var number = nums.indexOf(base26val[i]) - 1;
		out += list.charAt(number);
	}
	
	return out;
}

function changeBase(num, from, to) {

	if(isNaN(from) || from < 2 || from > 36 || isNaN(to) || to < 2 || to > 36)
		throw (new RangeError("Illegal radix. Radices must be integers between 2 and 36, inclusive."));
	num = parseInt(num, from); //convert to decimal
	num = num.toString(to); //convert the decimal to desired base
	return num.toUpperCase();
}

