function movePicture(formObj,dir,step_flag)
{
	var last_start=parseInt(formObj.last_start.value);
	var last_end=parseInt(formObj.last_end.value);
	var last_chrsm=parseInt(formObj.chrsm_id.value);
	if(last_start<0 || last_end<0 || last_chrsm<0)
	{
		return;
	}
	var zoom_scale=last_end-last_start+1;
	var step=0;
	if(step_flag==1)
	{
		step=zoom_scale*0.8;
	}
	else
	{
		step=zoom_scale/2;
	}
	step=parseInt(step);

	var chrsm_value=formObj.chrsm_all.options[last_chrsm].text;
	var temp=chrsm_value.split('::');
	chrsm_value=temp[1];
	temp=chrsm_value.split('..');
	chrsm_start=parseInt(temp[0]);
	chrsm_end=parseInt(temp[1]);
        
	if(dir>0)
	{
		start=last_start+step;
		end=last_end+step;
		if(end>chrsm_end)
		{
			end=chrsm_end;
			start=end-zoom_scale+1;
			if(start<0)
			{
				start=1;
			}
		}
	}
	else
	{
		start=last_start-step;
		end=last_end-step;
		if(start<0)
		{
			start=1;
			end=start+zoom_scale-1;
			if(end>chrsm_end)
			{
				end=chrsm_end;
			}
		}
	}
	if(start==last_start && end==last_end)
	{
		alert("You cannot move picture in this direction anymore.");
		return;
	}
	formObj.chrsm_all.selectedIndex=last_chrsm;	
        formObj.start.value=start;
	formObj.end.value=end;
	submitForm(formObj);
}

function changeZoomScale(formObj)
{
	if(formObj.zoom_select.selectedIndex==0)
    {
		return;       
    }
	var start=parseInt(formObj.start.value);
	var end=parseInt(formObj.end.value);
	if(start<0)
	{
		start=1;
	}
	if(end<0)
	{
		end=start;
	}
	var chrsm_start=-1;
	var chrsm_end=-1;
	if(formObj.chrsm_all.selectedIndex>0)
	{
		var chrsm_value=formObj.chrsm_all.options[formObj.chrsm_all.selectedIndex].text;
		var temp=chrsm_value.split('::');
		chrsm_value=temp[1];
		temp=chrsm_value.split('..');
		chrsm_start=parseInt(temp[0]);
		chrsm_end=parseInt(temp[1]);
	}

	var zoom_scale=parseInt(formObj.zoom_hidden.options[formObj.zoom_select.selectedIndex-1].value);
	start=start-(zoom_scale-(end-start+1))/2;
	if(start<0)
	{
		start=1;
	}
	start=parseInt(start);
	end=start+zoom_scale-1;
	if(chrsm_end>0 && end>chrsm_end)
	{
		end=chrsm_end;
		start=end-zoom_scale+1;
	}
	if(start<0)
	{
		start=1;
	}
	formObj.start.value=start;
	formObj.end.value=end;
	submitForm(formObj);
}

function zoomMinus(formObj)
{
	var last_start=parseInt(formObj.last_start.value);
	var last_end=parseInt(formObj.last_end.value);
	var last_chrsm=parseInt(formObj.chrsm_id.value);
	if(last_start<0 || last_end<0 || last_chrsm<0)
	{
		return;
	}
	var len=last_end-last_start+1;
	var zoom_index=-1;
	var zoom_scale;
	for(i=0;i<formObj.zoom_hidden.options.length;i++)
	{
		var zoom_scale=parseInt(formObj.zoom_hidden.options[i].value);
		if(zoom_scale>len)
		{
			zoom_index=i;
			break;
		}
	}

	if(zoom_index<0)
	{
		window.alert("It is the largest scope already.");
		return;
	}
	
	zoom_scale=parseInt(formObj.zoom_hidden.options[zoom_index].value);
	var start=last_start-(zoom_scale-(last_end-last_start+1))/2;
	if(start<0)
	{
		start=1;
	}
	var end=start+zoom_scale-1;
	
	formObj.zoom_select.selectedIndex=zoom_index+1;
	var chrsm_value=formObj.chrsm_all.options[last_chrsm].text;
	var temp=chrsm_value.split('::');
	chrsm_value=temp[1];
	temp=chrsm_value.split('..');
	chrsm_start=parseInt(temp[0]);
	chrsm_end=parseInt(temp[1]);	
	if(end>chrsm_end)
	{
		end=chrsm_end;
		start=end-zoom_scale+1;
	}
	if(start<0)
	{
		start=1;
	}
	formObj.chrsm_all.selectedIndex=last_chrsm;
	formObj.start.value=start;
	formObj.end.value=end;
	if(start==last_start && end==last_end)
	{
		return;
	}
	else
	{
		submitForm(formObj);
	}
	
}

