var songs_names = new Array();
var songs_authors = new Array();
var songs_albums = new Array();
var curArray = new Array();

var actb_keywords = new Array();
var actb_curr = null;
var actb_bgColor = '#97CBFF';

var select_blur = false;
//var End = 0;
var V = 0;
var delaySongs;
var delaySelect;
var removeSelect;
var detect = navigator.userAgent.toLowerCase();
var OS,browser,version,total,thestring;

if (checkIt('konqueror'))
{
	browser = "Konqueror";
	OS = "Linux";
}
else if (checkIt('safari')) browser = "Safari"
else if (checkIt('omniweb')) browser = "OmniWeb"
else if (checkIt('opera')) browser = "Opera"
else if (checkIt('webtv')) browser = "WebTV";
else if (checkIt('icab')) browser = "iCab"
else if (checkIt('msie')) browser = "Internet Explorer"
else if (!checkIt('compatible'))
{
	browser = "Netscape Navigator"
	version = detect.charAt(8);
}
else browser = "An unknown browser";

if (!version) version = detect.charAt(place + thestring.length);

if (!OS)
{
	if (checkIt('linux')) OS = "Linux";
	else if (checkIt('x11')) OS = "Unix";
	else if (checkIt('mac')) OS = "Mac"
	else if (checkIt('win')) OS = "Windows"
	else OS = "an unknown operating system";
}

function checkIt(string)
{
	place = detect.indexOf(string) + 1;
	thestring = string;
	return place;
}

function GetAllSongsByText(evt)
{
//	if(document.searchForm.sStr.value != "")
//	{
//		window.clearTimeout(delaySongs);
//		delaySongs = window.setTimeout('GetAllSongs()',150);
//	}
	/*if(document.searchForm.sStr.value != "")
		GetAllSongs();*/
	if(!evt) evt = window.event;
//	alert(evt.keyCode);


	if(document.searchForm.sStr.value == "")
	{
    		remove_select();
		songs_authors = new Array();
		songs_names = new Array();
		curArray = new Array();
	}
	if ((evt.keyCode == 38 || evt.keyCode == 40) && document.getElementById('tat_table'))
    	{
    		document.getElementById('SelectVar').focus();
    		return;
    	}
    	if(evt.keyCode == 13 )
    	{ 
    		if (actb_curr != null && document.getElementById('SelectVar') != null && document.getElementById('SelectVar').value != '')
    		{
	    		actb_curr.value = document.getElementById('SelectVar').value;
    		}
    		remove_select(); 
	    	return;
    	}
    	
    		if(!autocomplete(document.searchForm.sStr, evt, curArray) && evt)
    		{
    			/*window.clearTimeout(delaySongs);
    			delaySongs = setTimeout('createFrameForSearch()', 300);*/
    			createFrameForSearch();
//    			setTimeout('createFrameForSearch()', 500);
    		}
//			createFrameForSearch();
}

//function checkShowSelect()
//{
//	if(document.searchForm.sStr.value == "")
//    		remove_select(); 
//}
function createFrameForSearch()
{
	var vid_t = document.searchForm.sStr;
	V++;
//	window.setInterval('checkShowSelect()', 1000)
	if(vid_t.value == "")
	{
		songs_authors = new Array();
		songs_names = new Array();
		curArray = new Array();
		remove_select(); 
	}
//	else
//		buildSelect();
	if(!document.getElementById("completionFrame"))
	{
		var div_table = document.createElement("DIV");
		div_table.style.position='absolute';
		div_table.style.top = eval(curLayerTop(vid_t) + vid_t.offsetHeight) + "px";
		div_table.style.left = curLayerLeft(vid_t) + "px";
		div_table.style.visibility="hidden";
	//	div_table.style.height = "80px";
	//	div_table.style.width = "260px";
	//	div_table.style.border = '2px solid #000000';
	//	div_table.style.width = '100px';
	//	div_table.style.heigth = '100px';
		
		var Layer =document.createElement("IFRAME");
		Layer.name="completionFrame";
		Layer.id="completionFrame";
		Layer.src="searchText.php";
		div_table.appendChild(Layer);
		document.body.appendChild(div_table);
//		buildSelect();
//		setTimeout('buildSelect()', 100);
		
	}
	else
	{
		if(!string_in_array(vid_t.value))
		{
//			End = 0;
			reloadFrame();
//			setTimeout('buildSelect()', H(V));
		}
	}
	/*window.clearTimeout(delaySelect);
	delaySelect = window.setTimeout('buildSelect()',time);*/
	
}

