
function ajax_fupdater(container, url, form)
{
	var oncomplete = arguments[3] ? arguments[3] : '';

	if(oncomplete.length > 0)
	{
		$.ajax({
			type: "POST", url: url, 
			data: $("#" + form).serialize(),
			success: function(msg) {
			    	$("#" + container).html(msg);
					eval(oncomplete);
				}
		});
	}
	else
	{
		$.ajax({
			type: "POST", url: url, 
			data: $("#" + form).serialize(),
			success: function(msg) {
			    	$("#" + container).html(msg);
				}
		});
	}
}

function ajax_pupdater(container, url)
{
	var parameter = arguments[2] ? arguments[2] : '';
	var oncomplete = arguments[3] ? arguments[3] : '';

	if(oncomplete.length > 0)
	{
		$.ajax({
			type: "POST", url: url, 
			data: parameter,
			success: function(msg) {
			    	$("#" + container).html(msg);
					eval(oncomplete);
				}
			});
	}
	else
	{
		$.ajax({
			type: "POST", url: url, 
			data: parameter,
			success: function(msg) {
			    	$("#" + container).html(msg);
				}
			});
	}
}

function ajax_prequest(url)
{
	var parameter = arguments[1] ? arguments[1] : '';
	var oncomplete = arguments[2] ? arguments[2] : '';
	
	if(oncomplete.length > 0)
	{
		$.ajax({
			type: "POST", url: url, 
			data: parameter,
			success: function(msg){
				eval(oncomplete);
			}
		});
	}
	else
	{
		$.ajax({
			type: "POST",
			url: url,
			data: parameter
		});
	}
}

function ajax_frequest(url,form)
{
	var oncomplete = arguments[2] ? arguments[2] : '';
	
	if(oncomplete.length > 0)
	{
		$.ajax({
			type: "POST", url: url, 
			data: $("#" + form).serialize(),
			success: function(msg) {
					eval(oncomplete);
				}
		});
	}
	else
	{
		$.ajax({
			type: "POST", url: url, 
			data: $("#" + form).serialize()
		});
	}
}

function megaHoverOver(){
	$(this).find(".sub").stop().fadeTo('fast', 1).show();
		
	//Calculate width of all ul's
	(function($) { 
		jQuery.fn.calcSubWidth = function() {
			rowWidth = 0;
			//Calculate row
			$(this).find("ul").each(function() {					
				rowWidth += $(this).width(); 
			});	
		};
	})(jQuery); 
	
	if ( $(this).find(".row").length > 0 ) { //If row exists...
		var biggestRow = 0;	
		//Calculate each row
		$(this).find(".row").each(function() {							   
			$(this).calcSubWidth();
			//Find biggest row
			if(rowWidth > biggestRow) {
				biggestRow = rowWidth;
			}
		});
		//Set width
		$(this).find(".sub").css({'width' :biggestRow});
		$(this).find(".row:last").css({'margin':'0'});
		
	} else { //If row does not exist...
		
		$(this).calcSubWidth();
		//Set Width
		$(this).find(".sub").css({'width' : rowWidth});
		
	}
}

function megaHoverOut(){ 
  $(this).find(".sub").stop().fadeTo('fast', 0, function() {
	  $(this).hide(); 
  });
}

var config = {    
	 sensitivity: 10, // number = sensitivity threshold (must be 1 or higher)    
	 interval: 1, // number = milliseconds for onMouseOver polling interval    
	 over: megaHoverOver, // function = onMouseOver callback (REQUIRED)    
	 timeout: 1, // number = milliseconds delay before onMouseOut    
	 out: megaHoverOut // function = onMouseOut callback (REQUIRED)    
};


var GD = {};

