var article = {
  
  searchURL : '/articles/archive',
  categorySearchURL : null,
  currentImageOrder : null,
	numOfDraggableImages : null,
	imageSorter : null, 
  reorder_url : '/articles/move_list',
	
  addFileField : function() {
    //var ps = $('image_div').getElementsByTagName('p')
		var ps = $('progressTemplate').getElementsByTagName('p')
    for(var i=0;i<ps.length;i++){
      if (ps[i].getElementsByTagName('input')[0].value == '') return false
    }
    var newField = ps[0].cloneNode(true)
    newField.getElementsByTagName('input')[0].value = ''
    $('image_div').appendChild(newField)
  },
  showImage : function(el,options) {
    var tag  = options && options.tag ? options.tag : 'img'
    var imgs = $(el).getElementsByTagName(tag)
    for(var i=0;i<imgs.length;i++){
      if (imgs[i].style.display != 'none') {
        Element.hide(imgs[i])
      }
    }
	Element.show(options.current)
  },
  showAction : function(id) {
	Element.show('article_action_' + id)  
  },
  hideAction : function(id) {
	Element.hide('article_action_' + id)  
  },
  showCatAction : function(id) {
	Element.show('category_action_' + id)  
  },
  hideCatAction : function(id) {
	Element.hide('category_action_' + id)  
  },
  showCommentAction : function(id) {
	Element.show('comment_action_' + id)  
  },
  hideCommentAction : function(id) {
	Element.hide('comment_action_' + id)  
  },
  deleteImage : function(el,id) {
    if (!confirm('Are you sure?')) return false
    Element.remove(el)
    html = '<input name="dead_images[]" value="' +id + '" type="hidden"/>'
    new Insertion.Bottom('image_div', html)
  },
  validateEmail : function(id) {
    var msg = ''
    if ($F('email_address_' + id).length == 0) {
      msg += "Please enter an email address.\n"
    }
    if ($F('from_address_' + id).length == 0) {
      msg += "Please enter your email address.\n"
    }
    if (msg.length != 0) {
      alert(msg)
      return false
    }
    return true
  },
  resetImageBorders : function() {
    var images = $('image_div').getElementsByTagName('img')
    for(var i=0;i<images.length;i++) {
      Element.removeClassName(images[i],'image_action_border')
      if (!Element.hasClassName(images[i],'image_no_action_border')) {
        Element.addClassName(images[i],'image_no_action_border')
      }
    }
  },
  addImageBorder : function(id) {
   // Element.removeClassName('image_'+id,'image_no_action_border')
   // Element.addClassName('image_'+id,'image_action_border')
		
  },
  changeSearchURL : function(sel) {
	  if (sel.form.action.indexOf(article.searchURL) == -1) {
	    article.categorySearchURL = sel.form.action
	  } 
	  if ($F(sel) == 'all') {
      sel.form.action = article.searchURL
	  } else {
	    sel.form.action = article.categorySearchURL
	  }
  },
  livegridHelper : {
		 previewPanes : [],
		 loadingPreview : false,
		 loadingID : null,
		 loadingRow : null,
		 
		 notice      : function(text) {
			 $('article_notice').innerHTML = text
			 $('article_notice').style.visibility = ''
		 },
		 /* Loads preview above row */
		 _preview      : function(row) {
		   this.loadingID = livegrid.currentRowId(row);
			 this.loadingRow = row;
			 setTimeout("article.livegridHelper._preview('" + livegrid.currentRowId(row) + "')",1500);
		 },
		 clearID : function() {
			 this.loadingID = null;
			 this.loadingRow = null;
		 },
		 /* Loads preview beneath */
		 preview     : function(rowID,url) {
			 //if (this.loadingID != rowID) { return false;}
			 if (this.loadingPreview) {return false;}
			 //var row = this.loadingRow;
			 var row = rowID;
			 //alert(rowID);
			 $('article_preview').innerHTML = ''
			 this.notice('Loading...')
			 this.removeCurrentRowClass();
			 Element.addClassName(rowID,'current_row');
			 if (this.previewPanes[livegrid.currentRowId(row)]) {
				 $('article_preview').update(this.previewPanes[livegrid.currentRowId(row)]);
				 article.livegridHelper.loadingPreview = false;
				 $('article_notice').style.visibility = 'hidden'
			 } else {
				 this.loadingPreview = true;
				 new Ajax.Request(url + livegrid.currentRowId(row),{method :"post"})
			 }
			 //var pos = Position.cumulativeOffset(row)
			 //$('article_preview').style.top = pos[1] + 'px'
			 //$('article_preview').style.left = pos[0] + 100 + 'px'
			 Element.show('article_preview');
		 },
		 removeCurrentRowClass : function() {
			 $$('tr').each(function(row) {
				  Element.removeClassName(row,'current_row');
			 });
		 },
		 clearNotice : function() {
			 $('article_notice').innerHTML = ''
			 $('article_notice').style.visibility = 'hidden'
		 }
	},
	reorderImages : function() {
		//Gets called when the order changes for dragging
		var images = $$('#caption_admin_div img.image_no_action_border')
		var paramsAry = images.inject([],function(array,image){ 
									 image.style.zIndex = 1;
									 var imageId = image.id.replace(/image_/,'')
									 if (imageId) {
								     array.push('reorder_images[]=' + imageId ) 
									 }
									 return array
								 } 
							 ).uniq()
		var params = paramsAry.join('&')
		//First time through set the length because dragging can change the true value
		//Also set default order
	  if (!article.numOfDraggableImages) {
			article.numOfDraggableImages = images.length
			article.currentImageOrder = params
			return false;
		}
		if (article.numOfDraggableImages == paramsAry.length && (!article.currentImageOrder || article.currentImageOrder != params)) {
			article.currentImageOrder = params
			
			new Ajax.Request(article.reorder_url,{parameters : params, method : "post" })
		} 
	},
	showImageForm : function(id) {
	//Only show one at a time
		if (!$('image_action_' + id).visible()) {
		  article.showAction(id);
		  $('image_wrapper_' + id).style.height = '100px'
		} 
	},
	hideImageForm : function(id,force) {
		article.hideAction(id);
		if ( (!$('image_action_' + id).visible() && $('image_wrapper_' + id).style.height == '100px') || force) {
		  $('image_wrapper_' + id).style.height = '120px'
		}
	},
	adjustImageForTextField : function(id) {
		$('image_wrapper_' + id).style.height = '40px'
	},
	showImageStatus : function(id) {
		article.hideAction(id);
		$('image_wrapper_' + id).style.height = '100px'
		$('image_action_' + id).show();
	},
	startSorter : function() {
		if (!article.imageSorter) { 
		  article.imageSorter = true;
			new PeriodicalExecuter(article.reorderImages, 1);
		}
	}
} 

