// Nico Westerdale - 2/2005  - www.iconico.com

// CSS.js

var a = new Array;
var preLoadCSSImg = new Array;
var preChip = new Array;
var strCSSSaved;
var objSerializer;

//on load this is called to set things up
function startCSS() {
	preChip[0] = new Image();
	preChip[0].src = 'colorpop/colorpop_icon.gif';
	preChip[1] = new Image();
	preChip[1].src = 'colorpop/blank.gif';
	preLoadCSSImg[0] = new Image();											//preview images
	preLoadCSSImg[0].src = 'img/scrollbar-arrow-color.gif';
	preLoadCSSImg[1] = new Image();
	preLoadCSSImg[1].src = 'img/scrollbar-3dlight-color.gif';
	preLoadCSSImg[2] = new Image();
	preLoadCSSImg[2].src = 'img/scrollbar-darkshadow-color.gif';
	preLoadCSSImg[3] = new Image();
	preLoadCSSImg[3].src = 'img/scrollbar-face-color.gif';
	preLoadCSSImg[4] = new Image();
	preLoadCSSImg[4].src = 'img/scrollbar-highlight-color.gif';
	preLoadCSSImg[5] = new Image();
	preLoadCSSImg[5].src = 'img/scrollbar-shadow-color.gif';
	preLoadCSSImg[6] = new Image();
	preLoadCSSImg[6].src = 'img/scrollbar-track-color.gif';
	objSerializer = new JSSerializer();
	var strCSSData = getPersist('CSSArray');
	if (strCSSData != 'null') {
		eval(strCSSData);		//recreates array data
	} else {
		setDefaultStyles();		//no saved info
	}
	fillStyles();
	setInterval("doCSSScrollbar();", 300);
}

//continually called to update CSS string, preview and chips
function doCSSScrollbar(ForceUpdate) {
	var strCSS = '';
	var objColl = document.all.tags('Input');
	var intInputOffset = -1;
	var objChip;
	var objSel = document.forms[0]['selStyle'];
	if (objSel) {
		var blnUpdate = false;
		if ((objColl(0)) && (a.length > 0)) {
			for (var i=0; i<objColl.length; i++) {
				if ((objColl(i).type == 'text') && ((objColl(i).name.indexOf('scrollbar') == 0) || (objColl(i).name == "StyleName")) ) {
					if (intInputOffset == -1) intInputOffset = i;		//if first time in then determine the offset for the form elements
					objChip = document.getElementById('img' + objColl(i).name)
					if (objChip) {
						objChip.style.backgroundColor = '';	 //reset chip
						//objChip.src = preChip[0].src;
					}
					if (a[objSel.selectedIndex][i-intInputOffset] != objColl(i).value) blnUpdate = true;
					a[objSel.selectedIndex][i-intInputOffset] = objColl(i).value;		//update data array
					if ((objColl(i).value != '#') && (objColl(i).value != '') && (objColl(i).name != 'StyleName')) {
						strCSS += objColl(i).name + ': #' + objColl(i).value + ';\n';	//add to CSS string
						try {
							//set color Chip value
							if (objChip) {
								if ((objColl(i).value != "") || (objColl(i).value != "#")) {
									objChip.style.backgroundColor = objColl(i).value;
									if (objChip.src.indexOf('colorpop_icon') > 0) {
										objChip.src = preChip[1].src;
									}
								}
							}
						} catch(e) {}
					}
				}
			}
			if (blnUpdate || ForceUpdate) {		//if there is a chenge in the CSS
				if (document.all.txaCSSText) {		//textbox
					document.all.txaCSSText.value = '<style>\nbody {\n' + strCSS + '}\n</style>';
				}
				if (frames['ifrCSSPreview'] && frames['ifrCSSPreview2']) {	//previews
					with (frames['ifrCSSPreview'].document) {
						open();
						write('<style>body {' + strCSS + '}</style><body><div style="width:200px; height:260px"></div></body>');
						close();
					}
					with (frames['ifrCSSPreview2'].document) {
						open();
						write('<style>body {' + strCSS + '}</style><body><div style="width:200px; height:260px"></div></body>');
						close();
					}
				}
			}
		}
	}
}

//copy button
function doCSSCopy() {
	textRange = document.all.txaCSSText.createTextRange();
	textRange.execCommand('RemoveFormat');
	textRange.execCommand('Copy');
}

//dropdown changed, update values
function doUpdateTextboxes() {
	var objSel = document.forms[0]['selStyle'];
	var i = objSel.selectedIndex;
	if (i<0) i = 0;
	if (a.length > 0) {
		document.forms[0]['StyleName'].value = a[i][0];
		document.forms[0]['scrollbar-base-color'].value = a[i][1];
		document.forms[0]['scrollbar-arrow-color'].value = a[i][2];
		document.forms[0]['scrollbar-3dlight-color'].value = a[i][3];
		document.forms[0]['scrollbar-darkshadow-color'].value = a[i][4];
		document.forms[0]['scrollbar-face-color'].value = a[i][5];
		document.forms[0]['scrollbar-highlight-color'].value = a[i][6];
		document.forms[0]['scrollbar-shadow-color'].value = a[i][7];
		document.forms[0]['scrollbar-track-color'].value = a[i][8];
	}
	doCSSScrollbar(true);
}

