/*******************************************************************************************************************/
/************************************************** графики средних цен ********************************************/

var graphAverPrice = function(xmlFC){

  Ext.useShims = true;
  var numAd = /aid=([0-9]+)$/.exec(xmlFC);
  numAd = RegExp.$1;
  var multyModelURL = "/@am/average/"+xmlFC.slice(13,xmlFC.indexOf("/",14)).substring(0,xmlFC.slice(13,xmlFC.indexOf("/",14)).indexOf("_"))+"!/@html/p?aid="+numAd;
  try{
  
  var textInfo = '<div id="myinfopaneldiv" class="graphInfo"><p>График отображает текущую среднюю стоимость автомобиля в зависимости от года выпуска. </p>';
	textInfo += '<p><b style="color:#f00;">Красным ромбиком</b> на графике обозначено текущее объявление.</p>';
	textInfo += '<p>Кликнув на <b style="color:#00f;">синюю точку</b> - Вы откроете выбранное объявление в новом окне.</p><p>Кликнув на <b style="color:#090;">зеленый ромбик</b> - Вы попадете на страницу конкретной модели и года выпуска.</p>';
	textInfo += '<p>Средние цены на авто - вычисляются приблизительно, на основании имеющихся в наличии данных: марки, модели, типа КПП, состояния авто.</p>';
	textInfo += '<p>Мы работаем над увеличением точности вычисления средних цен - учетом большего числа характеристик и параметров автомобиля.</p></div>';
	textInfo += '<div id="wm'+numAd+'" style="text-align: center; font-weight: bold; text-decoration:underline; cursor: pointer; color:blue;" onclick="commentFC()">Оставить пожелание</div>';
  
  var textInfoMonoChart = '<p>График отображает текущую среднюю стоимость автомобиля в зависимости от года выпуска. </p>';
	textInfoMonoChart  += '<p><b style="color:#f00;">Красным ромбиком</b> на графике обозначено текущее объявление.</p>';
	textInfoMonoChart  += '<p>Кликнув на <b style="color:#00f;">синюю точку</b> - Вы откроете выбранное объявление в новом окне.</p><p>Кликнув на <b style="color:#090;">зеленый ромбик</b> - Вы попадете на страницу конкретной модели и года выпуска.</p>';
	textInfoMonoChart  += '<p>Средние цены на авто - вычисляются приблизительно, на основании имеющихся в наличии данных: марки, модели, типа КПП, состояния авто.</p>';
	textInfoMonoChart  += '<p>Мы работаем над увеличением точности вычисления средних цен - учетом большего числа характеристик и параметров автомобиля.</p>';
	
  
  
  
  var infFC = new Ext.Panel({
                title: 'Пояснение графика',
                id: 'infFC',
                region: 'east',
                split: true,
                width: 180,
                autoScroll:true,
                //collapsible: true,
                margins: '3 0 3 3',
                cmargins: '3 3 3 3',
                html: textInfo
            });
  
  var chartsFC = new Ext.Panel({
    region: 'center',
    id: 'chartsFC'+numAd,
    margins: '3 3 3 0',
    activeTab: 0,
    html: '<div id="fcdiv">RENDERING</div>'
  });
  
  var myFcCloseBtn = new Ext.Button({
    id :"clsbtn",
    text: 'Закрыть',
    handler: function(){
     alert("closing");
     Ext.get('winFC').close();
     //Ext.get('winFC').destroy();
    }
  })
  
  var myFcWindow = new Ext.Window({
    title: 'Средние цены',
                draggable:false,
                exportAction:"",
                exportImageFileName:"",
                monoInfoHTML:textInfoMonoChart,
                displayingContent:"Скрыть модели",
                modelListData:{},  
                singleModelUrl:xmlFC,
                action:"",
                multyModelUrl:multyModelURL,
                sp:"someValue",
                fcXmlSingle:"",
                fcXmlMulty:"",
                id: 'winFC',
                modal: true,
                layout: 'border',
                width: 808,
                height: 477,
                closeAction: 'close',
                plain: true,
                buttonAlign: 'left',
                items: [chartsFC,infFC],
                buttons: [  {
                            text: 'Все модели марки',
                            id:"allmodels",
                            handler: function() { 
                            switchContent(this);
                              } 
                            },
                            {
                            text:"Сохранить график",
                            handler:function(){
                            exportMyChart();
                            StMSGPFCl();    
                              }
                            },
                            {
                            text: "Увеличить окно",
                            id:"sizeswitch",
                            handler:function (){
                                resizeWindow(this);
                              }
                            },
                            {
                              text: 'Выскажите Вашу точку зрения по поводу сервиса',
                            style: {color:'#f00'},
                            handler:function (){commentFC();}
                            },
                            { 
                            text: 'Закрыть',
                            handler: function(){                            
                            myFcWindow.close();}
                            }
                         ]
  });
  myFcWindow.show();
  var myChart = new FusionCharts("http://www.avtomagazine.ua/test/Charts/Scatter.swf", "fc", "600", "400", "0", "1");
  myChart.setDataURL(xmlFC);
  myChart.render("fcdiv");
  StMSGPFC();
  }catch(error){alert(error)}
}; // var graphAverPrice = function(xmlFC){



