function _xml() {
	var xmlhttp=false;
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	try {
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
	} catch(e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch(E) {
			xmlhttp = false;
		}
	}
	@else
	xmlhttp=false;
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		try {
			xmlhttp=new XMLHttpRequest();
		} catch(e) {
			xmlhttp=false;
		}
	}
	return xmlhttp;
}


function refreshCart(qstr) {
	var url = '/si/kosarica/ajax/default.html' + qstr;
	//alert(url);
	xmlHttp = _xml();
	xmlHttp.open('get',url,true);
	xmlHttp.onreadystatechange = writeToCart;
	xmlHttp.send(null);
}

function refreshDelivery(qstr) {
	var url = '/si/kosarica/ajax/default.html' + qstr;
	xmlHttp = _xml();
	xmlHttp.open('get',url,true);
	//xmlHttp.onreadystatechange = writeToDelivery;
	xmlHttp.send(null);
}

function writeToCart() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		var response = xmlHttp.responseText;
		var update = new Array();
		//alert(response);

        if (response.indexOf('|' != -1)) {
			tmp = response.split('@');
			aitems = tmp[0].split('|');
			atotal1 = tmp[1].split('=');
			atotal2 = tmp[2].split('=');

			len = aitems.length;
			for (i=0; i<len; i++) {
				citem   = aitems[i].split('#');
				itemsit = citem[0].split('=');
				itemeur = citem[1].split('=');
				//alert(itemsit[0]);
				//document.write(itemsit[0]);

				document.getElementById(itemsit[0]).innerHTML = itemsit[1];
				document.getElementById(itemeur[0]).innerHTML = itemeur[1];


				citem = null;
				itemsit = null;
				itemeur = null;
			}

			document.getElementById(atotal1[0]).innerHTML = atotal1[1] ;
			document.getElementById(atotal2[0]).innerHTML = atotal2[1];
        }
    }
}

//my
function dataManager(div_id) {
	var self = this;
	self.eReqCompleted = null;
	this.eReqCompleted = self.eReqCompleted;
	self.eReqFailed    = null;
	this.eReqFailed    = self.eReqFailed;

	this.dataHandler = function(req) {
		var dataHandler = function() {
			if (req.readyState == 4) {
				if (req.status == 200) {
					self.eReqCompleted(req, div_id);
				}
				else {
					self.eReqFailed(req, div_id);
				}
			}
		}
		dataHandler.req           = req;
		dataHandler.eReqCompleted = self.eReqCompleted;
		dataHandler.eReqFailed    = self.eReqFailed;
		return dataHandler;
	}

	this.InitiateXmlHttpRequest = function() {
		var req = null;
		try	{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(oc)	{
				req = null;
			}
		}
		if ( !req && typeof(XMLHttpRequest) != "undefined") {
			req = new XMLHttpRequest();
		}
		return req;
	}

	this.loadData = function(dataSource) {
		var req = this.InitiateXmlHttpRequest();
		if (req != null){
			try	{
				req.onreadystatechange = this.dataHandler(req);
				req.open('GET', dataSource, true);
				req.send(null);
			}
			catch(oc)	{
				alert(oc);
			}
		}
	}
}

function failed(req, div_id) {
	document.getElementById(div_id).innerHTML = 'err';
}

function completed(req, div_id) {
	//document.getElementById(div_id).innerHTML = req.responseText;
	var data = req.responseText.split("||JavaScriptCode||");
	//document.getElementById(div_id).innerHTML = data[0];
	review(div_id, data[0]);
	//eval(data[1]);
}

function ajax(URL, div_id) {
	var dm = new dataManager(div_id);
	//loading(div_id);
	dm.eReqCompleted = completed;
	dm.eReqFailed = failed;
	dm.loadData(URL);
}

function review(div_id, data) {
    // define star size
    var star_size = 25;
    // explode result total_votes,total_value
    var arr = data.split(",");
    // calculate value
    var value = Math.round(10*arr[1]/arr[0])/10
    // get div containing stars
    var div = document.getElementById(div_id);

    // 1st ul -> li holds stars
    var ul = div.getElementsByTagName("ul");
    var li_ul0 = ul[0].getElementsByTagName("li");
    li_ul0[0].style.width = Math.round(star_size*value)+'px';


    // 2nd ul -> li display current value and number of votes
    var li_ul1 = ul[1].getElementsByTagName("li");
    // current value
    li_ul1[1].innerHTML = value;
    // number of votes
    li_ul1[3].innerHTML = arr[0];

    // disable voting -> show stars only
    li_ul0[1].style.visibility = 'hidden';
	li_ul0[2].style.visibility = 'hidden';
	li_ul0[3].style.visibility = 'hidden';
	li_ul0[4].style.visibility = 'hidden';
	li_ul0[5].style.visibility = 'hidden';
}

function loading(div_id) {
 // first lets make sure the browser understands the DOM methods we will be using
  	if (!document.getElementsByTagName) return false;
  	if (!document.getElementById) return false;

  	// make sure the div exists
  	if (!document.getElementById(div_id)) return false;
  	var div = document.getElementById(div_id);

  	var old_height = div.clientHeight;

  	// remove all child nodes
  	while (div.firstChild)
    {
        div.removeChild(div.firstChild);
    }

    // add the loading element
    var loading = document.createElement("div");
  	loading.className = "loading";
  	if (old_height > 16) {
  	    loading.style.height = old_height+"px";
  	}
  	div.appendChild(loading);
}

///////////////////////////////////
/// INPUT SUGGESTION FUNCTIONS ////
///////////////////////////////////
var GLOBAL_INFO_1 = 'Following error occurred: ';

