var Video = function() {
}
Video.editWidth=350;
Video.editHeight=60;
Video.editSourceHeight=267;

function getRecords(login, page_num) {
    advAJAX.get({
       url : "/" + login + "/page" + page_num + ".html?cmd=ajax_videos",
       onInitialization : function() {
          Core.setText("videosTable", '<span style="font-weight: bold">Please wait...</span>');           
       },       
          onSuccess : function(obj) {
          Core.setText("videosTable", obj.responseText);
       }
    });
}


function initDynamicTable(login, page_num) {
    getRecords(login, page_num);
    Core.flushElementCache();
}
//currently not used
function editVideo(video_id, login) {   
   advAJAX.get({
      url : "/" + login + "/?cmd=edit_form&video_id=" + video_id,
      onInitialization : function() {
         Core.setText("videosTable", '<span style="font-weight: bold">Please wait...</span>');           
      },       
      onSuccess : function(obj) {
         Core.setText("videosTable", obj.responseText);
      }
   });
}


function deleteVideo(video_id, login, page) {
   if(confirm("Are you sure you want to delete this video?")) {
      advAJAX.get({       
         cmd : 'delete_video',
			video_id : ''+video_id,
         onSuccess : function(obj) { 
								if(obj.responseText == 'ok' ) {  
									if(typeof login == 'string' && login != '') {
										document.location = '/'+login+'/'+page+'.html';
									} else {
										document.location.reload();
									}
								} else {
									alert('Unable to delete video. ' + obj.responseText);
								}
							},
			onError: function() {
							alert("Cannot delete this video.");			
							}
      });      
   }
}



function addVideo(login) {
   var videoUrl = Core.getText('videoUrl') || '';
   var title    = Core.getText('title')  || '';
   var description   = Core.getText('video_description') || '';    
   var add_tags      = Core.getText('add_tags') || '';
	var view_video		= Core.getText('ViewVideo') || '10';
   var add_password  = Core.getText('add_password') || '';   
//	var offensive_cont= ''+Core.getElementU("offensive_content").checked;      
	var offensive_cont= 'false';   

   if (videoUrl != null && videoUrl != '') {
      advAJAX.get({
          cmd: 'add_new_video',
          videoUrl: videoUrl,
          title: title,
          description: description,
          add_tags: add_tags,
			 view_video: view_video,
          add_password: add_password,
			 offensive_cont: offensive_cont,		

          onInitialization : function() {
             Core.setText('videoUrl', 'Please wait...');           
          },       
          onSuccess : function(obj) {           
             if(obj.responseText.indexOf('response|') > -1){
                window.location.href = '/' + login + '/' + obj.responseText.substr(9);
             } else { 
                alert('Unable to add a video. ' + getError(obj));
                Core.setText('videoUrl', videoUrl);
             }
          },    
          onError : function() { 
             alert('Error adding video. '); 
             Core.setText('videoUrl', videoUrl);
          }
       });
   }    
}



function catch_addForm(login) {        
   advAJAX.assign(document.getElementById("addVideoForm"), {
     onSuccess : function(obj) {          
         if (obj.responseText == 'ok') {
            getRecords(login, 0);
            clearForm();
            Core.hideElement('add_video');            
         } else {
            alert("Unable to add video. " + getError(obj));
         }
      }
   });
}


function catch_editForm(video_id, size) {
   Core.flushElementCache();    
   var field = Core.getText('field' + video_id);
   var content = Core.getText(field  + video_id);

   var escaped_content = escape(content);
   // todo: release also post method    
    advAJAX.get({
       url : "?cmd=edit_action&size="+size+"&video_id=" + video_id + "&field=" + field + "&content=" + escaped_content,
       onInitialization : function() {
          Core.setText('edit_'  + field + '_' + video_id, '<span class="text2">Please wait...</span>');           
       },       
       onSuccess : function(obj) {
          if(obj.responseText == 'ok' || obj.responseText.indexOf('response|') > -1){
             if(obj.responseText.indexOf('response|') > -1) {
                endEditMode(field, video_id, content, obj.responseText.substr(9) );
             } else {
                endEditMode(field, video_id, content);
             }
          } else {
             alert('Unable edit data. ' + getError(obj));
             endEditMode(field, video_id);
          }
       },
       onError :function(obj){ 
          alert('Error edit data. ' + getError(obj)) ;
          endEditMode(field, video_id);
       }
    });    
}

function getError(obj) {
   if(obj.responseText != null && obj.responseText.indexOf('error|') > -1){
      return obj.responseText.substr(6);
   } else {
      Logger.log(obj.responseText);
      return '';
   }
}

function clearForm(){
   Core.setText('title', '');
   Core.setText('description', '');
   Core.setText('google_videoUrl', '');
}


function setBg(element, bg) {
   element.style.background=bg;
}