function zoomPlus(formObj)
{
	var last_start=parseInt(formObj.last_start.value);
	var last_end=parseInt(formObj.last_end.value);
	var last_chrsm=parseInt(formObj.chrsm_id.value);
	if(last_start<0 || last_end<0 || last_chrsm<0)
	{
		return;
	}
	var len=last_end-last_start+1;
	var zoom_index=-1;
	var zoom_scale;
	for(i=formObj.zoom_hidden.options.length-1;i>=0;i--)
	{
		var zoom_scale=parseInt(formObj.zoom_hidden.options[i].value);
		if(zoom_scale<len)
		{
			zoom_index=i;
			break;
		}
	}

	if(zoom_index<0)
	{
		window.alert("It is the smallest scope already.");
		return;
	}
	
	zoom_scale=parseInt(formObj.zoom_hidden.options[zoom_index].value);
	var start=last_start-(zoom_scale-(last_end-last_start+1))/2;
	if(start<0)
	{
		start=1;
	}
	var end=start+zoom_scale-1;
	formObj.chrsm_all.selectedIndex=last_chrsm;
	formObj.zoom_select.selectedIndex=zoom_index+1;
	var chrsm_value=formObj.chrsm_all.options[formObj.chrsm_all.selectedIndex].text;
	var temp=chrsm_value.split('::');
	chrsm_value=temp[1];
	temp=chrsm_value.split('..');
	chrsm_start=parseInt(temp[0]);
	chrsm_end=parseInt(temp[1]);	
	if(end>chrsm_end)
	{
		end=chrsm_end;
		start=end-zoom_scale+1;
	}
	if(start<0)
	{
		start=1;
	}
	formObj.start.value=start;
	formObj.end.value=end;
	if(start==last_start && end==last_end)
	{
		return;
	}
	else
	{
		submitForm(formObj);
	}
}

function submitForm(formObj)
{
	if(!isInteger(formObj.start.value,1))
	{
		window.alert("The start and end position must be integer and larger than 0");
		formObj.start.focus();
		return;
	}
	if(!isInteger(formObj.end.value,1))
	{
		window.alert("The start and end position must be integer and larger than 0");
		formObj.end.focus();
		return;
	}

    if(formObj.chrsm_all.selectedIndex==0)
    {
      window.alert("please specify which chrsm you want to view.");
		formObj.chrsm_all.focus();
		return;       
    }
	var start=parseInt(formObj.start.value);
	var end=parseInt(formObj.end.value);
	var chrsm_start=0;
	var chrsm_end=0;
	var chrsm_value=formObj.chrsm_all.options[formObj.chrsm_all.selectedIndex].text;
    var chrsm_idx_file=formObj.chrsm_all.options[formObj.chrsm_all.selectedIndex].value;
    var chrsm_id=formObj.chrsm_all.selectedIndex;
	var temp=chrsm_value.split('::');
    var chrsm_name=temp[0];
	chrsm_value=temp[1];
	temp=chrsm_value.split('..');
	chrsm_start=parseInt(temp[0]);
	chrsm_end=parseInt(temp[1]);

	if(start>end)
	{
		window.alert("the start position cannot be larger than end position");
		formObj.start.focus();
		return;
	}
	if(start<chrsm_start)
	{
		start=chrsm_start;
	}
	if (end>chrsm_end)
	{
		end=chrsm_end;
	}
	if(((end-start+1)%100)!=0)
	{
		var view_scope=(1+parseInt((end-start+1)/100))*100;
		end=start+view_scope-1;
	}
	formObj.start.value=start;
	formObj.end.value=end;
    formObj.chrsm_id.value=chrsm_id;
    formObj.chrsm_name.value=chrsm_name;
    formObj.chrsm_idx_file.value=chrsm_idx_file;
    formObj.chrsm_start.value=chrsm_start;
    
    formObj.chrsm_end.value=chrsm_end;
    formObj.last_start.value=start;
    formObj.last_end.value=end;
	formObj.submit();
}

function goSpicificPosition(click_position,chrsm_bar_width)
{
    var formObj=document.getElementById("form1");
	var last_start=parseInt(formObj.last_start.value);
	var last_end=parseInt(formObj.last_end.value);
    var last_show_genome_size=last_end-last_start+1; 
    var start=last_start + click_position*last_show_genome_size/chrsm_bar_width;
	if(formObj.zoom_select.selectedIndex>0)
	{
    	var current_show_genome_size=parseInt(formObj.zoom_hidden.options[formObj.zoom_select.selectedIndex-1].value);
	}
	else
	{
		current_show_genome_size=last_show_genome_size;
	}
        start=start-current_show_genome_size/2;
	start=parseInt(start);
	end=start+current_show_genome_size-1;
    var chrsm_start=0;
	var chrsm_end=0;
	var chrsm_value=formObj.chrsm_all.options[formObj.chrsm_all.selectedIndex].text;
	var temp=chrsm_value.split('::');
	chrsm_value=temp[1];
	temp=chrsm_value.split('..');
	chrsm_start=parseInt(temp[0]);
	chrsm_end=parseInt(temp[1]);
    if(start<chrsm_start)
    {
        start=chrsm_start;
		end=chrsm_start+current_show_genome_size-1;
    }
    if(end>chrsm_end)
    {
        end=chrsm_end;
		start=end-current_show_genome_size+1;
		if(start<0)
		{
			start=1;
		}
    }
    formObj.start.value=start;
	formObj.end.value=end;
    submitForm(formObj);
}

function onLoadPage()
{
	var formObj=document.getElementById("form1");
    if(formObj.chrsm_all.selectedIndex==0 || !isInteger(formObj.start.value,1))
    {
		return;       
    }
	else
	{
		submitForm(formObj);
	}
}

function ChangeVisibility(status)
{
	tabObj=document.getElementById('filter_tab');
	if(status)
	{
		tabObj.style.display='';
	}
	else
	{
		tabObj.style.display='none';
	}
}

