А это говно-код, как вы думаете?
функция $() - не Jquery это моя (пользовательская) функция
ниже представленный код работает на голом JS без каких-либо библиотек.
hunt = {
isBlocked:false,
href:[],
q:'',
find: function()
{
if (this.isBlocked){return false;}
this.isBlocked = true;
if (document['searchform']['q'].value != '') {
this.q = encodeURIComponent(document['searchform']['q'].value);
}
var allFormNodes = document['advancedsrc'].getElementsByTagName("input");
for (var i=0; i < allFormNodes.length; i++)
{
if (allFormNodes[i].type == 'text' || allFormNodes[i].type == 'search' || allFormNodes[i].type == 'hidden') {
if (allFormNodes[i].value == '') {
continue;
}
this.q += "&"+ allFormNodes[i].name +"="+ allFormNodes[i].value;
} else if (allFormNodes[i].type == 'radio' || allFormNodes[i].type == 'checkbox') {
if (allFormNodes[i].checked){
this.q += "&"+ allFormNodes[i].name +"="+ allFormNodes[i].value;
}
}
}
this.newRequest();
return false;
},
newRequest: function()
{
if (typeof this.href[0] === 'undefined'){
this.href = ["/src"];
}
this.q = this.href[0] +"?q="+ this.q;
$("searchResults").innerHTML = '<div class="c">Загрузка данных... '+ progress +'</div>';
xhr({_push:"searchengine",
file: this.q + (this.q.indexOf("?") < 0 ? "?" : "&") +"ajax",
answer:function(d)
{
hunt.isBlocked = false;
$("searchResults").innerHTML = d;
hunt.q = '';
inc.addHistory(hunt.q);
}});
},
createPopup: function(e)
{
killPropagation(e);
if ($("popup"))
{
if ($("popup").style.display == "none") {
$("popup").style.marginTop = (scroll.curPosition() + 107) +"px";
$("popup").style.display = "block";
this.destroyPopup();
inc.addHistory(hunt.href[0]);
}
return false;
}
this.destroyPopup();
if (this.isBlocked){return false;}
this.isBlocked = true;
if (typeof this.href[0] === 'undefined'){
this.href = ["/src"];
} else {
if (typeof this.href[1] !== 'undefined' && pathname() != this.href[1]) {
this.href = ["/src"];
}
}
this.href[1] = pathname();
var popup = document.createElement("div");
popup.innerHTML = '<div id="popup" class="c">Загрузка... '+ progress +'</div>';
$("content").appendChild(popup);
xhr({_push:"searchengine",
file: this.href[0] +"?ajax",
answer:function(d)
{
var popup = $("popup");
if (!popup) {//На случай, если ответ уже поступил, но юзер в этот момент на другую страницу перешел
return false;
}
d = reincJS.cut(d);
popup.parentNode.innerHTML = d;
reincJS.put("popup");
popup.style.marginTop = (scroll.curPosition() + 107) +"px";
inc.addHistory(hunt.href[0]);
hunt.isBlocked = false;
}});
},
destroyPopup: function()
{
document.body.onmousedown = function(e)
{
if (mywhich() != 1) {
return false;
}
var e = myevent(e);
var obj = e.target || window.event.srcElement;
if (obj.tagName == "A")
{
document.body.onmousedown = function(){};
hunt.isBlocked = false;
if (typeof http['searchengine'] !== "undefined") {
http['searchengine'].abort();
delete http['searchengine'];
}
return false;
}
if (hunt.isBlocked) {
return false;
}
do {
if (obj.tagName == "DIV")
{
var id = obj.getAttribute("id");
if (typeof id === "string" && id == 'popup') {
break;
}
} else {
if (obj.tagName == "BODY")
{
hunt.isBlocked = false;
hunt.q = '';
document.body.onmousedown = function(){};
$("popup").style.display = "none";
inc.addHistory(hunt.href[1]);
document['searchform']['q'].value = '';
break;
}
}
obj = obj.parentNode;
} while (true);
};
}
}