/************************************
 * Name: StyleEditor
 * Version: 0.1
 * Date: 2007-8-9
 * Author: ahong2004@gmail.com
 * Company: UASIT
 * Require prototype.js 1.5.1
************************************/

Object.extend(Position, {
	getViewportHeight: function(){
		return document.documentElement.clientHeight;
	},
	getViewportWidth:  function(){
		return document.documentElement.clientWidth;
	},
	getScrollTop: function(){
		return document.documentElement.scrollTop;
	},
	getScrollLeft: function(){
		return document.documentElement.scrollLeft;
	}
});

/********************************************/


var SE_js_path = $("SE_js").src;
SE_js_path = SE_js_path.substring(0, SE_js_path.indexOf("styleEditor/"));
var jsString = '<scr' + 'ipt type="text/javascript" src="' + SE_js_path + 'styleEditor/StylePanel.js"></scr' + 'ipt>' + 
				'<scr' + 'ipt type="text/javascript" src="' + SE_js_path + 'styleEditor/StyleCompo.js"></scr' + 'ipt>' +
				'<scr' + 'ipt type="text/javascript" src="' + SE_js_path + 'styleEditor/ColorPanel.js"></scr' + 'ipt>' +
				'<scr' + 'ipt type="text/javascript" src="' + SE_js_path + 'styleEditor/SignBorder.js"></scr' + 'ipt>' +
				'<scr' + 'ipt type="text/javascript" src="' + SE_js_path + 'styleEditor/StyledElem.js"></scr' + 'ipt>';

document.write(jsString);

var StyleEditor = Class.create();
Object.extend(StyleEditor, {
	create: function(){
		if(!StyleEditor.SE){
			StyleEditor.SE = new StyleEditor();
		}
	},
	enablePropsGrades : {
		"1":	["backgroundColor", "backgroundImage","backgroundRepeat","color"],
		"2":	["backgroundColor", "backgroundImage","backgroundRepeat"],
		"3":	["backgroundColor", "backgroundImage","backgroundRepeat","color","width","height","paddingTop","paddingBottom","paddingLeft","paddingRight"],
		"4":	["backgroundColor", "backgroundImage","backgroundRepeat","a","a:visited","a:hover"],
		"5":	["a","a:visited","a:hover"],
		"6":	["backgroundColor", "backgroundImage","backgroundRepeat","color","borderColor"],
		"7":	["color","borderColor"],
		"8":	["backgroundColor", "backgroundImage","backgroundRepeat","color","a","a:visited","a:hover"]
		},
	styledElemOid : -1,
	currentElem : null,
	ColorHex : ['00','33','66','99','CC','FF'],
	SpColorHex : ['FF0000','00FF00','0000FF','FFFF00','00FFFF','FF00FF'],
	currentColorPanel : null,
	currentBgImageUrl : "",
	tempCss : "",
	styledElemsH : null,
	cssSelectorArr: [],
	flagname : "",
	resultH: null,
	
	dealLinkCssSelector: function(cssSelector, name){
		var linkCssSelector = "";
		if(cssSelector == "body"){
			linkCssSelector = name;
		}else if(cssSelector.indexOf("#m_") != -1){
			if(name == "a"){
				linkCssSelector = "#index #m_index a, #intro #m_intro a, #game #m_game a, #member #m_member a, #caller #m_caller a, #corpus #m_corpus a, #album #m_album a, #event #m_event a, #forum #m_forum a, #udkp #m_udkp a";
			}
			if(name == "a:visited"){
				linkCssSelector = "#index #m_index a:visited, #intro #m_intro a:visited, #game #m_game a:visited, #member #m_member a:visited, #caller #m_caller a:visited, #corpus #m_corpus a:visited, #album #m_album a:visited, #event #m_event a:visited, #forum #m_forum a:visited, #udkp #m_udkp a:visited";
			}
			if(name == "a:hover"){
				linkCssSelector = "#index #m_index a:hover, #intro #m_intro a:hover, #game #m_game a:hover, #member #m_member a:hover, #caller #m_caller a:hover, #corpus #m_corpus a:hover, #album #m_album a:hover, #event #m_event a:hover, #forum #m_forum a:hover, #udkp #m_udkp a:hover";
			}
		}else{
			linkCssSelector = cssSelector + name.substring(1);
		}
		return linkCssSelector;
	}
});

StyleEditor.prototype = {
	initialize: function(){
		StyleEditor.SE = this;
		
		this.panel = new StyleEditor.StylePanel();
		this.propNameArr = this.panel.getPropNameArr();
		this.moverSigner = new StyleEditor.SignBorder("mover");
		this.clickSigner = new StyleEditor.SignBorder("click");
		
		this.startElem = null;
		
		this.start();
		
		StyleEditor.tempCss = $("SE_tempCss");
		StyleEditor.result = {};
	},
	getStyledElems: function(){
		var all = $("out").getElementsByTagName("*");
		var elems = [];
		if(document.body.getAttribute("styled")){
			var bodyElem = $(document.body);
			var bodyStyledElem = new StyleEditor.StyledElem(bodyElem, bodyElem.getAttribute("styled"), this);
//			bodyStyledElem.activeSign();	
			elems["body"] = [];
			elems["body"].push(bodyStyledElem);
			StyleEditor.cssSelectorArr.push("body");
			this.startElem = bodyStyledElem;
		}
		for(var i=0; i<all.length; i++){
			var enablePropsGrade = all[i].getAttribute("styled");
			if(enablePropsGrade){
				var styledElem = new StyleEditor.StyledElem(all[i], enablePropsGrade, this);
				styledElem.activeSign();

				if(elems[styledElem.cssSelector] == null){
					elems[styledElem.cssSelector] = [];
					StyleEditor.cssSelectorArr.push(styledElem.cssSelector);
				}
				elems[styledElem.cssSelector].push(styledElem);
			}
		}
		return elems;
	},
	
	start: function(){
		StyleEditor.styledElemsH = this.getStyledElems();
		if(this.startElem != null){
			this.setStartElem();
		}else{
			this.panel.disnablePanel();
		}
		this.maskOriginalBehave();
		Loading.hiddenLoading();
	},
	
	setStartElem: function(){
		this.startElem.getStyleInfo();
		this.panel.setCompo(this.startElem);
		this.panel.setPanelNameInfo("Global style");
		
		StyleEditor.currentElem = this.startElem;		
		
		this.moverSigner.erase();
		this.clickSigner.erase();
	},
	
	maskOriginalBehave: function(){
		var links = document.body.getElementsByTagName("a");
		for(var i=0; i<links.length; i++){
			links[i].onclick = function(){return false;}
		}
	}
	
}


/****************************************************/