function H(el)
{
	l = 100;
	for(var i = 0; i < el; i++)
		l = l + 50;
	return l;
}
function reloadFrame()
{
//	completionFrame.location = "searchText.php";
	completionFrame.location.reload(true);
}

function string_in_array(elem)
{
	var id, t = 0;
//	var tempArray = new Array;
	var searchText = new RegExp(elem, "i");
	var thisSelect = document.getElementById('SelectVar');
	if(curArray.length > 1 && elem.length > 1)
	{
		for(id in curArray)
		{
			var myNumString = curArray[id].search(searchText);
			if(myNumString == 0)
			{
				if(thisSelect)
				{
					for (var i = 0; i < thisSelect.options.length; i++)
					{
						if(thisSelect.options[i].value == curArray[id])
						{
							thisSelect.options[i].selected = true;
							thisSelect.options[i].focus();
							return true;
						}
						else
						{
							thisSelect.options[i].selected = false;
						}
					}
				}
				return true;
			}
		}
		return false;
	}
	else if(curArray.length == 1 && elem == curArray[0])
	{ 
			return true;
	}
	else
	{
		return false;
	}
}
function curLayerTop(new_table)
{
    	actb_toreturn = 0;
    	obj = new_table;
    	while(obj)
    	{
        		actb_toreturn += obj.offsetTop;
        		obj = obj.offsetParent;
    	}
    	return actb_toreturn;
}

function curLayerLeft(new_table)
{
    	actb_toreturn = 0;
	obj = new_table;
    	while(obj)
    	{
        		actb_toreturn += obj.offsetLeft;
        		obj = obj.offsetParent;
    	}
    	return actb_toreturn;
}

function getHTTPObject_xml() 
{
	try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
	try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
	try { return new XMLHttpRequest(); } catch(e) {}
	alert("XMLHttpRequest not supported");
	return null;
 }

/*function getHTTPObject() 
{
	 if ( window.XMLHttpRequest ) 
	     	xmlhttp = new XMLHttpRequest();
	  else if ( window.ActiveXObject )
	   	 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	  return xmlhttp;
}*/

function LoadXML_temp(url)
{
	var xmlHttp = getHTTPObject_xml();
	xmlHttp.open("GET",url, false);
	xmlHttp.onreadystatechange = function() 
	{
		   if (xmlHttp.readyState != 4)  { return; }
		   var serverResponse = xmlHttp.responseText;
//		   alert(serverResponse);
	};
	xmlHttp.send(null);
	return xmlHttp.responseXML.documentElement;
}

function GetAllSongs()
{
	var curType = parent.searchForm.sType.value;
//	var curType = document.searchForm.sType.value;
	var searchField = parent.searchForm.sStr;
//	var searchField = document.searchForm.sStr;
	var url = "xmlGetSongsName.php?type="+curType+"&searchField="+searchField.value;
	var xml = LoadXML_temp(url);
	if(xml && xml != null)
	{
		var results = xml.getElementsByTagName('song');
		switch(curType)
		{
			case "1":
				songs_names = new Array();
				for(var i = 0; i < results.length; i++)
				{
					songs_names[i] = results[i].firstChild.data;
				}
				if(songs_names.length > 0)
				{
					parent.curArray = new Array();
					parent.curArray = songs_names;
				}
				else parent.curArray = new Array();
			break;
			case "2": 
				songs_authors = new Array();
				for(var i = 0; i < results.length; i++)
				{
					songs_authors[i] = results[i].firstChild.data;
				}
				if(songs_authors.length > 0)
				{
					parent.curArray = new Array();
					parent.curArray = songs_authors;
				}
				else parent.curArray = new Array();
			break;
			case "4": 
				songs_albums = new Array();
				for(var i = 0; i < results.length; i++)
				{
					songs_albums[i] = results[i].firstChild.data;
				}
				if(songs_albums.length > 0)
				{
					parent.curArray = new Array();
					parent.curArray = songs_albums;
				}
				else parent.curArray = new Array();
			break;
			default:
				parent.curArray = new Array();
			break;
		}
	}
	parent.buildSelect();
//	parent.End =1;
//	return curArray;
}
function remove_select()
{
	 if (document.getElementById('tat_table')) document.body.removeChild(document.getElementById('tat_table'));
}

