/**
 * Functions for adding new business
 *
 */

// wrapper object <=> namespace for related funcs
var AddBusiness = {};

AddBusiness.X_AJAX_INFO = 'users_add_business';
AddBusiness.under_processing = false; // set true while the submitted data is processing

AddBusiness.initialize = function() {
	
	AddBusiness.box = $('#add_business_box');
	
	var $loggedin = $('#logged_in');
	var pass_over_login = false;
	//var pass_over_login = true;
	
	if( !pass_over_login && ($loggedin.size() == 1) && ($loggedin.val() != 1) ) {
		$('a.add_new_business').click(function(){$('a#login').trigger('click');return false;});
		return;
	}
	
	AddBusiness.boxContent = $('.content', AddBusiness.box);
	
	var frmOpen = function(hash) {
		
		var trigger_href = hash.t.getAttribute('href');
		// alert(trigger_href);
		
		var ajax_url = 'http://' + location.hostname + '/' + trigger_href; // $('.add_new_business').attr('href') 'add-business.html';
		
		$.get(ajax_url, function(response_data) { // , {ts: (new Date()).getTime()}
//			alert(response_data);

			AddBusiness.boxContent.html(response_data);
//			(AddBusiness.boxContent).get(0).innerHTML = response_data;
//			hash.w.css('opacity', 1).show();
			hash.w.show();
			
			$(AddBusiness.box).jqmAddClose($('#businessCloseButton', AddBusiness.box));
			AddBusiness.box.addClass('add_business_box'); // facebook_friends_box
			$(AddBusiness.box).center();
			
//			parseForms();
			$('#submitBusiness', AddBusiness.box).click(
				function() {
					if(AddBusiness.under_processing) {
						return;
					}
//					alert('img submit clicked');
					$('#business_submit_loader').show();
					AddBusiness.under_processing = true;
					var businessOptions = {
							url			: location.href,
							data		: { X_AJAX_INFO : AddBusiness.X_AJAX_INFO,
											ts			: (new Date()).getTime(),
											'action'    : 'action_submit'},
							success		: AddBusiness.updateCheck,
							dataType	: 'json' // 'text'
					};
					$('#addBusinessFrm', AddBusiness.box).ajaxSubmit(businessOptions);
					return false;
				}
			);
			//*/
		});
	};
	AddBusiness.box.jqm({trigger: 'a.add_new_business',  overlay: 0, onShow: frmOpen});
}

AddBusiness.renderObj = function(o, is_recursion) {
	var s = '';
	var c = is_recursion ? "\t" : '';
	var nl = "\n" + c;
	for(var p in o) {
		if(typeof o[p] == 'object') {
			s += c + p + ' = ' + "\n\t" + AddBusiness.renderObj(o[p], true);
		} else {
			s += c + p + ' = ' + o[p];
		}
		c = nl;
	}
	return s;
}

AddBusiness.updateCheck = function(data, status, form) {
//	alert(AddBusiness.renderObj(data));return;
	$('#business_submit_loader').hide();
	AddBusiness.under_processing = false;
	var msg = 'Thank you for your submission! We generally approve new listings within one working day.';
	if(data.status == 'success') {
		if(data.message && data.message.length > 0) {
			msg = data.message;
		}
		alert(msg);
		window.location.reload();
	} else {
		// show error message
		alert('Please correct the following errors:\n' + AddBusiness.renderValidationErrors(data.errors, '-').replace(/@/ig,''));
	}
	return false;
}

AddBusiness.renderValidationErrors = function(err_obj, start_char) {
	var e = '';
	var nl = '';
	for(var i in err_obj) {
		for(var j in err_obj[i]) {
			e += nl + start_char + ' ' + err_obj[i][j];
			nl = "\n";
		}
	}
	return e;
}

AddBusiness.populateSubCategories = function(path, select_obj) {
	// ajax call to get the sub categories
	var ajax_hdr = 'classification_path_items';
	var subcat_txt = $(select_obj).attr('name') == 'subcat' ? 'Subcategory' : 'Sub-subcategory';
	$.ajax({
		url: location.href,
		beforeSend: function(xhr) {
			xhr.setRequestHeader('X_AJAX_INFO', ajax_hdr);
		},
		data: {item_path: path},
		type: 'POST',
		dataType: 'json',
		success: function(resp_data) {
			// populate select with response data
			$(select_obj).html('');
			$(select_obj).append('<option value="">Select '+subcat_txt+'</option>');
			for (var cat_path in resp_data) {
				$(select_obj).append('<option value="'+cat_path+'">'+resp_data[cat_path]+'</option>');
			}
			$(select_obj).removeAttr('disabled');
		}
	});
}

AddBusiness.populateGeoSelects = function (_path, _select_obj) {
	var _data = '';
	var _first_option = '';
	
	if ($(_select_obj).attr('name') == 'country') {
		_data = {continent_code: _path};
		_first_option = 'Country';
	} else {
		_data = {country_id: _path};
		_first_option = 'State/Region';
	}
	
	$.ajax({
		url: location.href,
		beforeSend: function (xhr) {
			xhr.setRequestHeader('X_AJAX_INFO', 'geo_path_items');
		},
		data: _data,
		type: 'POST',
		dataType: 'json',
		success: function (responseText) {
			$(_select_obj).html('');
			$(_select_obj).append('<option value="">Select ' + _first_option + '</option>');
			
			for (var geo_path in responseText) {
				$(_select_obj).append('<option value="' + geo_path + '">' + responseText[geo_path] + '</option>');
			}
			
			$(_select_obj).removeAttr('disabled');
		}
	});
}

AddBusiness.loadScript = function(src_url) {
   var e = document.createElement("script");
   e.src = src_url;
   e.type = "text/javascript";
   document.getElementsByTagName("head")[0].appendChild(e);
}

$(document).ready(function() {
	AddBusiness.initialize(); 
});
