/*
+----------------------------------------------------------------------+
| Advanced Filter Mod                                                  |
+----------------------------------------------------------------------+
| Copyright (c) 2009-2011 BCSE LLC. dba BCS Engineering                |
+----------------------------------------------------------------------+
|                                                                      |
| Advanced Filter Mod is subject for version 2.0 of the BCSE           |
| proprietary license. That license file can be found bundled with     |
| this package in the file BCSE_LICENSE. A copy of this license can    |
| also be found at                                                     |
| http://www.bcsengineering.com/license/BCSE_LICENSE_2.0.txt           |
|                                                                      |
+----------------------------------------------------------------------+
*/

function apply_filter(flag){
	if(!document.getElementById('customer_filter'))
		return;

	var wrapper = document.getElementById('customer_filter');

	var selectObjs = wrapper.getElementsByTagName('select');

	if(selectObjs.length < 1)
		return;

	var filter_query = '';
	for(var x = 0; x < selectObjs.length; x++){
		var ffield = encodeURIComponent(selectObjs[x].getAttribute('name'));
		var fvalue = encodeURIComponent(selectObjs[x].value);
		if(target_content_id && document.getElementById(target_content_id)){
			ffield = escape(ffield);
			fvalue = escape(fvalue);
		}
		filter_query += (filter_query != '' ? '&' : '') + ffield + '=' + fvalue;
	}

	if(flag == 'mmy'){
		var extra = {};
		var f = document.getElementById('filter_form');
		if(f){
			var inputs = f.getElementsByTagName('input');
			if(inputs.length > 0){
				for(var x = 0; x < inputs.length; x++){
					if(inputs[x].getAttribute('name') && inputs[x].getAttribute('name') == 'categoryid'){
						extra.categoryid = inputs[x].getAttribute('value');
					}else if(inputs[x].getAttribute('name') && inputs[x].getAttribute('name') == 'manufacturerid'){
						extra.manufacturerid = inputs[x].getAttribute('value');
					}
				}
			}
		}
		bcse_filter_mmy_select_update(post_action,filter_query,extra);
	}else if((!target_content_id || !document.getElementById(target_content_id)) && document.forms['filter_form']){
		document.forms['filter_form'].elements['filter_query'].value = filter_query;
		document.forms['filter_form'].elements['mode'].value = 'filter_update';

		document.forms['filter_form'].submit();
	}else{
		ajax_filter_refresh(post_action,filter_query);
	}
}

function ajax_filter_refresh(post_url,query){

	if(!target_content_id || !document.getElementById(target_content_id))
		return;

	contentObj = document.getElementById(target_content_id);

	var xmlHttp;
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null){
		return;
	}

	set_ajax_loading(contentObj);

	xmlHttp.onreadystatechange=function(){
		if (xmlHttp.readyState==4){
			contentObj.style.height = '';
			contentObj.nodeValue = '';
			contentObj.innerHTML = xmlHttp.responseText;
		}
	}

	post_str = 'filter_query=' + encodeURIComponent(decodeURIComponent(query)) + '&mode=filter_update&from_ajax=Y';

	xmlHttp.open("POST",post_url,true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", post_str.length);
	xmlHttp.setRequestHeader("Connection", "close");
	xmlHttp.send(post_str);
}

function set_ajax_loading(obj){

	obj.style.position = 'relative';
	obj.style.height = 'auto';

	var newdiv = document.createElement('div');
	newdiv.className = 'ajax_overlay';

	var newimg = document.createElement('img');
	newimg.src = ajax_image.src;

	newdiv.appendChild(newimg);

	obj.appendChild(newdiv);
}

function create_body_id(){
	if(!document.getElementsByTagName)
		return;

	var contentObjs = document.getElementsByTagName(target_parent_tag);

	if(contentObjs.length < 1)
		return;

	var re = new RegExp("[\s]?" + target_parent + "[\s]?");

	for(var x=0;x < contentObjs.length; x++)
		if(contentObjs[x].className.toLowerCase().match(re)){

			var contentObjs2 = document.getElementsByTagName(target_tag);

			if(contentObjs2.length < 1)
				return;

			for(var y=0;y < contentObjs2.length; y++)
				if(contentObjs2[y].className.toLowerCase() == target_class){
					contentObjs2[y].setAttribute('id',target_content_id);
					break;
				}
		}
}




function bcse_filter_init_mmy(){

	var f = document.getElementById('customer_filter');

	if(!f){
		return;
	}

	var selects = f.getElementsByTagName('select');

	if(selects.length == 0){
		return;
	}

	var disable_select = false;
	for(var x = 0; x < selects.length; x++){
		selects[x].onchange = bcse_filter_mmy_select;

		if(disable_select === true){
			selects[x].setAttribute('disabled','disabled');
		}else if((x == 0 && selects[x].value == '') || (selects[x].value == '')){
			disable_select = true;
		}

	}

	if(disable_select === false){
		fi = document.getElementById('customer_filter_input');
		if(fi){
			fw = document.getElementById('customer_filter_wrapper');
			if(fw){
				fw.style.marginRight = '100px';
			}
			fi.style.display = 'block';
		}
	}

}

