var type = []
var layout = []
var keywords = []
var space_id = []
var items_per_page = []
var start = []
var page = []
var total_results = []

var no_contributions = ""
var ajax_path = ""
var d1gConstants_NODE_TYPE_FORUM_TOPIC = 0
var d1gConstants_NODE_TYPE_QNA_QUESTION = 0
var d1gConstants_NODE_TYPE_AUDIO = 0
var d1gConstants_NODE_TYPE_VIDEO_VIDEO = 0
var d1gConstants_NODE_TYPE_GALLERY_IMAGE = 0
var d1gConstants_NODE_TYPE_PLOGGER_IMAGE = 0

var d1gConstants_SOUND_WEB_FOLDER = ""
var d1gConstants_SOUNDS_SERVERS = new Array();
var d1gConstants_PHOTO_WEB_FOLDER = ""
var d1gConstants_PHOTOS_SERVERS = new Array();
var d1gConstants_VIDEO_WEB_FOLDER = ""
var d1gConstants_VIDEOS_SERVERS = new Array();

var dir = ""
var text_align = ""


function get_path_from_node(node_id) {
  var id_str = ""+node_id
  var id_fix = ""
  for (i=0;i<4-id_str.length;i++)
    id_fix += "0"
  id_fix += id_str
  return id_fix.substr(id_fix.length - 2,2) + "/" + id_fix.substr(id_fix.length - 4,2) + "/"
  return ''
}

function sound_url(node_id) {
  index = node_id % d1gConstants_SOUNDS_SERVERS.length
  return d1gConstants_SOUNDS_SERVERS[index] + d1gConstants_SOUND_WEB_FOLDER + get_path_from_node(node_id) + node_id + ".mp3"
}

function to_url(node_id) {
  index = node_id % d1gConstants_PHOTOS_SERVERS.length
  return d1gConstants_PHOTOS_SERVERS[index] + d1gConstants_PHOTO_WEB_FOLDER + get_path_from_node(node_id) + node_id + "_mouseover.jpg"
}

function video_url(node_id) {
  index = node_id % d1gConstants_VIDEOS_SERVERS.length
  return d1gConstants_VIDEOS_SERVERS[index] + d1gConstants_VIDEO_WEB_FOLDER + get_path_from_node(node_id) + node_id + "_large.jpg"
}

function extract_text(elem) {
  var ret = ""
  for (var i = 0 ; i < elem.length ; i++) {
    for (var j = 0 ; j < elem[i].childNodes.length ; j++)
      if (elem[i].childNodes[j].nodeValue == null) {
        ret += "<span class=\""+elem[i].childNodes[j].getAttribute("class")+"\">"
        ret += elem[i].childNodes[j].firstChild.nodeValue
        ret += "</span>"
      }
      else
        ret += elem[i].childNodes[j].nodeValue
  }
  return ret
}

function extract_plain_text(elem) {
  var ret = ""
  for (var i = 0 ; i < elem.length ; i++) {
    for (var j = 0 ; j < elem[i].childNodes.length ; j++)
      if (elem[i].childNodes[j].nodeValue == null) {
        ret += elem[i].childNodes[j].firstChild.nodeValue
      }
      else
        ret += elem[i].childNodes[j].nodeValue
  }
  return ret
}

function generate_pagination(total,page,per_page,code) {
  var ret = ""
  var pages = Math.ceil(total/per_page)
  var tail = [pages-1,pages]
  var mid = []
  for (var i=0;i<7;i++)
    mid[i] = i + page - 3

  if (mid[0] < 3) {
    var fixation = 3 - mid[0]
    for (i=0;i<7;i++)
      mid[i]+= fixation
  }
  else if (mid[7] >= pages -1) {
    fixation = Math.min(mid[0] - 3, mid[7] - tail[2] + 2)
    for (i=0;i<7;i++)
      mid[i]-= fixation
  }

  var pages_list = [1,2]
  var pages_counter = 2
  for (i=0;i<7 && mid[i] < tail[0];i++)
    pages_list[pages_counter++] = mid[i]

  for (i=0;i<2 && tail[i] > 2;i++)
    pages_list[pages_counter++] = tail[i]

  ret += "<div class=\"pages\">"

  if (page > 1)
    ret += "<span class=\"prevLink\" style=\"cursor:pointer;\" onclick=\"load_page("+ (page-1) +","+code+")\">"+prev_label+"</span>"
  else
    ret += "<span class=\"prevLink\">"+prev_label+"</span>"

  for (i=0;i<pages_list.length;i++) {
    if (pages_list[i]==page) {
      ret += "<span class=\"currentStep\">"+pages_list[i]+"</span>"
    }
    else {
      ret += "<span class=\"step\" style=\"cursor:pointer;\" onclick=\"load_page("+pages_list[i]+","+code+")\">"+pages_list[i]+"</span>"
    }
    if ((i < pages_list.length-1) && (pages_list[i] != pages_list[i+1] -1))
      ret += "<span class=\"falign\">...</span>"
  }

  if (page < pages)
    ret += "<span class=\"step\" style=\"cursor:pointer;\" onclick=\"load_page("+ (page+1) +","+code+")\">"+next_label+"</span>"
  else
    ret += "<span class=\"nextLink\">"+next_label+"</span>"

  ret += "</div><div class=\"clear no_spaces\"></div>"
  return ret
}

