function openpopup(ID){
    if(document.getElementById('search').value=='Artists, Art, Medium, Style, etc...'){
         document.getElementById('search').value=''; 
    } 
    thisMenu=document.getElementById(ID).style;
    thisMenu.display = "block"
}
function searchPopupQueryChanged(){
	if((document.storeGeneralPagingForm.text_medium_id.value != 'Select options') ||
		(document.storeGeneralPagingForm.text_style_id.value != 'Select options')||
			(document.storeGeneralPagingForm.text_price_id.value != 'Select options')||
			  (document.storeGeneralPagingForm.artistName.value != '')||
			 	(document.storeGeneralPagingForm.tags.value != '')){
				if(document.getElementById('search').value=='Artists, Art, Medium, Style, etc...'){
					 document.getElementById('search').value=''; 
				} 
	}else{
		if(document.getElementById('search').value==''){
					 document.getElementById('search').value='Artists, Art, Medium, Style, etc...'; 
		}
	}
}


function closepopup(ID){
	thisMenu=document.getElementById(ID).style;
    thisMenu.display = "none"
}
var suggrestedResultIdPrx = "_suggrestControlId_";
var totalSuggrestedPtss = "0";
var suggrestSelectedIdPts = "0";
var currentpK="";
var queryTextSettedFlag = "";

var suggestResultMainDivId = "";
var resultMainDivId = "";

var bgColor = "#f2f3f3";
var bgColorOnOver = "#e3e4e5";

var keywordidentification = "keyword";
var artistidentification = "artist";
var tagidentification = "tag";
var locationidentification = "location";
var identificationID ="";
var isFirstTime = true;
var isFirst = true;


