$(document).ready(function(){
	
	// INIT
	var page = $('body').attr('class');
	page = page.split(" ");
	var errorClass = 'input-error';
	var returnData = new Array();
	var ajaxData = null;
	
	if (page[0] == 'main' || page[0] == 'search') {
		get_twitter_feed("#twitter-feed .contents", 'marketspacenews');
	};
	
	/* * * * * * * * * *
	 * PAGINATION CALLS
	 * * * * * * * * * * * * * * * */
	$('#sort-by').change(function(){
		var action = $(this).attr('action');
		if (action.search(/\/sort\/[^/]+/i) > -1)
		{
			action = action.replace(/\/sort\/[^/]+/i, '/sort/' + $('.select option:selected').val());
		}
		else
		{
			action += '/sort/' + $('.select option:selected').val();
		}
		window.location = action;
		// $(this).submit();
	});

	$('body.product_details #sort-by').change(function(){
		var action = $(this).attr('action');
		if (action.search(/\/sort\/[^/]+/i) > -1)
		{
			action = action.replace(/\/sort\/[^/]+/i, '/sort/' + $('.select option:selected').val());
		}
		else
		{
			action += '/sort/' + $('.select option:selected').val();
		}
		window.location = action;
	});

	var sortBy = getParamByName('sort');
	if (sortBy !== "") {
		$('#sort-by .' + sortBy).attr('selected', 'selected');
	}
	
	/* * * * * * * * * *
	 * AJAX CALLS
	 * * * * * * * * * * * * * * * */
	
	$('.show-desc').click(function(){
		var descDiv = $(this).attr('id');
		$(this).parent().hide();
		$('#description-full-' + descDiv).show();
		return false;
	});
	
	$('#new_address').click(function(){
		$('#addr1').attr('value', $('#new_addr1').val());
		$('#addr2').attr('value', $('#new_addr2').val());
		$('#city').attr('value', $('#new_city').val());
		$('#state').val($('#new_state').val());
		$('#zc1').attr('value', $('#new_zc1').val());
		$('#zc2').attr('value', $('#new_zc2').val());
		$(this).parent().slideUp('fast');
	});
	
	$('#old_address').click(function(){
		$(this).parent().slideUp('fast');
	});
	
	$(".alt-images a").click(function(){
		var thumb = $(this).attr('id'); // get the clicked image
		$('.alt-image-large').hide(); // hide the images
		$('#' + thumb).show(); // show only the selected image
		return false;
	});
	
	$('.rating-cancel').remove();
	
	/* * * *
	 * GET TWITTER FEED FUNCTION
	 * requires jquery.tweet.js
	 * * * * * * * */
	function get_twitter_feed(target, username){
		$(target).html('').tweet({
			username: username,
			join_text: "auto",
			avatar_size: null,
			count: 2,
			auto_join_text_default: '',
			auto_join_text_ed: '',
			auto_join_text_ing: '',
			auto_join_text_reply: '',
			auto_join_text_url: '',
			loading_text: "loading our tweets..."
		});
	};
	
	/* * LIKE IT BTN FOR PRODUCTS * */
	$('.like_it_btn').click(function(){
		// get the id of the item being liked
		var itemID = $(this).attr('id');
		itemID = itemID.split('-');
		set_like('index.php', 'sl', itemID[0], itemID[1]);
		if (ajaxData == 1) {
			$(this).removeClass('like_it_btn').parent().html('liked').css('color', '#B2BB1C').css('font-weight', 'bold');
		};
		return false;
	});

	/* * LIKE IT BTN FOR BUSINESSES * */
	$('.like_it_btn_biz').click(function(){
		// get the id of the item being liked
		var itemID = $(this).attr('id');
		itemID = itemID.split('-');
		set_like('index.php', 'sl', itemID[0], itemID[1]);
		if (ajaxData == 1) {
			$(this).removeClass('like_it_btn').parent().html('<img src="img/icon_thumbs_up.png" />');
		};
		return false;
	});

	function set_like(target, call, method, id) {
		$.ajax({
			url: "/"+target,
			type: "GET",
			data: ({
				call: call,
				method: method,
				i: id
			}),
			async: false,
			success: function(data) {
				if (data == 0) {
				} else if (data == 1) {
				} else if (data == 2) { 
					$(this).modal({
						width: 375,
						height: 165,
						src: '/modal_boxes/please_login.php'
					}).open();
				};
				ajaxData = data;
			}
		});
	};

	/* * * * * * * * * *
	 * FORM VALIDATIONS
	 * * * * * * * * * * * * * * * */
	 
	/* * * LOGIN FORM VALIDATIONS * * */
	var $loginForm = "form[name='login'] ";
	$($loginForm + "button[name='submit_login']").click(function(){
													
		$('input.' + errorClass).removeClass(errorClass);		
		$('div.error').remove(); // hide all error divs
		
		var field = $($loginForm + "#username");
		if (field.val() === "") {
			$(field).addClass(errorClass).after('<div class="error" style="margin: 0 0 12px 0;">please enter your username</div>');
			returnData[0] = false;
		}
		else if (field.val().length < 6) {
			$(field).addClass(errorClass).after('<div class="error" style="margin: 0 0 12px 0;">your username must be at least 6 characters long</div>');
			returnData[0] = false;
		} else {
			returnData[0] = true;
			$(field).removeClass(errorClass);
		};
	
		field = $($loginForm + "input[name='password']");
		if (field.val() === "") {
			$(field).addClass(errorClass).after('<div class="error" style="margin: 0 0 12px 0;">please enter your password</div>');
			returnData[1] = false;
		} else {
			returnData[1] = true;
			$(field).removeClass(errorClass);
		};
		
		if (false in oc(returnData)) {
			return false;
		} else {
			return true;
		};
		
	});

	/* * * REGISTER FORM VALIDATIONS * * */
	var $registerForm = "form[name='register'] ";
	$($registerForm + " button[name='submit']").click(function(){
		
		$('input.' + errorClass).removeClass(errorClass);		
		$('div.error').remove(); // hide all error divs
		
		var field = $($registerForm + "input[name='user_fname']");
		if (field.val() === "") {
			$(field).addClass(errorClass).after('<div class="error" style="margin: 0 0 12px 0;">please enter your first</div>');
			returnData[0] = false;
		}
		else if (field.val().length < 3) {
			$(field).addClass(errorClass).after('<div class="error" style="margin: 0 0 12px 0;">your first name must be at least 3 characters long</div>');
			returnData[0] = false;
		} else {
			returnData[0] = true;
			$(field).removeClass(errorClass);
		};
	
		field = $($registerForm + "input[name='user_lname']");
		if (field.val() === "") {
			$(field).addClass(errorClass).after('<div class="error" style="margin: 0 0 12px 0;">please enter your last name</div>');
			returnData[1] = false;
		}
		else if (field.val().length < 3) {
			$(field).addClass(errorClass).after('<div class="error" style="margin: 0 0 12px 0;">your last name must be at least 3 characters long</div>');
			returnData[1] = false;
		} else {
			returnData[1] = true;
			$(field).removeClass(errorClass);
		};
		
		field = $($registerForm + "input[name='user_name']");
		if (field.val() === "") {
			$(field).addClass(errorClass).after('<div class="error" style="margin: 0 0 12px 0;">please enter your username</div>');
			returnData[2] = false;
		}
		else if (field.val().length < 6) {
			$(field).addClass(errorClass).after('<div class="error" style="margin: 0 0 12px 0;">your username must be at least 6 characters long</div>');
			returnData[2] = false;
		} else {
			returnData[2] = true;
			$(field).removeClass(errorClass);
		};

		field = $($registerForm + "input[name='user_email']");
		if (field.val() === "") {
			$(field).addClass(errorClass).after('<div class="error" style="margin: 0 0 12px 0;">please enter your email</div>');
			returnData[3] = false;
		}
		else if (field.val().length < 6) {
			$(field).addClass(errorClass).after('<div class="error" style="margin: 0 0 12px 0;">your email address must be at least 6 characters long</div>');
			returnData[3] = false;
		} else {
			returnData[3] = true;
			$(field).removeClass(errorClass);
		};

		field = $($registerForm + "input[name='user_pass']");
		if (field.val() === "") {
			$(field).addClass(errorClass).after('<div class="error" style="margin: 0 0 12px 0;">please enter your password</div>');
			returnData[4] = false;
		} else {
			returnData[4] = true;
			$(field).removeClass(errorClass);
		};

		field = $($registerForm + "input[name='user_pass2']");
		if (field.val() === "") {
			$(field).addClass(errorClass).after('<div class="error" style="margin: 0 0 12px 0;">please confirm your password</div>');
			returnData[5] = false;
		} else {
			returnData[5] = true;
			$(field).removeClass(errorClass);
		};

		field = $($registerForm + "input[name='agree']");
		if (field.is(':checked')) {
			returnData[5] = true;
		} else {
			$(field).parent().after('<div class="error" style="margin: 0 0 12px 0;">you must agree to the above terms</div>');
			returnData[5] = false;
		};

		if (false in oc(returnData)) {
			return false;
		} else {
			return true;
		};
		
	});

});

// CORE JS FUNCTIONS
function getParamByName(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 results[1];
	};
	
};

function oc(a) {
	var o = {};
	for(var i = 0; i < a.length; i ++) {
		o[a[i]] = '';
	}
	return o;
};

function check_email(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 is_numeric(strString, strValidChars) {
	
	if (strValidChars === "") {
		strValidChars = '0123456789.-';
	}
	
	var strChar;
	var blnResult = true;
	
	if (strString.length == 0){ return false };
	
	for (i = 0; i < strString.length && blnResult == true; i++){
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1){
			blnResult = false;
		}
	}
	
	return blnResult;
};






