/* jQuery.fn.log = function (msg) {
	if ($.browser.mozilla) {
		console.log("%s: %o", msg, this);
	}
	return this;
}; */

function FitToContent(id, maxHeight) {
   	var text = id && id.style ? id : document.getElementById(id);
   	if (!text) { return; }

   	var adjustedHeight = text.clientHeight;
   	if (!maxHeight || maxHeight > adjustedHeight) {
    	adjustedHeight = Math.max(text.scrollHeight, adjustedHeight);
		if (maxHeight) { adjustedHeight = Math.min(maxHeight, adjustedHeight); }
		if (adjustedHeight > text.clientHeight) { text.style.height = adjustedHeight + "px"; }
	}
}

Shadowbox.init({
	skipSetup: true, 
	clearCache: function() {
		each(S.cache, function(obj) {
			if( obj.el) {
				S.lib.removeEvent(obj.el, 'click', handleClick);
				try {
					delete obj.el.shadowboxCacheKey;
				} catch(e) {
					if (obj.el.removeAttribute) {
						obj.el.removeAttribute('shadowboxCacheKey');
					}
				}
			}
		});
		S.cache = [];
	}
});

function key(number) {
	return Math.floor(Math.random() * number);
}

function fetchGallery(width) {
	$.ajax({
		type	: "GET",
		url		: "/gallery.php",
		data	: "width=" + width + "&key=" + key(10000),
		success	: function(html){
			
			$("#gallery").empty();
			$("#gallery").append(html);
			
			Shadowbox.clearCache();
			
			$("#albums").ImageOverlay();
		}
	});
}

function fetchAlbum(gallery_id, width) {
	$.ajax({
		type	: "GET",
		url		: "/gallery.php",
		data	: "width=" + width + "&gallery_id=" + gallery_id + "&key=" + key(10000),
		success	: function(html){
			
			$("#gallery").empty();
			$("#gallery").append(html);
			
			$("#images").ImageOverlay();
			
			Shadowbox.setup("#gallery li a", {
				gallery:	"Gallery"
			});
		}
	});
}

function fetchMenu(position, selector) {
	$.ajax({
		type	: "GET",
		url		: "/menu.php",
		data	: "position=" + position + "&key=" + key(10000),
		success	: function(html){
			
			$(selector).empty();
			$(selector).append(html);
			
			if (position == 'top') {
				$("ul.sf-menu").supersubs({ 
					minWidth:    12, 
					maxWidth:    27, 
					extraWidth:  1    
				}).superfish({
					dropShadows : false
				});
			}
			
			if (position == 'left') {
				$("ul.sf-menu").superfish({
					dropShadows : false
				});
			}
			
		}
	});
}

function fetchAdverts(page, position, selector) {
	$.ajax({
		type	: "GET",
		url		: "/adverts.php",
		data	: "page=" + page + "&position=" + position + "&key=" + key(10000),
		success	: function(html){
			$(selector).empty();
			$(selector).append(html);
		}
	});
}


function fetchSlideshow(name, width, height, selector) {
	
	$.ajax({
		type	: "GET",
		url		: "/slideshow.php",
		data	: "name=" + name + "&width=" + width + "&height=" + height + "&key=" + key(10000),
		success	: function(html){
			
			$(selector).empty();
			$(selector).append(html);
			
			$(selector).cycle({
				fx:     'fade', 
				timeout: 6000, 
				//next:   '#slideshow', 
				pause:   1,
				random:  1
				//before:  onBefore, 
				//after:   onAfter 
			});
		}
	});
}

function fetchBasket() {
	var selector = '#basket';
	$(selector).show();
	$.ajax({
		type	: "GET",
		url		: "/basket.php",
		data	: "&key=" + key(10000),
		success	: function(html){
			$(selector).empty();
			$(selector).append(html);
		}
	});
}

function emptyBasket() {
	var selector = '#basket';
	$.ajax({
		type	: "GET",
		url		: "/basket.php",
		data	: "empty=1&key=" + key(10000),
		success	: function(html){
			$(selector).empty();
			$(selector).append(html);
		}
	});
}

function addToBasket(id) {
	var selector = '#basket';
	var quantity = $('#quantity_' + id).val();
	if (isInteger(quantity) && quantity != '' && quantity > 0) {
		$(selector).show();
		$.ajax({
			type	: "GET",
			url		: "/basket.php",
			data	: "product_id=" + id + "&quantity=" + quantity + "&key=" + key(10000),
			success	: function(html){
				$(selector).empty();
				$(selector).append(html);
				$(selector)
				.animate({ 
					backgroundColor: "#FFFFFF"
				}, 'fast')
				.animate({ 
					backgroundColor: $(selector).css('backgroundColor')
				}, 'fast')
				.animate({ 
					backgroundColor: "#FFFFFF"
				}, 'fast')
				.animate({ 
					backgroundColor: $(selector).css('backgroundColor')
				}, 'fast');
			}
		});
	} else {
		alert('Please enter a value between 1 - 9999!');
	}
}