function showAlert(keyvalue){
			   // constructing url depending on the resultMainDivId. and setting identificationID to identify the
			   // results.
			   var url="";
			   if(resultMainDivId == 'search'){
				 	url = "searchKeywordSuggest.do?q=("+keyvalue+")";
				 	identificationID = keywordidentification;
			   }else if(resultMainDivId == 'search_artist'){
				 	url = "searchSuggestListingArtist.do?q="+keyvalue;
				 	identificationID = artistidentification;
			   }else if( resultMainDivId == 'search_tag'){ 
			     	url = "searchSuggestListingGenre.do?q=("+keyvalue+")";
			     	identificationID = tagidentification;
			   }else if( resultMainDivId == 'search_location'){ 
			     	url = "searchSuggestListingLocation.do?q=("+keyvalue+")";
			     	identificationID = locationidentification;
			   }	
				
			   if(keyvalue != ''){
				   if((currentpK != 13) && (currentpK != 38) && (currentpK != 40)){
						$.getJSON(url,
				   				  {}, //pass additional data (no additional data needed)
					   			  function(jsonData){
					   			  	   var suggestedData="<ul style = \"margin:0px; padding: 0px; \">";
					   			       var noOfItems = 0;
					   			       $.each(jsonData.equalizes, 
					   						   function(i,item){
					   						   		noOfItems = i+1;
					   						   		if(item.prev){
					   						   			// if the suggestion is for previous word then pass the value to item.prev to setSearchKeyword.
					   						   			suggestedData = suggestedData+"<li id=\""+identificationID+suggrestedResultIdPrx+(i+1)+"\" tabindex=\""+(i+1)+"\" onclick=\"setSearchKeyword('"+resultMainDivId+"','"+item.s+"','"+item.prev+"')\" onmouseout=\"this.style.background='"+bgColor+"'\" onmouseover=\"this.style.background='"+bgColorOnOver+"';this.style.cursor = 'pointer';this.style.cursor = 'hand'\"  ";
					   						   		}else{
					   						   	    	suggestedData = suggestedData+"<li id=\""+identificationID+suggrestedResultIdPrx+(i+1)+"\" tabindex=\""+(i+1)+"\" onclick=\"setSearchKeyword('"+resultMainDivId+"','"+item.s+"','')\" onmouseout=\"this.style.background='"+bgColor+"'\" onmouseover=\"this.style.background='"+bgColorOnOver+"';this.style.cursor = 'pointer';this.style.cursor = 'hand'\"  ";
					   						   	    }
					   						   	    suggrestSelectedIdPts = "0";
					   						   	    if(resultMainDivId == 'search'){
										               	suggestedData = suggestedData+" style=\"padding-top:0px;padding-left:5px;padding-bottom:2px;background:"+bgColor+";width:208px;height:20px;cursor: pointer;float:left;font:11px arial;color:#000000; \"";
										            }else{
										               	suggestedData = suggestedData+" style=\"padding-top:0px;padding-bottom:2px;background:"+bgColor+";width:170px;height:20px;cursor: pointer;float:left;font:11px arial;color:#000000; \"";
										            }
									                if(item.prev){
									                	// if the suggestion is for previous word then add hidden element with id as identificationID+suggrestedResultIdPrx+(i+1)+"prev" and value as item.prev .
									                	suggestedData = suggestedData+">"+item.s+"</li><input type=\"hidden\" id=\""+identificationID+suggrestedResultIdPrx+(i+1)+"prev\" value=\""+item.prev+"\"/>";
									                }else{
									                	suggestedData = suggestedData+">"+item.s+"</li>";
									                }
									                totalSuggrestedPtss = i+1;
					   						   }
					   					);
					   					suggestedData = suggestedData+"</ul>";
					   					$("#"+suggestResultMainDivId).html(suggestedData);
					   					if(noOfItems > 0){
					   						if(resultMainDivId == 'search'){
					   							$("#"+suggestResultMainDivId).css({position:'absolute',width:'213px',display:'block',zIndex:'30',align:'left',border:'1px solid #999999'});
					   						}else{
					   							$("#"+suggestResultMainDivId).css({position:'absolute',width:'180px',display:'block',align:'left',border:'1px solid #999999'});
					   						}
					   					}else{
					   						if(resultMainDivId == 'search'){
					   							$("#"+suggestResultMainDivId).css({position:'absolute',width:'213px',display:'block',zIndex:'30',align:'left',border:'0px'});
					   						}else{
					   							$("#"+suggestResultMainDivId).css({position:'absolute',width:'180px',display:'block',align:'left',border:'0px'});
					   						}
					   					}
					   					
					   					queryTextSettedFlag = false;
					   					
					   					document.onkeydown=selectReplacement;
					   			  		
					   			  });
	
				   }
			   }else{
			   		$("#"+suggestResultMainDivId).html('');
			   		if(resultMainDivId == 'search'){	
                    	$("#"+suggestResultMainDivId).css({position:'absolute',width:'213px',display:'none',align:'left'});
                    }else{
                    	$("#"+suggestResultMainDivId).css({position:'absolute',width:'185px',display:'none',align:'left'});
                    }
			   }	
}

