var inteval=null; //Interval time execute chart var
//###################### draw chart###########################
//Cross browser method to get an object
function getObject(id)
{
    if (document.getElementById)
        //IE 5.x or NS 6.x or above
        return document.getElementById(id);
    else if (document.all)
        //IE 4.x
        return document.all[id];
    else
        //Netscape 4.x
        return document[id];
}

//Update the chart according to user selection
function updateChart()
{    //
    //we encode the values of all form elements as query parameters
    //
    //alert("debugger");
   if(!validate()){ return ;}
   
    var elements = getObject("symbolForm").elements;
    var url = "chart.hyml?methodname=drawLiveSymbolChart&";
           
    for (var i = 0; i < elements.length; ++i)
    {
        var e = elements[i];
        if (e.type == "checkbox"){
            url = url + e.id + "=" + (e.checked ? "1" : "0") + "&";
		}else if (e.type == "radio"){
			if(e.checked){
               url = url + e.name + "=" + escape(e.value) + "&";
			}
		}else if (e.id == "symbol" && e.value==""){
			url = url + e.id + "=EURUSD&";
		}else{
            url = url + e.id + "=" + escape(e.value) + "&";
        }
    }
   
    var now=new Date(); 
    var chartID=now.getTime();
    url+="chartID="+chartID;
	var ele = document.getElementById("symbol");
    var selecteIndex=ele.selectedIndex;
	try{
	   if(selecteIndex==-1){
			redirect(0);
			selecteIndex=0;
		}
		
	}catch(e){
		alert("please load /include/js/chart/doubleSymbolCombo.js first");
	}
    
   
   var symbolAlias=escape(eval("ele.options["+selecteIndex+"].text"));
    url+="&symbolAlias="+symbolAlias;
    getObject("ChartImage").src = url;
}
// init chart
updateChart();
H1UpdateChart();//first use H1

function H1UpdateChart(){//use half of interval time
    inteval=window.setInterval("updateChart()", (1000*60*60)/2);
}
function intervalUpdateChart(){
if(inteval!=null) window.clearInterval(inteval);
var intervalTime=0;
var periodicity=document.getElementById("periodicity").value;
 if(periodicity=="M1")
{
intervalTime=1000*60*1;
}else if(periodicity=="M5")
{
intervalTime=1000*60*5;
}else if(periodicity=="M15")
{
intervalTime=1000*60*15;
}else if(periodicity=="M30")
{
intervalTime=1000*60*30;
}else if(periodicity=="H1")
{
intervalTime=1000*60*60;
}else if(periodicity=="H4")
{
intervalTime=1000*60*60*4;
}else{
intervalTime=0;
}
updateChart();
if (intervalTime!=0){
    if(periodicity!="M1"){ 
    intervalTime=intervalTime/2;//use half of interval time
    }
  inteval=window.setInterval("updateChart()", intervalTime);
}
}

//#####################  validate  #################################
function validate()
{
//symbol is not empty;
var symbol=document.getElementById("symbol").value;
var periodicity=document.getElementById("periodicity").value;
if(symbol=="null"){
alert("Please specify symbol.");
return false;
}
//startTime must before endTime
var startTimeStr=document.getElementById("startDate").value;
//+" "+ document.getElementById("startHour").value+":"+
 //document.getElementById("startMinute").value;
 var endTimeStr=document.getElementById("endDate").value;
 //+" "+document.getElementById("endHour").value+":"+
 //document.getElementById("endMinute").value;
if(!checkCompareTime(startTimeStr,endTimeStr)){
alert("startTime must before endTime.");
return false ;
}
//check limit time  
if (!checkLimitLongTime(startTimeStr,endTimeStr,periodicity)){
alert("The period you have selected is too long \""+periodicity+"\".");
return false ;
}
 
if (!checkLimitShortTime(startTimeStr,endTimeStr,periodicity)){
alert("The period you have selected is too short \""+periodicity+"\".");
return false ;
}
return true;
}

//validate startTime must before endTime
function checkCompareTime(startTimeStr,endTimeStr){
//use time "yyyy.MM.dd hh:mm"

var startTime=parseTime(startTimeStr);
var endTime=parseTime(endTimeStr);
if(startTime>endTime){
return false;
}else{
return true;}
}

function checkLimitLongTime(startTimeStr,endTimeStr,periodicity){
//use time "yyyy.MM.dd hh:mm"
var startTime= parseTime(startTimeStr);
var endTime=parseTime(endTimeStr);
var limitMinute=(endTime-startTime)/(60*1000);
var perMinute =periodicityMinuts(periodicity);
if(limitMinute> perMinute*500){
return false;
}
return true;
}
function checkLimitShortTime(startTimeStr,endTimeStr,periodicity){
//use time "yyyy.MM.dd hh:mm"
var startTime= parseTime(startTimeStr);
var endTime=parseTime(endTimeStr);

var limitMinute=(endTime-startTime)/(60*1000);
var perMinute =periodicityMinuts(periodicity);
if(limitMinute<=perMinute*3){
return false;
}
return true;
}

function periodicityMinuts(periodicity) {
	var minuts;	
	if(periodicity==("M1")){
		minute=1;
	}else if(periodicity==("M5")){
		minute=5;
	}else  if(periodicity==("M15")){
		minute=15;
	}else if(periodicity==("M30")){
		minute=30;
	}else if(periodicity==("H1")){
		minute=1*60;
	}else if(periodicity==("H4")){
		minute=1*60*4;
	}else if(periodicity==("D1")){
		minute=1*60*24;
	}if(periodicity==("W1")){
		minute=1*60*24*7;
	}if(periodicity==("MN1")){
		minute=1*60*24*30;
	}
	return minute;
	
	}
 function parseTime(timeStr){
 //use time "yyyy.MM.dd hh:mm"
timeStr=(timeStr+":00").replace(/\./g,"/");
var time=new Date(timeStr);
return time;
 }



