var MUSIC_TYPE="m";var VIDEO_TYPE="v";var ARCHIVE_TYPE="a";function handle_json_search_suggestions(a){getgvar("search_menu").handle_suggestions(a[0],a[1])}function search_menu_keypress_callback(a){getgvar("search_menu").handle_keypress(a)}function search_menu_mouseclick_callback(a){getgvar("search_menu").handle_mouseclick(a)}function search_menu(){this.results_type="";this.dirsearch_filetype=MUSIC_TYPE;this.dirsearch_filetypes=new Object();this.dirsearch_filetypes[MUSIC_TYPE]=new Array("mp3","ogg","wav","wma");this.dirsearch_filetypes[VIDEO_TYPE]=new Array("avi","mp4","mov","mpeg");this.dirsearch_filetypes[ARCHIVE_TYPE]=new Array("zip","gz","rar","bz2");this.filetypes_str=new Object();this.submit_baseurl="";this.studio_baseurl="/studio";this.search_input_box_ele=null;this.search_suggestions_ele=null;this.search_suggestions_last_query="";this.suggestions_box_closed=false;this.selected_suggestion=-1;this.temp_suggestion_input="";this.search_filetypes_ele=null;this.search_type_dropdown_ele=null;this.filetypes_table_ele=new Object();this.filetypes_checkbox_eles=new Object();this.typeselect_listeners=new Array();this.suggestion_maxlen=-1;this.init=function(f,b,h,d,e,c,i,a){this.search_input_box_ele=document.getElementById(f);if(this.search_input_box_ele.value!=""){this.search_suggestions_last_query=this.search_input_box_ele.value}this.search_input_box_ele.focus();this.search_suggestions_ele=document.getElementById(b);this.submit_baseurl=d;this.results_type=e;for(var g in this.dirsearch_filetypes){this.filetypes_str[g]=getgvar("initial_filetypes_str")[g];this.filetypes_checkbox_eles[g]=new Object()}this.typeselect_listeners=i;this.search_filetypes_ele=document.getElementById(h);this.search_type_dropdown_ele=document.getElementById("type");this.build_filetypes_tables();this.typeselect(c);this.suggestion_maxlen=a};this.typeselect=function(a){if(this.search_filetypes_ele==null){return}oldtype=this.dirsearch_filetype;this.dirsearch_filetype=a;this.remove_ele_children(this.search_filetypes_ele);this.search_filetypes_ele.appendChild(this.filetypes_table_ele[a]);for(var c in this.filetypes_checkbox_eles[a]){this.init_checkbox(a,c)}for(var b=0;b<this.typeselect_listeners.length;b++){this.typeselect_listeners[b].typeselect(oldtype,a)}};this.checkclick=function(a,b){if(this.filetypes_checkbox_eles[a][b].checked==true){this.filetypes_str[a]=this.filetypes_str[a].replace(b+"|","");this.filetypes_str[a]=this.filetypes_str[a]+b+"|"}else{this.filetypes_str[a]=this.filetypes_str[a].replace(b+"|","")}};this.init_checkbox=function(a,b){if(this.filetypes_str[a].indexOf(b)!=-1){this.filetypes_checkbox_eles[a][b].checked=true}else{this.filetypes_checkbox_eles[a][b].checked=false}};this.submit=function(){var c=this.strip_whitespace_groups(this.search_input_box_ele.value);if(c==""){window.location.href=window.location.href;return}var a="";var b=vidobj_factory().vidobj(c);if(b!=null){a=this.studio_baseurl+b.urlstr()}else{a=this.submit_baseurl+"/"+c+this.construct_search_parameter_str()}window.location.href=a};this.construct_search_parameter_str=function(b){var a="";if(this.results_type!="vid"){a+="&r="+this.results_type}if(this.dirsearch_filetype!=MUSIC_TYPE){a+="&t="+this.dirsearch_filetype}if(this.filetypes_str[this.dirsearch_filetype]!="mp3|ogg|wav|wma|"){a+="&ft="+this.filetypes_str[this.dirsearch_filetype]}if(a.length>0){a="?"+a.substr(1)}return a};this.get_search_suggestions=function(b){if(b==this.temp_suggestion_input){return}else{this.temp_suggestion_input=""}if(this.suggestions_box_closed==true||b==this.search_suggestions_last_query){return}else{if(b==""){this.delete_suggestions_box();this.search_suggestions_last_query=b;return}}this.search_suggestions_last_query=b;var a="http://suggestqueries.google.com/complete/search?client=suggest&ds=yt&jsonp=handle_json_search_suggestions&q="+b;json_perform_request(a)};this.handle_suggestions=function(h,a){if(a.length==0){this.delete_suggestions_box();return}this.search_suggestions_ele.style.display="block";var b=this.create_suggestions_close_div("[x]","search-suggestions-xclose");if(this.search_suggestions_ele.childNodes.length==0){this.search_suggestions_ele.appendChild(b)}else{this.search_suggestions_ele.replaceChild(b,this.search_suggestions_ele.childNodes[0])}this.selected_suggestion=-1;for(var e in a){this.add_suggestion_entry(a[e][0],e)}this.add_suggestion_entry(h,parseInt(e)+1,"search-suggestions-entry-invisible");var g=parseInt(e)+2;var c=this.create_suggestions_close_div("close","search-suggestions-close");if(g+1>=this.search_suggestions_ele.childNodes.length){this.search_suggestions_ele.appendChild(c)}else{if(this.search_suggestions_ele.childNodes[g+1].classname!="search-suggestions-close"){this.search_suggestions_ele.replaceChild(c,this.search_suggestions_ele.childNodes[g+1])}}var f=this.search_suggestions_ele.childNodes.length;for(var d=g+2;d<f;d++){this.search_suggestions_ele.removeChild(this.search_suggestions_ele.childNodes[g+2])}};this.add_suggestion_entry=function(e,c,d){var a=this.create_suggestion_entry(e,c,d);var b=parseInt(parseInt(c)+1);if(b>=this.search_suggestions_ele.childNodes.length){this.search_suggestions_ele.appendChild(a)}else{this.search_suggestions_ele.replaceChild(a,this.search_suggestions_ele.childNodes[b])}};this.close_suggestions_box=function(){this.suggestions_box_closed=true;this.delete_suggestions_box();this.search_input_box_ele.focus()};this.select_suggestion=function(b,d){if(d==undefined){d==false}if(b<0||b>=(this.search_suggestions_ele.childNodes.length-2)){return}var a=parseInt(parseInt(b)+1);this.deselect_suggestion(this.selected_suggestion);this.selected_suggestion=b;css_addclass(this.search_suggestions_ele.childNodes[a],"search-suggestions-entry-selected");if(d){var c=this.search_suggestions_ele.childNodes[a].childNodes[0].data;this.search_suggestions_last_query=c;this.temp_suggestion_input=c;this.search_input_box_ele.value=c}};this.deselect_suggestion=function(b){var a=parseInt(parseInt(b)+1);css_removeclass(this.search_suggestions_ele.childNodes[a],"search-suggestions-entry-selected")};this.select_suggestion_offset=function(b){var c=parseInt(this.selected_suggestion)+parseInt(b);var a=this.search_suggestions_ele.childNodes.length-2;if(this.selected_suggestion<0){c=0}else{if(c>=a){c=c%a}else{if(c<0){c=(a)-((-1*c)%(a))}}}this.select_suggestion(c,true)};this.delete_suggestions_box=function(){this.remove_ele_children(this.search_suggestions_ele);this.search_suggestions_ele.style.display="none";this.temp_suggestion_input="";this.selected_suggestion=-1};this.reload_suggestions_box=function(){this.search_suggestions_last_query="";this.suggestions_box_closed=false;this.get_search_suggestions(this.search_input_box_ele.value)};this.submit_suggestion=function(a){if(a==undefined||a==""&&this.selected_suggestion>0){a=this.search_suggestions_ele[this.selected_suggestion+1]}this.search_input_box_ele.value=a;this.search_input_box_ele.focus();this.delete_suggestions_box();this.submit()};this.handle_keypress=function(b){var a=-1;if(window.event){a=window.event.keyCode}else{if(b.which){a=b.which}}if(a==40){if(this.search_suggestions_ele.childNodes.length>2){this.select_suggestion_offset(1)}else{if(this.search_suggestions_ele.childNodes.length==0){this.reload_suggestions_box()}}}else{if(a==38){if(this.search_suggestions_ele.childNodes.length>2){this.select_suggestion_offset(-1)}else{if(this.search_suggestions_ele.childNodes.length==0){this.reload_suggestions_box()}}}else{if(a==27){this.search_input_box_ele.value=this.search_suggestions_ele.childNodes[this.search_suggestions_ele.childNodes.length-2].childNodes[0].data;this.delete_suggestions_box();this.search_input_box_ele.focus()}}}};this.handle_mouseclick=function(b){var a;if(!b){b=window.event}if(b.target){a=b.target}else{if(b.srcElement){a=b.srcElement}}if(a.nodeType==3){a=a.parentNode}if((a.parentNode&&a.parentNode==this.search_suggestions_ele)||(a.parentNode&&a.parentNode.parentNode&&a.parentNode.parentNode==this.search_suggestions_ele)){return}else{this.delete_suggestions_box()}};this.build_filetypes_tables=function(){for(var a in this.dirsearch_filetypes){this.build_checkbox_table(a,this.dirsearch_filetypes[a])}};this.create_suggestion_entry=function(e,a,b){var d=e;if(this.suggestion_maxlen>0&&e.length>this.suggestion_maxlen){d=e.substring(0,this.suggestion_maxlen-3)+"..."}var c=document.createElement("div");c.onclick=function(){getgvar("search_menu").submit_suggestion(e)};c.onmouseover=function(){getgvar("search_menu").select_suggestion(a,false)};c.onmouseout=function(){getgvar("search_menu").deselect_suggestion(a)};c.className="search-suggestions-entry";if(b!=undefined&&b!=""){c.className+=" "+b}c.appendChild(document.createTextNode(d));return c};this.create_suggestions_close_div=function(b,c){var d=document.createElement("div");d.className=c;var a=document.createElement("a");a.onclick=function(){getgvar("search_menu").close_suggestions_box()};a.appendChild(document.createTextNode(b));d.appendChild(a);return d};this.ele_addtd=function(a){var b=document.createElement("td");b.setAttribute("class","option_check");b.appendChild(a);return b};this.ele_checkbox=function(b,c){var a=document.createElement("input");a.setAttribute("class","hand-checkbox");a.type="checkbox";a.onclick=function(){getgvar("search_menu").checkclick(b,c)};return a};this.add_checkbox=function(b,a,d){var c=this.ele_checkbox(a,d);this.filetypes_checkbox_eles[a][d]=c;b.appendChild(this.ele_addtd(c));b.appendChild(this.ele_tdtext(d))};this.ele_tdsubspacer=function(){var a=document.createElement("td");a.setAttribute("class","sub_spacer");return a};this.ele_tdtext=function(b){var c=document.createElement("td");c.className="filetype-text";var a=document.createTextNode(b);c.appendChild(a);return c};this.build_checkbox_table=function(c,a){this.filetypes_table_ele[c]=document.createElement("table");this.filetypes_table_ele[c].setAttribute("class","options");var b=document.createElement("tbody");var e=document.createElement("tr");for(var d=0;d<a.length;d++){this.add_checkbox(e,c,a[d])}b.appendChild(e);this.filetypes_table_ele[c].appendChild(b)};this.strip_whitespace_groups=function(c){retstr="";c=c.replace(new RegExp(/^\s+/),"");c=c.replace(new RegExp(/\s+$/),"");var a=false;for(var b=0;b<c.length;b++){if(c.charAt(b)==" "&&a==false){a=true;retstr=retstr+c.charAt(b)}else{if(c.charAt(b)!=" "){a=false;retstr=retstr+c.charAt(b)}}}return retstr};this.remove_ele_children=function(a){if(a==undefined||a==null){return}while(a.hasChildNodes()){a.removeChild(a.firstChild)}}};