/**
 * @author Oli
 */

var sliderSelects = new Array();
var Base64 = {
 
	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+=",
 
	// public method for encoding
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = Base64._utf8_encode(input);
 
		while (i < input.length) {
 
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
 
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
 
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
 
			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
 
		}
 
		return output;
	},

	
	// public method for decoding
	decode: function(input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
		
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
		
		while (i < input.length) {
		
			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));
			
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
			
			output = output + String.fromCharCode(chr1);
			
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
			
		}
		
		output = Base64._utf8_decode(output);
		
		return output;
		
	},
	
	// private method for UTF-8 encoding
	_utf8_encode: function(string) {
		string = string.replace(/\r\n/g, "\n");
		var utftext = "";
		
		for (var n = 0; n < string.length; n++) {
		
			var c = string.charCodeAt(n);
			
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else 
				if ((c > 127) && (c < 2048)) {
					utftext += String.fromCharCode((c >> 6) | 192);
					utftext += String.fromCharCode((c & 63) | 128);
				}
				else {
					utftext += String.fromCharCode((c >> 12) | 224);
					utftext += String.fromCharCode(((c >> 6) & 63) | 128);
					utftext += String.fromCharCode((c & 63) | 128);
				}
			
		}
		
		return utftext;
	},
	
	// private method for UTF-8 decoding
	_utf8_decode: function(utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
		
		while (i < utftext.length) {
		
			c = utftext.charCodeAt(i);
			
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else 
				if ((c > 191) && (c < 224)) {
					c2 = utftext.charCodeAt(i + 1);
					string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
					i += 2;
				}
				else {
					c2 = utftext.charCodeAt(i + 1);
					c3 = utftext.charCodeAt(i + 2);
					string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
					i += 3;
				}
			
		}
		
		return string;
	}
	
}


function showPopup(popupContent, position) {
	$('#lightbox-bg').fadeIn('fast', function() {
		$('#popup-window').html(popupContent);
		repositionPopup(position);
		$('#popup-window').fadeIn('fast');
	});
}

function repositionPopup(position) {
	if (typeof(position) == 'undefined') {
		position = {
			top: false,
			left: false
		};
	}
	else {
		if (typeof(position.top) == 'undefined') {
			position.top = false;
		}
		if (typeof(position.left) == 'undefined') {
			position.left = false;
		}
	}
	
	var top = ($(window).height() - $('#popup-window').height()) / 2;
	var left = ($(window).width() - $('#popup-window').width()) / 2;
	if (position.top !== false) {
		top = position.top;
	}
	if (position.left !== false) {
		left = position.left;
	}
	$('#popup-window').css('top', $(window).scrollTop() + top).css('left', left);
}

function hidePopup() {
	$('#popup-window').fadeOut('fast', function() {
		$('#lightbox-bg').fadeOut('fast');
	})
}

function checkURL(validator, form, pageID, productID) {
	if (typeof(pageID) == 'undefined') {
		pageID = false;
	}
	if (typeof(productID) == 'undefined') {
		productID = false;
	}
	$.ajax({
		type: 'POST',
		url: siteURL + 'ajax/check_url',
		data: 'url=' + encodeURIComponent($('#url').val()) + (pageID ? '&page_id=' + encodeURIComponent(pageID) : '') + (productID ? '&product_id=' + encodeURIComponent(productID) : ''),
		success: function(data) {
			if (data == '') {
				form.submit();
			}
			else {
				validator.showErrors({"url" : "There already is a page in the system with this page URL."});
			}
		}
	});
}

function resetInputValue(elem, value){
	if($('#'+elem).val() == value){
		$('#'+elem).val('');
	}
	else{
		if($('#'+elem).val() == ''){
			$('#'+elem).val(value);
		}
	}
}