function resizeWindow(myBtn){
try{
 var myText = myBtn.text;
 var myWindow = Ext.getCmp("winFC");
 var myFChart = getChartFromId("fc");
 var myXml = myFChart.getXML(); 
 var Height;
 var Width;
 var fcHeight;
 var fcWidth;
  
 switch (myText){
  case "Увеличить окно":{
    myBtn.setText("Уменьшить окно");
    
    Height= 677;
    Width=1208;
    fcWidth=1000;
    fcHeight= 600;
  };break;
  case "Уменьшить окно":{
    myBtn.setText("Увеличить окно");
    
    Height= 477;
    Width=808;
    fcWidth=600;
    fcHeight= 400;
  };break;
 };
 
 var myChart = new FusionCharts("http://www.avtomagazine.ua/test/Charts/Scatter.swf", "fc", fcWidth, fcHeight, "0", "1");
 myChart.setDataXML(myXml);
 myChart.render("fcdiv");
 myWindow.setSize(Width,Height);
 myWindow.center();
 }catch(error){alert(error)}
}; //function resizeWindow(){

function switchContent(myBtn){
  
 try{
 var myText = myBtn.text;
 var myWindow = Ext.getCmp("winFC");
 var myFChart = getChartFromId("fc");
 var myXml = myFChart.getXML();
 var myWindowWidth = myWindow.getSize().width //
 var xmlFC = myWindow.singleModelUrl;
 var myInfoPanel = Ext.get('myinfopaneldiv');
 myWindow.displayingContent=myText;
    
 switch (myText){
  case "Все модели марки":{
    
    myBtn.setText("Скрыть модели"); 
    if (""==myWindow.fcXmlSingle){
    // первый вывод списка моделей в текущем окне, сохранение данных в свойствах
    // бъекта окна, первичное увеличение окна.
      myWindow.fcXmlSingle = myXml;    
      if (myWindowWidth!=1208){
      Ext.Ajax.request({
        url: myWindow.multyModelUrl,
        disableCaching: false,
        success: function(response, urlAjaxRe) {    
				  if(response.responseText!= ""){
				  fcXml = response.responseText;
				  myWindow.fcXmlMulty =fcXml; 
				  var myJSONObject={};
				  eval("myJSONObject ={"+fcXml.match(/seriesName=".*?" color=".*?"/g).join(",\n").split("seriesName=").join(" ").split(" color=").join(" : ").toString()+" }" );
				  var infoPanelModelListHtml = '<div id="mlinfopanel" style="margin: 0px"><table style=width:100%;font-size:12px;>';
				  var newObjct={};
				  try{
				  for (var p in myJSONObject){
				     newObjct[p]={'color':myJSONObject[p],'show':true};
             infoPanelModelListHtml +='<tr style="margin:0px"><td style="border-bottom:1px solid #'+myJSONObject[p]+'; text-align:left;  color:'+myJSONObject[p]+'">'+p+'</td><td style="border-bottom:1px solid #'+myJSONObject[p]+'; text-align:left;"><input id="cbmodellist" type="checkbox" checked="checked" name="'+p+'" onClick="checkBoxChecked(this.name,this.checked)"></td></tr>';				    
          };
          infoPanelModelListHtml+= "</table></div>";
				  myWindow.modelListData = newObjct;
				  newObjct=null;
          
          //
          myInfoPanel.update('<div id="myinfopaneldiv" class="graphInfo">'+infoPanelModelListHtml+'</div>'); 
          myWindow.fcXmlMulty = fcXml;                   
				  var myChart = new FusionCharts("/test/Charts/Scatter.swf", "fc", 1000, 600, "0", "1");
          myChart.setDataXML(fcXml);
          myWindow.setSize(1208,677);
          myWindow.buttons[2].setText("Уменьшить окно");
          myChart.render("fcdiv");
          myWindow.center();
          }catch(error){alert(error)}    
				  }else{
					 alert('Сервер временно не доступен,\n воспользуйтесь сервисом через пару минут');
					 }
        },
        failure: function() {
				  alert('Сервер временно не доступен,\n воспользуйтесь сервисом через пару минут');
				  }
        })
      
      }
    }else{
      // повторный переход к списку моделей в текущем окне
      //alert("pre")
      //myFChart.setDataXML(myWindow.fcXmlMulty);// процедура подгрузки данных сохраненных в объекте
      buldLeftPanelMulty();
      redrawModelList();
      
    }
      
  };break;
  case "Скрыть модели":{
    myBtn.setText("Все модели марки");
    if (""==myWindow.fcXmlMulty){
    // процедура сохранения графика всего модельного ряда xml
    myWindow.fcXmlMulty = myXml;
    }
    myFChart.setDataXML(myWindow.fcXmlSingle);
    myInfoPanel.update(myWindow.monoInfoHTML);
  };break;

 };
 }catch(error){alert(error)}
};//function switchContent(myBtn){


