// JavaScript Document

var lastBar;
var lastMsg;

function setCookie(name, value, expires, path, domain, secure) {
    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

function addToKlipSet(kid,sid){
	if ( typeof(sid) == 'undefined' ){
		xajax_ax_getKlipSets(kid);
	}else{
		//
		dd = xajax.$('setID');
		sid = dd.options[ dd.selectedIndex ].value;
		xajax_ax_addToKlipSet(kid,sid);
	}
}

function showAddKlipToSet( sets , kid ){
	dd = "<select id='setID'>";
	for(var i = 0; i < sets.length ; i++ ){
		var s = sets[i];
		dd += "<option value='"+s['id']+"'>"+s['title']+"</option>";
	}
	dd += "</select>";
	b = "<input type=button onClick=\"addToKlipSet("+kid+",1)\" value='Add Klip' >"
	xajax.$("addToKlipSet_"+kid+"_pane").innerHTML = "Add to: " + dd + b;
}

function updateFavCount(kid,count,addLink){
	xajax.$('favCount_' + kid ).innerHTML = count + "  &nbsp ( added! )";
}


function getMoreResults2(p,c,sort,allKlips){

	pageState.updateState("page",p);
	xajax.$('listing_div_'+p).innerHTML = "<img src='/images/ui/icon/arrow_spinner.gif' align='absmiddle' style='padding-bottom:3px'/> <b>Loading Results...</b>";
	//setTimeout("xajax_ax_getMoreKlips("+p+",'"+getQueryVariable('by')+"',"+c+",'"+sort+"')",500);
	xajax_ax_getMoreKlips(p,getQueryVariable('by'),c,sort,allKlips);
	return false;
}


function getMoreResults(start,end,criteria,sort,reverse){

	pageState.setParam("start",start);
	pageState.setParam("end",end);	
	pageState.applyState();
	if ( reverse ){
		Element.hide('prevLink_'+start);
		var listingBars = document.getElementsByClassName('listingPageBar' , $('listingResults') );
		var firstBar = listingBars.first();
		lastBar = firstBar;
		lastMsg = firstBar.innerHTML;
		firstBar.innerHTML = "<img src='/images/ui/icon/arrow_spinner.gif' align='absmiddle' style='padding-bottom:3px'/> <b>Loading Results...</b>";
	}else{
		xajax.$('listing_div_'+start).innerHTML = "<img src='/images/ui/icon/arrow_spinner.gif' align='absmiddle' style='padding-bottom:3px'/> <b>Loading Results...</b>";
	}
	xajax_ax_getMoreKlips(start,end,getQueryVariable('by'),criteria,sort,reverse);	
	return false;
}

function confirmKlipAdded(kid){
	xajax.$("addToKlipSet_"+kid+"_pane").innerHTML = "<a href='#' onClick='addToKlipSet("+kid+")'>Add Klip to a Set</a>";
	alert("Klip Added!");	
}

function getQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
	var vresult;
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return pair[1];
    }
  } 
  
  vars = window.location.pathname.split("/");
  vars.each( function(v){
  	if ( v.indexOf("-") ){
  		var parts = v.split("-");
  		if( parts[0] == variable ){
  			vresult =  parts[1];
  		}
  	}
  });
  
  if ( vresult ) return vresult;
  
//  alert('Query Variable ' + variable + ' not found');
}

function showCommentForm(){

}

function doPostComment(kid){

	c = new Array();

	if (xajax.$('comment_category')){
		$catIdx = xajax.$('comment_category').selectedIndex ;
	}else{
		$catIdx = -1;
	}

	if ( $catIdx != -1 ){
		c['c_category'] =  xajax.$('comment_category').options[ $catIdx ].value;
	}
	c['c_subject'] = xajax.$('comment_subject').value;	
	c['c_body'] = xajax.$('comment_body').value;		
	// anon fields?
	// -------------
	if ( $('comment_anonName') )
	{
		c['c_anonName'] = $F('comment_anonName');
		c['c_anonEmail'] = $F('comment_anonEmail');
		c['c_anonWebsite'] = $F('comment_anonWebsite');		
	}
	
	xajax_ax_postComment(kid,c);
}

function postCommentCB(c){
	
	//var cs = "<div class='commentItem' style='background-color:lightblue'><div>"+c['author']['login']+" : "+c['subject']+" :  ("+c['dateCreated']+")</div><div>"+c['body']+"</div></div>";

	var cs = "<div id='newComment' style='display:none' class='commentItem'>";
	
	if (c['author']['hasAvatar'] && c['author']['hasAvatar'] != 0 ){
		cs += "<div class='avatar'><img width=64 src='/images/user_avatars/"+c['author']['id']+"'></div>";
	}else{
		cs += "<div class='avatar'><img src='/images/ui/default-avatar.gif' /></div>";
	}
	
	cs +=  "<div class='textcontainer'>";
	cs +=    "<h3>"+ c['subject'] + "</h3>";
	cs +=    "<div class='postedby'>Posted by <a href='/index.php?action=explore,user_info&uid="+ c['author']['id'] +"'>"+ c['author']['login'] +"</a> on ("+ c['dateCreated'] +")</div><p>"+ c['body'] +"</p>";

	cs += "</div></div>";
	
	
	xajax.$('comments').innerHTML += cs;
	xajax.$('commentForm').reset();
	xajax.$('commentFormPane').innerHTML = "<b>Comment Posted!</b>";
	
	new Effect.Appear('newComment');
	
}