function load_page(new_page,code) {
  page[code] = new_page
  start[code] = (items_per_page[code] * (new_page - 1)) + 1
  initRelatedRequest(code)
}

function submit_form(code) {
  keywords[code]=document.getElementById('keywords'+code).value
  type[code]=document.getElementById('type'+code).value
  page[code] = 1
  start[code] = 0
  initRelatedRequest(code)
}
function initRelatedRequest(code) {
  document.getElementById('show_related'+code).style.display = "none";
  document.getElementById('loading_related'+code).style.display = "";
  var req = false;
  var type_qs = ''
  if (type[code] > 0) {
    type_qs = "type="+type[code]+"&"
  }

  var space_qs = ''
  if (space_id[code] > 0) {
    space_qs = "space="+space_id[code]+"&"
  }

  var new_keywords = ''

  if (keywords[code] != null) {
    var keywordsList = keywords[code].split(' ')
    for (i=0;i<keywordsList.length;i++)
      if (keywordsList[i].length > 2)
        new_keywords += keywordsList[i] + ' '
  }

  var req_url = ajax_path + type_qs + space_qs +"keyword="+keywords[code]+"&itemsPerPage="+items_per_page[code]+"&start="+start[code]
  
  req = createRelatedRequestObject();

	req.open("GET", req_url + "&rnd_id=" + Math.random(), true);
  if(req){
	req.onreadystatechange = function(){
	  initRelatedResponse(req,code);
	};    
	req.send(null);
  }
}

