var dbstore = [];
var expose = false, testtables;
$(function(){
	var dct = 0;
	var dctopen = 0;
	var $advoptwrap = $('#advancedoptions-wrap');
	var $sortbtns = $('thead a', '#galleryresults');
	var sortoptions = {set: 'hot', sort: "num ASC", type:"all"};

	$('#backtotop').bind('click', function(){
		$.jscroll({to:0});
		return false;
	});
	
	$('#galleryresults thead').jfollow('#galleryresults', function(){
		if($('#tempthead').length===0){$('<thead id="tempthead" style="height:36px; width:100%;"><tr><td colspan="8"><span></span></td></tr></thead>').prependTo('#galleryresults');};
	}, function(){
		$('#tempthead').remove();
	});

	/* Gallery Set Drop Down */

	$('#advancedoptions-btn a').toggle(
		function(){
			$(this).addClass('aoactive');
			$advoptwrap.add('.contentarea').stop(true).animate({top:0})
			return false;
		},
		function(){
			$(this).removeClass('aoactive');
			$advoptwrap.add('.contentarea').stop(true).animate({top:-100})
			return false;
		}
	);

	
	var closeSetList = function(e){
		$('#set-list').css({display:'none'});
		$(window).unbind('click', closeSetList);
		return false;
	};
	
		
	$('#set-dropdown a').bind('click', function(){
		$('#set-list').css({display:'block'});
		$(window).bind('click', closeSetList);
		return false;
	});
	
	$('#set-list-ul li a').bind('click', function(){
		var set = $(this).find('span').text();
		$('#set-dropdown a.set-droplink').text(set);
		closeSetList();
		for(var key in _wk.SETS){
			set = (_wk.SETS[key]==set)?key:set;
		};
		$.extend(sortoptions, {set: set});
		gReq(sortoptions);
		return false;
	});
	
	
	/* ============================ */
	
	
	var gReq = function(data){
		$('#galleryresults tbody').empty();
		$('<tr class="odd"><td colspan="8" style="text-align:center; padding:10px;"><img src="../images/gallery/loader.gif" width="16" height="16" /></td></tr>')
			.appendTo('#galleryresults tbody')
		;
		
		$.getJSON('xhr/figures_heroclix.php', data, function(result){
			if(!result.Error){
				$('#galleryresults tbody').empty();
				var db = result.figures.concat(result.cards);
				dbstore = db;
				var c=0;
				for(var i=0, j=db.length; i<j; i++){
					var fig = db[i];
					c++;
					var rowstripe = (c%2===1)?"odd":"even";
					$('<tr class="'+rowstripe+'" num="'+i+'" rel="'+(fig.setname+'-'+fig.type+'-'+fig.num)+'">'+
						'<td width="45" class="first">'+fig.setname+'-'+fig.num+'</td>'+
						'<td width="72">'+_wk.TYPES[fig.type]+'</td>'+
						'<td width="161">'+fig.charname+'</td>'+
						'<td width="74">'+((fig.type==0 || fig.type==4)?_wk.EXPER[fig.experience]:'')+'</td>'+
						'<td width="40">'+fig.points+'</td>'+
						'<td width="65">'+((fig.type==0 || fig.type==4)?_wk.RARITY[fig.rarity]:'')+'</td>'+
						'<td width="110">'+((fig.team)?fig.team:' ')+'</td>'+
						'<td width="109">'+_wk.SETS[fig.setname]+'</td>'+
					    '</tr>')
						.appendTo('#galleryresults tbody')
					;
					if(c>1){c=0;};
				};
			}else{
				if(result.Error==="Blank"){
					$('#galleryresults tbody').empty();
					$('<tr class="odd"><td colspan="8" class="error">Nothing matched your search!  Please try another.</td></tr>').appendTo('#galleryresults tbody');
				}else{
					$('#galleryresults tbody').empty();
					$('<tr class="odd"><td colspan="8" class="error">An unknown error has occurred.  Please refresh the page.</td></tr>').appendTo('#galleryresults tbody');
				};
			};
		});
	};
	
	testtables = gReq;
	gReq(sortoptions);
	
	$sortbtns.bind('click', function(){
		// todo: use reverse $.extend to create a global settings object for gReq
		$sortbtns.removeClass('hide').parents('td').removeClass('active');
		$(this).addClass('hide').parents('td').addClass('active');
		var sortdir = ($(this).hasClass('up'))?'DESC':'ASC';
		var sortby = $(this).parent('div').prev('span').text();
		if(sortby=="#"){
			sortby = "num "+sortdir;
		}else{
			sortby = _wk.SORTOPT[sortby]+" "+sortdir;
		};
		sortoptions = $.extend(sortoptions, {sort: sortby});
		gReq(sortoptions);
		return false;
	});
	
	/* ============= SEARCH OPTIONS ============== */
	
	$('#advancedform').bind('submit', function(){
		delete sortoptions.name;
		delete sortoptions.lpts;
		delete sortoptions.pts;
		delete sortoptions.keywords;
		for(var i=0, j=this.elements.length; i<j; i++){
			var fel = this.elements[i];
			if(fel.type!="submit" && fel.type!="reset"){
				if($(fel).val()!=""){
					var sopt = {};
					sopt[fel.name] = $(fel).val();
					if(fel.name==="keywords"){sopt[fel.name]=sopt[fel.name].replace(/\,\s+/g, ",");};
					sortoptions = $.extend(sortoptions, sopt);
				};
			}
		};
		gReq(sortoptions);
		return false;
	});
	
	$('.formel-input-s input:reset').bind('click', function(){
		delete sortoptions.name;
		delete sortoptions.lpts;
		delete sortoptions.pts;
		delete sortoptions.keywords;
	});
	
	/* ============= Gallery UI Code ============== */
	
	
	$('.popup-image').live('click', function(e){
		var s = $(this).data('state');
		if(s=="m"){
			$(this).data('state', 'l').stop(true).animate({width:320});
			$(this).parent().parent().stop(true).animate({width:548+195});
		}else if(s=="l"){
			$(this).data('state', 'm').stop(true).animate({width:125});
			$(this).parent().parent().stop(true).animate({width:548});
		}else{
			return false;
		};
		return false;
	});
	
	var tipTitle = function(targ, $i){		
		var $t = $(targ);
		var rstr = "";
		
		if($t.attr('cname')!="undefined"){rstr+=$t.attr('cname')+" ";};
		if($t.attr('crealname')!="undefined"){rstr+="("+$t.attr('crealname')+")";};
		return rstr;
	};
	
	var tipContent = function(targ, $i){
		var $t = $(targ);
		try{
			if($t.attr('crealname')!="undefined"){
				return _wk.POWERS[$t.attr('crealname')].txt
			}else{
				for(var i=1; i<7; i++){
					if(dbstore[$i]["sp"+i+"name"]==$t.attr('cname')){
						return dbstore[$i]["sp"+i];
					};
				};
			};
		}catch(e){
			return "Power Missing";
		};
	};
	
	$('#galleryresults tbody tr').live('click', function(){
		var $t = $(this);
		(function(){
			//var $targ = $('.gallerydialogs[rel='+$t.find('td:eq(0)').text()+']');
			var ident = $t.attr('rel');
			var $targ = $('.gallerydialogs[rel='+ident+']'); 
			if($targ.length===0){
				dctopen++;
				
				var $i = parseInt($t.attr('num'));
				
				if(expose===true){console.log(dbstore[$i]);};
				
				if(dbstore[$i].type==0 || dbstore[$i]==4){
								
					var imgs_targets ='';
					var iloc = dbstore[$i].imgloc;
					if(iloc=="c"){
						var imgloc = "center";
					}else if(iloc=="l"){
						var imgloc = "left";
					}else{
						var imgloc = "right";
					};
					
					( (imgloc=="c")?'center':(imgloc=="l")?'left':'right' )
					
					for(var i=0, j=parseInt(dbstore[$i].targets); i<j; i++){
						imgs_targets+='<img src="../images/gallery/units-targets.gif" style="float:left;" />';
					};
					var spdval='', spdvals = dbstore[$i].speedvalues.split('~');
					var attkval='', attkvals = dbstore[$i].attackvalues.split('~');
					var dmgval='', dmgvals = dbstore[$i].damagevalues.split('~');
					var defval='', defvals = dbstore[$i].defensevalues.split('~');
					
					var spdpwr=[], spdpwrs = dbstore[$i].speedpowers.split('~');
					var attkpwr=[], attkpwrs = dbstore[$i].attackpowers.split('~');
					var dmgpwr=[], dmgpwrs = dbstore[$i].damagepowers.split('~');
					var defpwr=[], defpwrs = dbstore[$i].defensepowers.split('~');
					
					for(var i=0, j=spdpwrs.length; i<j; i++){
						if(spdpwrs[i]==''){
							spdpwr.push({color:'none'});
						}else{
							if(/\(/.test(spdpwrs[i])){
								var name = spdpwrs[i].match(/([A-Za-z\'\/\-\d ]+)\(+/g)[0]; /*'*/
								name = name.substring(0, name.length-2);
								var realname = spdpwrs[i].match(/\([A-Za-z\'\/\-\d ]+\)/g)[0]; /*'*/
								realname = realname.substring(1, realname.length-1);
								spdpwr.push({name:name, realname:realname, color:(_wk.POWERS[realname].color||'error')});
							}else{
								var sparr = [];
								for(var ii=1; ii<7; ii++){
									var tmp = dbstore[$i]['sp'+ii+'name'];
									if(tmp!=''){
										if(tmp==spdpwrs[i]){sparr.push(tmp);};
									};
								}
								if(sparr.length!==0){
									spdpwr.push({name:sparr[0], color:'special'});
								}else{
									spdpwr.push({realname:spdpwrs[i], color:(_wk.POWERS[spdpwrs[i]].color||'error')});
								};
							}
						};
					};
					for(var i=0, j=attkpwrs.length; i<j; i++){
						if(attkpwrs[i]==''){
							attkpwr.push({color:'none'});
						}else{
							if(/\(/.test(attkpwrs[i])){
								var name = attkpwrs[i].match(/([A-Za-z\'\/\-\d ]+)\(+/g)[0]; /*'*/
								name = name.substring(0, name.length-2);
								var realname = attkpwrs[i].match(/\([A-Za-z\'\/\-\d ]+\)/g)[0]; /*'*/
								realname = realname.substring(1, realname.length-1);
								attkpwr.push({name:name, realname:realname, color:(_wk.POWERS[realname].color||'error')});
							}else{
								var sparr = [];
								for(var ii=1; ii<7; ii++){
									var tmp = dbstore[$i]['sp'+ii+'name'];
									if(tmp!=''){
										if(tmp==attkpwrs[i]){sparr.push(tmp);};
									};
								}
								if(sparr.length!==0){
									attkpwr.push({name:sparr[0], color:'special'});
								}else{
									attkpwr.push({realname:attkpwrs[i], color:(_wk.POWERS[attkpwrs[i]].color||'error')});
								};
							}
						};
					};
					for(var i=0, j=dmgpwrs.length; i<j; i++){
						if(dmgpwrs[i]==''){
							dmgpwr.push({color:'none'});
						}else{
							if(/\(/.test(dmgpwrs[i])){
								var name = dmgpwrs[i].match(/([A-Za-z\'\/\-\d ]+)\(+/g)[0]; /*'*/
								name = name.substring(0, name.length-2);
								var realname = dmgpwrs[i].match(/\([A-Za-z\'\/\-\d ]+\)/g)[0]; /*'*/
								realname = realname.substring(1, realname.length-1);
								dmgpwr.push({name:name, realname:realname, color:(_wk.POWERS[realname].color||'error')});
							}else{
								var sparr = [];
								for(var ii=1; ii<7; ii++){
									var tmp = dbstore[$i]['sp'+ii+'name'];
									if(tmp!=''){
										if(tmp==dmgpwrs[i]){sparr.push(tmp);};
									};
								}
								if(sparr.length!==0){
									dmgpwr.push({name:sparr[0], color:'special'});
								}else{
									dmgpwr.push({realname:dmgpwrs[i], color:(_wk.POWERS[dmgpwrs[i]].color||'error')});
								};
							}
						};
					};
					for(var i=0, j=defpwrs.length; i<j; i++){
						if(defpwrs[i]==''){
							defpwr.push({color:'none'});
						}else{
							if(/\(/.test(defpwrs[i])){
								var name = defpwrs[i].match(/([A-Za-z\'\/\-\d ]+)\(+/g)[0]; /*'*/
								name = name.substring(0, name.length-2);
								var realname = defpwrs[i].match(/\([A-Za-z\'\/\-\d ]+\)/g)[0]; /*'*/
								realname = realname.substring(1, realname.length-1);
								defpwr.push({name:name, realname:realname, color:(_wk.POWERS[realname].color||'error')});
							}else{
								var sparr = [];
								for(var ii=1; ii<7; ii++){
									var tmp = dbstore[$i]['sp'+ii+'name'];
									if(tmp!=''){
										if(tmp==defpwrs[i]){sparr.push(tmp);};
									};
								}
								if(sparr.length!==0){
									defpwr.push({name:sparr[0], color:'special'});
								}else{
									defpwr.push({realname:defpwrs[i], color:(_wk.POWERS[defpwrs[i]].color||'error')});
								};
							}
						};
					};
					
					/* ==== build the table data ==== */
					
					var traits = ['<p>None</p>'];
					for(var i=1; i<4; i++){
						if(dbstore[$i]["trait"+i]!=""){
							traits[i-1]='<p>'+dbstore[$i]["trait"+i]+'</p>';
						};
					};
					
					for(var i=0, j=attkvals.length; i<j; i++){
						attkval+='<td><span class="'+ attkpwr[i].color +'" cname="'+attkpwr[i].name+'" crealname="'+attkpwr[i].realname+'">'+attkvals[i]+'</span></td>';
					};
					for(var i=0, j=spdvals.length; i<j; i++){
						spdval+='<td><span class="'+ spdpwr[i].color +'" cname="'+spdpwr[i].name+'" crealname="'+spdpwr[i].realname+'">'+spdvals[i]+'</span></td>';
						//spdval+='<td><span>'+spdvals[i]+'</span></td>';
					};
					for(var i=0, j=dmgvals.length; i<j; i++){
						dmgval+='<td><span class="'+ dmgpwr[i].color +'" cname="'+dmgpwr[i].name+'" crealname="'+dmgpwr[i].realname+'">'+dmgvals[i]+'</span></td>';
					};
					for(var i=0, j=defvals.length; i<j; i++){
						defval+='<td><span class="'+ defpwr[i].color +'" cname="'+defpwr[i].name+'" crealname="'+defpwr[i].realname+'">'+defvals[i]+'</span></td>';
					};
					
					//background:url(images/gallery/sets/'+dbstore[$i].setname+'/'+dbstore[$i].setname+dbstore[$i].num+'.jpg) no-repeat center center white;
					var dhtml=
					'<div class="gallerydialogs" style="padding:8px 6px;" title="'+dbstore[$i].charname+'" rel="'+ident+'">'+
						'<div class="popup-image popup-border" style="background:url(../images/common/ajax-loader.gif) no-repeat center center white"></div>'+
						'<div class="popup-wrap">'+
							'<div class="popup-header1 popup-border">'+
								'<span class="right">'+dbstore[$i].points+' pts.</span><span>'+((dbstore[$i].team!="")?dbstore[$i].team:'No Affiliation')+'</span>'+
							'</div>'+
							'<div class="popup-header2 popup-border">'+
								'<span class="right">'+imgs_targets+dbstore[$i].attackrange+'</span><span>'+_wk.RARITY[dbstore[$i].rarity]+'</span><span>'+_wk.EXPER[dbstore[$i].experience]+'</span>'+
							'</div>'+
							'<div class="popup-content popup-border">'+
								'<table cellspacing="0" cellpadding="0">'+
									'<tr><td class="spdval" style="background-image:url(../images/gallery/clixicons/'+_wk.MOVEMENT[dbstore[$i].speedsym].toLowerCase().replace(' ','')+'.gif)"><span style="width:15px; visibility:hidden;"></span></td>'+spdval+'</tr>'+
									'<tr><td class="attkval" style="background-image:url(../images/gallery/clixicons/'+_wk.ATTACK[dbstore[$i].attsym].toLowerCase().replace(' ','')+'.gif)"><span style="width:15px; visibility:hidden;"></span></td>'+attkval+'</tr>'+
									'<tr><td class="defval" style="background-image:url(../images/gallery/clixicons/'+_wk.DEFENSE[dbstore[$i].defsym].toLowerCase().replace(' ','')+'.gif)"><span style="width:15px; visibility:hidden;"></span></td>'+defval+'</tr>'+
									'<tr><td class="dmgval" style="background-image:url(../images/gallery/clixicons/'+_wk.DAMAGE[dbstore[$i].damsym].toLowerCase().replace(' ','')+'.gif)"><span style="width:15px; visibility:hidden;"></span></td>'+dmgval+'</tr>'+
								'</table>'+
							'</div><div class="clear"></div>'+
							'<fieldset>'+
								'<legend>Traits</legend>'+
								traits+
							'</fieldset>'+
							'<fieldset>'+
								'<legend>Keywords</legend>'+
								'<p>'+dbstore[$i].keywords+'</p>'+
							'</fieldset>'+
						'</div><div class="clear"></div>'+
					'</div>';
					
					var $tiptarg;
					
					$(dhtml).dialog({
						width:548,
						minWidth:548,
						position: [($(window).width()/2-350)+(dctopen*10), (dctopen*10)+20],
						close: function(e, ui){
							dctopen--;
							$tiptarg.qtip('destroy');
							$(e.target).dialog('destroy').remove();
						},
						open: function(e, ui){
							$('<img src="images/gallery/sets/'+dbstore[$i].setname+'/'+ident+'.jpg" />').load(function(){
								$(e.target).find('.popup-image').css({background:'url(images/gallery/sets/'+dbstore[$i].setname+'/'+ident+'.jpg) no-repeat white', backgroundPosition:'center '+imgloc+''}).data('state', 'm');
							});
							$tiptarg = $(e.target).find('td span[crealname][crealname!=undefined]');
							$tiptarg = $(e.target).find('td span[cname][cname!=undefined]').add($tiptarg);
							
							$tiptarg.each(function(){
								var that = this;
								$(this).qtip({
									show:'mouseover',
									hide:'mouseout',
									content:{
										text: tipContent(that, $i),
										title:{text:tipTitle(that, $i)}
									},
									style:{
										width:{
											min:300,
											max:300
										}
									}
								});
							});
							
							/*
							var $a = $(e.target).prev('.ui-dialog-titlebar').find('a.ui-dialog-titlebar-close');
							$('<a href="#" class="ui-dialog-titlebar-minimize ui-corner-all" role="button" unselectable="on"><span class="ui-icon ui-icon-minusthick" unselectable="on">min</span></a>')
								.insertBefore($a)
								.css({right:24})
								.bind('mouseenter', function(e){
									$(this).find('span').addClass('ui-state-hover')
								}).bind('mouseleave', function(e){
									$(this).find('span').removeClass('ui-state-hover')
								}).bind('click', function(e){
									return false;
								})
								;
							*/
						}
					});
				}else{
					var dhtml=
					'<div class="gallerydialogs" style="padding:8px 6px;" title="'+dbstore[$i].charname+'" rel="'+ident+'">'+
						'<div class="card-holder" style="background:url(../images/common/ajax-loader.gif) no-repeat center center white;"></div>'+
						'<div class="clear"></div>'+
					'</div>';
					
					$(dhtml).dialog({
						width:284,
						position: [($(window).width()/2-350)+(dctopen*10), (dctopen*10)+20],
						close: function(e, ui){
							dctopen--;
							$(e.target).dialog('destroy').remove();
						},
						open: function(e, ui){
							$(e.target).prev('.ui-widget-header').css({
								background:'#555'/*url(../jui/css/jui-wk/images/ui-bg_diagonals-thick_20_666666_40x40.png)*/
							});
							$('<img src="images/gallery/sets/'+dbstore[$i].setname+'/'+ident+'.jpg" />').load(function(){
								$(e.target).find('.card-holder').css({background:'url(images/gallery/sets/'+dbstore[$i].setname+'/'+ident+'.jpg) no-repeat white', backgroundPosition:'center '+imgloc+''}).data('state', 'm');
							});
						}
					});
				};
			}else{
				if($targ.dialog('isOpen')===false){
					dctopen++;
					$targ.dialog('open');
				};
				$targ.dialog('moveToTop');
			}
		})();
	});
	
});