$(document).ready( function() {
				$("#Paintings").multiSelect({ oneOrMoreSelected: '*'}, function(){hideSearchSuggestBox();});
				$("#style").multiSelect({ oneOrMoreSelected: '*' }, function(){hideSearchSuggestBox();});
				$("#Price").multiSelect({ oneOrMoreSelected: '*' }, function(){hideSearchSuggestBox();});

				$("#search").keyup( function(){
						if(isFirstTime == true){
			   				isFirstTime = false;
			   			}else{
			   				clearTimeout (alertTimerId);
			   			}
			   			resultMainDivId = "search";
			   			suggestResultMainDivId = "search_suggest";
				   	    alertTimerId  =  setTimeout("showAlert('"+$(this).val()+"')",350);

			   });
			   $("#search").keypress( function(){
			   		return submitNoEnter();
			   });	
			   
			   $("#search_artist").keyup( function(){
			   			resultMainDivId = "search_artist";
			   			suggestResultMainDivId = "arties_search_suggest";
			   			if(isFirstTime == true){
			   				isFirstTime = false;
			   			}else{
			   				clearTimeout (alertTimerId);
			   			}
				   	    alertTimerId  =  setTimeout("showAlert('"+$(this).val()+"')",350);

			   });
			   $("#search_artist").keypress( function(){
			   		return submitNoEnter();
			   });	
			   
			   $("#search_tag").keyup( function(){
			   			resultMainDivId = "search_tag";
			   			suggestResultMainDivId = "tag_search_suggest";
			   			if(isFirstTime == true){
			   				isFirstTime = false;
			   			}else{
			   				clearTimeout (alertTimerId);
			   			}
				   	    alertTimerId  =  setTimeout("showAlert('"+$(this).val()+"')",350);

			   });
			   $("#search_tag").keypress( function(){
			   		return submitNoEnter();
			   });		
			   
			   $("#search_location").keyup( function(){
			   			resultMainDivId = "search_location";
			   			suggestResultMainDivId = "location_search_suggest";
			   			if(isFirstTime == true){
			   				isFirstTime = false;
			   			}else{
			   				clearTimeout (alertTimerId);
			   			}
				   	    alertTimerId  =  setTimeout("showAlert('"+$(this).val()+"')",350);

			   });
			   $("#search_location").keypress( function(){
			   		return submitNoEnter();
			   });		
			   
			   document.onclick = checkSearchSuggestBox;
			      
});

function checkSearchSuggestBox(e){
	var target = (e && e.target) || (event && event.srcElement);
	var obj = document.getElementById('tag_search_suggest');
	checkSearchSuggestParent(target,"tag_search_suggest")?obj.style.display='none':null;

	var obj2 = document.getElementById('arties_search_suggest');
	checkSearchSuggestParent(target,"arties_search_suggest")?obj2.style.display='none':null;
	
	var obj3 = document.getElementById('location_search_suggest');
	checkSearchSuggestParent(target,"location_search_suggest")?obj3.style.display='none':null;
	
	var obj4 = document.getElementById('search_suggest');
	checkSearchSuggestParent(target,"search_suggest")?obj4.style.display='none':null;
} 
function checkSearchSuggestParent(t,divControlId){
	while(t.parentNode){
		if(t==document.getElementById(divControlId)){
			return false
		}
		t=t.parentNode
	}
	return true
} 
function setSearchKeyword(controlId,keyword,previousWord){
	// logic to persist the previous word when auto suggestion word for the second word etc are selected.
	var currentValue = document.getElementById(controlId).value;
	var finalValue = "";
	// check whether there is a previous word or not.
	if( previousWord == ''){
		if( (currentValue.lastIndexOf(' ')!= -1) || (currentValue.lastIndexOf(',')!=-1)){
			// set the finalValue variable to the last ' ' or ',' character.
			if( currentValue.lastIndexOf(' ') > currentValue.lastIndexOf(',') ){
				finalValue = currentValue.substring(0,currentValue.lastIndexOf(' ')+1);
			}else{
				finalValue = currentValue.substring(0,currentValue.lastIndexOf(',')+1);
			}
		}
	}else{
		if(previousWord != ' '){
			finalValue = previousWord;
		}
	}
    // set the control value to previous word or words and newly selected word.
	document.getElementById(controlId).value=finalValue+keyword;
	document.getElementById(suggestResultMainDivId).style.display = 'none';
	queryTextSettedFlag = true;
}

function submitNoEnter() {
  document.onkeypress = submitNoEnter1;
}