function getGenericSuggestions(select_object, query, s_field, h_field, r_object_id) {
    var value   = select_object.options[select_object.selectedIndex].text
    var p_query = query.replace('[REPLACE]', value); //RM24052007 case-sensitive replace
    var qstr    = '&query='+p_query+'&return_id='+r_object_id+'&s_field='+s_field+'&h_field='+h_field;
    var url     = '/si/ajax_generic_search/default.html?action=search' + qstr;

    xmlHttp = _xml();
    xmlHttp.open('get', url, true); //RM17052007 Due to the onchange event
    xmlHttp.onreadystatechange = createGenericSuggestionsList;
    xmlHttp.send(null);
    setLoading('show');
}

function createGenericSuggestionsList() {
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
        var status = xmlHttp.responseXML.getElementsByTagName('status')[0].firstChild.data;
        if (status == 'true'){
            var elements  = xmlHttp.responseXML.getElementsByTagName('elements')[0].firstChild.data;
            var return_id = xmlHttp.responseXML.getElementsByTagName('return_id')[0].firstChild.data;
            // Clear previous suggestions
            var ss = getElementByID('search_suggest');
            ss.innerHTML = '';

            // RM250202007 Generate results
            for (i=0; i<elements; i++){
                var s_field  	= xmlHttp.responseXML.getElementsByTagName('s_field')[i].firstChild.data;
                var h_field     = xmlHttp.responseXML.getElementsByTagName('h_field')[i].firstChild.data;

                if (BrowserDetect.browser == 'Opera' || BrowserDetect.browser == 'Konqueror' || BrowserDetect.browser == 'Safari'){
                    var suggest 		= document.createElement('div');
                    suggest.onmouseover = 'javascript:suggestOver(this);';
                    suggest.onmouseout	= 'javascript:suggestOut(this);';
                    suggest.onclick	    = 'javascript:setResultValue("'+return_id+'", "'+h_field+'");'
                    suggest.className 	= 'suggest_link';
                    suggest.innerHTML	= s_field;
                    ss.appendChild(suggest);
                }else{
                    // RM08032007 Build our element string.  This is cleaner using the DOM, but IE doesn't support dynamically added attributes.
                    var suggest = "<div onmouseover='javascript:suggestOver(this);' onmouseout='javascript:suggestOut(this);' onclick='javascript:setResultValue(\""+return_id+"\",\""+h_field+"\");' class='suggest_link'>"+s_field+"</div>";
                    ss.innerHTML += suggest;
                }
            }
        }else if (status == 'false'){
            var error = xmlHttp.responseXML.getElementsByTagName('error')[0].firstChild.data;
            information(GLOBAL_INFO_1+error);
        }
        setLoading('hide');
    }
}

function suggestOver(div_object) {
    div_object.className = 'suggest_link_over';
}

function suggestOut(div_object) {
    div_object.className = 'suggest_link';
}

function setResultValue(return_id, h_field) {
    getElementByID(return_id).value = h_field;
    getElementByID('search_suggest').innerHTML = '';
}

// RM13032007 Source: http://www.quirksmode.org/js/detect.html
var BrowserDetect = {
    init: function () {
        this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
        this.version = this.searchVersion(navigator.userAgent)
        || this.searchVersion(navigator.appVersion)
        || "an unknown version";
        this.OS = this.searchString(this.dataOS) || "an unknown OS";
    },
    searchString: function (data) {
        for (var i=0;i<data.length;i++)	{
            var dataString = data[i].string;
            var dataProp = data[i].prop;
            this.versionSearchString = data[i].versionSearch || data[i].identity;
            if (dataString) {
                if (dataString.indexOf(data[i].subString) != -1)
                return data[i].identity;
            }
            else if (dataProp)
            return data[i].identity;
        }
    },
    searchVersion: function (dataString) {
        var index = dataString.indexOf(this.versionSearchString);
        if (index == -1) return;
        return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
    },
    dataBrowser: [
    { 	string: navigator.userAgent,
    subString: "OmniWeb",
    versionSearch: "OmniWeb/",
    identity: "OmniWeb"
    },
    {
        string: navigator.vendor,
        subString: "Apple",
        identity: "Safari"
    },
    {
        prop: window.opera,
        identity: "Opera"
    },
    {
        string: navigator.vendor,
        subString: "iCab",
        identity: "iCab"
    },
    {
        string: navigator.vendor,
        subString: "KDE",
        identity: "Konqueror"
    },
    {
        string: navigator.userAgent,
        subString: "Firefox",
        identity: "Firefox"
    },
    {
        string: navigator.vendor,
        subString: "Camino",
        identity: "Camino"
    },
    {		// for newer Netscapes (6+)
        string: navigator.userAgent,
        subString: "Netscape",
        identity: "Netscape"
    },
    {
        string: navigator.userAgent,
        subString: "MSIE",
        identity: "Explorer",
        versionSearch: "MSIE"
    },
    {
        string: navigator.userAgent,
        subString: "Gecko",
        identity: "Mozilla",
        versionSearch: "rv"
    },
    { 		// for older Netscapes (4-)
        string: navigator.userAgent,
        subString: "Mozilla",
        identity: "Netscape",
        versionSearch: "Mozilla"
    }
    ],
    dataOS : [
    {
        string: navigator.platform,
        subString: "Win",
        identity: "Windows"
    },
    {
        string: navigator.platform,
        subString: "Mac",
        identity: "Mac"
    },
    {
        string: navigator.platform,
        subString: "Linux",
        identity: "Linux"
    }
    ]

};
BrowserDetect.init();
