//-------------------------------------------------------------
// © Michal Michna - 15.4.2009 - 1.0
//-------------------------------------------------------------

//alert("http://jitom.localhost/data/color_schemes/evolution-v/");

var select_color;
var select_color_panel;
var url;
var existing_layers = new Array("_lines_layer","_tip_layer","_middle_layer","_center_layer","_fuselage_layer","_flaps_layer","_shadows_layer","_shine_layer");
var layer_tasks = new Array();
var images_layers = new Array();
var default_colors = new Array (0,0,2,7,12);
var default_view = 2;
var name;
var prog;

//var up_colors = new Array (0,0,0,0,0);
//var down_colors = new Array (0,0,0,0,0);
//var select_view;

function inicializeCustomColorSchemes(scheme_name, link){
	name = scheme_name;
	url = link;
	select_color = document.getElementById("default_color");
	select_color_panel = document.getElementById("default_color_panel");
	select_color_panel.style.border = "3px gray solid";
	
	var head = document.getElementsByTagName('head')[0];
	var style = document.createElement('style');
	style.setAttribute("type", "text/css");
	
	var aRule ="";
	var views = document.getElementById("color_views");
	view = views.firstChild;
	do {
		if(view.firstChild == null) continue;
		value = view.firstChild.value;
		//alert(view.firstChild);
		//alert(value);
		new_rule =  "#custom_color_sheme ul.views li.view_"+value+" { background: url('"+link+value+"/normal.png'); }\n" +
					"#custom_color_sheme ul.views li.view_"+value+":hover { background: url('"+link+value+"/active.png'); }\n";
		aRule = aRule + new_rule;
		//.styleSheets[0].insertRule(aRule,0);
	} while(view = view.nextSibling);
	
	style.setAttribute("type", "text/css");
	if (style.styleSheet) {   	// frakkin IE
		style.styleSheet.cssText = aRule;
	} else {                	// the world
	    var tt1 = document.createTextNode(aRule);
		style.appendChild(tt1);
	}
	head.appendChild(style);

	layers = document.getElementById("color_schemes_layers");
	layer = layers.firstChild;
	
	prog = new ProgressBar(document.getElementById("_color_scheme_progressbar"));
	prog.show();
	var code_status = document.getElementById("color_code_info");
	codes = code_status.getElementsByTagName('span');
	codes.item(0).innerHTML = name;
	do {
		if(layer.tagName == 'DIV'){
			img = layer.firstChild;
			if(img.tagName == 'IMG'){
				//img.src = link+img.src;
				//alert(img.src);
				old_img = layer.removeChild(img);
				var new_img = new Image(); 	
				var action = layer.title;
				prog.addTask(action,(0.2/existing_layers.length));
				new_img.onload = function () { prog.addTask("default color scheme",(0.8/existing_layers.length)); };
				
				//new_img.setAttribute("onLoad","alert(\"load\");");
				//new_img.onLoad = prog.addTask(layer.title,1/existing_layers.length);
				//new_img. .onLoad = function () { alert("load"); };
				
				var new_img_src = old_img.src;
				var color_panels = document.getElementById("color_panel").getElementsByTagName('LI');

				if(new_img_src.match(/(\d{1}\.png)$/)){
					layer_number = new_img_src.match(/(\d{1})\/\d{1,2}\.png$/)[1];
					new_img_src = link + default_view + "/" + layer_number + "/" + default_colors[layer_number] + ".png";
					//alert("layer " + layer.title + " " + new_img_src);
					panel = color_panels.item(layer_number-1);
					panel.firstChild.className = "color_" + default_colors[layer_number].toString();
					panel.firstChild.style.border = "3px white solid";
					//alert(codes.item(2).innerHTML);
					item_val = parseInt(new_img_src.match(/(\d{1})\/\d{1,2}\.png$/)[1]);
					codes.item(item_val).innerHTML = default_colors[layer_number].toString().replace(/^(\d{1})$/, "0" + "$1");
				}
				else{
					new_img_src = link + default_view + "/" + new_img_src.match(/(add\/.*)$/)[1];
				}
				new_img.setAttribute("src", new_img_src);
				layer.appendChild(new_img);
			}
		}	
	} while(layer = layer.nextSibling);
	prog.startProgress();	
}

