/**
 * Entered location is invalid
 */
function expLocationError() {
	jQuery('#frm-main-experience-location-error').show();
	jQuery('#frm-main-experience-location-error').prev('p').hide();
}

/**
 * Cancel event
 */
var onExperienceFormCancel = function(event) {
   jQuery('#lnkShowExperienceForm').show();
   jQuery('#pnlExperienceAdd > div').remove();
   jQuery('#pnlExperienceAdd').hide();
   jQuery('#pnlExperienceIntro').show();
};

/**
 * Experience form loaded
 */
var onExperienceFormLoaded = function(req, stat, data) {
	onEducationFromCancel();
	jQuery('#lnkShowExperienceForm').hide();
	jQuery('#pnlExperienceIntro').hide();
	jQuery('#pnlExperienceAdd').show();
	jQuery('#lnkExperienceFormLoadCancel').attr('href','#').click(onExperienceFormCancel);
	jQuery('#frm-main-experience .warning').hide();
	initExperienceFormAJAXHandlers();
};

/**
 * Edit experience event
 */
var experienceEditLinkBind = function(event) {
	$experienceId = parseInt(event.target.id);
	if ($experienceId > 0) {
		jQuery(event.target).mrAjax({
			bind: 'none',
			data: {
				handler: 'AJAX_JSON_UserProfileManager',
				__callHandler: 'loadAddExperienceForm',
				currentExperienceId : $experienceId
			},
			callback: onExperienceFormLoaded
		});
	}
	return false;
};

/**
 * Experience saved event
 */
var onExperienceDataSaved = function(req, stat, data) {
	if (stat.Response) {
		onExperienceFormCancel();
		jQuery('.edit-experience').click(experienceEditLinkBind);
	}
};

/**
 * Delete experience callback
 */
var onExperienceDeleted = function(event) {
	onExperienceFormCancel();
	/**
	 * Init edit handlers
	 */
	jQuery('.edit-experience').click(experienceEditLinkBind);
};

/**
 * Init handlers for loaded form
 */
var initExperienceFormAJAXHandlers = function() {
	/**
	 * Save experience data
	 */
	jQuery('#btnSaveExperiencePosition').click(function(event) {
		if (!validateExperienceForm()) {
			return false;
		}
		var $this = jQuery(this);
		$this.mrAjax({
			bind: 'none',
			data: {
				handler:                  'AJAX_JSON_UserProfileManager',
				__callHandler:            'saveExperienceData',
				currentExperienceId:      new Number(jQuery('#currentExperienceId').val()),
				txtCompanyName:           jQuery('#txtCompanyName').val(),
				cityId:                   jQuery('#location_id').val(),
				cityName:                 jQuery('#locationJQ').val(),
				ddlExperienceIndustry:    jQuery('#ddlExperienceIndustry').val(),
				ddlExperienceType:        jQuery('#ddlExperienceType').val(),
				ddlExperienceSize:        jQuery('#ddlExperienceSize').val(),
				txtExperienceTitle:       jQuery('#txtExperienceTitle').val(),
				ddlExperienceYearFrom:    jQuery('#ddlExperienceYearFrom').val(),
				ddlExperienceMonthFrom:   jQuery('#ddlExperienceMonthFrom').val(),
				ddlExperienceYearTo:      jQuery('#ddlExperienceYearTo').val(),
				ddlExperienceMonthTo:     jQuery('#ddlExperienceMonthTo').val(),
				chkbCurrentlyHold:        jQuery('#chkbCurrentlyHold').attr('checked') ? 1 : 0,
				txtExperienceDescription: jQuery('#txtExperienceDescription').val()
			},
			callback: onExperienceDataSaved
		});
	});

	/**
	 * Initializing delete experience event
	 */
	jQuery('#lnkDeleteExperienceRecord').click(function(event) {
		if (!confirm('DELETE_JOB'.translate())) {
			return false;
		}
		var experienceId = jQuery('#currentExperienceId').val();
		if (parseInt(experienceId) <=0 ) {
			return false;
		}
		var $this = jQuery(this);
		jQuery(this).attr('href','#');
		$this.mrAjax({
			bind: 'none',
			data: {
				handler:       'AJAX_JSON_UserProfileManager',
				__callHandler: 'deleteExperienceData',
				recordId:      experienceId
			},
			callback: onExperienceDeleted
		});
	});

	Location.defaultAcParams.width = 291;
	jQuery(Location.init);

	/**
	 * Add comment click
	 */
	jQuery('#lnkAddCommExp .moreLink').click(function(event) {
		jQuery('#AddCommExp').show();
		jQuery('#lnkAddCommExp').hide();
	});

	/**
	 * Location link
	 */
	jQuery('#exLocationLink .moreLink').click(function(event) {
		jQuery('#exLocation').show();
		jQuery('#exLocationLink').hide();
	});
};