function checkBoxChecked(name,show){
var myWindow = Ext.getCmp("winFC");
    myWindow.modelListData[name]['show']=show;
    redrawModelList();
};//function checkBoxChecked(name,show){

function buldLeftPanelMulty(){
  var myInfoPanel = Ext.get('myinfopaneldiv');
  var myWindow = Ext.getCmp("winFC");
  var myJSONObject = myWindow.modelListData;
  var checkedString=""; 
  var infoPanelModelListHtml = '<div id="mlinfopanel" style="margin: 0px"><table style=width:100%;font-size:12px;>';
	 for (var p in myJSONObject){
	     
	     if ( myJSONObject[p]["show"] ){checkedString='checked="checked"';}else{checkedString='';}
      infoPanelModelListHtml +='<tr style="margin:0px"><td style="border-bottom:1px solid #'+myJSONObject[p]["color"]+'; text-align:left;  color:'+myJSONObject[p]["color"]+'">'+p+'</td><td style="border-bottom:1px solid #'+myJSONObject[p]["color"]+'; text-align:left;"><input id="cbmodellist" type="checkbox" '+checkedString+' name="'+p+'" onClick="checkBoxChecked(this.name,this.checked)"></td></tr>';				    
   };
   infoPanelModelListHtml+= "</table></div>";
   						                     
   myInfoPanel.update(infoPanelModelListHtml);
};//

function redrawModelList(){
  
  var myFusinChart = getChartFromId('fc');
  var myWindow = Ext.getCmp("winFC");
  var moedlsToShow = new Array();
  var myXml = myWindow.fcXmlMulty;
  var newXml = "";
  var searchString = "";
  var myRegExp;
  var modelLines = "";
  var newXml = "";
  var myArray = new Array();
  var myYearsObjct = {};
  var myCategories = '<categories verticalLineColor="666666" verticalLineThickness="1">';
  var headerXml = "";
  var stylesXml = ""; 
  myXml.replace(/<chart .+?>/g,getHeaderXml)
  myXml.replace(/<styles>.+?chart>/g,getStyles) 
  for (var p in myWindow.modelListData){
   if (myWindow.modelListData[p]['show']){
   try{
     moedlsToShow.push(p);
     //searchString ='<dataSet drawLine="1" seriesName="'+p+'.+?</dataSet>';
     searchString ='<dataSet drawLine="1" seriesName="'+p+'".+?</dataSet>';
     var startFrom = myXml.indexOf('<dataSet drawLine="1" seriesName="'+p);
     var endTo = myXml.indexOf('</dataSet>',startFrom)+10
     var mySubString = myXml.substring(startFrom,endTo);
     modelLines +=mySubString;
   }catch(error){alert(error)};
   };
  };//for (var p in ){
  modelLines.replace(/set x=".+?"/g,regFunction)
  try{
  myArray.sort();
  var a = Number(myArray[0]-1);
  var b = myArray[myArray.length-1];
  b++;
  headerXml.replace(/xAxisMaxValue=".+?"/g,getxAxisMaxValue);
  headerXml.replace(/xAxisMinValue=".+?"/g,getxAxisMinValue);
  }catch(error){alert(error)}
  for(var i=0;i<myArray.length;i++)
  {
      if (!myYearsObjct[myArray[i]]){myYearsObjct[myArray[i]]=true;} 
  };
  try{
  
  for (var p in myYearsObjct){
    myCategories+='<category label="'+p+'" x="'+p+'" showVerticalLine="1"/>';
  };
  myCategories += '</categories>';
  }catch(error){alert(error)}
  //searchString ='<dataSet drawLine="1" seriesName="'+p+'".+?</dataSet>';
  var startFrom = myXml.indexOf('<categories');
  var endTo =13 + myXml.indexOf('</categories>',startFrom)
  var mySubString = myXml.substring(startFrom,endTo);
  
  myCategories = mySubString; // все категории будут скопированы независимо от отображаемых линий
  newXml = headerXml+myCategories+modelLines+stylesXml;
  //alert("double")
  myFusinChart.setDataXML(newXml);
  
  function getxAxisMinValue($0,$1){
    
   var res = 'xAxisMinValue="'+a+'"';
   
  return res;
  }
  
  function getxAxisMaxValue($0,$1){
   
   var res = 'xAxisMaxValue="'+b+'"';
   
  return res;
  }
  
  function getStyles($0,$1){
    stylesXml=$0.toString();
  };//function getStyles($0,$1){
  
  function getHeaderXml($0,$1){
    headerXml=$0.toString();
  };//function getHeaderXml($0,$1){
  
  function regFunction($0,$1){
    myArray.push($0.toString().substring(7,$0.toString().length-1));    
  };//function regFunction(){
};//function redrawModelList(){