var imageGallery = {
  arrowLeft : function(el,options) {
    var tag  = options && options.tag ? options.tag : 'img'
    var hide = options && options.hideOption ? options.hideOption : 'display'
    var imgs = $(el).getElementsByTagName(tag)
    var firstImage = imgs[0]
    for(var i=0;i<imgs.length;i++){
      if (imgs[i].style.display != 'none') {
        Element.show(imgs[i-1])
        Element.hide(imgs[i])
        this.toggleArrows(i-1,imgs.length,hide)
        return
      }
    }
  },
  arrowRight : function(el,options) {
    var tag  = options && options.tag ? options.tag : 'img'
    var hide = options && options.hideOption ? options.hideOption : 'display'
    var imgs = $(el).getElementsByTagName(tag)
    for(var i=0;i<imgs.length;i++){
      if (imgs[i].style.display != 'none') {
        Element.show(imgs[i+1])
        Element.hide(imgs[i])
        this.toggleArrows(i+1,imgs.length,hide)
        return
      }
    }
  },
  toggleArrows : function(num, total,hide) {
    if (num == total - 1) {
      imageGallery.hideElement('image_right',hide)
    } 
    if (num == 0) {
      imageGallery.hideElement('image_left',hide)         
    }
    if (num == 1 && total != 1) {
      imageGallery.showElement('image_left',hide)
    }
    if (num == total - 2) {
      imageGallery.showElement('image_right',hide)
    } 
  },
  hideElement : function(el, hideType) {
    if (hideType == 'visibility') {
      $(el).style.visibility = 'hidden'
    } else {
      Element.hide(el)
    }
  },
  showElement : function(el, hideType) {
    if (hideType == 'visibility') {
      $(el).style.visibility = ''
    } else {
      Element.show(el)
    }
  }
}
function linkToggle(el, linkEl, onHideText,onShowText,options) {
  if (Element.visible(el)) {
    if (typeof options != 'undefined' && options.onHide) { options.onHide() }
		$(linkEl).innerHTML = onShowText
  } else {
		if (typeof options != 'undefined' && options.onShow) { options.onShow() }
    $(linkEl).innerHTML = onHideText
  }
}