function bcse_filter_mmy_select(){

	bcse_last_selected_filter = this.getAttribute('name');

	var f = document.getElementById('customer_filter');

	var clearselect = false;
	if(f){
		var selects = f.getElementsByTagName('select');
		if(selects.length > 0){
			for(var x = 0; x < selects.length; x++){
				if(clearselect == true){
					selects[x].value = '';
				}else if(selects[x].getAttribute('name') == bcse_last_selected_filter && x < selects.length - 1){
					clearselect = true;
				}
			}
		}
	}

	if(clearselect === true){
		fi = document.getElementById('customer_filter_input');
		if(fi && fi.style.display != 'none'){
			fw = document.getElementById('customer_filter_wrapper');
			if(fw){
				fw.style.marginRight = '0px';
			}
			fi.style.display = 'none';
		}
	}

	apply_filter('mmy');
}

function bcse_reset_mmy_filter(){
	var f = document.getElementById('customer_filter');

	if(!f){
		return;
	}

	var selects = f.getElementsByTagName('select');

	if(selects.length == 0){
		return;
	}

	for(var x = 0; x < selects.length; x++){
		selects[x].value = '';
	}

	if(document.createEvent){
		var evt = document.createEvent('MouseEvents');
		evt.initEvent('change', true, true);
		selects[0].dispatchEvent(evt);
	}else if(document.createEventObject){
		selects[0].fireEvent('onchange');
	}

	setTimeout(apply_filter,500);

	return false;
}

function bcse_filter_update_mmy_filter(data){
	var f = document.getElementById('customer_filter');

	if(!f){
		return;
	}

	var selects = f.getElementsByTagName('select');

	if(selects.length == 0){
		return;
	}

	if(typeof bcse_last_selected_filter == 'undefined'){
		bcse_last_selected_filter = '';
	}

	var d = document.createElement('div');
	d.setAttribute('id','bcse-tmp');
	d.style.display = 'none';
	d.innerHTML = data;
	document.body.appendChild(d);

	dselects = d.getElementsByTagName('select');
	if(dselects.length > 0){
		for(var x = 0; x < selects.length; x++){
			var sname = selects[x].getAttribute('name');
			for(var dx = 0; dx < dselects.length; dx++){
				var dsname = dselects[dx].getAttribute('name');
				if(sname == dsname){

					while(selects[x].options.length > 0){
						selects[x].remove(selects[x].length - 1);
					}
					for(var y = 0; y < dselects[dx].options.length; y++){
						try{
							selects[x].add(new Option(dselects[dx].options[y].innerHTML, dselects[dx].options[y].getAttribute('value') ), null);
						}catch(e){
							selects[x].add(new Option(dselects[dx].options[y].innerHTML, dselects[dx].options[y].getAttribute('value') ) );
						}
					}
					selects[x].value = dselects[dx].value;

					break;
				}
			}
		}
	}

	document.body.removeChild(d);

	var selectfound = false;
	var selectvalue = '';
	for(var x = 0; x < selects.length; x++){
		var selectname = selects[x].getAttribute('name');
		if(selectname == bcse_last_selected_filter){
			selectfound = x;
			selectvalue = selects[x].value;
		}else if(selectfound === false){
			selects[x].removeAttribute('disabled');
		}else if(selectfound == (x-1) && selectvalue != ''){
			selects[x].removeAttribute('disabled');
		}else{
			selects[x].setAttribute('disabled','disabled');
		}
	}

	if(selectfound !== false && selectfound == (selects.length - 1)){
		fi = document.getElementById('customer_filter_input');
		if(fi){
			fw = document.getElementById('customer_filter_wrapper');
			if(selectvalue != ''){
				if(fw){
					fw.style.marginRight = '100px';
				}
				fi.style.display = 'block';
			}else{
				if(fw){
					fw.style.marginRight = '0px';
				}
				fi.style.display = 'none';
			}
		}
	}

}

function bcse_filter_mmy_select_update(post_url,query,extra){

	var xmlHttp;
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null){
		return;
	}

	xmlHttp.onreadystatechange=function(){
		if (xmlHttp.readyState==4){
			bcse_filter_update_mmy_filter(xmlHttp.responseText);
		}
	}

	post_str = 'filter_query=' + encodeURIComponent(decodeURIComponent(query)) + '&mode=filter_update&from_mmy=Y';

	if(extra != 'undefined'){
		for(var x in extra){
			post_str += '&' + encodeURIComponent(x) + '=' + encodeURIComponent(extra[x]);
		}
	}

	xmlHttp.open("POST",post_url,true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", post_str.length);
	xmlHttp.setRequestHeader("Connection", "close");
	xmlHttp.send(post_str);
}

function GetXmlHttpObject(){
	var xmlHttp
	try
	{
	// Firefox, Opera 8.0+, Safari
	xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
	// Internet Explorer
		try
		{
		xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
		xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function addEventToElement(target, eventType, func, useCapture){
	var result = false;

	if (target.addEventListener){
		target.addEventListener(eventType, func, useCapture);
		result = true;
	}else if (target.attachEvent){
		result = target.attachEvent("on" + eventType, func);
	}else{
		alert("Handler could not be attached");
	}

	return result;
}

var isIE/*@cc_on=1@*/;
var class_attr = 'class' + (isIE ? 'Name' : '');

var target_tag = 'div';
var target_class = 'content';
var target_parent = 'dialog';
var target_parent_tag = 'div';
var target_content_id = 'filter_main_content';

if(filter_ajax == 'Y'){
	ajax_image = new Image();
	ajax_image.src = skin_dir + '/modules/Advanced_Filter/ajax-loader.gif';

	if(typeof jQuery != 'undefined'){
		jQuery('document').ready(create_body_id);
	}else{
		addEventToElement(window,'load',create_body_id,false);
	}
}

if(filter_mmy_format == 'Y'){
	bcse_filter_init_mmy();
}

