///////////////////////////////////////////////////////////////////////////////
//	Copyright (C) 2001-2005 NeptuneLabs All rights reserved.
//	Persistent parameter value & cookie handling
//	Version 03-nov-2005
//

function getRadioValue(radio){
	for(var i=0; i<radio.length; i++)	{
 			if (radio[i].checked) return radio[i].value;
 		}
}

function setRadioValue(radio, newvalue){
	for(var i=0; i<radio.length; i++)
 			if (radio[i].value == newvalue) {
 				radio[i].checked = true;
 				break;
 			}
}

function getMultiSelect(select){
	var opts = new Array();
	for (var i=0; i < select.options.length; i++) if (select.options[i].selected) opts.push(i);
	return opts.join(",");
}

function getMultiSelectValues(select, joinString){
	var opts = new Array();
	for (var i=0; i < select.options.length; i++) if (select.options[i].selected) opts.push(select.options[i].value);
	return opts.join(joinString);
}

function setMultiSelect(select, opts){
	opts = opts.split(",");
	var len = select.options.length;

	for (var i=0; i < opts.length; i++){
		if (opts[i] < len && opts[i] > -1) select.options[opts[i]].selected = true;
	}
}


function getStorageParameters(ID){

	try{
		if (parent.basefrm.ParameterStorage == null) {
			parent.basefrm.ParameterStorage = new Array();
		}
	}
	catch(e){};

	try{
		if (parent.basefrm.ParameterStorage[ID] == null) {
			parent.basefrm.ParameterStorage[ID] = new Array();
			StorageFromCookie(ID, parent.basefrm.ParameterStorage[ID]);
		}
	}
	catch(e){};

	return parent.basefrm.ParameterStorage[ID];
}


function StoreParameterValues(ID){
	var o,el,state;
	var myform = document[MainFormName];

	getStorageParameters(ID);

	var cookievalue="";

	try {

		for (var i=0; i < myform.elements.length; i++){
			el = myform.elements[i];

			state = null;
			switch (el.type){
				case 'select-one':
					state = el.selectedIndex;
				break;
				case 'select-multiple':
					state = getMultiSelect(el);
				break;
				case 'radio':
					state = getRadioValue(myform[el.name]);
					i += myform[el.name].length-1;
				break;
				case 'checkbox':
					state = el.checked;
				break;
				case 'hidden':
				case 'text':
				case 'textarea':
					state = el.value;
				break;
			}

			if (state != null){
				o = parent.basefrm.ParameterStorage[ID][el.name] = new Array();
				o.type = el.type;
				o.state = state;

				cookievalue += el.type+"."+el.name+"="+escape(state)+";";

			}
		}
	}
	catch(e){};

	try{
		var expireafter = parent.basefrm.getFSICookieExpire();
		if (expireafter > 0) {
			var expiredate = new Date();
			var timevalid = expiredate.getTime() + (expireafter * 24 * 60 * 60 * 1000);
			expiredate.setTime(timevalid);
			document.cookie = "fsi_parameters_"+ID+"="+escape(cookievalue)+";expires="+expiredate.toGMTString();
		}
	}
	catch(e){};
}

function setFSIFormValue(ElementType, el, val){

		try{
			switch (ElementType){
				case 'select-one':
					el.selectedIndex = val;
				break;
				case 'select-multiple':
					setMultiSelect(el, val);
				break;
				case 'radio':
					setRadioValue(el, val);
				break;
				case 'checkbox':
					el.checked = eval(val);
				break;
				case 'hidden':
				case 'text':
				case 'textarea':
					el.value = val;
				break;
			}
		}
		catch(e){}
}

function RestoreParameterValues(ID){
	var o,opt,el,storage;
	var myform = document[MainFormName];

	try{
		var storage = getStorageParameters(ID);
	}
	catch(e){
		return;
	};


	for (o in storage){
		try {
			opt = storage[o];
			el = myform[o];
			if (typeof(el) != 'object') continue;
		}
		catch(e){continue;}

		setFSIFormValue(opt.type, el, opt.state);
	}

	return storage;
}


function ValidateInt(val, defVal, minVal, maxVal){
	if (val=='' || isNaN(val)) val = defVal;
	else{
		if (!isNaN(minVal)) val = Math.max(minVal, val);
		if (!isNaN(maxVal)) val = Math.min(maxVal, val);
	}
	return val;
}


function StorageFromCookie(SectionID, storage){

	if (parent.basefrm.getFSICookieExpire() < 1) return;

	var t = document.cookie.split(";");
	var cookieid = "fsi_parameters_" + SectionID+"=";

	for (var i = 0; i < t.length; i++){

		if (t[i].indexOf(cookieid) != -1){
			var values = t[i].split("=");
			values = unescape(values[1]).split(";");

			for (var j=0; j < values.length; j++){
				var tnv = values[j].split("=");
				if (tnv.length == 2){
					var tn = tnv[0].split(".");

					if (tn[1].length > 0){
						var o = storage[tn[1]] = new Array();
						o.type = tn[0];
						o.state = unescape(tnv[1]);
					}
				}
			}
			break;
		}
	}
}

function FormValueFromString(el, val){
	var ret;

	try{
		switch (el.type){
			case 'select-one':
				for (var i=0;  i < el.options.length; i++) if (el.options[i].text == val) {
					ret = i;
					break;
				}
			break;
			case 'select-multiple':
				ret = new Array();
				var SelectedOptions  = val.split(",");
				for (var i=0;  i < el.options.length; i++) {
					for (var j=0; j < SelectedOptions.length; j++){
						if (el.options[i].text == SelectedOptions[j]) {
							ret.push(i);
							break;
						}
					}
				}
				ret = ret.join(",");
			break;
			case 'checkbox':
				ret = eval(val);
			break;
			default:
				ret = val;
			break;
		}
	}
	catch(e){}

	return ret;
}