function limit(el_name, maxlen) {
   var field_content = Core.getText(el_name);
   if(field_content.length > maxlen){
      field_content = field_content.substr(0, maxlen);
      Core.setText(el_name, field_content);
   }
}




function editMode(el_name, id, size ){
   var text_el_name = el_name + '_' + id;
   var edit_el_name = 'edit_' + text_el_name;   
   var value = Core.getText(text_el_name); 

   var input_field = '';
   if(el_name == 'description') {
      input_field = '<textarea name="description' + id + '" id="description' + id +'" style="width:' + Video.editWidth + 'px; height:' + Video.editHeight + 'px;" onKeyUp="limit(\'description' + id + '\' , 255)" >' + value + '</textarea>';
   } else if(el_name == 'videoUrl') {
      input_field = '<textarea name="videoUrl' + id + '" id="videoUrl' + id +'" style="width:' + (Video.editWidth + 7) +  'px; height:' + Video.editSourceHeight + 'px;" >' + value + '</textarea>';
   } else if(el_name == 'title')  {
      input_field = '<textarea name="title' + id + '" id="title' + id +'" rows="1"  style="width:' + Video.editWidth + 'px" onKeyUp="limit(\'title' + id + '\' , 255)" >' + value + '</textarea>';
   }
   
   value = '<form id="editVideoForm_' + el_name + '_' + id +'" action="?cmd=edit_action" method="post">'
      + input_field
      + '<input type=hidden name="field' + id + '" id="field' + id +'"      value="' + el_name + '">'
      + '<input type=hidden name="video_id"      value="' + id + '">'
      + '<input type=hidden name="cmd" value="edit_action"><br><div class="clear"></div>'
      + '<input type=button  onClick="catch_editForm(' + id +','+"'"+size+"'"+');" name=edit value="Save" class="button"><input type=reset class="button" name=clear value="Cancel" onclick="endEditMode(\''+ el_name + '\', \'' + id + '\')"></form>';

   Core.hideElement(text_el_name);
   Core.hideElement('tip_' + text_el_name);
   Core.showElement(edit_el_name);
   value = value.replace(/<br>/g, '\n');
   Core.setText(edit_el_name, value);
}


function endEditMode(el_name, id, new_value, response){
   var text_el_name = el_name + '_' + id;
   var edit_el_name = 'edit_' + text_el_name;
   
   if(new_value != null && new_value != undefined){
      Core.setText(text_el_name, new_value);
   }       
   Core.hideElement(edit_el_name);
   Core.showElement(text_el_name);
   
   if(Core.getText(text_el_name) == null || Core.getText(text_el_name) == '') {
      Core.showElement('tip_' + text_el_name);
      Core.setText('tip_' + text_el_name, 'click to add a ' + el_name );
   }
//todo: ?????
Core.flushElementCache();
   if(response != undefined){
      response = response.replace(/\n/g, '<br>');
      Core.setText(text_el_name, response); 
   }
Core.flushElementCache();
}


function viewOrEditVideo(el_name, id, size) {
   var text_el_name = el_name + '_' + id;
   var edit_el_name = 'edit_' + text_el_name;
   
   if (edit_el_name != null) {
		var dom_edit_el = Core.getElementU(edit_el_name);

		if (dom_edit_el != null) {
			if (dom_edit_el.style.display == "none" 
            || dom_edit_el.style.display == null 
            ||  dom_edit_el.style.display == ''  ) {
            editMode(el_name, id, size)
			} else {
            endEditMode(el_name, id)
			}
		}
	}
} 
   
   
function updateVideo(id) {
//   Core.flushElementCache(); 
    
    advAJAX.get({
       url : "?cmd=get_one_video_div&video_id=" + id,
       onInitialization : function() {
          Core.setText('videoUrl_'  + id, '<span style="font-weight: bold" class="text2b">Refreshing video...</span>');           
       },       
       onSuccess : function(obj) {
          Core.setText('videoItem_'  + id, obj.responseText);
       },    
       onError :function(){ 
          alert('Error updating video. ');
       }
   });
   
   Core.flushElementCache();
} 


function getOneVideoPage(id) {
    advAJAX.get({
       url : "?cmd=get_one_video_page&video_id=" + id,
       onInitialization : function() {
          Core.setText('videoUrl_'  + id, '<span style="font-weight: bold">Please wait...</span>');           
       },       
       onSuccess : function(obj) {
          Core.setText('videoUrl_'  + id, obj.responseText);
       },    
       onError :function() { 
          alert('Error updating video. ');
       }
    });   
}


function getOneVideoDiv(id) {
    advAJAX.get({
       url : "?cmd=get_one_video_div&video_id=" + id,
       onInitialization : function() {
          Core.setText('videosTable', '<span style="font-weight: bold">Please wait...</span>');           
       },       
       onSuccess : function(obj) {
          Core.setText('videosTable', obj.responseText);
       },    
       onError :function() { 
          alert('Error updating video. ');
       }
    });   
}