(function(){
	var _event_news = base_url + 'event_news/';
	var _contact = base_url + 'contact/';
	var _tryon = base_url + 'tryon/';
	var _send = base_url + 'send/';
	var _item = base_url + 'item/';
	var _wish = base_url + 'wish/';
	
	GD.scroll_news = function (offset) {
		var url = _event_news + 'scroll_news';
		ajax_pupdater('news_box', url, 'offset=' + offset);
	}
	
	GD.scroll_event = function (offset) {
		var url = _event_news + 'scroll_event';
		ajax_pupdater('event_schedule', url, 'offset=' + offset);
	}
	
	GD.show_event = function (event_id) {
		var url = _event_news + 'show_event';
		ajax_pupdater('show_box', url, 'event_id=' + event_id);
	}

	GD.add_contact = function() {
		var on = "New Contact Name";
		var oe = "New Email Address";
		var check_result = false;
		for (var i = 1; i < 4; i++) {
			var n = $('#name_'+i).val();
			var e = $('#email_'+i).val();
			
			if (n != on && ! GD.is_email(e)) {
				$('#email_msg_' + i).html("Email address is Invalid");
				$('#email_msg_' + i).css('display', 'block');
				return false;
			} else {
				$('#email_msg_' + i).css('display', 'none');
			}
			
			if (e != oe && ! GD.is_email(e)) {
				$('#email_msg_' + i).html("Email address is Invalid");
				$('#email_msg_' + i).css('display', 'block');
				return false;
			} else {
				$('#email_msg_' + i).css('display', 'none');
			}
			
			if (e != oe && n == on)
			{
				$('#name_msg_' + i).html("Contact Name is Invalid");
				$('#name_msg_' + i).css('display', 'block');
				return false;
			} else {
				$('#name_msg_' + i).css('display', 'none');
			}
			
			if (n.length > 0 && n != on
				&& e.length > 0 && e != oe) {
				check_result = true;		
			}
		}
		
		if (check_result) {
			var url = _contact + 'add_contact';
			ajax_fupdater('contact_info_panel', url, 'contact_form', 'GD.reflash_contact()');
		}
	}
	
	GD.reflash_contact = function() {
		var url = _contact + 'reflash_contact';
		ajax_pupdater('contact_list_panel', url);
	}
	
	GD.delete_contact = function(contact_id) {
		if(confirm("Are you sure to delete this contact?")) {
			var url = _contact + 'delete_contact';
			ajax_pupdater('contact_list_panel', url, 'contact_id=' + contact_id);
		}
	}
	
	GD.update_contact = function(contact_id) {
		var url = _contact + 'update_contact';
		ajax_pupdater('row_'+contact_id, url, 'contact_id=' + contact_id);
	}
	
	GD.cancel_contact = function(contact_id) {
		var url = _contact + 'cancel_contact';
		ajax_pupdater('row_'+contact_id, url, 'contact_id=' + contact_id);
	}
	
	GD.do_update_contact = function(contact_id) {
		var name = $('#name_upd').val();
		if (name.length == 0) {
			$('#name_msg').html("Contact Name is Required");
			$('#name_msg').css('display', 'block');
			return false;
		}
		
		var email = $('#email_upd').val();
		if (email.length == 0) {
			$('#email_msg').html("Contact Email is Required");
			$('#email_msg').css('display', 'block');
			return false;
		}
		
		if (!GD.is_email(email)) {
			$('#email_msg').html("Contact Email is Invalid");
			$('#email_msg').css('display', 'block');
			return false;
		}
		
		var url = _contact + 'do_update_contact';
		ajax_pupdater('row_'+contact_id, url, 'name=' + name + '&email=' + email + '&contact_id=' + contact_id + '&update_contact=1');
	}
	
	GD.is_email = function(email) {
		var reg1 = /([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/;
		return reg1.test(email);
	}
	
	GD.change_image = function(img) {
		$('#item_main_image').attr('src', img);
	}
	
	GD.toggle_tryon = function(tryon_id) {
		var url = _tryon + 'toggle_tryon';
		ajax_prequest(url, 'tryon_id=' + tryon_id, 'GD.toggle_tryon_callback(msg,'+tryon_id+')');
	}
	
	GD.toggle_tryon_callback = function(msg, tryon_id) {
		if (msg == 'max') {
			$('#tryon_list_msg').css('display', 'block');
		} else if (msg == 'true'){
			var t = $('#t_' + tryon_id);
			if (t.attr('class') == 'checked_btn') {
				t.attr('class', 'unchecked_btn');
			} else {
				t.attr('class', 'checked_btn');
			}
			$('#tryon_list_msg').css('display', 'none');
		}
	}
	
	GD.change_tryon_category = function() {
		var category_id = $('#tryon_category').val();
		var url = _tryon + 'change_category';
		ajax_pupdater('items_left_clm_box', url, 'category_id=' + category_id);
	}
	
	GD.tryon_unselect = function () {
		var category_id = $('#tryon_category').val();
		var url = _tryon + 'unselect';
		ajax_pupdater('items_left_clm_box', url, 'category_id=' + category_id);
	}
	
	GD.tryon_select = function() {
		var category_id = $('#tryon_category').val();
		var url = _tryon + 'select';
		ajax_prequest(url, 'category_id=' + category_id, 'GD.tryon_select_callback(msg)');
	}
	
	GD.tryon_select_callback = function (msg) {
		if (msg == 'max') {
			$('#tryon_list_msg').css('display', 'block');
		} else {
			GD.change_tryon_category();
		}
	}
	
	GD.del_tryon_thumb = function(tryon_id) {
		if (confirm("Are you sure to delete this one?")) {
			var url = _send + 'del_tryon';
			ajax_pupdater('thumb_panel', url, 'tryon_id=' + tryon_id);
		}
	}
	
	GD.toggle_contact = function () {
		if ($('#toggle_contact').attr('checked') != true) {
			$("[name='contacts[]']").removeAttr("checked");
		} else {
			$("[name='contacts[]']").attr("checked", 'true');
		}
	}
	
	GD.add_wish_list = function(product_id) {
		var url = _item + 'add_wish';
		ajax_prequest(url, 'product_id=' + product_id, 'GD.add_wish_callback(msg)');
	}
	
	GD.add_wish_callback = function (msg) {
		if (msg == 'false') {
			window.location.href = base_url + 'login/need_login';
		} else {
			alert("This item was added to your wish list");
		}
	}
	
	GD.toggle_wish = function(wish_id) {
		var url = _wish + 'toggle_wish';
		ajax_prequest(url, 'wish_id=' + wish_id, 'GD.toggle_wish_callback(msg,'+wish_id+')');
	}
	
	GD.toggle_wish_callback = function(msg, wish_id) {
		if (msg == 'max') {
			$('#wish_list_msg').css('display', 'block');
		} else if (msg == 'true'){
			var t = $('#t_' + wish_id);
			if (t.attr('class') == 'checked_btn') {
				t.attr('class', 'unchecked_btn');
			} else {
				t.attr('class', 'checked_btn');
			}
			$('#wish_list_msg').css('display', 'none');
		}
	}
	
	GD.change_wish_category = function() {
		var category_id = $('#wish_category').val();
		var url = _wish + 'change_category';
		ajax_pupdater('items_left_clm_box', url, 'category_id=' + category_id);
	}
	
	GD.wish_unselect = function () {
		var category_id = $('#wish_category').val();
		var url = _wish + 'unselect';
		ajax_pupdater('items_left_clm_box', url, 'category_id=' + category_id);
	}
	
	GD.wish_select = function() {
		var category_id = $('#wish_category').val();
		var url = _wish + 'select';
		ajax_prequest(url, 'category_id=' + category_id, 'GD.wish_select_callback(msg)');
	}

	GD.wish_select_callback = function (msg) {
		if (msg == 'max') {
			$('#wish_list_msg').css('display', 'block');
		} else {
			GD.change_wish_category();
		}
	}
	
	GD.wish_delete = function () {
		if (confirm("Are you sure to delete all wish items?")) {
			var category_id = $('#wish_category').val();
			var url = _wish + 'del_all_wish';
			ajax_pupdater('items_left_clm_box', url, 'category_id=' + category_id);
		}
	}
	
	GD.del_wish = function(wish_id) {
		if (confirm("Are you sure to delete this wish items?")) {
			var category_id = $('#wish_category').val();
			var url = _wish + 'delete_wish';
			ajax_pupdater('items_left_clm_box', url, 'category_id=' + category_id + '&wish_id=' + wish_id);
		}
	}
	
	GD.del_wish_thumb = function(wish_id) {
		if (confirm("Are you sure to delete this one?")) {
			var url = _send + 'del_wish';
			ajax_pupdater('thumb_panel', url, 'wish_id=' + wish_id);
		}
	}
})()