function onPresetChanged(combo){

	try{
		var myform = document[MainFormName];

		var values = combo.options[combo.selectedIndex].value.split(";");
		
		if (values.length > 1){
			for (var i = 1; i < values.length; i++){

				var valuepair = values[i].split("=");
				try{
					var el = myform[valuepair[0]];
					var ElementType = el.type;
					if (ElementType == undefined && el.length > 0) ElementType = el[0].type;
					setFSIFormValue(ElementType, el, FormValueFromString(el, unescape(valuepair[1])));
				}
				catch(e){}
			}
		}
	}
	catch(e){}
	finally{
		// Exception for FSI Pages
		try {
			if (document.settings.IndexDataFile){
				if (values == "catalog_links_chapters.fsi" || values == "catalog_links_chapters_colored.fsi"){
					document.settings.IndexDataFile.disabled = false;
					if (document.settings.IndexDataFile.value == ""){
						document.settings.IndexDataFile.value = "indexsample.xml";
					}
				}
				else {
					document.settings.IndexDataFile.disabled = true;
				}
			}
		}
		catch(e){}
	}
}


function getFSIPresetFile(val, dir, prefix, suffix){
		var ret=val;

		try {
			values = ret.split(";");
			if (values.length > 0) {
				ret = values[0];
				if (ret.indexOf("servertemplate:")==0){
								FPXSrcValue = '';
								ret = ret.substr(15, ret.length-15);
								ret = escape(prefix + ret + suffix);
							}
							else if (val.length > 0) ret = dir + ret;
			}
		}
		catch(e){};

		return ret;
}

function showAddonHTML(title){
	var myform = document[MainFormName];

	updateCode();

	var width = parseInt(myform.FSIwidth.value);
	var height = parseInt(myform.FSIheight.value);
	var options = 'width=' + width + ',height=' + height;
	if (Resizable) options +=",resizable=yes";
	var previewpage = '<html>\n<head><title>'+title+'</title><style type="text/css" media="screen">body {overflow:hidden;padding:0px;margin:0px;font-size: 10pt; font-family: Verdana, Arial, Helvetica, sans-serif }</style></head>\n<body>\n'+ document.htmlForm.previewdata.value + '\n</body>\n</html>';
	
	if (document.all){
		page = setupActiveXWriter(title, previewpage);
	}
	else {
		page = previewpage;
	}

	ShowPreviewWindow(width, height, page)
}

function setupActiveXWriter(title, page){
	var htmlcode = '<html>\n<head><title>'+title+'</title>\n';
	htmlcode += '<script type="text/javascript" src="js/previewhelper.js"><\/script>\n';
	htmlcode += '<\/head>\n';
	htmlcode += '<body onload="printing(\''+escape(page)+'\');">';
	htmlcode += '<\/body><\/html>\n';
	
	return htmlcode;
}

function ShowPreviewWindow(width, height, page){

	var options = 'width=' + width + ',height=' + height;
	if (Resizable) options +=",resizable=yes";

	if (!CurrentPreviewWindow)
	{
		try
		{
			CurrentPreviewWindow = parent.basefrm.CurrentPreviewWindow;
			oldPreviewWindowWidth  = parent.basefrm.oldPreviewWindowWidth;
			oldPreviewWindowHeight = parent.basefrm.oldPreviewWindowHeight;
			oldPreviewResizable	= parent.basefrm.oldPreviewResizable;
		}
		catch(e){};
	}

	var targetname = "erez_preview_" + width + "_" + height;

	if (!CurrentPreviewWindow || CurrentPreviewWindow.closed || width != oldPreviewWindowWidth || height != oldPreviewWindowHeight || Resizable != oldPreviewResizable)
	{
		parent.basefrm.oldPreviewResizable = oldPreviewResizable = Resizable;
		parent.basefrm.oldPreviewWindowWidth = oldPreviewWindowWidth = width;
		parent.basefrm.oldPreviewWindowHeight = oldPreviewWindowHeight = height;

		if (CurrentPreviewWindow){
			try
			{
				CurrentPreviewWindow.close();
			}
			catch(e){};
		}

		parent.basefrm.CurrentPreviewWindow = CurrentPreviewWindow = window.open('', targetname, options);
	}

	if(window.navigator.userAgent.indexOf("Safari") >= 0){
		displayHTML(page, targetname);
	}
	else {
		CurrentPreviewWindow.document.open();
		CurrentPreviewWindow.document.write(page);
		CurrentPreviewWindow.document.close();
	}
	CurrentPreviewWindow.focus();
}


function useFlash5Crop(){
	pass=false;
	if (navigator){
		platform=navigator.platform.toLowerCase();
		platform=platform.match(/[a-z]+/i);
		search = /msie\s+(\d)\.(\d)/i;
		ie_result=search.exec(navigator.userAgent);
		search = /opera\s+(\d)\.(\d+)/i;
		op_result=search.exec(navigator.userAgent);
		if (platform == "win" && ie_result && ie_result[1] > 3 && !op_result){
			pass=true;
		}
	}
	return pass;
}


function updateChangedInput(element, val){
	if (elCropFocus != element && element.value != val) element.value=val;
}