function hCustomColorScheme(Event) {
	var object = getTarget(Event);
	// osetreni barevne palety
	if(isChildElement(object,"color_palete") && (object.nodeName == 'LI' || object.nodeName == 'DIV')){
		if(object.nodeName == 'DIV'){
			object = object.parentNode;
		}
		select_color = object;
		select_color_panel.className = object.className;
		select_color_panel.value = select_color.value;
		layer = document.getElementById(select_color_panel.firstChild.value);
		changeNumberLayer(layer,select_color.value);
	}
	// osetreni panelu zvolenych barev
	if(isChildElement(object,"color_panel")){
		if(object.nodeName == 'LI'){
			object = object.firstChild;
		}
		if(select_color_panel != null){
			select_color_panel.style.border = "3px white solid";
		}
		object.style.border = "3px gray solid";
		
		//layer = document.getElementById(object.firstChild.value);
		//changeNumberLayer(layer,select_color.value);
		
		select_color_panel = object;
	}
	// osetreni nabidky voleb
	if(isChildElement(object,"schema_options") && object.nodeName == 'INPUT'){
		layer = document.getElementById(object.value);
		if(layer != null){
			if(object.checked){
				layer.style.display = "block";
				
			}
			else {
				layer.style.display = "none";
			}
		}
	}
	if(isChildElement(object,"color_views") && object.nodeName == 'LI'){
		changeLayer(object.firstChild.value);
	}
}

// zmeni vykreslovanou vrstvu
function changeLayer(number){
	//prog = document.getElementById("_progress_load");
	//prog.style.background = "transparent url(../../data/color_schemes/progress.gif) repeat scroll 0% 0%";
	prog = new ProgressBar(document.getElementById("_color_scheme_progressbar"));
	prog.show();
	
	for( var layer in existing_layers ){	
		element = document.getElementById(existing_layers[layer]);
		if(element != null && element.tagName == 'DIV'){
			img = element.firstChild;
			if(img.tagName == 'IMG'){
				old_layer = element.removeChild(img);
				//alert(element.firstChild);
				var new_layer = new Image(); 
				images_layers.push(element);
				prog.addTask(element.title,(0.2/existing_layers.length));
				new_layer.onload = function () { prog.addTask("color scheme",(0.8/existing_layers.length)); };
				//new_layer.setAttribute("onLoad","prog.addTask('"+element.title+"',"+(1/existing_layers.length)+");");
				var new_layer_src = old_layer.src;
				new_layer_src = new_layer_src.replace(/(\/)(\d{1})(\/((add)|(\d{1}))\/)/,"$1"+number+"$3");
				new_layer.setAttribute("src", new_layer_src);
				//new_layer.onLoad = prog.addTask(element.title,1/existing_layers.length);
				element.appendChild(new_layer);
			}
		}
	}
	select_view = number;
	prog.startProgress();
}

/*function height(){
	for(var img in images_layers){
		alert(images_layers[img].src + " |||| " + document.images[0].length + " |||| " + images_layers[img].complete);
	}
	setTimeout(function() { height(); } ,1000);
}*/

// zmeni barvu ve vrstve
function changeNumberLayer(LayerElement, number){
	prog = new ProgressBar(document.getElementById("_color_scheme_progressbar"));
	prog.akceleration_mark = 0.5;
	prog.show();
	
	LayerImage = LayerElement.firstChild;
	var url = LayerImage.src.toString();
	var new_layer = new Image();
	prog.addTask("Select color",0.2);
	new_layer.onload = function () { prog.addTask("Select color",0.8); };
	//new_layer.onLoad = prog.addTask("Select color",0.5);
	new_layer.src = url.replace(/(\d{1}\/\d{1}\/)(\d*)(\.)/,"$1"+number+"$3");
	LayerElement.removeChild(LayerImage);
	LayerElement.appendChild(new_layer);
	
	//LayerElement.src.onLoad = prog.addTask("Select color",1);
	prog.startProgress();
	var code_status = document.getElementById("color_code_info");
	codes = code_status.getElementsByTagName('span');
	codes.item(parseInt(new_layer.src.match(/(\d{1})\/\d{1,2}\.png$/)[1])).innerHTML = number.toString().replace(/^(\d{1})$/, "0" + "$1");
}

// funkce vraci true, pokud element dedi z dane tridy
function inheritFromClass(element, css_style){
	var enum_element = element;
	do {
		if(enum_element.className != null && enum_element.className.match(css_style)){
			return true;
		}
		enum_element = enum_element.parentNode;
	} while (enum_element.nodeName != 'BODY');
	return false;
}

// funkce vraci true pokud je elementem daneho ID
function isChildElement(element,ID){
	var enum_element = element;
	do {
		if(enum_element.id != null && enum_element.parentNode.id == ID){
			return true;
		}
		enum_element = enum_element.parentNode;
	} while (enum_element.nodeName != 'BODY');
	return false;
}