function initRelatedResponse(req,code) {
  if(req.readyState == 4){
    if(req.status == 200){
      document.getElementById('loading_related'+code).style.display = "none";
      document.getElementById('show_related'+code).style.display = "";
      var xml = req.responseXML;
      var newHtml = ""
	  total_results[code] = '0';
      if (xml.getElementsByTagName('totalResults').item(0) != null) {
			total_results[code] = xml.getElementsByTagName('totalResults').item(0).firstChild.nodeValue;
		}
		//total_results[code] = xml.getElementsByTagName('totalResults').item(0).firstChild.nodeValue;
	  totalResults = total_results[code]
	  if (totalResults == "0" || totalResults == 0 || totalResults == null) {
        newHtml += "<div class=\"warn falign\"><img src=\"/images/icons/error.png\" alt=\"\"/>&nbsp;لا يوجد محتويات</div><br/>";
		document.getElementById('searchResults'+code).innerHTML = newHtml;
      } else {
        if (type[code] == 0 || type[code] == d1gConstants_NODE_TYPE_FORUM_TOPIC || type[code] == d1gConstants_NODE_TYPE_QNA_QUESTION || type[code] == d1gConstants_NODE_TYPE_AUDIO) {
          newHtml += "<ul class=\"bullets\">";

          var items = xml.getElementsByTagName("item");
          for (var i = 0 ; i < items.length ; i++) {
            var item = items[i];
                            
            var result_title = extract_text(item.getElementsByTagName("doctitle"))//[0].firstChild.nodeValue;
            var result_description = extract_text(item.getElementsByTagName("description"))
            var result_link = item.getElementsByTagName("link")[0].firstChild.nodeValue;
            var result_id = item.getElementsByTagName("id")[0].firstChild.nodeValue;
            var result_type = item.getElementsByTagName("type")[0].firstChild.nodeValue;
            var image = ""
            if (result_type == d1gConstants_NODE_TYPE_FORUM_TOPIC) image = "<img src=\"/images/d1g/forum.gif\" alt=\"Forum Topic\"/>"
            else if (result_type == d1gConstants_NODE_TYPE_AUDIO) image = "<img src=\"/images/d1g/sound.gif\" alt=\"Audio\"/>"
            else if (result_type == d1gConstants_NODE_TYPE_QNA_QUESTION) image = "<img src=\"/images/d1g/qna.gif\" alt=\"Question\"/>"
            else if (result_type == d1gConstants_NODE_TYPE_VIDEO_VIDEO) image = "<img src=\"/images/d1g/video.gif\" alt=\"Video Clip\"/>"
            else if (result_type == d1gConstants_NODE_TYPE_GALLERY_IMAGE) image = "<img src=\"/images/d1g/gallery.gif\" alt=\"Gallery Image\"/>"
            else if (result_type == d1gConstants_NODE_TYPE_PLOGGER_IMAGE) image="<img src=\"/images/d1g/cartoon.gif\" alt=\"Cartoon\"/>"
            newHtml += "<li number=\""+ (start[code]+i) +"\" style=\"direction: "+dir+";\">"
            
            newHtml += "<a class=\"text_related_search\" target=\"_top\" href=\""+result_link+"\">"+ result_title +"&nbsp;</a>"
            newHtml += "("+ result_description.substr(0,100) +")&nbsp;"

            if (result_type == d1gConstants_NODE_TYPE_AUDIO && false) {
              //var sound_path = sound_url(result_id)
              //newHtml += "<span id=\"sound_preview_"+result_id+"\" class=\"falign\"></span><span id=\"static_image_"+result_id+"\" class=\"lspeaker falign\" style=\"background: transparent;\" onmouseover=\"var so = new SWFObject(\"/swf/player.swf\",\"mpl\",\"1\",\"1\",\"7\"); so.addParam(\"allowfullscreen\",\"false\"); so.addVariable(\"file\",\""+ sound_path +"\"); so.addVariable(\"autostart\",true);so.write(\"sound_preview_"+  result_id +"\");\" onmouseout=\"getElementById(\"sound_preview_"+ result_id +"\").innerHTML = \"\";\" onclick = \"\"><a href=\"#\" class=\"\"></a></span>"
			  //newHtml += "&nbsp;<span class=\"falign\">&nbsp;</span>"
			  }
            else
              newHtml += ""+image+""
            newHtml += "</li>"
          }
          newHtml += "</ul>";
        }
        else if (layout[code] == 'thumbnails' || type[code] == d1gConstants_NODE_TYPE_VIDEO_VIDEO || type[code] == d1gConstants_NODE_TYPE_GALLERY_IMAGE || type[code] == d1gConstants_NODE_TYPE_PLOGGER_IMAGE) {
          newHtml += "<ul class=\"images\">";
          items = xml.getElementsByTagName("item");
          for (i = 0 ; i < items.length ; i++) {
            item = items[i];
            var result_plain_title = extract_plain_text(item.getElementsByTagName("doctitle"))
            result_title = extract_text(item.getElementsByTagName("doctitle"))
            result_link = item.getElementsByTagName("link")[0].firstChild.nodeValue;
            result_id = item.getElementsByTagName("id")[0].firstChild.nodeValue;
            result_type = item.getElementsByTagName("type")[0].firstChild.nodeValue;
            image = ""
            if (result_type == d1gConstants_NODE_TYPE_GALLERY_IMAGE || result_type == d1gConstants_NODE_TYPE_PLOGGER_IMAGE)
              image = "<img title=\""+result_plain_title+"\" alt=\""+result_plain_title+"\" src=\""+to_url(result_id,result_type)+"\" width=\"97\" height=\"70\" style=\"border:solid 1px #dddddd;\"/>"
            else
              image = "<img title=\""+result_plain_title+"\" alt=\""+result_plain_title+"\" src=\""+video_url(result_id)+"\" width=\"97\" height=\"70\" style=\"border:solid 1px #dddddd;\"/>"

            if (type[code] == d1gConstants_NODE_TYPE_VIDEO_VIDEO) {
              newHtml += "<li class=\"tiny activity\" style=\"width:100px;height:110px;\">"
            } else {
              newHtml += "<li class=\"tiny activity\" style=\"width:100px;height:110px;\">"
            }

            newHtml += "<a href=\""+result_link+"\" >"
            newHtml += "<div>"+image+"</div><div style=\"width:95px;height:35px;\">"+result_plain_title.substr(0,20)+"</div></a></li>"
          }
          newHtml += "</ul>";
        }
        newHtml += "<div style=\"clear:both;\">&nbsp;</div>"

        if (totalResults > items_per_page[code]) {
          newHtml +="<div class=\"line\">&nbsp;</div>"
          newHtml += generate_pagination(totalResults,page[code],items_per_page[code],code)
        }
        

        document.getElementById('searchResults'+code).innerHTML = newHtml;
      }
    }
  }
}

function createRelatedRequestObject() {
  var req = false;
  
    if(window.XMLHttpRequest && !(window.ActiveXObject)) {
    	try {
			req = new XMLHttpRequest();
			try {
            netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
        } catch (e) {
            //alert("Permission could be denied for cross-browser scripting.");
        }

        } catch(e) {
			req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
  
  return req;
  
  /*if(window.XMLHttpRequest){
    req = new XMLHttpRequest();
    if(req.overrideMimeType){
      req.overrideMimeType('text/xml');
    }
  }else if(window.ActiveXObject){
    try{
      req = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e){
      try{
        req = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch(e){alert("something wrong");}
    }
  }
  if(!req){
    return false;
  }else{
    return req;
  }*/
}