/**
 * Validate experience form
 */
var validateExperienceForm = function() {
	jQuery('#frm-main-experience .warning').hide();
	jQuery('#frm-main-experience .warning').prev('p').show();

	isValid = true;

	if (!jQuery('#location_id').val() || !jQuery('#locationJQ').val()) {
		expLocationError();
		isValid = false;
	}

	if (!jQuery('#txtCompanyName').val()) {
		jQuery('#frm-main-experience-company-error').show();
		jQuery('#frm-main-experience-company-error').prev('p').hide();
		isValid = false;
	}

	if (parseInt(jQuery('#ddlExperienceIndustry').val()) <= 0) {
		jQuery('#frm-main-experience-industry-error').show();
		jQuery('#frm-main-experience-industry-error').prev('p').hide();
		isValid = false;
	}

	if (parseInt(jQuery('#ddlExperienceType').val()) <= 0) {
		jQuery('#frm-main-experience-type-error').show();
		jQuery('#frm-main-experience-type-error').prev('p').hide();
		isValid = false;
	}

	if (parseInt(jQuery('#ddlExperienceSize').val()) <= 0) {
		jQuery('#frm-main-experience-size-error').show();
		jQuery('#frm-main-experience-size-error').prev('p').hide();
		isValid = false;
	}

	if (!jQuery('#txtExperienceTitle').val()) {
		jQuery('#frm-main-experience-title-error').show();
		jQuery('#frm-main-experience-title-error').prev('p').hide();
		isValid = false;
	}

	isPeriodValid = true;
	yearFrom = parseInt(jQuery('#ddlExperienceYearFrom').val());
	monthFrom = parseInt(jQuery('#ddlExperienceMonthFrom').val());
	if (yearFrom <= 0 || monthFrom <= 0) {
		isPeriodValid = false;
	}
	if (!jQuery('#chkbCurrentlyHold').attr('checked')) {
		yearTo = parseInt(jQuery('#ddlExperienceYearTo').val());
		monthTo = parseInt(jQuery('#ddlExperienceMonthTo').val());
		if (yearTo <= 0 || monthTo <= 0) {
			isPeriodValid = false;
		}
		if (isPeriodValid) {
			if (yearFrom > yearTo) {
				isPeriodValid = false;
			}
			else if (yearFrom == yearTo	&& monthFrom > monthTo) {
				isPeriodValid = false;
			}
		}
	}
	if (!isPeriodValid ) {
		jQuery('#frm-main-experience-period-error').show();
		jQuery('#frm-main-experience-period-error').prev('p').hide();
		isValid = false;
	}

	return isValid;
};

jQuery(function(){
	jQuery('.edit-experience').click(experienceEditLinkBind);

	/**
	 * Linking onClick event handler
	 */
	jQuery('#lnkShowExperienceForm').mrAjax({
		bind: 'click',
		data: {
			handler:       'AJAX_JSON_UserProfileManager',
			__callHandler: 'loadAddExperienceForm'
		},
		callback: onExperienceFormLoaded
	});

	jQuery('#lnkExperienceViewAccess').click(function(){		
		jQuery('#divExperienceViewAccessLink').addClass('hidden'); 
		jQuery('#divExperienceViewAccessForm').removeClass('hidden'); 
	});
});