﻿
//Global Vars
var setsdt=0;
var initSets=null;
var sets = Array();
var bust = 1;
var CColorPicker = Class.create({
recentHash:"",
oldMyColor:null,
errorTracker:'s',
oldParam:{},
page:function(pages)
{
	var thepage = $('container');
	var thepageTop = $('containerT');
	thepage.innerHTML = '';
	thepageTop.innerHTML = '';

	var perpage = Number($('count').value);
	var currentPage = Number($('pageNum').value); 
	var i = 0;
	var startPage = 0;
	var totalpages = Math.ceil(pages/perpage);
	
	if(currentPage > 5)
		startPage = (currentPage - 3)  * perpage
		var htm = '';
		//prev button
		if(currentPage > 5)
		{
			$('prev').show();
			$('prevT').show();
			htm += '<span class="pagenumber" onclick="IK.ColorPicker.GoPage(this);">1</span><span style="float:left; margin-top:9px; margin-right:4px;">...</span>';  
		}
		else
		{
			$('prev').hide();
			$('prevT').hide();
		}
	
		//page numbers
		for(var E = startPage;E <  pages && i < 5; E += perpage)
		{
			i++;
			var style = "pagenumber";
			if(E == (currentPage	- 1) * $('count').value)
				style = "currentpage";
			htm += '<span class="'+style+'" onclick="IK.ColorPicker.GoPage(this);">' + ((E / perpage) + 1) + '</span>'  
		}

		//next button
		if((currentPage + 5) <= totalpages)
		{
			htm +='<span style="float:left; margin-top:9px; margin-right:4px;">...</span><span class="pagenumber" onclick="IK.ColorPicker.GoPage(this);">'+totalpages+'</span>'  
			$('next').show();
			$('nextT').show();
		}
		else
		{
			$('next').hide();
			$('nextT').hide();

		}

		$('totalPages').innerHTML = totalpages + " pages";
		$('totalPagesT').innerHTML = totalpages + " pages";
		
		//put in top and bottom pages slots
		thepage.insert(htm);
		thepageTop.insert(htm);
}
,
//nav for pager
GoPage:function(that) 
{	if(typeof(that) == 'object')
	that = that.innerHTML;
	$('pageNum').value = that;
	var theColor = this.oldMyColor.substring(0, this.oldMyColor.indexOf("-"))
	//History.set('Color',  theColor + '-' + that);
	IK.ColorPicker.showColor(theColor + '-' + that);
}
//create image in DOM 
,SetImage:function(i)
{

	var anchor = document.createElement("A");

	anchor.id = 'a' + i;
	var img = new Image();
	img = $(img)
	
	Event.observe(img,'mouseover', IK.ColorPicker.showInfo);//Flash hover
	Event.observe(img,'load',IK.ColorPicker.showImg);
	Event.observe(img,'error', IK.ColorPicker.ImageError);//if error report and try fix
	


	
	//a.style.display = 'none';	
	img.id = 'img' + i;
	img.className = 'displayImg'
	anchor.href = '/'+sets[i].title.replace(' ' ,'-')+'_art?imid=' + sets[i].id;
	
	
	
	
	if(sets[i].gid ==  null || sets[i].gid.length > 5)
	img.src = 'http://thumbs.imagekind.com/member/'+sets[i].gid+'/uploadedartwork/150SX150S/'+sets[i].id+'.jpg?b=' + bust++;
	else
	{
	 var path = sets[i].id.split('_');
	img.src = 'http://thumbs.imagekind.com/museum/150SX150S/'+path[0]+'/JPGS/'+path[1]+'.jpg?b=' + bust++;
	}
	
	anchor.appendChild(img);
	$('imagesDiv2').appendChild(anchor)  
	
	if(Prototype.Browser.IE)
	{
		Event.observe(img,'click', IK.ColorPicker.GoImgIE);
Event.observe(img,'mouseover', function (){IK.ColorPicker.showInfo(); });//Flash hover
}
},


//add extra pages
PerPage: function(that)
{
 for(var i =  $$('displayImg').length; i < that.value; i++)
 {
	this.SetImage(i);
 }
 IK.ColorPicker.showColor();
}
,
showColor: function(myColor)
{
window.status = 'Color Picker';

if(myColor == '[null,null,null,null]')
{
return;
}
if(typeof(myColor) == 'undefined' && this.oldMyColor == null)
{
return;
}
		

	//select old color for paging
	if(myColor == null)
	{
		myColor = History.get('Color');

	}
	if(myColor == null)
	{
	return;
	}

	myColor = myColor.replace('#','');	


if(this.oldMyColor == myColor || this.oldMyColor ==( myColor +'-'+ $('pageNum').value) ) 
{
return;
}

if(myColor.indexOf('-') != -1 && myColor.indexOf('[') != -1 )
{

	var param = myColor.split('-');

	myColor = param[0];
$('pageNum').value = param[1];	
}else
{
$('pageNum').value = 1;
}

	this.oldMyColor = myColor;
	var color =  myColor + '-' + $('pageNum').value ;
	this.oldMyColor = color;
	History.set('Color',  color);
	
	$('imagemask').hide();

	myColor = myColor.replace(/null/g, "[null,null,null]");
	multi = 'false'; 
	color1  = [null,null,null];

	if(myColor.indexOf('],[') == "-1")//one color
	{
	 color1 = (myColor).evalJSON();
	 color2 =  color1
	 color3 =  color1
	 color4 =  color1
	 
	 Tcolor2 = color1;
	 Tcolor3 = color1;
	 Tcolor4 = color1;
	}
	else if(myColor.indexOf("[null,null,null],[null,null,null],[null,null,null],[null,null,null]") != -1)//all blank
	{
		return;
	}
	else
	{
		var colors = eval('[' + myColor + ']');
		color1 = colors[0];
	
		color2 = colors[1];
		color3 = colors[2];
		color4 = colors[3];
	
		Tcolor2 = colors[1];
		Tcolor3 = colors[2];
		Tcolor4 = colors[3];
	
		multi = 'true';
	
		if(color2[0] == null)
		{
			Tcolor2 =  colors[0];
		}
		if(color3[0] == null)
			Tcolor3 =  colors[0];
		if(color4[0] == null)
		{
			Tcolor4 = colors[0];
		}
	}

	var mask = $('wait');
	$('waitDiv').show();
	mask.show();
	setsdt++;
	
	var param = {r1: color1[0], g1: color1[1],b1: color1[2],r2: color2[0], g2: color2[1],b2: color2[2], r3: color3[0], g3: color3[1],b3: color3[2], r4: color4[0], g4: color4[1],b4: color4[2], multi: multi, multColor:$('multColor').value , multFill:$('multFill').value , multPass:$('multPass').value , multSum:$('multSum').value ,time: escape(Date()), num:setsdt, page:$('pageNum').value, count:$('count').value }

	if(Prototype.Browser.IE)
	{
		try
		{
			mask.sendTextToFlash(color1[0], color1[1], color1[2], Tcolor2[0], Tcolor2[1], Tcolor2[2], Tcolor3[0], Tcolor3[1], Tcolor3[2], Tcolor4[0], Tcolor4[1], Tcolor4[2], multi);
		}
		catch(ex)
		{
			setTimeout('IK.ColorPicker.waitError()',500);//ActionScript/JavaScript hack.  Listner in AS does not start till 1st frame is init.
		
		}
	}else
	{
		try
		{
			Rf= color1[0];
			Bf= color1[1];
			Gf = color1[2];
			mask.down(3).sendTextToFlash(color1[0], color1[1], color1[2], Tcolor2[0], Tcolor2[1], Tcolor2[2], Tcolor3[0], Tcolor3[1], Tcolor3[2], Tcolor4[0], Tcolor4[1], Tcolor4[2], multi)
		}
		catch(ex)
		{
			setTimeout('IK.ColorPicker.waitError()',500)
		}
	}
	
	this.oldParam = param;
	
	var z =	new Ajax.Request('/services/colorPicker.ashx'
	,   {	 method:'get'
		, parameters: param 
		, onSuccess: function(req)
		{
			if(setsdt != z.parameters.num  && initSets != null)	return;
			var response = (req.responseText).evalJSON();
			if(setsdt != z.parameters.num && initSets != null)	return;
			
			sets = null;
	
		$('imagesDiv').innerHTML = null;
		$('imagesDiv2').innerHTML = null;

		$('imagesDiv').innerHTML = '';
		$('imagesDiv2').innerHTML = '';

			sets = response.images;
			

			 $('whatColor').innerHTML = 'color: ' + myColor + ' total ' + sets.length ;			

				for (i = 0 ; i < sets.length ; i++)
				{
					IK.ColorPicker.SetImage(i);
				}
			
			if(typeof(FF) != 'undefined' && FF == 2)
			{
			
			$('imagesDiv').innerHTML  = $('imagesDiv2').innerHTML; 	
			}
			
			if(initSets == null)
			{
				initSets = 1;
			Event.observe($('imagemask'),'click', IK.ColorPicker.GoImg);//goto show artwork
			}
		
			IK.ColorPicker.page(response.total);
		}
		, onFailure:  Util.LogAjaxError
	}); 
}
,GoImg:function(){Util.Nav('/showartwork.aspx?imid=' + gid)}
,ImageError: function(event)
{
	var el = Event.element(event)

	IK.Util.ImageRetry = 1000000;
	var a =	$('a'+ el.id.replace('img',''))
	$('imagesDiv').insert({bottom:a.remove()});
	
	 Event.stopObserving(el, 'load',IK.ColorPicker.showImg);
el.show();
	IK.ColorPicker.errorTracker += el.src;
	IK.Util.ImageError(Event.element(event), 150,150);
}
,GoImgIE: function(event)
{
	var that = Event.element(event);
	
	//IE Fix Detect flash and bail
	if(typeof(that) != 'object') return;
		index = that.id.replace('img','')

	if(typeof(sets) == 'undefined') return;
	if(typeof(sets) == null) return;
	if(typeof(sets[index]) == 'undefined') return;
	var id = sets[index].id;
	gid = id;
	Util.Nav('/showartwork.aspx?imid=' + gid)
},
showInfo : function(event)
{
try{
	var that = Event.element(event);
	}catch(ex)
	{return;}
	index = that.id.replace('img','')
	if(typeof(sets) == 'undefined') return;
	if(typeof(sets) == null) return;
	if(typeof(sets[index]) == 'undefined') return;
	var id = sets[index].id;
	gid = id;
	var name =  sets[index].artist;
	var title =  sets[index].title;
	
	mask = $('imagemask');
	mask.show();

	if(Prototype.Browser.IE)
	{
		mask.sendTextToFlash(id, name, title)
	}
	else
	{
		try
		{
			mask.down(3).sendTextToFlash(id, name, title)
		}catch(e)
		{
			gid = id;
			gname = name;
			gtitle = title;
			setTimeout('IK.ColorPicker.maskError()',200)
		}
	}
	var imagepos = that.positionedOffset();
	if(Prototype.Browser.IE)
	{
		mask.style.position = 'absolute';
		mask.style.left = imagepos.left  ;	
		mask.style.top =imagepos.top +  100 ;
	}
	else
	{
		mask.setStyle({left: imagepos[0] + 'px', top: (imagepos.top + 100)+ 'px', position:'absolute'})
	}			
}

,
showImg:function(event)
{

	var element = event.element();
	
if(element.id =='img' + (sets.length - 1) || (typeof(FF) != 'undefined' && FF == 2))
 setTimeout("$('waitDiv').hide()",1000);

	if(Prototype.Browser.IE)
	{
		element.style.width = '150px';
		element.style.height = '150px';
	}
	
	var a =	$('a'+ element.id.replace('img',''))
	if(a == null) 
	return;
	
		a.hide();
		
		$('imagesDiv').insert({bottom:a.remove()});
		Effect.Appear(a,  { duration: 1.7 });
}
,
waitError: function()
{
	if(Prototype.Browser.IE)
	{
		try
		{
		
			$('wait').sendTextToFlash(color1[0], color1[1], color1[2], Tcolor2[0], Tcolor2[1], Tcolor2[2], Tcolor3[0], Tcolor3[1], Tcolor3[2], Tcolor4[0], Tcolor4[1], Tcolor4[2], multi)
		}catch(ex)
		{
				 setTimeout("$('waitDiv').hide()",5000);
		}
	}
	else
	{
		try
		{
			$('wait').down(3).sendTextToFlash(color1[0], color1[1], color1[2], Tcolor2[0], Tcolor2[1], Tcolor2[2], Tcolor3[0], Tcolor3[1], Tcolor3[2], Tcolor4[0], Tcolor4[1], Tcolor4[2], multi)
		}
		catch(ex){
		
		
						 setTimeout("$('waitDiv').hide()",5000);
		}
	}
}
,
maskError:function()
{
	try
	{
		$('imagemask').down(3).sendTextToFlash(gid, gtitle, gname)
	}
	catch(ex){}
},
  pollHash: function() {
    if (History.get('Color')==this.recentHash) 
    {
       return; // Nothing's changed since last polled.
    }
 
    this.recentHash = History.get('Color');
    IK.ColorPicker.showColor(this.recentHash);
  
	//Set the colors for the color wheel if anyone came in with a color in the url
	var flashObj
	
	if(Prototype.Browser.IE)
	{
		flashObj = $('objColorPicker');
	}
	else
	{
		flashObj =  $('objColorPicker').down(1);
	}

	var color = this.recentHash;
	color = color.replace(/null/g, "[null,null,null]");
  
	if(this.recentHash.indexOf("-") > -1)
	color = color.split('-')[0]
  
   var objColor = color.evalJSON()

	//single select selected
	if(color.substring(2,100).indexOf('[') == -1 )
	{ 
		var objColor = color.evalJSON()
		flashObj.ChangeColor(objColor[0],objColor[1],objColor[2], false);
	}else
	{
		color = "[" + color + "]";
		var objColor = color.evalJSON()
		flashObj.ChangeColors(objColor[0][0],objColor[0][1],objColor[0][2],objColor[1][0],objColor[1][1],objColor[1][2],objColor[2][0],objColor[2][1],objColor[2][2],objColor[3][0],objColor[3][1],objColor[3][2], true);
	} 
 
   }
});

// Start observe
History.Observer.start();
FastInit.addOnLoad(IK.ColorPicker = new CColorPicker());
Event.observe(window, 'load', function() {setInterval(IK.ColorPicker.pollHash, 700);$('imagemask').hide();});


//Flash requirement
AC_FL_RunContent = 0;
 function getFlashMovie(movieName) {
  var isIE = navigator.appName.indexOf("Microsoft") != -1;
  return (isIE) ? window[movieName] : document[movieName];
 }