//fills dropdown with styles
function fillStyles() {
	var objSel = document.forms[0]['selStyle'];
	if (objSel) {
		var intSel = objSel.selectedIndex;
		if (intSel<0) intSel = 0;
		while (objSel.options.length > 0)	//remove all options
			objSel.options[0] = null;
		for (var i=0; i<a.length; i++) {
			var objOption = document.createElement('OPTION');
			objSel.options.add(objOption);
			objOption.innerText = a[i][0];
		}
		objSel.selectedIndex = intSel;
		doUpdateTextboxes();
	}
}

//flashes the scrollbar image, sets name hilight
function doCSSFocus(objTxt) {
	try {
		var objSpn = document.getElementById('spn' + objTxt.name);
		objSpn.style.borderColor = '#4F9ED9';
		objImg = document.images['imgScrollbar'];
		switch (objTxt.name) {
			case 'scrollbar-arrow-color': objImg.src = preLoadCSSImg[0].src; break;
			case 'scrollbar-3dlight-color': objImg.src = preLoadCSSImg[1].src; break;
			case 'scrollbar-darkshadow-color': objImg.src = preLoadCSSImg[2].src; break;
			case 'scrollbar-face-color': objImg.src = preLoadCSSImg[3].src; break;
			case 'scrollbar-highlight-color': objImg.src = preLoadCSSImg[4].src; break;
			case 'scrollbar-shadow-color': objImg.src = preLoadCSSImg[5].src; break;
			case 'scrollbar-track-color': objImg.src = preLoadCSSImg[6].src; break;
		}
	} catch (e) {}
}

//Reset image and hilight
function doResetCSSFocus(objTxt) {
	objImg = document.images['imgScrollbar'];
	objImg.src = 'Img/Scrollbar.gif';
	var objSpn = document.getElementById('spn' + objTxt.name);
	objSpn.style.borderColor = '#ffffff';
}

//Reset button clicked
function doResetButton() {
	var objSel = document.forms[0]['selStyle'];
	setDefaultStyles();
	if (objSel.selectedIndex >= a.length) objSel.selectedIndex = a.length-1;
	fillStyles();
}

//Delete button clicked
function doDeleteStyle() {
	var objSel = document.forms[0]['selStyle'];
	a.splice(objSel.selectedIndex, 1);
	if (objSel.selectedIndex >= a.length) objSel.selectedIndex = a.length-1;
	fillStyles();
	doUpdateTextboxes();
}

//New button clicked
function doNewStyle() {
	var objSel = document.forms[0]['selStyle'];
	a[a.length] = ['New Style', '', '', '', '', '', '', '', ''];
	fillStyles();
	objSel.selectedIndex = a.length-1;
	doUpdateTextboxes();
}

//Serialize CSS Data and save to persist cookie
function storeCSS() {
	objSerializer.Serialize(a);
	setPersist('CSSArray', objSerializer.GetJSString('a'))
}

//Iconico predefined styles
function setDefaultStyles() {
	a = new Array;
	a[0] = ['Blank Style', '', '', '', '', '', '', '', ''];
	a[1] = ['Warm Gray', '', '464646', 'CCCCCC', '999999', 'D4D0C8', 'FFFFFF', 'CCCCCC', 'e6e6e6'];
	a[2] = ['Blue Outline', '', '0066C8', '4F4F82', '4F4F82', 'f4f4f0', 'FFFFFF', 'd0d0d0', 'ffffff'];
	a[3] = ['Cheerleader', '', 'ffffff', '000000', '000000', '003399', 'ff0000', 'ff0000', 'ffffff'];
	a[4] = ['Moody Green', '', '7C8484', '7C8484', '2C3A33', '2C3A33', '2C3A33', '7C8484', '7C9090'];
	a[5] = ['Warm Red', '', 'FFB262', 'FFB262', '660000', '660000', '990000', '660000', ''];
	a[6] = ['Cool Blue', '', '4e658a', '777799', '666677', 'a1b1c3', 'e9e9e9', 'a1b1c3', '9faab8'];
	a[7] = ['Inverse', '', 'ffffff', '000000', '000000', '000000', 'ffffff', 'ffffff', '777777'];
	a[8] = ['Whitewashed', '', '3366ff', 'f0f0ff', '666666', 'f0f8ff', 'ffffff', 'c0c0cc', 'f5f5f5'];
	a[9] = ['Green Light', '', '00C11A', '4F824F', '4F824F', 'f4f4f0', 'ffffff', 'd0d0d0', 'f5f5f5'];
	a[10] = ['Simple Red', '660000', 'ffcc00', '', '', '', '', '', ''];
	a[11] = ['Postmodern', '', '567', 'fff', '', 'ccc', '505050', '', ''];
	a[12] = ['Postmodern Dark', '567', 'fff', '', 'ccc', '505050', '', '', ''];
	removePersist('CSSArray');	//remove any stored data
}