function showRating(kid,type){
	
	if ( !type ) type = 'klip';
	
	var dd = "<select id='ratingScore' >";
	for(i = 1 ; i <=5 ; i++){
		dd += "<option value='"+i+"'>"+i+" out of 5</option>";
	}
	dd += "</select>";
	dd += "<input type='button' value='go' onClick=\"doRating("+kid+",'"+type+"')\" >";
	
	xajax.$('ratePane_'+kid).innerHTML = dd ; 

}

function doRating(kid,type){
	var e = xajax.$('ratingScore');
	var r = e.options[  e.selectedIndex ].value;
	xajax_ax_rateItem(type,kid,r);
}

function updateFavCount(kid,count,addLink){
	xajax.$('favCount_' + kid ).innerHTML = count + "  &nbsp ( added! )";
}

function userLogin(form){
	
	var l = form.elements['login'].value;
	var p = form.elements['password'].value;
	var r = form.elements['return'].value;
	
	xajax_ax_userLogin(l,p,r);
	
}


function resultsLoaded(){
	try{
		$(lastBar.id).innerHTML = lastMsg;
		lastBar.innerHTML = lastMsg;
	}catch(e){
		alert(e);
	}
}


PageState = Class.create();
PageState.prototype = {
	initialize: function(){
		this.params = new Array();
		this.useCookies = false;
		this.useHash = true
	}
	,
	setParam: function(k,v){
		this.params[k] = v ;
	}
	,
	dumpParams: function(){
		alert( $H(this.params).map( function(p){ return p.key +"="+p.value; } ).join(",") );
	}
	,
	setUseCookies: function(b){
		this.useCookies = b;
	}
	,
	getStateString: function(){
		var parts =	$H(this.params).map(
			function(p){
				return p.key+"-"+p.value;
			}
		);
		return parts.join("_");
	}
	,
	applyState:function(){
		var s = this.getStateString();
		if ( this.useCookies ) setCookie("pageState",s);
		if ( this.useHash ) document.location.hash = s;
	}
	,
	updateState:function(k,v){
		this.setParam(k,v);
		this.applyState();
	}
	,
	parseState:function(s){
		if ( !s ) s = document.location + "";
		var m = s.substr( s.indexOf('#')+1 );
		var parts = m.split("_");
		for(i=0;i<parts.length;i++){
			var kv =parts[i].split("-");
			this.setParam(kv[0],kv[1]);
		}
		
	}
	,
	clearState:function(){
		this.params.clear();
	}
	

	
}

function saveFilters(){

	$('f_status').innerHTML = "saving settings, reloading page...";
	Element.show($('f_status'));

	var data = { adult:$F('f_adult') , global:$F('f_global') }

	xajax_ax_saveFilters( data );
}


function toggleFilters(){
	Element.toggle( $('displayFilters') );
	if ( $('displayFilters').style.display == 'none' ){
		$('filterLink').innerHTML = 'More Filters';
	}else{
		$('filterLink').innerHTML = 'Less Filters';
	}
	

	
}

function fetchLanguages(){
	if ( !langsFetched ){
		$('language').disabled = true;
		$('language').options[ 0 ] = new Option("loading languages...");
		xajax_ax_fetchLanguages(true);
	}
}


function languageSelected(){
	var l = $F('language');
	if ( l == null || !l ){
		return;
	}
	xajax_ax_selectLanguage(l);
}

function addLanguages( langs  ){
	var langEl = $('language');

	langEl.options[ 0 ] = new Option("Select Language...");
	$H(langs).keys().each(
		function(v){
			langEl.options[ langEl.options.length ] = new Option(langs[v],v);
		}
	);
	$('language').disabled = false;
	langsFetched = true;

}

function showSuggestLanguage(){
	ax_xajax_suggestLang('start');

}


/**
 * scans a given element for A tags and if the HREF matches the 
 * current document.location, it adds the specified class to it
 */
function turnNavOn(el, addStyle , exact )
{
	
	var currentUrl = document.location;
	document.status = " > " + currentUrl;
	var cAct =getQueryVariable('action');
	var uri = currentUrl.href.match(/\/index.php.*/);


	
	var t =	$(el).getElementsByTagName("a");

	$A(t).each( 
		  function(ta){ 
			var href = ta.getAttribute('href');

			if ( exact )
			{
				if (uri == href) Element.addClassName(ta,addStyle);								
			}
			else
			{
				m = href.match(/action=(.*?)(&|$)/);
				if  (m)
				{
					if ( m[1] == cAct) Element.addClassName(ta,addStyle);
				}
			}
		  }  );
}