if (window.PeriodicalExecuter) {
  PeriodicalExecuter.prototype.registerCallback = function() {
    this.intervalID = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
  }

  PeriodicalExecuter.prototype.stop = function() {
    clearInterval(this.intervalID);
  }
}
var album = {
	pe : null,
  start: function() { 
	  //album.cycle()
    album.pe = new PeriodicalExecuter(album.cycle, 7)  
  }, 
	stop : function() {
		album.pe.stop()
	},
	images : function() {
		return $('article_large_gallery').getElementsByTagName('div')
	},
	captions : function() {
		return $('article_caption_container').getElementsByTagName('p')
	},
  cycle: function() { 
    new Effect.Fade('article_large_gallery', {  
      duration: 1, 
      fps: 50, 
      afterFinish: function() { 
			  var imgs = album.images()
			  for(var i = 0;i<imgs.length;i++) {
					if (Element.visible(imgs[i])) {
						Element.hide(imgs[i])
						Element.show(imgs[(i+1)%imgs.length])
						break
					}
				}
        new Effect.Appear('article_large_gallery', {
              duration: 1,
              fps: 50
        })
      }   
    }) 
		album.cycleCaption()
  },
	cycleCaption : function() {
		if ($('article_caption_container')) {
			
			new Effect.Fade('article_caption_container', {  
        duration: 1, 
        fps: 50, 
        afterFinish: function() { 
			    var imgs = album.captions()
					
			    for(var i = 0;i<imgs.length;i++) {
					  if (Element.visible(imgs[i])) {
						  Element.hide(imgs[i])
							
						  Element.show(imgs[(i+1)%imgs.length])
						  break
					  } else {
							
						}
				  }
          new Effect.Appear('article_caption_container', {
              duration: 1,
              fps: 50
          })
        }   
      }) 
		}
	},
	updateCaption : function(id) {
	  if ($('article_caption_container')) {
		  var imgs = album.captions()
		  for(var i = 0;i<imgs.length;i++) {
				Element.hide(imgs[i])
		  }
		  Element.show('image_caption_' + id);
		}
	}
} 
var uploadMovie = {
		  articleID : null,
			uploaderID : 0, //Counter for new upload swfs
			actionID : null, //The swf currently in use
			
			obj : function() {
				//var uploadName = id ? 'uploader_' + id : 'uploader'
				var uploadName = 'uploader'
			  if (navigator.appName.indexOf("Microsoft") != -1) {
          return window[uploadName];
        } else {
          return document[uploadName];
        }
			},
			
			browse : function(id) {
				//Make sure ID is set for progressbar updating
				//this.obj(id).setName(id);
			  this.obj().browse(id);
			},
			browseFile : function(str,len) {
				alert('Uploading ' + str + " len " + len);
			},
			fileNameEmpty : function(uploadNum) {
			  $(uploadMovie.pWrapper()).hide();
			  $(uploadMovie.pUploader(uploadNum)).show();
			  alert('Please choose a picture to upload' + uploadNum);
			},
			uploadComplete : function(response) {
				//alert('Done');
				
			  $('caption_admin_div').update(response);
				 //$(uploadMovie.pWrapper()).hide();
				response.evalScripts();
			},
			uploadTotalComplete : function() {
				//$(uploadMovie.pWrapper()).hide();
				$('manage_images').hide();
				$('article_form').submit();
			},
			uploadProgress : function(response) {
				var pct = Math.round((response.bytesLoaded / response.bytesTotal * 100) * 10)/10 + '%';
			  $(uploadMovie.pStatus()).setStyle({background : "red",width : pct,height : '20px'});
				$(uploadMovie.pTextStatus()).update(response.uploadMessage + " " + pct)
				//if (response.bytesLoaded == response.bytesTotal) {
				  //$(uploadMovie.pTextStatus()).update('Saving ' +  filename)
				//} else {
				  //$(uploadMovie.pTextStatus()).update(pct)
				//}
			},
			selectedFile : function(name,uploadNum) {
				var filename = uploadNum ? 'filename_' + uploadNum : 'filename'
			  $(filename).value = name
				uploadMovie.addFile();
			},
			//Uploads files in there are any, and saves article
			upload : function(id,uploadNum) {
				if (id) { uploadMovie.articleID = id }
				//No files
				//alert(uploadMovie.getCaptions());
				//return;
				
				if (uploadMovie.uploaderID == 0) {
				  $('article_form').submit();	
				  return
				}
				$('save_article_button').disabled = true;

			  $(uploadMovie.pWrapper()).show();
				$('progressTemplate').hide();
			  $(uploadMovie.pStatus()).setStyle({background : "red",width : 0,height : '20px'});
        var params = uploadMovie.articleID ? 'id=' + uploadMovie.articleID : ''
        this.obj().upload('/articles/uploader?' + params,uploadMovie.getCaptions());
				uploadMovie.removeFileContainers();
			},
			addFile : function() {
				uploadMovie.uploaderID += 1;
				var uploadHTML = $('progressTemplate').innerHTML;
				uploadHTML = uploadHTML.replace('uploadMovie.browse()','uploadMovie.browse(' + uploadMovie.uploaderID + ')');
				//change fields progressMainContainer,filename,progressHeader,progressWrapper,
				//progressUploader,status,textStatus,image_caption
				uploadHTML = uploadHTML.replace(/id="?filename"?/,'id="filename_' + uploadMovie.uploaderID + '"');
				
				uploadHTML = uploadHTML.replace(/class="?progressUploader"?/,'class="progressUploader" id="progressUploader_' + uploadMovie.uploaderID + '"');
				uploadHTML = uploadHTML.replace(/class="?progressMainContainer"?/,'class="progressMainContainer" id="progressMainContainer_' + uploadMovie.uploaderID + '"');
				uploadHTML = uploadHTML.replace(/class="?progressHeader"?/,'class="progressHeader" id="progressHeader_' + uploadMovie.uploaderID + '"');
				uploadHTML = uploadHTML.replace(/id="?image_caption"?/,'id="image_caption_' + uploadMovie.uploaderID+'"');
				//alert(uploadHTML);
				new Insertion.Bottom('newImageWrapper',uploadHTML);
				$('filename_'+uploadMovie.uploaderID).value = ''
				$('image_caption_'+uploadMovie.uploaderID).value = '';
			},
			getCaptions : function() {
			  var ary = []
				for(var i=0;i<=uploadMovie.uploaderID;i++) {
					if ($(uploadMovie.pCaption(i))) {
					  ary[i] = $F(uploadMovie.pCaption(i));
					  
					}
				}
				return ary;
			},
			removeFileContainers : function() {
				for(var i=1;i<=uploadMovie.uploaderID;i++) {
					if ($(uploadMovie.pMainContainer(i))) {
					  $(uploadMovie.pMainContainer(i)).remove();
					}
				}
			},
			createUploader : function(id) {
				var tag = new FlashTag('/sprout/swfs/uploader.swf', 0, 0); 
		    tag.version = '9,0,45,0';
		    tag.setId('uploader_' + id);
				$('hidden_flash').innerHTML = $('hidden_flash').innerHTML + tag.toString();
			},
			//Helper functions for dynamnic elements
			pWrapper : function(uploadNum) {
				return 'statusTopWrapper'
			},
			pFileName : function(uploadNum) {
				return uploadNum ? 'filename_' + uploadNum : 'filename'
			},
			pUploader : function(uploadNum) {
				return uploadNum ? 'progressUploader_' + uploadNum : 'progressUploader'
			},
			pHeader : function(uploadNum) {
				return uploadNum ? 'progressHeader_' + uploadNum : 'progressHeader'
			},
			pStatus  : function(uploadNum) {
				return uploadNum ? 'status_' + uploadNum : 'status'
			},
			pTextStatus  : function(uploadNum) {
				return uploadNum ? 'textStatus_' + uploadNum : 'textStatus'
			},
			pCaption : function(uploadNum) {
				return uploadNum && uploadNum != 0 ? 'image_caption_' + uploadNum : 'image_caption'
			},
			pMainContainer : function(uploadNum) {
				return uploadNum ? 'progressMainContainer_' + uploadNum : 'progressMainContainer'
			}
} 

function setLog(text) {
	alert(text);
}