/**
 * @package     Ecsso_Drillfilter
 * @author      Ecsso Team <team@ecommercesoftwaresolutionsonline.com>
 * @copyright   Copyright (c) 2010 - eCommerce Software Solutions Online Pty. Ltd. (http://www.ecommercesoftwaresolutionsonline.com) 
 * Ajax functions
 */

function newAjax() {

        var solicitud_HTTP = false;

        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            solicitud_HTTP = new XMLHttpRequest();/*
			if (solicitud_HTTP.overrideMimeType) {
                solicitud_HTTP.overrideMimeType('text/xml');
            }*/
        } else if (window.ActiveXObject) { // IE
            try {
                solicitud_HTTP = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    solicitud_HTTP = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!solicitud_HTTP) {
            alert('Unable to create instance of \'XMLHTTP');
            return false;
        }

		return solicitud_HTTP;
    }


/*--- 
	Function to fill controls on Start Up
	Eg: Use :- loadStartUpControls(ctrlAry,attribAry,'http://www.demostore.com/');
-----*/

function loadStartUpControls(sourceCtrlAry,attribCodeAry,textAry,strBaseUrl)
{
	
	ajax=newAjax();
//	ajax.open("GET", strBaseUrl + "catalog/filter", true);
    ajax.open("GET", strBaseUrl + "drillfilter", true);
	ajax.onreadystatechange=function()
	{
		if (ajax.readyState==1)
		{
			setupControls(sourceCtrlAry);
		}
		if (ajax.readyState==4)
		{
			var str = ajax.responseText; //Print javascript from filter view
			fillControls(sourceCtrlAry,attribCodeAry,str,textAry);  	
		}
	}
	ajax.send(null);
	
}
function setupControls(sourceCtrlAry)
{
    
    //--- modified for fixing issue in catalog advance search form
    var form = document.drillSearch;
	if(isArray(sourceCtrlAry))
	{
		for(i=0;i<sourceCtrlAry.length;i++)
		{
		ctrl = document.getElementById(sourceCtrlAry[i]);    
		ctrl.options.length=0;
		}
	}else
	{
		ctrl = document.getElementById(sourceCtrlAry);      
		ctrl.options.length=0;
	}	
}
function fillControls(sourceCtrlAry,attrCodeAry,respString,textAry)  
{
	alloption	= "-Select-";  
  	if(isArray(sourceCtrlAry))
	{

		for(cnt=0;cnt<sourceCtrlAry.length;cnt++)
		{
			obj= document.getElementById(sourceCtrlAry[cnt]);
         	obj.disabled = true;
			var newOption=document.createElement("option"); newOption.value=''; 
			newOption.innerHTML= alloption ;
			obj.appendChild(newOption);
			obj.disabled = false;

			processResponseString(respString,sourceCtrlAry[cnt],attrCodeAry[cnt]);
			obj.options[0].text=textAry[cnt];
		}
	}else
	{
	
		obj= document.getElementById(sourceCtrlAry);
     	obj.disabled = true;
		var newOption=document.createElement("option"); newOption.value=''; 
		newOption.innerHTML= alloption ;
		obj.appendChild(newOption);
		obj.disabled = false;
		processResponseString(respString,sourceCtrlAry,attrCodeAry);
		obj.options[0].text=textAry;

	}	

}

function applyFilter(sourceCtrl,targetCtrl,strBaseUrl,srcattribCode,attribCode)
{
    var mixdString = srcattribCode.split('~'); // split control names and attributes
    var prevctrlAry= mixdString[0].split(','); //--- current filtered controls array
	var srcattribCodeArry = mixdString[1].split(','); //-- corresponding current filtered attributes
	var srcattribValArry=new Array(); 
	var codestr=valstr="";

	for (var i=0; i<srcattribCodeArry.length;++i )
	{
		val=document.getElementById(prevctrlAry[i]).value;		
		codestr=codestr+srcattribCodeArry[i]+"="+val+'&';

	}

	var selValue=sourceCtrl.options[sourceCtrl.selectedIndex].value;	
	document.getElementById(targetCtrl).options.length=0;
	var newOption=document.createElement("option"); newOption.value='';

	alloption	= "-Select-";  		
	newOption.innerHTML= alloption ;	
	
	var obj=document.getElementById(targetCtrl);
	if(selValue==0)
	{
		// If the All option is selected 
		obj.length=0;
		var newOption=document.createElement("option"); newOption.value='';
		newOption.innerHTML= alloption ;
		obj.appendChild(newOption);
		//obj.disabled=true;
	}
	else
	{
		ajax=newAjax();
		

//		ajax.open("GET", strBaseUrl + "catalog/filter?"+ srcattribCode + "=" + selValue, true);

		ajax.open("GET", strBaseUrl + "drillfilter?"+ codestr, true);
		ajax.onreadystatechange=function()
		{
			if (ajax.readyState==1)
			{
				obj.length=0;
				
			}
			if (ajax.readyState==4)
			{
				obj.disabled = true;
				var newOption=document.createElement("option"); newOption.value=''; 
				newOption.innerHTML= alloption ;
				obj.appendChild(newOption);								
				obj.disabled = false;

				var str = ajax.responseText; //Print javascript from filter view

				processResponseString(str,targetCtrl,attribCode);
			
			}
		}
		ajax.send(null);
	}


}


function is_array(obj) {
   return (obj.constructor.toString().indexOf("Array") == -1)
}
function trim(strText) { 
    // this will get rid of leading spaces 
    while (strText.substring(0,1) == ' ') 
        strText = strText.substring(1, strText.length);

    // this will get rid of trailing spaces 
    while (strText.substring(strText.length-1,strText.length) == ' ')
        strText = strText.substring(0, strText.length-1);

   return strText;
} 
function processResponseString(str,source,srcattr)
{

		str = str.replace( /[\r\n\t]/g, '' );
		//replace span class
			while ( str.indexOf('<span class="price">') != -1)
			{
				str = str.replace('<span class="price">','');
			}
		   while ( str.indexOf('</span>') != -1)
			{
				str = str.replace('</span>','');
			}
   

		var tmpAry = str.split("|");	
		var exit = false;		
		var obj=document.getElementById(source);
		for(i=0;i<tmpAry.length;i++)
		{	
			
			if(tmpAry[i]!=""){	
				
				tOptary = tmpAry[i].split('=');

				for(j=0;j<tOptary.length;j++)
				{
					
					attr = trim(tOptary[0]);	
					
					if(attr==srcattr)
					{
						

						optAry = tOptary[1].split(";");

						for(k=0;k<optAry.length;k++)
						{
							if(optAry[k]!=""){
							rowAry = optAry[k].split("~");
							
							obj.options[obj.options.length] = new Option(rowAry[1],rowAry[0],false);
							}
						}
						exit=true;
						break;
					}
				}
				}
				if(exit)
				{
					break;
				}
			}
	
}



// X-Browser isArray(), including Safari
function isArray(obj) {
       return obj.constructor == Array;
}
//--------------------------end


