/**
 * @param serviceCallback =
 *            <BR> { <BR>
 *            onSuccess : // associate callback for success service exection,
 *            <BR>
 *            onBusinessFailure : // associate callback for service business
 *            failure, <BR>
 *            onError : // associate callback for general runtime error <BR> };
 * 
 * 
 * @author Sandeep@ignistech.com
 */
Tp.service.GeneralService = {

	/**
	 * Get Countries available.
	 * 
	 * @param serviceInput =
	 *            <BR> { <BR>
	 *            name : // name of the Project, <BR>
	 *            description : // description, <BR>
	 *            jrfId : // job requirement id <BR> };
	 * 
	 * 
	 */
	getCountries : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("COUNTRY", null, serviceCallback);
	},

	getNationalities : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("NATIONALITY", null, serviceCallback);
	},

	getStates : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("STATES", null, serviceCallback);
	},

	getIndustryTypes : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("INDUSTRYTYPE", null, serviceCallback);
	},
	getQualificationList : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("ACADEMICQUALIFICATION", null,
				serviceCallback);
	},
	getEducationQualificationList : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("QUALIFICATION", null, serviceCallback);
	},
	getDesignations : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("DESIGNATION", null, serviceCallback);
	},
	getFunctionalArea : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("FUNCTIONALAREA", null, serviceCallback);
	},
	getWorkTypes : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("WORKTYPE", null, serviceCallback);
	},
	getQualifications : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("QUALIFICATION", null, serviceCallback);
	},
	getInstitutes : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("ACTIVEINSTITUTE", null, serviceCallback);
	},
	getTpos : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("TPO", null, serviceCallback);
	},
	getSpecializations : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("ACADEMICSPECIALIZATION", null,
				serviceCallback);
	},

	getCities : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("CITIES", null, serviceCallback);
	},
	getCompanies : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("COMPANY", null, serviceCallback);
	},

	getUniversities : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("UNIVERSITY", null, serviceCallback);
	},

	getTechnicalSkill : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("TECHNICALSKILLMASTER", null,
				serviceCallback);
	},

	getTechnicallSkillLevel : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("TECHNICALSKILLLEVEL", null,
				serviceCallback);
	},

	getCurricularActivity : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("ACTIVITYOUTCOME", null, serviceCallback);
	},

	getCurricularParticipation : function(serviceInput, serviceCallback) {
		this.standardServiceRequest("ACTIVITYPARTICIPATION", null,
				serviceCallback);
	},

	standardServiceRequest : function(entityType, parameters, serviceCallback) {

		var requestParamAssembler = new Tp.core.RequestParamAssembler();

		requestParamAssembler.assembleString("entityType", entityType);
		if (parameters != null) {
			requestParamAssembler.assembleListAsParam(parameters, "parameters");
		}

		var config = {

			context :null,
			actionId :"QueryEntitiesAction",
			parameters :requestParamAssembler,
			onSuccess : function(result) {
				serviceCallback.onSuccess(result);
			},
			onBusinessFailure : function(result) {
				serviceCallback.onBusinessFailure(result);
			},
			onError : function() {
				//alert("Unknown error at server.....");
			}
		};

		var talentPortalServer = new Tp.core.TalentPortalServer(config);
		talentPortalServer.request();
	}
}

