

SITE.namespace("page.ControlPanel");

SITE.page.ControlPanel = function(){

    var openEditor = function(){
	   return function(e){
	        YAHOO.util.Event.stopEvent(e);
            YAHOO.util.Dom.setStyle('editor', 'display', 'block');
	   };        
    };
    
    var saveEditor = function(myEditor){
	   return function(e){
	        YAHOO.util.Event.stopEvent(e);
	        myEditor.saveHTML();
	        document.getElementById('whatwecandoforyouText').innerHTML = myEditor.get('element').value; 
            YAHOO.util.Dom.setStyle('editor', 'display', 'none');
	   };        
    };  
    
    var cancelEditor = function(myEditor){
	   return function(e){
	        YAHOO.util.Event.stopEvent(e);
            YAHOO.util.Dom.setStyle('editor', 'display', 'none');
	   };        
    }; 
    
	var onLoginSuccessCallback = function(debug){
	      return (function(oRequest){
	          if(debug){
	             alert(oRequest.responseText);
	          }	      
	          if(oRequest.responseText==-1){
	              alert('Login failed');
	          }
	          else{
	              document.location.href=oRequest.responseText;
	          }
	      });
	} 
	
	var onLoginFailureCallback = function(debug){
	      return (function(oRequest){
	          if(debug){
	             alert(oRequest.responseText);
	          }
	          alert('Login failed');
	      });
	};  	   
    
    var login = function(frm, loginAjaxUrl, debug){
	   return function(e){
		    YAHOO.util.Event.stopEvent(e);
		    YAHOO.util.Connect.setForm(frm);
		    var successcallback = onLoginSuccessCallback(debug);
		    var failurecallback = onLoginFailureCallback(debug);
		    SITE.util.Connect.send(successcallback, failurecallback, loginAjaxUrl, '', 'POST');
	   };        
    };
    
	var onSaveSettingsSuccessCallback = function(campaignId, debug){
	      return (function(oRequest){
	          try{
	                 // alert(oRequest.responseText);
		          var respObj = YAHOO.lang.JSON.parse(oRequest.responseText);
		          if(!respObj.c){
		              alert('Failed saving settings--');
		          }
		          else{
		              alert('Settings saved!');
		              if(document.getElementById("newCampaign") && document.getElementById("newCampaign").value=="1"){
		                  document.location.href = document.location.href + '&c='+respObj.c;
		              }
		          }
	          }
	          catch(err){
	              if(debug){
	          	      alert('Comm error ' + err);
	          	  }
	          	  else{
	          	      alert('Comm error ' + err);
	          	  }
	          }
	      });
	} 
	
	var onSaveSettingsFailureCallback = function(debug){
	      return (function(oRequest){
 		  if(debug){
		      alert(oRequest.responseText);
		  }
	          alert('Failed saving settings***');
	      });
	}; 
	    
    var saveSettings = function(accountId, frm, campaignId, websiteUrl, debug){
	   return function(e){
		    YAHOO.util.Event.stopEvent(e);
		    YAHOO.util.Connect.setForm(frm, true, true);
		   // var successcallback = onSaveSettingsSuccessCallback(campaignId, debug);
		    var callback =
			{
			   upload: onSaveSettingsSuccessCallback(campaignId, debug)
			}		    
		    var failurecallback = onSaveSettingsFailureCallback(debug);
		    //SITE.util.Connect.send(successcallback, failurecallback, websiteUrl+'ajax.php?run=savesettings&account_id='+accountId, '', 'POST');
		    var cObj = YAHOO.util.Connect.asyncRequest('POST',websiteUrl+'ajax.php?run=savesettings&account_id='+accountId, callback); 
		    
	   };        
    };  
    
	var onSaveTestimonialSuccessCallback = function(websiteUrl, debug){
	      return (function(oRequest){
	          if(debug){
	             alert(oRequest.responseText);
	          }
	          if(oRequest.responseText==2){
	             alert('Photo too big. Please select a smaller photo.');
                     document.location.reload();
	          }
	          else{
		          try{
		              var testimonial = YAHOO.lang.JSON.parse(oRequest.responseText);
		              alert('Testimonial saved!');
		              if(1){ // testimonial['u'] todo for now make it refresh the page otherwise small photo on testimonial list won't show
		                  document.location.reload();
		              }
		              else{
		                  YAHOO.util.Dom.setStyle('testimonialForm', 'display', 'none');
			              var editTestimonialLink = $a({href:'#', id:'e'+testimonial['testimonial_id']}, testimonial['testimonial'] + '...');
			              YAHOO.util.Event.on(editTestimonialLink, 'click', getTestimonial(websiteUrl, debug));
			              var removeTestimonialLink = $a({href:'#', id:'r'+testimonial['testimonial_id']}, 'remove');
			              YAHOO.util.Event.on(removeTestimonialLink, 'click', removeTestimonial(websiteUrl, debug));	              
			              var row = $tr({},
			              					$td({}, testimonial['from']),
			              					$td({}, testimonial['photo']),
			              					$td({}, testimonial['url']),
			              					$td({}, testimonial['heading']),
			              					$td({}, editTestimonialLink),
			              					$td({}, removeTestimonialLink));
			              //Add testimonial to testimonial table
			              var t = document.getElementById('testimonialsTable');
			              t.appendChild(row);
			              YAHOO.util.Dom.setStyle('ajaxloader', 'display', 'none');
		              }
		          }
		          catch(err){
		             alert('Failed saving testimonial' + err + '  '+oRequest.responseText); 
                             document.location.reload();
		          }
	          }
	      });
	} 
	
	var onSaveTestimonialFailureCallback = function(debug){
	      return (function(oRequest){
	          if(debug){
	              alert(oRequest.responseText);
	          }
	          alert('Failed saving testimonial');
	          YAHOO.util.Dom.setStyle('ajaxloader', 'display', 'none');
	      });
	};    
    
    var saveTestimonial = function(accountId, campaignId, frm, websiteUrl, debug){
	   return function(e){
		    YAHOO.util.Event.stopEvent(e);
		    YAHOO.util.Connect.setForm(frm, true, true);
		    YAHOO.util.Dom.setStyle('ajaxloader', 'display', 'inline');
		    //var successcallback = onSaveTestimonialSuccessCallback();
		    var callback =
			{
			   upload: onSaveTestimonialSuccessCallback(websiteUrl, debug)
			}
		    var failurecallback = onSaveTestimonialFailureCallback(debug);
		    //SITE.util.Connect.send(successcallback, failurecallback, 'ajax.php?run=savetestimonial&account_id='+accountId, '', 'POST');
		    var cObj = YAHOO.util.Connect.asyncRequest('POST', websiteUrl+'ajax.php?run=savetestimonial&account_id='+accountId +'&campaign_id='+campaignId, callback); 
	   };        
    }; 
    
	var onRemoveTestimonialSuccessCallback = function(row, debug){
	      return (function(oRequest){
	          if(debug){
	              alert(oRequest.responseText);
	          }
	          if(oRequest.responseText!=1){
	              alert('Failed removing testimonial');
	          }
	          else{
	              alert('Testimonial removed');
	              row.parentNode.removeChild(row);
	          }
	      });
	} 
	
	var onRemoveTestimonialFailureCallback = function(debug){
	      return (function(oRequest){
	          if(debug){
	              alert(oRequest.responseText);
	          }
	          alert('Failed removing testimonial');
	      });
	}; 
	     
    var removeTestimonial = function(websiteUrl, debug){
	   return function(e){
		    YAHOO.util.Event.stopEvent(e);
		    var link = YAHOO.util.Event.getTarget(e);
		    var testimonialId = link.getAttribute('id');
		    var successcallback = onRemoveTestimonialSuccessCallback(link.parentNode.parentNode, debug);
		    var failurecallback = onRemoveTestimonialFailureCallback(debug);
		    SITE.util.Connect.send(successcallback, failurecallback, websiteUrl + 'ajax.php?run=removetestimonial&testimonial_id='+testimonialId, '', 'POST');
	   };        
    };    
    
	var onEditTestimonialSuccessCallback = function(debug, linkClicked){
	      return (function(oRequest){
		
	          try{
	              if(debug){
	                  alert(oRequest.responseText);
	              }

	              var testimonial = YAHOO.lang.JSON.parse(oRequest.responseText);
                       showTestimonial = loadTestimonial(testimonial);
		    showTestimonial(null);
		    YAHOO.util.Event.removeListener(linkClicked);
		    YAHOO.util.Event.on(linkClicked, 'click', showTestimonial);

	          }
	          catch(err){
	             alert('Communication failure' + err);
	          }
	      });
	}  

 	var loadTestimonial = function(testimonial){
		return (function(e){
 		     if(e){
			YAHOO.util.Event.stopEvent(e);
		    }

                       YAHOO.util.Dom.setStyle('testimonialForm', 'display', 'block');

		   // var testimonialTextObj = document.createTextNode( testimonial['testimonial']);
                       var par = document.getElementById('testimonial').parentNode;
		    par.removeChild(document.getElementById('testimonial'));
		    var ta = document.createElement('textarea');
                       ta.setAttribute('rows', 8);
 		    ta.setAttribute('cols', 46);
                       ta.setAttribute('id', 'testimonial');
                       ta.setAttribute('name', 'testimonial');
		    ta.innerHTML = testimonial['testimonial'];
		   //alert(ta.innerHTML);

                      par.appendChild(ta);

	              document.getElementById('testimonialId').value = testimonial['testimonial_id'];
	              document.getElementById('testimonialFrom').value = testimonial['from'];
	              document.getElementById('testimonialUrl').value = testimonial['url'];
	              //document.getElementById('testimonial').innerHTML = testimonial['testimonial'];
		   // document.getElementById('testimonial').appendChild(testimonialTextObj);
	              document.getElementById('testimonialHeading').value = testimonial['heading'];
	              //document.getElementById('testimonialPhoto').value = testimonial['photo'];
	              document.getElementById('testimonialVideo').value = testimonial['video'];
		    

		});
         }
	   
	var onEditTestimonialFailureCallback = function(debug){
	      return (function(oRequest){
	          if(debug){
	              alert(oRequest.responseText);
	          }
	          alert('Communication failure');
	      });
	}; 
	
	var showTestimonialForm = function(debug){
	      return (function(e){
	          YAHOO.util.Event.stopEvent(e);
	          YAHOO.util.Dom.setStyle('testimonialForm', 'display', 'block');
	      });	
	}
	    
    var getTestimonial = function(websiteUrl, debug){
	   return function(e){
		    YAHOO.util.Event.stopEvent(e);
		    var link = YAHOO.util.Event.getTarget(e);
		    var testimonialId = link.getAttribute('id');
		    var linkClicked = YAHOO.util.Event.getTarget(e);
		    var successcallback = onEditTestimonialSuccessCallback(debug, linkClicked);
		    var failurecallback = onEditTestimonialFailureCallback(debug);
		    YAHOO.util.Dom.setStyle('testimonialForm', 'display', 'block');
		   // SITE.util.Connect.send(successcallback, failurecallback, websiteUrl + 'ajax.php?run=gettestimonialbyid', 'testimonial_id='+testimonialId,  'POST');

	             var callback =
		    {
		      success:successcallback,
		      failure:failurecallback
		    };
		
		    YAHOO.util.Connect.asyncRequest('POST', websiteUrl + 'ajax.php?run=gettestimonialbyid', callback, 'testimonial_id='+testimonialId);


	   };        
    };     
    
    var cancelTestimonial = function(debug){
	   return function(e){
		    YAHOO.util.Event.stopEvent(e);
            document.getElementById('testimonialId').value = "";
            document.getElementById('testimonialFrom').value = "";
            document.getElementById('testimonialUrl').value = "";
            document.getElementById('testimonial').innerHTML = "";
            document.getElementById('testimonialHeading').value = "";
            document.getElementById('testimonialPhoto').value = "";
		    YAHOO.util.Dom.setStyle('testimonialForm', 'display', 'none');
		    YAHOO.util.Dom.setStyle('ajaxloader', 'display', 'none');
	   };    
    };  
    
    var setNewCampaignIndicator = function(websiteUrl, debug){
        return function(e){
           document.getElementById("newCampaign").value="1";
        }
    };

    var changeCampaignHandler = function(debug){
   	    return function(e){
           var campaignSelector = YAHOO.util.Event.getTarget(e);
           var campaignId = campaignSelector.options[campaignSelector.selectedIndex].value;
           document.location.href = document.location.href + '&c='+campaignId;
        }
   	}
   	
	return {
	
	
		init : function(accountId, campaignId, loginAjaxUrl, debug, websiteUrl){
	       
		   return function(e){

	         try{


	          /*    var myEditor = new YAHOO.widget.SimpleEditor('Testimonial', {
				    height: '400px',
				    width: '865px',
				    toolbar: {
				        titlebar: 'Text',
				        buttons: [
				            { group: 'textstyle', label: 'Font Style',
				                buttons: [
				                    { type: 'push', label: 'Bold', value: 'bold' },
				                    { type: 'push', label: 'Italic', value: 'italic' },
				                    { type: 'push', label: 'Underline', value: 'underline' },
				                    { type: 'separator' },
				                    { type: 'select', label: 'Arial', value: 'fontname', disabled: true,
				                        menu: [
				                            { text: 'Arial', checked: true },
				                            { text: 'Arial Black' },
				                            { text: 'Comic Sans MS' },
				                            { text: 'Courier New' },
				                            { text: 'Lucida Console' },
				                            { text: 'Tahoma' },
				                            { text: 'Times New Roman' },
				                            { text: 'Trebuchet MS' },
				                            { text: 'Verdana' }
				                        ]
				                    },
				                    { type: 'spin', label: '13', value: 'fontsize', range: [ 9, 75 ], disabled: true },
				                    { type: 'separator' },
				                    { type: 'color', label: 'Font Color', value: 'forecolor', disabled: true },
				                    { type: 'color', label: 'Background Color', value: 'backcolor', disabled: true }
				                ]
				            }
				        ]
				    },
				    handleSubmit:true,
				    dompath: false //Turns on the bar at the bottom
				});

				myEditor.render();
				YAHOO.util.Event.addListener('openEditor', 'click', openEditor());
				YAHOO.util.Event.addListener('editorSave', 'click', saveEditor(myEditor));
				YAHOO.util.Event.addListener('editorCancel', 'click', cancelEditor());
               */
				// login button
				YAHOO.util.Event.on('login', 'click', login(document.getElementById('loginForm'), loginAjaxUrl, debug));
				
				// Save settings button
				YAHOO.util.Event.on('saveSettings', 'click', saveSettings(accountId, document.getElementById('saveSettingsForm'), campaignId, websiteUrl, debug));
//				alert(e);

				// Save testimonial button
				YAHOO.util.Event.on('saveTestimonial', 'click', saveTestimonial(accountId, campaignId, document.getElementById('testimonialForm'), websiteUrl, debug));

				// Remove testimonial links
				YAHOO.util.Event.on(YAHOO.util.Dom.getElementsByClassName('removeTestimonial'), 'click', removeTestimonial(websiteUrl, debug));
				
				// Edit testimonial links
				YAHOO.util.Event.on(YAHOO.util.Dom.getElementsByClassName('editTestimonial'), 'click', getTestimonial(websiteUrl, debug));	
				
				// Add testimonial link
				YAHOO.util.Event.on('addTestimonial', 'click', showTestimonialForm(debug));		
				
				// Cancel testimonial link
				YAHOO.util.Event.on('cancelTestimonial', 'click', cancelTestimonial(debug));		
				
				// Create new campaign button	
				YAHOO.util.Event.on('createNewCampaignButton', 'click', setNewCampaignIndicator(websiteUrl, debug));	
				// accountId, frm, campaignId, websiteUrl, debug	
				YAHOO.util.Event.on('createNewCampaignButton', 'click', saveSettings(accountId, document.getElementById('saveSettingsForm'), null, websiteUrl, debug));
				
				// Campaign selector
				YAHOO.util.Event.on('testimonialCampaignName', 'change', changeCampaignHandler(debug));
				
		     }
		     catch(err){
		         alert(err + ":init() ControlPanel.js");
		     }

		   };
		}
	};
	
	
}();