function generate_select(evt)
{
//	if (arr) actb_keywords = arr;
//	if (!sndr) var sndr = evt.srcElement;
    	if ((evt.keyCode == 38 || evt.keyCode == 40) && document.getElementById('tat_table'))
    	{
    		document.getElementById('SelectVar').focus();
    		return;
    	}
    	if(evt.keyCode == 13 )
    	{ 
    		if (actb_curr != null && document.getElementById('SelectVar') != null && document.getElementById('SelectVar').value != '')
    		{
	    		actb_curr.value = document.getElementById('SelectVar').value;
    		}
    		remove_select(); 
	    	return;
    	}
//    	alert(completionFrame);
    	if(curArray.length > 0)
    	{
    		window.clearTimeout(delaySelect);
		delaySelect = window.setTimeout('buildSelect()',350);
//    		buildSelect();
    	}
	/*window.clearTimeout(delaySelect);
	delaySelect = window.setTimeout('buildSelect()',180);*/
}

function curTop()
{
    	actb_toreturn = 0;
    	obj = actb_curr;
    	while(obj)
    	{
        		actb_toreturn += obj.offsetTop;
        		obj = obj.offsetParent;
    	}	
    	return actb_toreturn;
}

function curLeft()
{
    	actb_toreturn = 0;
	obj = actb_curr;
    	while(obj)
    	{
        		actb_toreturn += obj.offsetLeft;
        		obj = obj.offsetParent;
    	}
    	return actb_toreturn;
}
function blur_select()
{
	if(select_blur == false)
	{
		remove_select();
		songs_authors = new Array();
		songs_names = new Array();
		curArray = new Array();
	}
}

function buildSelect()
{
	/*if(!autocomplete(document.searchForm.sStr, 0, curArray))
	{
			createFrameForSearch();
			return;
	}*/
//	if(End == 0) return;
	if (curArray) actb_keywords = curArray;
//	var sndr = parent.searchForm.sStr;
	var sndr = document.searchForm.sStr;
	actb_curr = sndr;
	if (document.getElementById('tat_table'))
    		document.body.removeChild(document.getElementById('tat_table'));
    	if(actb_keywords.length >= 1 && sndr.value != "")
    	{
	    	a = document.createElement('table');
	    	a.cellSpacing='1px';
	    	a.cellPadding='1px';
	    	a.style.position='absolute';
//	    	a.style.top = "0px";
	    	a.style.top = eval(curTop() + actb_curr.offsetHeight) + "px";
//	    	a.style.left = "0px";
	    	a.style.left = curLeft() + "px";
//	    	a.style.backgroundColor = actb_bgColor;
	    	a.id = 'tat_table';
	    	var setBlurTable = function()
	    	{
	    		select_blur = false;
	    		actb_curr.focus();
	    	};
	    	var setFocusTable = function()
	    	{
	    		select_blur = true;
	    	};
	    	var selectValue = function()
	    	{
	    		actb_curr.value = this.value;
	    		select_blur = false;
	    		remove_select(); 
	    		actb_curr.focus();
	    	};
	    	var selectPressValue = function()
	    	{
	    		if(event.keyCode == 13)
	    		{
		    		actb_curr.value = this.value;
		    		select_blur = false;
		    		remove_select(); 
		    		actb_curr.focus();
	    		}
	    	};
	    	document.body.appendChild(a);
	    	row = a.insertRow(-1);
	    	coll = row.insertCell(-1);
		coll.setAttribute('style', '');
		coll.style.width = "100%";
		var select = document.createElement('SELECT');
		select.setAttribute('name','SelectVar');
		select.setAttribute('id','SelectVar');
		select.setAttribute('multiple','multiple');
		select.setAttribute('align','right');
		select.setAttribute('dir','rtl');
		select.setAttribute('style', '');
		/*var heightSelect = (actb_keywords.length) *14;
		select.style.height = heightSelect + "px";*/
		select.style.height = "210px";
		select.style.width = "260px";
		select.style.color = "#A428FC";
		select.style.fontSize = "9pt";
		select.setAttribute('onblur',setBlurTable);
		select.setAttribute('onfocus',setFocusTable);
		select.setAttribute('ondblclick',selectValue);
		select.setAttribute('onkeypress',selectPressValue);
		var option = document.createElement('OPTION');
		option.setAttribute('value', "");
		select.appendChild(option);
		for(id in actb_keywords)
		{
			var option = document.createElement('OPTION');
			option.setAttribute('value', actb_keywords[id]);
			var text_option = document.createTextNode(actb_keywords[id]);
			option.appendChild(text_option);
			select.appendChild(option);
		}
		coll.appendChild(select);
		select_blur = true;
    	}
    	V--;
}