function fetchSpecials() {
	var selector = '#specials';
	$(selector).show();
	$.ajax({
		type	: "GET",
		url		: "/specials.php",
		data	: "&key=" + key(10000),
		success	: function(html){
			$(selector).empty();
			$(selector).append(html);
		}
	});
}

function echeck(str) {

	var at = "@";
	var dot = ".";
	var lat = str.indexOf(at);
	var lstr = str.length;
	var ldot = str.indexOf(dot);
	
	if (str.indexOf(at) ==- 1) { return false; }
	if (str.indexOf(at) ==- 1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) { return false; }
	if (str.indexOf(dot) ==- 1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) { return false; }
	if (str.indexOf(at, (lat + 1)) !=- 1) { return false; }
	if (str.substring(lat - 1, lat) == dot || str.substring(lat + 1, lat + 2) == dot) { return false; }
	if (str.indexOf(dot, (lat + 2)) ==- 1) { return false; }
	if (str.indexOf(" ") !=- 1 ) { return false; }
	 
	return true;
}

function isInteger (s) {
	var i;
	
	if (isEmpty(s))
	if (isInteger.arguments.length == 1) return 0;
	else return (isInteger.arguments[1] == true);
	
	for (i = 0; i < s.length; i++) {
		var c = s.charAt(i);
		if (!isDigit(c)) return false;
	}
	
	return true;
}

function isEmpty(s) {
	return ((s == null) || (s.length == 0))
}

function isDigit (c) {
	return ((c >= "0") && (c <= "9"))
}

function processCaptcha(form) {
	$.ajax({
		type	: "POST",
		url		: "/control/captcha/captcha.php",
		data	: "txtCaptcha=" + document.getElementById("txtCaptcha").value + "&key=" + key(10000),
		success	: function(html){
			$("#result").empty();
			$("#result").append(html);
			
			if (html == "FAIL") {
				alert("The code you entered was incorrect. Please try again.");
				$("#imgCaptcha").attr("src", "/control/captcha/image.php?key=" + key(10000));
			} else {
				$(form).submit();
			}
		}
	});
}

function validateCheckout() {
	
	// first_name
	if (document.getElementById("first_name").value.length < 1) {
		alert("Please enter a valid first name.");
		document.getElementById("first_name_label").style.color = "red";
		document.getElementById("first_name").focus();
		return false;
	} else {
		document.getElementById("first_name_label").style.color = "black";
	}
	
	// last_name
	if (document.getElementById("last_name").value.length < 1) {
		alert("Please enter a valid last name.");
		document.getElementById("last_name_label").style.color = "red";
		document.getElementById("last_name").focus();
		return false;
	} else {
		document.getElementById("last_name_label").style.color = "black";
	}
	
	// email_1 (validate)
	if (echeck(document.getElementById("email_1").value) == false) {
		alert("Please enter a valid email address.");
		document.getElementById("email_1_label").style.color = "red";
		document.getElementById("email_1").focus();
		return false;
	} else {
		document.getElementById("email_1_label").style.color = "black";
	}
	
	// email_2
	if (document.getElementById("email_2").value != document.getElementById("email_1").value) {
		alert("Please make sure the email addresses are the same.");
		document.getElementById("email_2_label").style.color = "red";
		document.getElementById("email_2").focus();
		return false;
	} else {
		document.getElementById("email_2_label").style.color = "black";
	}
	
	// street_address
	if (document.getElementById("street").value.length < 1) {
		alert("Please enter a valid street address.");
		document.getElementById("street_label").style.color = "red";
		document.getElementById("street").focus();
		return false;
	} else {
		document.getElementById("street_label").style.color = "black";
	}
	
	// town
	if (document.getElementById("town").value.length < 1) {
		alert("Please enter a valid town.");
		document.getElementById("town_label").style.color = "red";
		document.getElementById("town").focus();
		return false;
	} else {
		document.getElementById("town_label").style.color = "black";
	}
	
	// province
	if (document.getElementById("province").value.length < 1) {
		alert("Please enter a valid province.");
		document.getElementById("province_label").style.color = "red";
		document.getElementById("province").focus();
		return false;
	} else {
		document.getElementById("province_label").style.color = "black";
	}
	
	// postal_code
	if (document.getElementById("postal_code").value.length < 1) {
		alert("Please enter a valid postal code.");
		document.getElementById("postal_code_label").style.color = "red";
		document.getElementById("postal_code").focus();
		return false;
	} else {
		document.getElementById("postal_code_label").style.color = "black";
	}
	
	// phone
	if (document.getElementById("phone").value.length < 1) {
		alert("Please enter a valid telephone number.");
		document.getElementById("phone_label").style.color = "red";
		document.getElementById("phone").focus();
		return false;
	} else {
		document.getElementById("phone_label").style.color = "black";
	}
	
	/*if (!document.getElementById("agree").checked) {
		alert("Please read our terms and conditions and tick the checkbox if you agree with them.");
		return false;
	}*/
			
	if (document.getElementById("txtCaptcha").value.length == 5) {
		processCaptcha('#checkout');
		return false;
	} else {
		alert("Please enter the exact code on the image into the text box and try again.");
		document.getElementById("txtCaptcha").focus();
		return false;
	}	
}

