﻿if (typeof (IK) == 'undefined')
	var IK = Class.create({});
	

var isIE7 = (navigator.appVersion.indexOf("MSIE 7.")==-1) ? false : true;

var menuData;
var barData = {};
var CSearch = Class.create({
    curMenu: { name: 'none', isVisible: false, last: null },
    initAdvanced: function() {
        $('Title').observe('keydown', respondToKeyDown);
        $('LName').observe('keydown', respondToKeyDown);
        $('FName').observe('keydown', respondToKeyDown);
        $('ScreenName').observe('keydown', respondToKeyDown);
        $('KeyWord').observe('keydown', respondToKeyDown);
        $('Id').observe('keydown', respondToKeyDown);
        Event.observe(window, 'unload', function() {
            IK.Search.Advanced();

        })

    }

, IE6ImageHack: function(that) {
    if (that.width > 150) {
        that.width = that.width - (that.width - 150)
    }
    if (that.height > 150) {
        that.height = that.height - (that.height - 150)
    }

}

, Advanced: function() {
    var keywords = $('KeyWord').value.replace(' ', '+');
    var title = $F('Title');
    var firstName = $F('FName');
    var lastName = $F('LName');
    var screenName = $F('ScreenName');
    var ID = $F('Id');
    var typeid = $('image');
    var isAdult = $('Adult').checked == true ? 'True' : 'False';
    var IMID = $('imageID').checked ? ID : "";
    var GID = $('galleryID').checked ? ID : "";
    var MID = $('memberID').checked ? ID : "";
    var searchString = 'searchresult.aspx?Keyword=' + keywords + '&title=' + title + '&FirstName=' + firstName + '&LastName=' + lastName
    searchString += '&ScreenName=' + screenName + '&Adult=' + isAdult;
    searchString += '&imageId=' + IMID + '&galleryId=' + GID + '&memberId=' + MID;
    Util.Nav(searchString);
}
 , hideMenus: function() {


     $('subMenu').hide();
     if (typeof (menuShadow) != 'undefined')
         menuShadow.hide();
     $('subMenu1').hide();
     if (typeof (menuShadow1) != 'undefined')
         menuShadow1.hide();


 }
,insertMenu:function(datName, pageNum)
{
    if(typeof pageNum === 'undefined')
    pageNum = 1;

    var perPage = 4;

    if(typeof barData == 'undefined')
    barData = {};
    
    new Ajax.Request('/services/search.ashx'
    ,   {	 method:'get'
    , asynchronous:false
    , parameters: {type:datName, SID:$$('.moreSearch')[0].innerHTML, PageNum:pageNum, PerPage:perPage} 
    , onSuccess: function(transport)
    {    
        //document.write(transport.responseText)
        var temp = (transport.responseText).evalJSON(); 
        if(typeof barData[datName] === 'undefined') 
        { 
	        barData[datName]= {}
	        barData[datName] = temp;
        }
        else 
        {
            barData[datName][datName]= barData[datName][datName].concat(temp[datName]);
        }
        
        switch(datName)
        {
            case 'filter':
            IK.Search.createFilter(barData[datName].filter);	
            menuData = barData[datName].menu 
            IK.Search.filterItems();
            break;
            case 'faq':

            IK.Search.createMenu({data:barData[datName].faq,sub:'subFaq', makeItems:IK.Search.MakeLink, id:'FAQ', link:'FAQ.aspx?CID={id}', name:datName});

            break;
            case 'artist':
            IK.Search.createMenu({data:barData[datName].artist,sub:'subartist', makeItems:IK.Search.MakeImageLink, id:'artist', name:datName});

            break;
            case 'gallery':
            IK.Search.createMenu({data:barData[datName].gallery,sub:'subgallery', makeItems:IK.Search.MakeImageLink, id:'gallery',  name:datName});

            break;
            default:
            IK.Search.createMenu({data:barData[datName].collection,sub:'subcollection', makeItems:IK.Search.MakeImageLink, id:'collection',  name:datName});

            break;
        }
	}
	, onFailure: function(e){
        Util.LogAjaxError
        //alert("error: " + e.responseText);
    }
}); 

}
 ,
toggleMenu: function(menuName,datName, that) {    

    var tempClass = that.className;
    var onMenu = $(menuName)
    if(typeof barData[datName] === 'undefined')
    {
        this.insertMenu(datName,1);
    }   
     
    $$('.submenu').each(function(el)
    {
	    el.toggle();
        if(el.id != onMenu.id)
        {
            el.hide();
        }
        else if(Prototype.Browser.IE && !isIE7)
        {            
            el.setStyle({left:'200px'});
            el.setStyle({top:'151px'});
        }
        else if(!isIE7)
        {
            el.setStyle({ top: '151px' });
        }
    });  

    $$('.filterOn').each(function(el)
    {
	    el.className = 'filter'
    }); 

    if(tempClass == 'filterOn')
    {
        $('divCloseFilter').style.display = 'none';
        that.className = 'filter'
    }
    else
    {
        $('divCloseFilter').style.display = 'block';
        that.className = 'filterOn'
    }
}
, getName: function(data, Parent, parent, child) {
    for (var x = 0; x < data.length; x++) {
        if (data[x].name.replace(' ', '_') == Parent) {

            for (y = 0; y < data[x].submenu.length; y++) {
                if (data[x].submenu[y].id == child) {
                    return data[x].submenu[y].name;
                }

                if (typeof (data[x].submenu[y].submenu) != 'undefined') {

                    for (var z = 0; z <= data[x].submenu[y].submenu.length; z++) {
                        if (typeof (data[x].submenu[y].submenu[z]) != 'undefined' && data[x].submenu[y].submenu[z].id.toString() == child.toString()) {
                            return data[x].submenu[y].submenu[z].name;
                        }
                    }
                }
            }
        }

    }


},
    filterItems: function(data) {
        var query = window.location.search.substring(1);        
        var vars = query.split("&");
        for (var i = 1; i < vars.length; i++) {
            var pair = vars[i].split("=");
            if (/Subject|Genre|Decor|Medium|Artist|Orientation|Collection|Size|Featured/.test(pair[0])) {
                if (/Featured/.test(pair[0]))
                    var name = 'Featured';
                else {
                    var name = IK.Search.getName(data, pair[0], pair[0], pair[1])
                }
                if (typeof (name) == 'undefined')
                    continue;

                var replaceval = '&' + pair[0] + '=' + pair[1]
                var href = window.location.href.replace(replaceval, '')

                href = href.replace(/page.[0-9]{1,}/, '')

                if (!/Subject|Genre|Decor|Medium|Artist|Orientation|Collection|Size|Featured/.test(href)) {
                    href = href.replace('&Filter=1', '');
                }
                var sp1 = document.createElement("span");
                sp1.setAttribute('class', 'SelectedFilter FilterArrowTerm');

                sp1.innerHTML += '&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/backgrounds/holdup.png"/>' + name.split('(')[0] + '<img src="/images/backgrounds/holdup.png"/>';

           
            }
        }
    }
	 , hideFilter: function() {

     $('subMenu').hide();
     if (typeof (menuShadow) != 'undefined')
         menuShadow.hide();

     if (typeof (menuShadow1) != 'undefined')
         menuShadow1.hide();
     $('subMenu1').hide();

 }
 , initFilter: function() {

     Event.observe(document, 'click', function(event) {
         var el = Event.element(event)
         if (IK.Search.curMenu.isVisible && el.className != 'arrowEnd') {
             IK.Search.curMenu.isVisible = false;
             IK.Search.hideMenus();
             //IK.Search.hideMenus()
         }
     });






 }
,MakeLink:function(obj)
{
    for(var x = 0; x < obj.data.length; x++)
    {
        var id = obj.data[x].id;
        var name = obj.data[x].text;
        //var screenname = obj.data[x].screenname;

        var a  = document.createElement("a")

		a.className = obj.id + (x%2===0?'odd':'even');
		a.id =  obj.id + id;
        a.innerHTML = name; 
        a.href = obj.link.replace('{id}',id) 

        $(obj.sub).appendChild(a);
    }

}
,MakeImageLink:function(obj)
{
    if(typeof barData[obj.name].page === 'undefined')
    {
	    barData[obj.name].page = 1;
    }
    if(typeof barData[obj.name].onDeck === 'undefined')
    {
	    barData[obj.name].onDeck = 0;
    }
    
    for(; barData[obj.name].onDeck < obj.data.length; barData[obj.name].onDeck++)
    {
        var id = obj.data[barData[obj.name].onDeck].id;
	    var name = obj.data[barData[obj.name].onDeck].name;
	    var avatar = obj.data[barData[obj.name].onDeck].avatar;
	    var path = obj.data[barData[obj.name].onDeck].path;
	    
	    var img  = document.createElement('img');	    
	    var span  = document.createElement("span")
	    var a  = document.createElement("div")

        a.className = obj.id + 'EL';
	    a.id =  obj.name + '~' +  barData[obj.name].onDeck + '~' + 'a';
	    span.id =  obj.name + '~' +  barData[obj.name].onDeck + '~' + 'span';	
	    img.id =  obj.name + '~' +  barData[obj.name].onDeck + '~' + 'img';
	    img.src = avatar;	    
        
        // Get the path
        var id = a.id;
        var objName = id.split('~')[0];
	    var num = id.split('~')[1];
	    var link = barData[objName][objName][num].path;
        
        // Make the image link
	    var imageAnchor = document.createElement('a');
	    imageAnchor.href = link;
	    imageAnchor.appendChild(img);
	    
	    // Make the title clickable
	    if (Prototype.Browser.IE)
	    {
	        var imageLink = document.createElement('a');
	        imageLink.href = link;
	        imageLink.style.textDecoration = 'none';
	        imageLink.appendChild(document.createTextNode(name));
	        
	        span.appendChild(imageLink);  
	    }
	    else
	    {
	        span.innerHTML = "<a style='text-decoration: none;' href='" + link + ">" + name + "</a>";  
	    }
	    $(obj.sub).appendChild(a);
	    
	    a.appendChild(imageAnchor);
	    a.appendChild(span);	

        if (!isIE7)
        {
            img.observe('error',function(event)
            {
	            var el =  event.element();
	            var id = el.id;
	            var objName = id.split('~')[0]
	            el.src = "http://ikstatic.s3.amazonaws.com/Avatars/Search/default" + objName + ".jpg";
            });
        }
    }

    //if(barData[datName].page === 1)
    IK.Search.makePager(obj);
}
,makePager:function(obj)
{



var leftPage = $(obj.sub + 's').down('.fixL');
var rightPage = $(obj.sub + 's').down('.fixR');



leftPage.observe('click',this.pagein)
rightPage.observe('click',this.pagein)

}
,getNumStyle: function(element, style) {
    var value = parseFloat($(element).getStyle(style));
    return isNaN(value) ? null : value;
  }


  ,checkScroll: function(position) {
    if (position > 0)
      position = 0;
    else {
      var limit = this.elements.last().positionedOffset()[this.posAttribute] + this.elementSize;
      var carouselSize = this.currentSize();

      if (position + limit < carouselSize)
        position += carouselSize - (position + limit);
      position = Math.min(position, 0);
    }
   

    return position;
  }

,  currentPosition: function() {
    return this.getNumStyle(this.container,'left');
  }

,pagein:function(event)
{
    var el = event.element();
    var datName = el.id.split('-')[1]
    var direction = el.id.split('-')[0]
    var otherPager = $((direction == 'r'?'l':'r') + '-' + datName)
    var maxCount = (Number($(datName + 'Count').innerHTML) / 4) + 1;

    if(typeof barData[datName].page === 'undefined')
    {
	    barData[datName].page = 1;
    }
    if(typeof barData[datName].maxPage === 'undefined')
    {
        barData[datName].maxPage = 1;
    }

    if(direction === 'r')
        barData[datName].page++;
    else
        barData[datName].page--;

    if(direction == 'l')
    {
        otherPager.className = 'PagerActiveRight subPage fixR'

	    if(barData[datName].page == 1)
	    {
		    el.className =  'PagerInactiveLeft subPage fixL'
	    }
	    else if(barData[datName].page < 1)
	    {	
		    el.className =  'PagerInactiveLeft subPage fixL'
		    barData[datName].page = 1
		    return; 
	    }
	    else
	    {
		    el.className =  'PagerActiveLeft subPage fixL'
	    }
    }
    else if(direction == 'r')
    {

        otherPager.className = 'PagerActiveLeft subPage fixL'

        if(barData[datName].page >= (maxCount - 1) && barData[datName].page <= maxCount )
	    {
		    el.className =  'PagerInactiveRight subPage fixR'
	    }
	    else if(barData[datName].page > maxCount)
	    {	
		    el.className =  'PagerInactiveRight subPage fixR'
		    barData[datName].page = maxCount;
		    return; 
	    }
	    else
	    {
		    el.className =  'PagerActiveRight subPage fixR'
	    }
    }

    if(barData[datName].maxPage < barData[datName].page)
    {
        barData[datName].maxPage  = barData[datName].page;
        IK.Search.insertMenu(datName,barData[datName].maxPage)
        IK.Search.MakeImageLink({data:barData[datName][datName], sub:'sub'+[datName], page:barData[datName].page,  name:datName});
    }
    
    this.container =  $('sub' + datName);
    that = this;
    var position = IK.Search.getNumStyle(this.container,'left')

    if (Prototype.Browser.IE)
    {
        deltaPixel = 664;
    }
    else 
    {
        deltaPixel = 744;
    }

    if(typeof barData[datName].pos == 'undefined'){ barData[datName].pos = 0;}

    if(direction === 'r')
        barData[datName].pos -= deltaPixel;
    else
        barData[datName].pos += deltaPixel;

    this.container.morph("opacity:0.5", {duration: 0.2, afterFinish: function() {
        that.container.morph('left' + ": " + barData[datName].pos + "px", {
          duration: 0.4,
          delay: 0.2,
          afterFinish: function() {
            that.container.morph("opacity:1", {
              duration: 0.2,
              afterFinish: function() {
                that.animating = false;
                //that.updateButtons()
                //  .fire("scroll:ended", { shift: deltaPixel / that.currentSize() });
              }
            });
          }
        });
      }});
}
,createMenu:function(obj)
{

//if(obj.length === 0) return;



obj.makeItems(obj)

}


,createFilter:function(dat)
{
    if(dat.length === 0) return;   

	for(var x = 0; x < dat.length; x++)
	{
		var id = dat[x].id;
		var name = dat[x].name;

		var div  = document.createElement("div")
		div.id = 'menu' + id; 
		
		var a  = document.createElement("a")
		a.className = 'arrowEnd';
		a.id = 'Menu_' + id; 
        a.innerHTML = name;
        var span  = document.createElement("span")
        a.appendChild(span);
        div.appendChild(a);

        $('divfilter').appendChild(div);	
        $(a).observe('click', function(event){
            IK.Search.showMenu(this,'subMenu')
         });
    }
}
 , showMenu: function(that, level) {
     if ($('subMenu').visible() && this.curMenu.last == that.id) {
         $('subMenu').hide();
         $('subMenu1').hide();
         return;
     }

     this.curMenu.last = that.id

     var end = false;
     var menu = $(level)
     var curData;
     var pointer = that.id.split('_')
     that = $(that)
     var i = pointer[1];

     if (this.curMenu.name == that.innerHTML && this.curMenu.isVisible) {
         this.curMenu.isVisible = false;
         IK.Search.hideMenus();
         return;
     }

     this.curMenu.isVisible = true;

     if (typeof (i) == 'undefined')
         return;


     i = Number(i);
     curData = menuData[i].submenu;
     if (that.up().id == level) {
         return;
     }

     menu.innerHTML = ''

     $('subMenu1').hide();
     if (typeof (menuShadow1) != 'undefined')
         menuShadow1.hide();
    
     var query = window.location.search;
     var qs = query.split('?')[1];   
     
     for (var j = 0; j < curData.length; j++) {
         var dMenu = document.createElement("div");         
         var queryArray = query.split('_');
         var id = Number(that.id.split('_')[1]);
         
         if (qs != null)
         {
             // Loop through the QS variables, adding one at a time
             var variables = qs.split('&');
             variables[variables.length] = menuData[id].name.replace(' ', '_') + '=' + curData[j].id.replace(' ', '');
             query = "?";
             for (var z = 0 ; z < variables.length ; z++)
             {
                query += variables[z] + "&";
             }
             if (query.indexOf("Filter=1") < 0)
             {
                query += "Filter=1";
             }
             else 
             {
                query = query.substring(0, query.length-1);
             }
         }
         else 
         {
            query = "?" + menuData[id].name.replace(' ', '_') + '=' + curData[j].id.replace(' ', '') + "&Filter=1";
         }  

         var href = window.location.href.split("?")[0] + query.replace(/page.[0-9]{1,}/, '');
         var title = curData[j].name.split('(');
         var innerHTML = title[0] + '&nbsp;';
         if (title.length > 1 && window.location.search.indexOf("Filter=1") < 0)
         {
            innerHTML += '<span >(' + title[1] + '</span>';
         }
         var style = ''
         if (typeof (curData[j].submenu) == 'undefined') {
             style = ' style="background-image:url(null)"';
         }

         var link = '<a href="' + href + '"' + style + ' >' + innerHTML + '</a>';

         dMenu.innerHTML += link + '<span></span>';
         dMenu.id = level + "_" + i + '_' + j
         dMenu.setAttribute('class', level);

         //arrow
         if (typeof (curData[j].submenu) != 'undefined') {
             if (Prototype.Browser.IE) {
                 dMenu.innerHTML += '&nbsp;'
             }
         }

         menu.appendChild(dMenu);


         if (typeof (curData[j].submenu) != 'undefined') {
             Event.observe(dMenu, 'mouseover', function(event) {
                 var el = Event.element(event)
                 IK.Search.showSubMenu(el, 'subMenu1')
             });
         }

         var arrow = that.down();

         if (arrow != null) {
             imagepos = arrow.positionedOffset();
         }
         var menuoffset = $('divfilter').positionedOffset()

         imagepos[0] += menuoffset[0]
         imagepos[1] += menuoffset[1]
                 

         var extraLeft = 0;
         var extraTop = 0;

         if (!Prototype.Browser.IE) {
             extraLeft += 3;
             extraTop -= 15;
         }
         else 
         {
             extraLeft += 3;
             extraTop -= 8;

         }
         menu.setStyle({ left: (imagepos[0] + 10 + extraLeft) + 'px', top: (imagepos[1] + extraTop) + 'px', position: 'absolute' })
     }
     menu.show();
 }
 , showSubMenu: function(that) {
     if (that.id != '') {
         return;
     }

     var menu = $('subMenu1');
     var item = $(that);
     var Sid = item.up().id.split('_');
     var one = Number(Sid[1])
     var two = Number(Sid[2])
     var curData;

     if (typeof (menuData[one]) == 'undefined') {
         return;
     }

     curData = menuData[one].submenu[two].submenu
     menu.innerHTML = ''
     menu.show();

     var id = Number(that.up().id.split('_')[1]);
     var query = window.location.search;
     var regexS = "[\\?&]" + menuData[id].name + "=([^&#]*)";
     var regex = new RegExp(regexS);
     //var query = query.replace(regex, '');
     //query = query.replace(/ /g, '')
     
     var query = window.location.search;
     var qs = query.split('?')[1]; 

     for (var j = 0; j < curData.length; j++) {
         var dMenu = document.createElement("div")
         var a1 = document.createElement("a");
                  
         if (qs != null)
         {
             // Loop through the QS variables, adding one at a time       
             var variables = qs.split('&');         
             variables[variables.length] = menuData[id].name + '=' + curData[j].id;
             query = "?";
             for (var z = 0 ; z < variables.length ; z++)
             {
                query += variables[z] + "&";
             }
             if (query.indexOf("Filter=1") < 0)
             {
                query += "Filter=1";
             }
             else 
             {
                query = query.substring(0, query.length-1);
             }
         }
         else
         {
            query = "?" + menuData[id].name + '=' + curData[j].id + "&Filter=1";
         }
             
         a1.href = window.location.href.split("?")[0] + query.replace(/page.[0-9]{1,}/, '');

         var title = curData[j].name.split('(');
         var count = '';
         if (title.length > 1) {
             if (window.location.search.indexOf("Filter=1") < 0)
             {
                count = '<span>&nbsp;(' + title[1] + '</span>';
             }
         }

         a1.innerHTML = title[0].replace('_', '').replace('&apos;', '\'') + count;
         dMenu.appendChild(a1);
         dMenu.id = 'subMenu1' + "_" + one + '_' + two + '_' + j
         dMenu.setAttribute('class', 'subMenu1');
         menu.appendChild(dMenu);
     }
     var parentpos = that.up(1).positionedOffset();
     var arrow = that.next();
     if (arrow != null) {
         imagepos = arrow.positionedOffset();
     } else
         return;

     extraLeft = parentpos.left
     extraTop = parentpos.top

     if (!Prototype.Browser.IE) {
         extraLeft += 5;
         extraTop -= 15;
     }
     else {
         extraLeft += 4;
         extraTop -= 6;
     }
     menu.setStyle({ left: (imagepos[0] + extraLeft) + 'px', top: (imagepos.top + extraTop) + 'px', position: 'absolute' })   
 }
 , hideMenu: function(that) {
     $('SearchContainer').observe('mouseover'
		, function fun() { CSearch.currentMenu.hide() })
 }
});

function respondToKeyDown(event) {
	var element = event.element();

	if (event.keyCode == Event.KEY_RETURN) {
		IK.Search.Advanced();
		return false;
	}
}

FastInit.addOnLoad(IK.Search = new CSearch());

if (/type=Advanced/i.test(location))
	Event.observe(window, 'load', IK.Search.initAdvanced)
Event.observe(window, 'load', IK.Search.initFilter)

