	function ajaxThis(url, did, prload, output){
		var request = false;
		try {
		 request = new XMLHttpRequest();
		} catch (trymicrosoft) {
		 try {
		   request = new ActiveXObject("Msxml2.XMLHTTP");
		 } catch (othermicrosoft) {
		   try {
			 request = new ActiveXObject("Microsoft.XMLHTTP");
		   } catch (failed) {
			 request = false;
		   }  
		 }
		}
		if (request){ 
			switch(output){
				default:
					document.getElementById(did).innerHTML = prload;	
					break;
				case "xmloption":
				    var objectoption = eval("document.chart_form.subt");
					for(j=objectoption.options.length-1;j>=0;j--){
						objectoption.remove(j);
					}
					var optn = document.createElement("OPTION");
					optn.value = "";
					optn.text = "loading...";
					objectoption.options.add(optn);
					objectoption = eval("document.chart_form.dfrom");
					for(j=objectoption.options.length-1;j>=0;j--){
						objectoption.remove(j);
					}				
					var optn = document.createElement("OPTION");
					optn.value = "";
					optn.text = "loading...";
					objectoption.options.add(optn);
					objectoption = eval("document.chart_form.dto");
					for(j=objectoption.options.length-1;j>=0;j--){
						objectoption.remove(j);
					}				
					var optn = document.createElement("OPTION");
					optn.value = "";
					optn.text = "loading...";
					objectoption.options.add(optn);
					break;
			}
			var handlerFunction = getReadyStateHandler(request,did,output); 		
			var newurl = url + "&randomnumber=" + Math.floor(Math.random()*100000);
			request.open("GET", newurl, true);
			request.onreadystatechange = handlerFunction;
			request.send(null);
		}
	}   
	function getReadyStateHandler(reqobj,divout,output) {
		return function () {
			if (reqobj.readyState == 4) {
				if (reqobj.status == 200) {
					switch(output){
						default:
							updatePage(reqobj,divout);                
							break;
						case "xmloption":
							updateOption(reqobj);						
							break;
					}
				}
			}
		}
	}     
	function updatePage(requestout,divout) {
		 if (requestout.readyState == 4) {
		   if (requestout.status == 200) {
			 var response = requestout.responseText;
			 document.getElementById(divout).innerHTML = response.replace(/\n/g, "");
		   } 
		 }
	 }	
	function updateOption(requestout) {
		 if (requestout.readyState == 4) {
		   if (requestout.status == 200) {
			var xmldoc = requestout.responseXML;
            var root = xmldoc.getElementsByTagName('root').item(0);
            
            for (var iNode = 0; iNode < root.childNodes.length; iNode++) {
				if (root.childNodes.item(iNode).nodeType==1){
					var node = root.childNodes.item(iNode);
				    var objectoption = eval("document.chart_form."+node.nodeName);
					for(j=objectoption.options.length-1;j>=0;j--){
						objectoption.remove(j);
					}
				    for (i = 0; i < node.childNodes.length; i++) {
						var sibl = node.childNodes.item(i);
						if (sibl.nodeType==1){
							if (sibl.nodeName=="value"){
								for (x = 0; x < sibl.childNodes.length; x++) {
									if (sibl.nodeType==1){
										if (sibl.getAttribute("defsel")=="selected"){ 
											var dsel=true;
										}else{
											var dsel=false;
										}
										//var optn = document.createElement("OPTION");
										//optn.value = sibl.childNodes.item(0).nodeValue;
										var dval=sibl.childNodes.item(0).nodeValue;
									}
							    }
					  		}
							if (sibl.nodeName=="name"){
								for (x = 0; x < sibl.childNodes.length; x++) {
									if (sibl.nodeType==1){
										var dtxt=sibl.childNodes.item(0).nodeValue;
										//optn.text = sibl.childNodes.item(0).nodeValue;
										//objectoption.options.add(optn);
										objectoption.options.add(new Option(dtxt,dval,false,dsel));
									}
							    }
					  		}
				   		}
				   }
				}
            }
		   } 
		 }
	 }	
	function goInd(subid,subtype,pfromdate,ptodate,pun,size,rng, mid, cid){
		var radioObj = eval("document.chart_form.un");
		if (radioObj){
			var radioLength = radioObj.length;
			if(radioLength != undefined){
				for(var i = 0; i < radioLength; i++) {
					if (radioObj[i].value==pun) {
						radioObj[i].checked=true;
					}
				}
			}
		}
		var chartObj = eval("document.chart_form.subid");
		if (chartObj){
			var chartLength = chartObj.options.length;
			if (chartLength != undefined){
				for(var i = 0; i < chartLength; i++) {
					if (chartObj.options[i].value==subid) {
						chartObj.options[i].selected=true;
					}
				}
			}
		}
		var url = "/reports/ajax/subcat.asp?subid="+subid+"&subt="+subtype+"&dfrom="+pfromdate+"&dto="+ptodate;
		ajaxThis(url, "", "","xmloption");
		var charturl="/reports/chart/chart.aspx?subid="+subid+"&subt="+subtype+"&dfrom="+pfromdate+"&dto="+ptodate+"&un="+pun+"&s="+size+"&rng="+rng+"&mid="+mid+"&cid="+cid;	
		ajaxThis(charturl, "Chart_details", "<img src='/images/preloader.gif' align='bottom' />","");
		var dataurl ="/reports/ajax/datatbl.asp?subid="+subid+"&subt="+subtype+"&dfrom="+pfromdate+"&dto="+ptodate+"&un="+pun+"&s="+size+"&rng="+rng+"&mid="+mid+"&cid="+cid;
		ajaxThis(dataurl, "rdata", "<img src='/images/preloader.gif' align='bottom' />","");
		var surl ="/reports/ajax/subscription.asp?subid="+subid+"&subt="+subtype+"&dfrom="+pfromdate+"&dto="+ptodate+"&un="+pun+"&s="+size+"&rng="+rng+"&mid="+mid+"&cid="+cid;
		ajaxThis(surl, "subscription", "","");
	}
   function getChart(tabname,tab,tval,mid,cid) {
		var timerng="";
		var url="";
		var fseltab="";
		
		if (tabname=='t') {	
			if ((document.chart_form.dfrom.value != "") && (document.chart_form.dto.value != "")){
				document.chart_form.c_range.value="";
				for (var i=1; i<=4; i++){
					var fnametab="r"+i;	
					document.getElementById(fnametab).className = ""; 
				}
				timerng="&s="+document.chart_form.c_size.value+"&dfrom="+document.chart_form.dfrom.value+"&dto="+document.chart_form.dto.value;
			}
		}
		if (tabname=='r') {
			for (var i=1; i<=4; i++){
				var fnametab=tabname+i;	
				document.getElementById(fnametab).className = ""; 
			}
			fseltab=tabname+tab;		
			document.chart_form.c_range.value=tval;
			timerng="&s="+document.chart_form.c_size.value+"&rng=" + tval;
		}
		if (tabname=='sz') {
			for (var i=1; i<=3; i++){
				var fnametab=tabname+i;	
				document.getElementById(fnametab).className = ""; 
			}
			fseltab=tabname+tab;
			if (document.chart_form.c_range.value != ""){
				timerng="&s=" + tval + "&rng=" +document.chart_form.c_range.value;
			}else{
				if ((document.chart_form.dfrom.value != "") && (document.chart_form.dto.value != "")){
					for (var i=1; i<=4; i++){
						var fnametab="r"+i;	
						document.getElementById(fnametab).className = ""; 
					}
					timerng="&s=" + tval + "&dfrom="+document.chart_form.dfrom.value+"&dto="+document.chart_form.dto.value;
				}
			}
			document.chart_form.c_size.value=tval;
		}
		var url = "subid="+document.chart_form.subid.value+"&subt="+document.chart_form.subt.value+"&un="+getCheckedValue(document.chart_form.un);
		
		if (timerng!=""){
			url=url+timerng;
		}	
		if (fseltab!=""){	
			document.getElementById(fseltab).className = "current";
		}
		
		var charturl="/reports/chart/chart.aspx?"+url+"&mid="+mid+"&cid="+cid;
		ajaxThis(charturl, "Chart_details", "<img src='/images/preloader.gif' align='bottom' />","");
		var dataurl ="/reports/ajax/datatbl.asp?"+url+"&mid="+mid+"&cid="+cid;
		ajaxThis(dataurl, "rdata", "<img src='/images/preloader.gif' align='bottom' />","");
		var surl ="/reports/ajax/subscription.asp?"+url+"&mid="+mid+"&cid="+cid;
		ajaxThis(surl, "subscription", "","");
   }
   function prlnk(){
   	var prlnk="data.asp?subid="+document.chart_form.subid.value+"&subt="+document.chart_form.subt.value+"&un="+getCheckedValue(document.chart_form.un)+"&c_size="+document.chart_form.c_size.value;
		if (document.chart_form.c_range.value!=""){
			prlnk=prlnk+"&c_range=" +document.chart_form.c_range.value
		}else{
			if ((document.chart_form.dfrom.value != "") && (document.chart_form.dto.value != "")){
				prlnk=prlnk+"&dfrom="+document.chart_form.dfrom.value+"&dto="+document.chart_form.dto.value;
			}
		}
		window.location.href="http://www.digitimes.com/reports/"+prlnk;

   }
	function getCheckedValue(radioObj) {
		if(!radioObj)
			return "Q";
		var radioLength = radioObj.length;
		if(radioLength == undefined)
			if(radioObj.checked)
				return radioObj.value;
			else
				return "Q";
		for(var i = 0; i < radioLength; i++) {
			if(radioObj[i].checked) {
				return radioObj[i].value;
			}
		}
		return "Q";
	}
	function getRNG(radioObj) {
		if(!radioObj)
			return "MAX";
		if(radioObj.value != "")
			return radioObj.value;
		else
			return "MAX";
		return "MAX";
	}
