/**
 * 
 */
suntrack.survey = function(){
	var surveyTable;
	/**
	 * Open a new dialog for Add new survey group or item
	 */
	var addDialog = function (){
		var add_dialog;
		
		var handleAddSuccess=function (event){
			//var survey = YAHOO.lang.JSON.parse(event.responseText);
			//var title = "";
			Dom.setStyle("wait_image_ajax","display","none");
		}
		function handleSubmit(event){
			YAHOO.util.Connect.setForm('add_survey_form'); 			
			Dom.setStyle("wait_image_ajax","display","");
			var cObj = YAHOO.util.Connect.asyncRequest('POST', "surveyadmin.html?action=addSurvey&empty=true", {success:handleAddSuccess, failure:handleFailure});
			this.cancel();
			
		}
		function handleCancel(event,type){	
			this.cancel();
		}
		var disableGroup = function (event){
			var target = YAHOO.util.Event.getTarget(event);
			
			if (! target.checked){
				Dom.get('group').disabled=false; 
				
			}else{
				Dom.get('group').disabled=true; 
				Dom.get('group').value='';
			}
		}
		var init = function (){
			if (!add_dialog){
				Dom.setStyle('add_survey_dlg', 'display', '');
				add_dialog =  new YAHOO.widget.Dialog("add_survey_dlg", 
						{ width : "600px",
	                    fixedcenter:true, 
	                    zIndex:15,
	                    close:true,  
	                    draggable:true,                                        
	                    visible:false, 
	                    modal: true,
	                    effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration:0.5},
	                    buttons : [ { text:"Save", handler:handleSubmit, isDefault:true },									  			 								  		
									{ text:"Close", handler:handleCancel } ]
						 } );	

				add_dialog.render(document.body);
				YAHOO.util.Event.on('group_type','click', disableGroup);
			}
			add_dialog.show();
			
		}
		return {
			init : init
		}
	}();
	
	var resultFormatter = function (elCell, oRecord, oColumn, oData) {
		var id = oData;
		
		elCell.innerHTML = '+';
	}
	var search= function(event){
		Dom.setStyle("wait_image_ajax","display","");
		YAHOO.util.Connect.setForm("genericForm");
		surveyTable.getDataSource().sendRequest("?action=surveyDS&empt=true", surveyTable.onDataReturnInitializeTable, surveyTable);
		Dom.setStyle("wait_image_ajax","display","none");
	}
	
	var updateSurveyResult=function (event,c){
		var survey = YAHOO.lang.JSON.parse(event.responseText);
		var title = "";
		Dom.setStyle("wait_image_ajax","display","none");
		for ( var int = 0; int < survey.records.length; int++) {
			var record = survey.records[int];
			
			for ( var int2 = 0; int2 < record.members.length; int2++) {
				var member = record.members[int2];
				if (member.enabled && member.rate)
				title = title+member.title +" <u>Rate</u><b>: "+member.rate+"</b><br/>"
			}
			
		}
		
		event.argument.innerHTML=title
	}
	var updateSurveySummary=function (event){
		var record = YAHOO.lang.JSON.parse(event.responseText);
		var id = event.argument;
		var title = record.summary.surveyGroupMember||'';
		var avg = record.summary.avg||0;
		var data_src= "Total: "+record.summary.count + " Average: <span id='avg_"+id+"'>"+avg+"</span>";
		var rate = avg*20;
		var chart_src='<img class="chart_image" src="http://chart.apis.google.com/chart?chs=220x130&amp;chf=bg,s,ffffff&amp;cht=gom&amp;chd=t:'+rate+'&amp;chl='+avg+'&amp;chco=ff0000,ff6600,0000cc,00ff00" alt="'+title+'"/>';
		Dom.get("summary_"+id).innerHTML=data_src+chart_src;
		var styleClass = "low";
		if (avg>=1 && avg<2){
			styleClass = "mid_low";
		}
		if (avg>=2 && avg<3){
			styleClass = "mid_high";
		}
		if (avg>=3 && avg<4){
			styleClass = "high";
		}
		if (avg>=4){
			styleClass = "very_good";
		}
		Dom.addClass("avg_"+id,"avg_"+styleClass);
		Dom.setStyle("wait_image_ajax","display","none");
		
		
		
	}
	var getSurveyResult=function (container, data){
		Dom.setStyle("wait_image_ajax","display","");
		YAHOO.util.Connect.asyncRequest('GET', 'surveyadmin.html?action=getSurveyDetail&empty=true&id='+data,  {success: updateSurveyResult, failure: handleFailure, argument:container});
		
	}
	/**
	 * Display Count and Average for each survey 
	 */
	var showSurveySummary = function(event){
		var target = YAHOO.util.Event.getTarget(event);
		var id = target.id.replace("survey_","");
		Dom.setStyle("wait_image_ajax","display","");
		YAHOO.util.Connect.asyncRequest('GET', 'surveyadmin.html?action=getSurveySummary&empty=true&id='+id,  {success: updateSurveySummary, failure: handleFailure, argument:id});
		YAHOO.util.Event.stopEvent(event); 
	}
	var initSearch = function(){
		  var columnDefs = [
   		      {key:"name",  label:"Name", sortable:true, resizeable:true},                  
              {key:"email",  label:"Email", sortable:true, resizeable:true},
              {key:"company",  label:"Company", sortable:true, resizeable:true},
              {key:"lastUpdate", label:"Date",sortable:true},
              {key:"comments", label:"Comments",resizeable:true},
              {key:"id", label:"Result", formatter:'button'},
              {key:"delete", label:"Delete", formatter:'button'}
              
          ];

          var surveyDS = new YAHOO.util.DataSource("surveyadmin.html");
          surveyDS.responseType = YAHOO.util.DataSource.TYPE_JSON;
          surveyDS.responseSchema = {
          	  resultsList: "records",
              fields: ["id","name","email", "comments","company","lastUpdate"],
              metaFields:["summary"]
                       
          };
          var oConfigs = {
                  initialRequest: "?action=surveyDS&empty=true", // Server
																				// parameters
                  paginator : new YAHOO.widget.Paginator({ 
                 	 rowsPerPage    : 15 
                  }) 
          };
          surveyTable = new YAHOO.widget.DataTable("survey_list",columnDefs, surveyDS, oConfigs);
          surveyTable.subscribe("buttonClickEvent", function(oArgs){
      		//  oArgs.target.innerHTML='s'
        	  
				var column = surveyTable.getColumn(oArgs.target);
      			var cell = this.getTdLinerEl(oArgs.target);
      			var data = this.getRecord(oArgs.target);
      			if (column.key === 'delete'){      			
      				if (confirm("Are you sure want to delete record?") ){
      					YAHOO.util.Connect.asyncRequest('GET', 'surveyadmin.html?action=delete-survey&id='+data.getData("id"),  {success: deleteSurveyAdmin, failure: handleFailure});
      				}
      			}else if (column.key === 'id'){
      				getSurveyResult(cell, data.getData("id"))
      			}
               
          });	
          surveyTable.doBeforeLoadData = function(sRequest, oResponse, oPayload) { 
         
        	  var count = oResponse.meta[0].count;
        	  if (count>0){
        		  var avg = oResponse.meta[0].avg;
        	  	  var rate = avg*20;
        	  	  var chart_src='<img src="http://chart.apis.google.com/chart?chs=320x190&amp;chf=bg,s,ffffff&amp;cht=gom&amp;chd=t:'+rate+'&amp;chl='+avg+'&amp;chco=ff0000,ff6600,0000cc,00ff00" alt="Overall summary"/>';
        	  	  Dom.get("summary_chart").innerHTML=chart_src;
        	  }else{
        		  Dom.get("summary_chart").innerHTML="";
        	  }
        	  
        	  return true;
          }
          var setup_link = new YAHOO.widget.Button("setup_link", {type: "link"}); 
          var reset = new YAHOO.widget.Button(  "reset_btn", {type: "reset"}); 
          var search_button = new YAHOO.widget.Button("search_btn", {type: "button"}); 
		  search_button.on("click", search); 
		  
		    var fromDateCal = new YAHOO.widget.Calendar("fromDateCalId","fromDateContainer", { title:"Choose a date:", close:true } );							
			fromDateCal.render();					
			fromDateCal.selectEvent.subscribe(selectHandlerDate, fromDateCal, true);
			YAHOO.util.Event.on('fromDateCalImage', 'click', fromDateCal.show, fromDateCal, true);
			YAHOO.util.Event.on('fromDate','change', dateComplete);
		
			var toDateCal = new YAHOO.widget.Calendar("toDateCalId","toDateContainer", { title:"Choose a date:", close:true } );							
			toDateCal.render();					
			toDateCal.selectEvent.subscribe(selectHandlerDate, toDateCal, true);
			YAHOO.util.Event.on('toDateCalImage', 'click', toDateCal.show, toDateCal, true);
			YAHOO.util.Event.on('toDate','change', dateComplete);
			
			$j('.survey_summary_list').click(showSurveySummary);
	}
	/**
	 * Ajax call to update Survey Content
	 */
	var editSurvey =function(event){
		var target = YAHOO.util.Event.getTarget(event);
		var gid = target.id.replace("group_","");
		var mid = target.id.replace("member_","");
		
		
		Dom.setStyle("wait_image_ajax","display","");
		if ( mid.indexOf("group")==0)
			YAHOO.util.Connect.asyncRequest('GET', 'surveyadmin.html?action=editSurvey&empty=true&id='+gid,  {success: updateSurveyAdmin, failure: handleFailure, argument:gid});
		else
			YAHOO.util.Connect.asyncRequest('GET', 'surveyadmin.html?action=editSurvey&empty=true&title=member&id='+mid,  {success: updateSurveyAdmin, failure: handleFailure, argument:mid})
		 
	}
	var updateSurveyAdmin =  function(event){
		Dom.setStyle("wait_image_ajax","display","none");
	}
	var deleteSurveyAdmin =  function(event){
		search();
		Dom.setStyle("wait_image_ajax","display","none");
	}
	var showOther = function(event){
		var target = YAHOO.util.Event.getTarget(event);
		var selIndex = target.selectedIndex;
		
		var value =  target.options[selIndex].value;
		if ("Other" === value){
			Dom.setStyle("other_area","display","");
		}else{
			Dom.setStyle("other_area","display","none");
		}
	}
	var  init = function(){
		var save = new YAHOO.widget.Button(  "submit_btn", {type: "submit"}); 
		var reset = new YAHOO.widget.Button(  "reset_btn", {type: "reset"}); 
	
		if (Dom.get("add_btn")) {
			var add_btn = new YAHOO.widget.Button("add_btn", {type: "button"}); 
			add_btn.on("click", addDialog.init);
	
			var current = new YAHOO.widget.Button(  "current_survey", {type: "link"}); 
			var entry = new YAHOO.widget.Button(  "entry_survey", {type: "link"}); 
			YAHOO.util.Event.on("source_select", "change", showOther);
			$j('.enabledFlag').click(editSurvey);
		}
	}
	
	return {
		init: init,
		initSearch: initSearch
	}
}();