var isOpera = navigator.userAgent.indexOf('Opera') > -1; 
var isIE = navigator.userAgent.indexOf('MSIE') > 1 && !isOpera; 
var isMoz = navigator.userAgent.indexOf('Mozilla/5.') == 0 && !isOpera; 

function textboxSelect (oTextbox, iStart, iEnd) 
{ 
   	switch(arguments.length) 
   	{ 
       		case 1: 
           			oTextbox.select(); 
           		break; 

       		case 2: 
          			 iEnd = oTextbox.value.length; 
           /* falls through */ 
            
      		case 3:          
          			 if (isIE) 
          			 { 
			               var oRange = oTextbox.createTextRange(); 
			               oRange.moveStart("character", iStart); 
			               oRange.moveEnd("character", -oTextbox.value.length + iEnd);      
			               oRange.select();                                              
			 } 
			 else if (isMoz)
			 { 
               			oTextbox.setSelectionRange(iStart, iEnd); 
           			 }                     
   	} 

   	oTextbox.focus(); 
} 

function textboxReplaceSelect (oTextbox, sText) 
{ 

	if (isIE) 
	{ 
		var oRange = document.selection.createRange(); 
		oRange.text = sText; 
		oRange.collapse(true); 
		oRange.select();                                 
	} 
	else if (isMoz) 
	{ 
		var iStart = oTextbox.selectionStart; 
		oTextbox.value = oTextbox.value.substring(0, iStart) + sText + oTextbox.value.substring(oTextbox.selectionEnd, oTextbox.value.length); 
		oTextbox.setSelectionRange(iStart + sText.length, iStart + sText.length); 
	} 
	oTextbox.focus(); 
} 

function autocompleteMatch (sText, arrValues) 
{ 

	for (var i=0; i < arrValues.length; i++) 
	{ 
		if (arrValues[i].indexOf(sText) == 0) 
		{ 
	   		return arrValues[i]; 
		} 
	} 
	
	return null; 

} 

function autocomplete(oTextbox, oEvent, arrValues) 
{ 

//	alert(oEvent.keyCode);
	switch (oEvent.keyCode) 
	{ 
		case 38: //up arrow  
		case 40: //down arrow 
		case 37: //left arrow 
		case 39: //right arrow 
		case 33: //page up  
		case 34: //page down  
		case 36: //home  
		case 35: //end                  
		case 13: //enter  
		case 9: //tab  
		case 27: //esc  
		case 16: //shift  
		case 17: //ctrl  
		case 18: //alt  
		case 20: //caps lock 
		case 8: //backspace  
		case 46: //delete 
			return true; 
		break; 
		
		default: 
//			textboxReplaceSelect(oTextbox, String.fromCharCode(isIE ? oEvent.keyCode : oEvent.charCode)); 
			var iLen = oTextbox.value.length; 
			var sMatch = autocompleteMatch(oTextbox.value, arrValues); 
			if (sMatch != null) 
			{ 
//				oTextbox.value = sMatch; 
				selectFromTable(sMatch);
//				textboxSelect(oTextbox, iLen, oTextbox.value.length); 
			}  
			return false; 
		break;
	} 
} 

function selectFromTable(elem)
{
	var thisSelect = document.getElementById('SelectVar');
	if(thisSelect)
	{
		for (var i = 0; i < thisSelect.options.length; i++)
		{
			if(thisSelect.options[i].value == elem)
			{
				thisSelect.options[i].selected = true;
				thisSelect.options[i].focus();
				return;
			}
		}
	}
}