function fetchLogin(selector, domain, page) {
    if ($(selector).length) {
        $.ajax({
            type	: "POST",
            url		: "/login.php",
            data	: "show=1" +
            "&key=" + key(10000),
            success	: function(html){
                $(selector).empty();
                $(selector).append(html);
                $("#authenticate").click(function () {

                    //$("#username").log('USERNAME');
                    //$("#password").log('PASSWORD');
                    //$("#login").log('MD5: ' + md5($("#username").val() + $("#password").val()))

                    $.ajax({
                        type	: "POST",
                        url		: "/login.php",
                        data	: "username=" + $("#username").val() +
                        "&password=" + $("#password").val() +
                        "&md5=" + md5($("#username").val() + $("#password").val()) +
                        "&key=" + key(10000),
                        success	: function(authenticated){

                            //$("#login").log('AUTHENTICATED: ' + authenticated);

                            if (authenticated == 1) {
                                //fetchBasket(); $('#basket').log("basket is shown");
                                $("#login").empty();
                                //$("#login").append('<a href="/login.php?logout=1" target="_self"><img src="/website/styles/default/logout_large.png" alt="logout" width="80" height="30" border="0" /></a> <a href="/page/edit_listings" target="_self"><img src="/website/styles/default/edit_listings_large.png" alt="edit listings" width="160" height="30" border="0" /></a> <a href="/page/edit_profile" target="_self"><img src="/website/styles/default/edit_profile_large.png" alt="edit profile" width="160" height="30" border="0" /></a>');
                                //alert("Thank you. You may now proceed to edit your listings.");
                                alert("Thank you. You are now logged in.");
                                top.location = "http://" + domain + "/page/" + page;
                            } else {
                                alert("ERROR! Please enter your correct username and password.");
                            }

                        }
                    });
                });
            }
        });
    }
}

function checkFile(selector, allow, form) {
	var allowed = '';
    if ($(selector).length > 0){
        if ($(selector).val() != '') {
            var ext = $(selector).val().split('.').pop().toLowerCase();
            if(jQuery.inArray(ext, allow) == -1) {
                for(var i = 0; i < allow.length; i++){
                    allowed = allowed + ' .' + allow[i];
                }
                alert('You can only upload files with the extension: ' + allowed);
                $(selector).focus();
            } else {
                form.submit();
            }
        } else {
            //alert("Please add your file.");
            //$(selector).focus();
        }
    }
}

function emailExists(table, email, form) {
	$.ajax({
		type	: "GET",
		url		: "/check.php",
		data	: "table=" + table + "&email=" + email + "&key=" + key(10000),
		success	: function(response){
			if (response == 1) {
				alert('The email address you entered already exists in our database.');
			} else {
				checkCaptcha(form);
			}
		}
	});
}

function checkCaptcha(form) {
	if ($('#txtCaptcha').val().length == 5) {
		$.ajax({
			type	: "POST",
			url		: "/control/captcha/captcha.php",
			data	: "txtCaptcha=" + document.getElementById("txtCaptcha").value + "&key=" + key(10000),
			success	: function(html){
				//$("#result").empty();
				//$("#result").append(html);

				if (html == "FAIL") {
					alert("The code you entered was incorrect. Please try again.");
					$("#imgCaptcha").attr("src", "/control/captcha/image.php?key=" + key(10000));
				} else {
					form.submit();
				}
			}
		});
	} else {
		alert("Please enter the exact code on the image into the text box and try again.");
		document.getElementById("txtCaptcha").focus();
	}
}

function timeDifference(startDate, endDate) {

	date2 = startDate;
	date1 = endDate;

	laterdate = date1.split("-");
	laterY = laterdate[0];
	laterM = laterdate[1];
	laterD = laterdate[2];
	//alert('end year' + laterY);

	earlierdate = date2.split("-");
	earlierY = earlierdate[0];
	earlierM = earlierdate[1];
	earlierD = earlierdate[2];
	//alert('start year' + earlierY);

	var laterdate = new Date(laterY,laterM,laterD);
	var earlierdate = new Date(earlierY,earlierM,earlierD);

	var difference = laterdate.getTime() - earlierdate.getTime();

	//alert(difference);

	var daysDifference = Math.floor(difference / 1000 / 60/ 60 / 24);
	difference -= daysDifference * 1000 * 60 * 60 * 24
	var hoursDifference = Math.floor(difference / 1000 / 60 / 60);
	difference -= hoursDifference * 1000 * 60 * 60
	var minutesDifference = Math.floor(difference / 1000 / 60);
	difference -= minutesDifference * 1000 * 60
	var secondsDifference = Math.floor(difference / 1000);

	return daysDifference;

}