function submitNoEnter1(e) {
  var keyCd = "";
  if (document.layers)
     keyCd = e.which;
  else if (document.all)
     keyCd = event.keyCode;
  else if (document.getElementById)
     keyCd = e.keyCode;
  
  if(keyCd == 13 && queryTextSettedFlag != true){
	  if(document.getElementById(identificationID+suggrestedResultIdPrx+suggrestSelectedIdPts)){
	  	 var keyword = 	document.getElementById(identificationID+suggrestedResultIdPrx+suggrestSelectedIdPts).innerHTML;
	  	 var previousWord='';
	  	 // check whether the hidden element with id as identificationID+suggrestedResultIdPrx+suggrestSelectedIdPts+'prev' exist or not.
	  	 if(document.getElementById(identificationID+suggrestedResultIdPrx+suggrestSelectedIdPts+'prev')){
	  	 	// set previous word with the value of the hidden element.
	  	 	previousWord = document.getElementById(identificationID+suggrestedResultIdPrx+suggrestSelectedIdPts+'prev').value;
	  	 }
	  	 setSearchKeyword(resultMainDivId,keyword,previousWord);
	  	 return false; 	
     }else{
  	 	return true;
  	 }
  }else{
  	 return true; 
  }
}

function getkeycode(e) {
    if (document.layers)
        return e.which;
    else if (document.all)
        return event.keyCode;
    else if (document.getElementById)
        return e.keyCode;
    return 0;
}


function selectReplacement(event) {
      var pK = "";
	  pK = parseInt(getkeycode(event));
	  currentpK = pK;

	  var identification = "";
	  
	  if(resultMainDivId == 'search'){
	  	identification = keywordidentification;
	  }else if(resultMainDivId == 'search_artist'){
	  	identification = artistidentification;
	  }else if(resultMainDivId == 'search_tag'){
	  	identification = tagidentification;
	  }else if(resultMainDivId == 'search_location'){
	  	identification = locationidentification;
	  }		
		
	  if(isFirst == true){
	  	  isFirst = false;
		  if(currentpK == 13){
		  		$("#searchPopupFormID").submit();
		  }		
      }
 
	  if(currentpK == 38 || currentpK == 40){

	  if(totalSuggrestedPtss > 0){
	  switch (currentpK) {
            case 40: // escape
	           if(document.getElementById(identification+suggrestedResultIdPrx+suggrestSelectedIdPts)){
              	 document.getElementById(identification+suggrestedResultIdPrx+suggrestSelectedIdPts).style.background = bgColor;                             	 
               }
               if(suggrestSelectedIdPts >= totalSuggrestedPtss){
  	   				 suggrestSelectedIdPts = "0";
			   }else{
				   suggrestSelectedIdPts++;
			   }
			   if(document.getElementById(identification+suggrestedResultIdPrx+suggrestSelectedIdPts)){
	               document.getElementById(identification+suggrestedResultIdPrx+suggrestSelectedIdPts).style.background = bgColorOnOver;
               }
               return false;
               break;
             case 38: // up arrow
                if(document.getElementById(identification+suggrestedResultIdPrx+suggrestSelectedIdPts)){
                   document.getElementById(identification+suggrestedResultIdPrx+suggrestSelectedIdPts).style.background = bgColor;               
               }
               if(suggrestSelectedIdPts <= 1){
  	   			   suggrestSelectedIdPts = totalSuggrestedPtss;
			   }else{
	               suggrestSelectedIdPts--;
			   }
               if(document.getElementById(identification+suggrestedResultIdPrx+suggrestSelectedIdPts)){
               		document.getElementById(identification+suggrestedResultIdPrx+suggrestSelectedIdPts).style.background = bgColorOnOver;
               }
               return false;
               break;
             case 38: // down arrow
               //gsc_handledown(__results, __query);
               return false;
               break;
       }
       }
       
     }else{
     	if(currentpK == 9){
     		hideSearchSuggestBox();
     		document.onkeydown = "";
     	}
     }
                                
}
function hideSearchSuggestBox(){
	var obj = document.getElementById('tag_search_suggest');
	if(obj!=null){
		obj.style.display='none';
	}
	var obj2 = document.getElementById('arties_search_suggest');
	if(obj2!=null){
		obj2.style.display='none';
	}
	var obj3 = document.getElementById('location_search_suggest');
	if(obj3!=null){
		obj3.style.display='none';
	}
	var obj4 = document.getElementById('search_suggest');
	if(obj4!=null){
		obj4.style.display='none';
	}
} 