function FC_DataLoaded(DOMId){
  
};//function FC_DataLoaded(DOMId){

function FC_Rendered(DOMId){
    
};//function FC_Rendered(DOMId){


///////////////////////////////////////////////////////////////////////////////////////////////////////////
function exportMyChart(){
  var myWindow = Ext.getCmp("winFC");
  var myInfoPanel = Ext.get('myinfopaneldiv');
  myWindow.cahedInfoPanelContent=myInfoPanel.dom.innerHTML;
  var winFCexpDlgText =  '<span id="optionForm" style="margin-left: 15px;">'
      winFCexpDlgText += '<p style="padding:5px;" >Вариант сохранения:</p>'
      winFCexpDlgText += '<input style="padding:5px;" type="radio" name="save" id ="saveOption1" value="LOCAL" onClick = "resetAndDisable()" checked> локально<BR>'
      winFCexpDlgText += '<input style="padding:5px;" type="radio" name="save" id ="saveOption2" value="EMAIL" onClick = "resetAndAnable()"> на почту<BR>'
      winFCexpDlgText += '<label style="padding:5px;" for="expOptnsEmail"> e-mail:</LABEL>';
      winFCexpDlgText += '<input type="text" style="border:1px solid gray;" id="expOptnsEmail" onFocus="this.value='+"''"+'" disabled><BR/></P>';
      winFCexpDlgText += '<span id="expOptnsEmailError" style="display:none; color:red; text-align:right; font-size:10px; position:relative;top:0px;right:-35px;">Необходимо указать e-mail </span>';
      winFCexpDlgText += '<input id="okbtn" type="button" value="Сохранить" onClick="process(this.value)"/>';
      winFCexpDlgText += '<span> </span>';
      winFCexpDlgText += '<input id="cnslbtn" type="button" value="Закрыть" onClick="restoreInfoPanel()"/>'; 
      winFCexpDlgText += '</span>';
  
  myInfoPanel.update(winFCexpDlgText);      
}//function exportMyChart(){


function process(action){
  var myWindow = Ext.getCmp("winFC");
  myWindow.exportAction = action;   
  var chartToPrint = getChartFromId("fc");
  var fileNameToSave = "";
  switch (myWindow.displayingContent){
    case "Скрыть модели":{
      // отображается один график
      myWindow.exportImageFileName = myWindow.singleModelUrl.slice(13,myWindow.singleModelUrl.indexOf("/",14))+"_AM.UA";
    };break;
    case "Все модели марки":{
      // все модели
      myWindow.exportImageFileName = myWindow.multyModelUrl.slice(13,myWindow.multyModelUrl.indexOf("!",14))+"_AM.UA";
    };break;
};//switch (action){
  chartToPrint.exportChart({exportFormat: "JPG", exportFileName:myWindow.exportImageFileName,exportCallback:"JSexportCallBackFunction" });
  //var fileNameToSave = xmlFC.slice(13,xmlFC.indexOf("/",14))
};//function process(action){

