Your IP : 216.73.217.112


Current Path : /home/zieirix/www/plugins/system/jaosmap/assets/
Upload File :
Current File : /home/zieirix/www/plugins/system/jaosmap/assets/jagencode.js

(function($) {
	JAElementGenCode = function() {
		this.code = '{jaosmap ';
		this.prefix = 'jform[params]';
		this.objText = '[name="jform[params][code_container]"]';
		this.objCheckboxes = this.prefix + '[list_params][]';
		this.mapPreviewId = 'jaMapPreview';
		this.form = document.adminForm;
		
		this.mapHolder = 'map-preview-container';
		this.mapId = 'ja-widget-map';
		this.objMap = null;
		this.aUserSetting = {};
		//
		this.scanItem();
		this.getUserSetting();
	}
	
	JAElementGenCode.prototype.getUserSetting = function() {
		this.aUserSetting = {};
		//get user setting
		var sConfig = $(this.objText).val();
		settings = sConfig.trim();

		settings = settings.replace('{jaosmap ', '{');
		settings = settings.replace('{/jaosmap}', '');
		settings = settings.replace(/([a-z0-9_]+)=/g, ', "$1":');
		settings = settings.replace(/^\{,/, '{');
		settings = JSON.decode(settings);
		this.aUserSetting = settings ? settings : {};
	}

	JAElementGenCode.prototype.getFormData = function() {
		var frmData = $(this.form).serializeObject();

		var data = {};
		for(var property in frmData) {
			var prop = property;
			if(prop.indexOf(this.prefix) == 0) {
				prop = prop.substr(this.prefix.length);
				prop = prop.split(/\]\[/i);//E.g:jform[params][locations][location][0]

				var cdata = data;
				for(var i=0; i<prop.length; i++) {
					var sp = prop[i].replace(/[\[\]]+/g, '');

					if(i<prop.length - 1) {
						if(typeof(cdata[sp]) == 'undefined') {
							cdata[sp] = {};
						}

						cdata = cdata[sp];
					} else {
						cdata[sp] = frmData[property];
					}
				}

			}
		}
		return data;
	}
	
	JAElementGenCode.prototype.genCode = function() {
		this.scanItem();
		this.getUserSetting();
		//
		var str = this.code,
			data = this.getFormData();
		for(var i=0; i < this.form.elements[this.objCheckboxes].length; i++) {
			var item = this.form.elements[this.objCheckboxes][i];
			if(item.checked && !item.disabled) {
				var e = item.value,
					value = '';

				if(typeof(data[e]) != 'undefined') {
					value = data[e];
					if(typeof(value) == 'object') {
						value = JSON.encode(value);
					}
				}

				//check user setting
				if(this.aUserSetting[item.value]) {
					value = this.aUserSetting[item.value];
				}
				
				str += item.value + "='" + this.addslashes(String(value)) + "' ";
			}
		}
		str += '}{/jaosmap}';
		
		$(this.objText).val(str);
		
		//reset user setting
		this.getUserSetting();
	};
	/**
	 * Scan for check item is enable or diabled
	*/
	JAElementGenCode.prototype.scanItem = function() {
		var i;
		for(i=0; i < this.form.elements[this.objCheckboxes].length; i++) {
			var item = this.form.elements[this.objCheckboxes][i];
			if(item.alt) {
				var disabled = (!item.checked || item.disabled) ? true : false;
				this.setChildren(item.alt, disabled);
			}
		}
	};
	
	JAElementGenCode.prototype.setChildren = function(children, disabled) {
		aChild = children.split(',');
		var i;
		var j;
		for(j=0; j<aChild.length; j++) {
			for(i=0; i < this.form.elements[this.objCheckboxes].length; i++) {
				var item = this.form.elements[this.objCheckboxes][i];
				if(item.value == aChild[j]) {
					item.disabled = disabled;
					var label = item.id + '-label';
					if($('#'+label)) {
						if(disabled)
							$('#'+label).addClass('item_disable');
						else
							$('#'+label).removeClass('item_disable');
					}
					break;
				}
			}
			
		}
	};
	
	JAElementGenCode.prototype.previewMap = function() {
		var aParams = this.getFormData();
		this.getUserSetting();
		
		for(key in this.aUserSetting) {
			aParams[key] = this.aUserSetting[key];
		}
		
		aParams['context_menu'] = 0;
		aParams["map_width"] = parseInt(aParams["map_width"]);
		aParams["map_height"] = parseInt(aParams["map_height"]);
		aParams["maptype_control_display"] = parseInt(aParams["maptype_control_display"]);
		aParams["toolbar_control_display"] = parseInt(aParams["toolbar_control_display"]);
		aParams["display_scale"] = parseInt(aParams["display_scale"]);
		aParams["display_overview"] = parseInt(aParams["display_overview"]);
		aParams["zoom"] = parseInt(aParams["zoom"]);
	
		this.createMap(aParams);
	};
	
	
	JAElementGenCode.prototype.createMap = function(aParams){
		var map_container = this.mapId + '-container';
		var $container = $('#'+map_container);
		$container.height(aParams.map_height);
		$('.tingle-modal-box').width(aParams.map_width);

		var map = new JAOSMAP;
		map.render(map_container, aParams);
	};
	
	JAElementGenCode.prototype.addslashes = function(str) {
		//str=str.replace(/\\/g,'\\\\');
		str=str.replace(/\'/g,'\\\'');
		//str=str.replace(/\"/g,'\\"');
		//str=str.replace(/\0/g,'\\0');
		return str;
	};
	
	JAElementGenCode.prototype.stripslashes = function(str) {
		str=str.replace(/\\'/g,'\'');
		//str=str.replace(/\\"/g,'"');
		//str=str.replace(/\\0/g,'\0');
		//str=str.replace(/\\\\/g,'\\');
		return str;
	};

	window.CopyToClipboard = function(obj)
	{
		$('[name="'+obj+'"]').focus().select();
		document.execCommand("Copy");
	}

	$.fn.serializeObject = function(){
	var obj = {};

	$.each( this.serializeArray(), function(i,o){
		var n = o.name,
		v = o.value;

		obj[n] = obj[n] === undefined ? v
			: $.isArray( obj[n] ) ? obj[n].concat( v )
			: [ obj[n], v ];
		});

		return obj;
	};


	$(document).ready(function(){
		var objGencode = new JAElementGenCode();
		var i;
		for(i=0; i < objGencode.form.elements[objGencode.objCheckboxes].length; i++) {
			$(objGencode.form.elements[objGencode.objCheckboxes][i]).on('click', function() {
				objGencode.genCode();
			});
		}

		$('#'+objGencode.mapPreviewId).on('click', function(e) {
			e.preventDefault();
			var modal = new tingle.modal({
				stickyFooter: false,
				closeMethods: ['overlay', 'button', 'escape']
			});

			modal.setContent('<div id="ja-widget-map-container"></div>');
			modal.open();
			
			objGencode.previewMap();
		});
	});
})(jQuery);