/*****************************
--- multilayer v1.2
--- Author: Maxim Bandurko.
*****************************/

(function($){

	$.fn.extend({
 		
 		multilayer: function(options) {
			
			var defaults = {
				path : 'assets/xml/',
				file : 'multilayer.xml'
			};
			
			var options =  $.extend(defaults, options); 
			
			_loadXML(options);
			
    	}

	});
	
	function _loadXML(options){
		//alert(options.path + options.file);	
		
		$.ajax({
			url: options.path + options.file,
			dataType: (jQuery.browser.msie) ? 'text' : 'text/xml',
			
			success: function(xmlData){			
				//alert('ddd');
				var data;
				if( window.ActiveXObject && window.GetObject) {
						data = new ActiveXObject( 'Microsoft.XMLDOM');
						data.async = false;
						data.loadXML(xmlData);
					}
					if( window.DOMParser ){
						
						data = new DOMParser().parseFromString( xmlData, 'text/xml' );
						
					}
				proceedXML(data);
			}
			
			
		});
		
	}
	
	function proceedXML(data){
		
		//alert(data);
		
		var selector;
		
		$('selector', data).each(function(){
									   
			//alert('Found');
			
			// src attribute is not empty and exists
			if(!$.string($(this).attr('src')).blank() && $(this).attr('src') != undefined){
				
				selector = $(this).attr('src');
				
				//alert(selector);
				
				$('layer', this).each(function(){
					
					switch($(this).attr('type')){
						case "image":
						  proceedIMAGE(selector, this);
						  break;
						case "empty":
						  proceedEMPTY(selector, this);
						  break;
						case "flash":
						  break;
						default:
						  proceedIMAGE(selector, this);
					}
											   
				});
				
			}
			
			//alert($(selector).html());
			
		});
		
		multilayerReady = true;
		checkDocument();
	}
	
	
	function proceedIMAGE(selector, obj){
		
		var cssStr = '';
		var last = proceedLAYER(selector);
		var _siteRoot = siteRoot.replace(/:/g,'\\:');
		
		if(!$.string($(obj).attr('src')).blank() && $(obj).attr('src') != undefined){	
			cssStr = "background:url(\""+_siteRoot+$(obj).attr('src')+"\");";
		}
		
		var cssObj = proceedSTYLES(obj, cssStr);
		
		if(cssObj){
			$(last).css(cssObj);
		}
		
		proceedCLASSES(obj, last);
		
	}
	
	function proceedEMPTY(selector, obj){
		
		
		
		var cssStr = '';
		var last = proceedLAYER(selector);
		
		var cssObj = proceedSTYLES(obj, cssStr);
		
		if(cssObj){
			$(last).css(cssObj);
		}
		
		proceedCLASSES(obj, last);
	}
	
	function proceedCLASSES(obj, last){
		
		if(!$.string($(obj).attr('class')).blank() && $(obj).attr('class') != undefined){
			$(last).addClass($(obj).attr('class'));
		}
		
		if(!$.string($(obj).attr('id')).blank() && $(obj).attr('id') != undefined){
			$(last).attr('id', $(obj).attr('id'));
		}
	}
	
	function proceedSTYLES(obj, cssStr){
		
		if(!$.string($(obj).attr('style')).blank() && $(obj).attr('style') != undefined){
			cssStr += $(obj).attr('style');
		}
		
		
		if($.string(cssStr).endsWith(';')){
			cssStr = cssStr.slice(0, (cssStr.length-1));
		}
		
		
		cssStr = cssStr.replace(/;/g,"','");
		cssStr = cssStr.replace(/:/g,"':'");
		cssStr = cssStr.replace(/\\':'/g,":");
		
		cssStr = cssStr.replace(/ '/g,"'");
		cssStr = cssStr.replace(/' /g,"'");
		
		if(cssStr != ''){
			cssStr = "{'"+cssStr+"'}";
			var cssObj = $.string(cssStr).evalJSON();
		}else{
			var cssObj = false;
		}

		
		return cssObj;
	}
	
	function checkLAYERS(selector){
		// _multilayer class exists already
		if($('._multilayer:last', selector).length > 0){
			return true;
		}else{
			return false;
		}
	}
	
	function proceedLAYER(selector){
		
		if(checkLAYERS(selector)){
			selector = $('._multilayer:last', selector);
		}
		
		//$(selector).html('<div class="_multilayer">'+$(selector).html()+'</div>');
		$(selector).wrapInner('<div class="_multilayer"></div>');
		return $('._multilayer:last', selector);
	}
	
	

		
})(jQuery);