function JSexportCallBackFunction(objRtn){
var myWindow = Ext.getCmp("winFC");
var muFusionChart = getChartFromId('fc');
var myXml =muFusionChart.getXML(); 
    paramsToPhp = "";
var savemethod = "";
var fileNameToSave =myWindow.exportImageFileName;
switch (myWindow.exportAction){
    case "Сохранить":{
      savemethod="LOCAL";
    };break;
    case "Отправить":{
      savemethod="EMAIL";
    };break;
};//switch (action){

var targetEmail = Ext.get('expOptnsEmail').dom.value;
paramsToPhp +='filename='+fileNameToSave+"&fileurl="+objRtn.fileName+"&targetmail="+targetEmail+"&savemethod="+savemethod; 
var EJscript = document.createElement('script');
    EJscript.type = 'text/javascript';
    EJscript.src = "http://static.am.ua/html/php/exportedChartProcessor.php?"+paramsToPhp;
    document.body.appendChild(EJscript);   
};//function JSexportCallBackFunction(objRtn){

function answerPHP(message)
{
  alert(message);
  Ext.get('expOptnsEmail').dom.value="";
};// function answerPHP(saveMeth,targetMail,fileUrl)

function returnPDF(link)
{
    //window.location.assign(link);
    window.open(link);
};//

function restoreInfoPanel(){
  var myWindow = Ext.getCmp("winFC");
  var myInfoPanel = Ext.get('myinfopaneldiv');
  var contentName = myWindow.displayingContent;
  switch (contentName){
    case "Скрыть модели":{
       myInfoPanel.update(myWindow.monoInfoHTML);
    };break;
    
    case "Все модели марки":{
      buldLeftPanelMulty();
    };break;
  };//switch (contentName){
  
};//function restoreInfoPanel(){

function resetAndDisable(numAd){
      // восстанавливаем вид поля ввода адреса и деактивируем его в окне настроек экспорта
        var myMailField = document.getElementById("expOptnsEmail");
        myMailField.value = "";        
        myMailField.disabled = true;
        var myButton = document.getElementById("okbtn");
        myButton.value = "Сохранить";
       // myMailField.style.display = false;
        myMailField.style.border = "1px solid gray";
        Ext.get('expOptnsEmailError').dom.style.display='none';
};
        
function resetAndAnable(numAd){
		  // активируем поле ввода адреса и сбрасываем стили в исходные
		  var myMailField = document.getElementById("expOptnsEmail");
		  myMailField.value = "";
		  myMailField.disabled = false;
		  var myButton = document.getElementById("okbtn");
      myButton.value = "Отправить";
      myMailField.style.border = "1px solid gray";	      
		  Ext.get('expOptnsEmailError').dom.style.display='none'; 
};

function commentFC(){
  try{
  var myWindow = Ext.getCmp("winFC");
  var myInfoPanel = Ext.get('myinfopaneldiv');
  myWindow.cahedInfoPanelContent=myInfoPanel.dom.innerHTML;
  
  
  var commentHtml = '<center><h1>Ваши пожелания:</h1><br/>';
	commentHtml +='<textarea name="text" id="commentfc_text" cols="20" rows="5"></textarea><br/><br/>';
	commentHtml +='<h1>Контактная информация:</h1><br/>';
	commentHtml +='<input type="text" id="commentfc_email_address" autocomplete="off"/><br/>';
	commentHtml +='<small>Если Вы укажите адрес e-mail, то мы обязательно ответим.</small></center>';
	commentHtml +='<input type="button" value="Отправить" onClick="sentcommentFC()"/>';
  commentHtml +='<span>  </span>'
  commentHtml +='<input type="button" value="Закрыть" onClick="restoreInfoPanel()" /><br/>';
  myInfoPanel.update(commentHtml);
  
  }catch(error){alert(error)};
};
function sentcommentFC(){
try{
var myWindow = Ext.getCmp("winFC");
var title = myWindow.displayingContent;
switch (title){
  case "Скрыть модели":{
    title="График средних цен одной модели";
  };break;
  case "Все модели марки":{
    title="Графики средних цен модельного ряда";
  };break;
};//switch (title){
var mesText = Ext.get('commentfc_text').dom.value;
var targetEmail = Ext.get('commentfc_email_address').dom.value;

Ext.Ajax.request({
							url: '/html/php/send_commentRC.php',
							params:{
								      text : mesText,
								      email_address : targetEmail,
								      titleText : title
								     },
							success: function(response) {
							         alert("Ваше пожелание отправлено")
							         Ext.get('commentfc_text').dom.value="";
							         Ext.get('commentfc_email_address').dom.value="";
								     },//success: function(response) {
							failure: function() {
                     }//failure: function() {
						});
						
						
}catch(error){}

};
