var randid = -1;
var _comboId;
var _contentId;

function getAjaxObject(url, params, handler)
{  
    var xmlHttp;
    try { xmlHttp = new XMLHttpRequest(); } 
    catch (e) { 
        try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); }
        catch (e) {      
            try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
            catch (e) { return false; }      
        }
    }
    return xmlHttp;
}

function loadXml(xmlsrc, handler, obj) 
{
    var x = getAjaxObject();
    x.onreadystatechange = function() {
        if (x.readyState==4 && x.status==200) {
            var o = xmlToObj(x.responseXML.firstChild);
            if (obj)
            {
				handler.apply(obj, [o]);
            }
			else
			{
				handler(o);
			}
        }
    };
	if (randid<0) randid = Math.random();
    xmlsrc+=(xmlsrc.indexOf("?")>-1?"&":"?") +"rand="+randid;
    x.open("GET", xmlsrc);
    x.send(null);
}

function loadRaw(xmlsrc, handler, obj) 
{
    var x = getAjaxObject();
    x.onreadystatechange = function() {
        if (x.readyState==4 && x.status==200) {
            var o = x.responseText;
            if (obj)
            {
				handler.apply(obj, [o]);
            }
			else
			{
				handler(o);
			}
        }
    };
	if (randid<0) randid = Math.random();
    xmlsrc+=(xmlsrc.indexOf("?")>-1?"&":"?") +"rand="+randid;
    x.open("GET", xmlsrc);
    x.send(null);
}

function loadData(xmlsrc, divId)
{
    ge(divId).innerHTML = "Yükleniyor...";
    loadRaw(xmlsrc, function(o)
    {
        ge(divId).innerHTML = o;
    }, this);
}

function xmlToObj(xml) 
{
	var r = "";

	try {
	    if (xml.nodeName == "object") {
		    r = new Object();
	        for (var j=0; j<xml.childNodes.length; j++) {
	            if (xml.childNodes[j].nodeType==1) r[xml.childNodes[j].attributes[0].value] = xmlToObj(xml.childNodes[j]);
	        }
	    } else if (xml.nodeName == "array") {
		    r = new Array();
		    for (var j=0; j<xml.childNodes.length; j++) {
		        if (xml.childNodes[j].nodeType==1) r.push(xmlToObj(xml.childNodes[j]));
		    }
	    } else if (xml.nodeName == "var") {
			if (xml.hasChildNodes)
			{
				r = xml.firstChild.nodeValue;
			}
	    }
	} catch (e) {
	}
	return r;
}

function getArticleUrl(id) 
{
	if (typeof(id)=="number") {
		return "/XmlArticles.ashx?id="+id;
	} else if (typeof(id)=="string") {
		return "/XmlArticles.ashx?cat="+id;
	}
}

function ge(a) { return document.getElementById(a); }

function ArticleSet(_cat, divId, mode)
{
	this.cat = _cat;
	this.mode = mode;

	ge(divId).appendChild(this.combo = document.createElement("select"));
	ge(divId).appendChild(this.content = document.createElement("div"));

	this.combo.style.width = '100%';
	this.fill= function()
	{
		loadXml(getArticleUrl(this.cat), this.fill2, this);
	}

	this.fill2 = function(o) {
		var id = getQueryParamValue("id");

		var si = 0;
		this.combo.options.length = 0;

		if (this.mode=="pop") this.combo.options[0] = new Option("Seçiniz...");
		for (var i=0; i<o.length; i++) {
			this.combo.options[this.combo.options.length] = new Option("["+o[i].publishdate+"] "+o[i].title, o[i].id);
			if (o[i].id==id) si = i;
		}
		this.combo.selectedIndex = si;
		if (this.mode!="pop") this.getArticle();
	}

	this.getArticle = function() {
		var aid = Number(this.combo.options[this.combo.selectedIndex].value);
		if (this.mode=="pop")
		{
			if (this.combo.selectedIndex<1)	return;
			this.win = window.open("","win","width=540,height=640,resizable=1");
			this.win.document.write("<html><head><style>body { font:11px Verdana; }</style></head><body><div id='content'>Yükleniyor...</div></body></html>");
			this.win.document.close();
			loadXml(getArticleUrl(aid), this.initArticle2, this);
		}
		else
		{
			if (this.combo.selectedIndex<0)	return;
			this.content.innerHTML = "Yükleniyor...";
			loadXml(getArticleUrl(aid), this.initArticle, this);
		}
	}

	this.initArticle = function(o) {
		this.content.innerHTML = o.body;
	}

	this.initArticle2 = function(o) {
		this.win.document.getElementById('content').innerHTML = o.body;
	}

	this.fill();
	addHandler(this.combo, "change", this, "getArticle");
}

function ArticleList(_cat, divId, url)
{
	this.cat = _cat;
	this.content = ge(divId);
	this.url = url;

	this.fill = function()
	{
		loadXml(getArticleUrl(this.cat), this.fill2, this);
	}

	this.fill2 = function(o) {
		var str = "";
		for (var i=0; i<o.length; i++) {
			str+= "<h4><span>"+o[i].publishdate+"</span></h4><a href=\""+this.url+"?id="+o[i].id+"\">"+o[i].title+"</a>";
		}
		this.content.innerHTML = str;
	}

	this.fill();
}

function addHandler(target,eventName,obj, handlerName) { 
  if ( target.addEventListener ) { 
    target.addEventListener(eventName, function(e){obj[handlerName](e);}, false);
  } else if ( target.attachEvent ) { 
    target.attachEvent("on" + eventName, function(e){obj[handlerName](e);});
  } else { 
    var originalHandler = target["on" + eventName]; 
    if ( originalHandler ) { 
      target["on" + eventName] = function(e){originalHandler(e);obj[handlerName](e);}; 
    } else { 
      target["on" + eventName] = obj[handlerName]; 
    } 
  } 
}
