var company_items = Array();
var domain = Array();
var taxonomy = Array();
var taxonomy_data = Array();
var dindex = 0;
var tindex = 0;
$(document).ready(function() {
	var node_form = document.getElementById('node-form');
	
	if(node_form!=null){	
		var tindex = 0;
		for(i=0;i<node_form.elements.length;i++){
			var ele = node_form.elements[i];
			if(ele.name){
				if(ele.name.indexOf('taxonomy') > -1){
					taxonomy[tindex++]= ele.id;
				}
			}
		}					
		ParseSelectBox(taxonomy);		
	}
	
});

function isIE(){
	return jQuery.browser.msie;

}
function checkDomainAll(){
	//checking domain All Selection
	var domain_all = document.getElementById('edit-domain-site');
	var domain_chk = 0;
	if(domain_all){
		if(domain_all.checked == true){
			domain_chk = 1;
		}
	}
	return domain_chk;
}

function ParseSelectBox(taxonomy){
	
	
	// Adding onchange event with the domain selction box
	domain_sel = document.getElementById('edit-domains');
	
	if(domain_sel){   		 		
		if(isIE() == true){
			domain_sel.attachEvent('onchange', checkSelection);
		}else{
			domain_sel.addEventListener('change',checkSelection,false);    		    		
		}		
	}
	
	var domain_all = document.getElementById('edit-domain-site');
	if(domain_all){		
		if(isIE() == true){
			domain_all.attachEvent('onclick', checkSelection);
		}else{
			domain_all.addEventListener('click',checkSelection,false);    		    		
		}		
	}
	
	// Parsing data and converting in the group selection box
	
	/*if(link_cat){    			
		cat_items = parseData(link_cat);
	}
	if(link_res){
		res_items = parseData(link_res);
	}*/
	
	for(var i=0; i<taxonomy.length; i++){		
		var listID = document.getElementById(taxonomy[i]);		
		taxonomy_data[i] = parseData(listID);
	}
	
}

function checkSelection(){
	//fetching individual lists	
	if(this.id == 'edit-domains'){	
		this.options[0].selected = true;
	}
	
	for(j=0;j<taxonomy.length;j++){		
		generateHTML(document.getElementById(taxonomy[j]),taxonomy_data[j]);			 		
	}	
}

function generateHTML(obj,items){
	html = '';
	domain_list = domain;
	if(checkDomainAll() == 0){
		if(domain_sel){
			domain_list = Array();
			index = 0;
			for(i=0;i<domain_sel.length;i++){
				if(domain_sel[i].selected == true){
					domain_list[index++] = domain_sel[i].text;
				}
			}
		}
	}	
	for(index=0;index<domain_list.length;index++){
		if(Drupal.settings.site_name[0] != domain_list[index]){
			html += "<OPTGROUP label=\"" + domain_list[index] + "\">";		
			for(i=0;i<items.length;i++){
				if(items[i][1] == domain_list[index] || items[i][1] == Drupal.settings.site_name[0]){    	
					var selected = '';
					if(getChecked(obj, items[i][3]) == true){				
						selected = 'selected';				
					}
					html += "<OPTION " + selected +" value=\""+items[i][3] +"\">" + items[i][0] + "</OPTION>";
				}
			}
			html += "</OPTGROUP>";	
		}
	}		
	if(isIE() == true){
		if(html != ''){
			var outerTag = obj.outerHTML.replace(obj.innerHTML,'$');
			obj.outerHTML = outerTag.replace('$', html);
		}else{
			html = "<option value=''></option>";
			var outerTag = obj.outerHTML.replace(obj.innerHTML,'$');
			obj.outerHTML = outerTag.replace('$', html);
		}
	}else{
		obj.innerHTML = html; 	
	}	
}

function getChecked(obj, val){
	for(sel=0;sel<obj.length;sel++){
		if(obj.options[sel].value == val && obj.options[sel].selected == true){
			return true;
		}
	}
	return false;
}


function parseData(obj){    		
	// Initializing parameters
	var items = Array();    			
	// Making data array
	for(var i=0,k=0;i<obj.length;i++){
			var text = obj[i].text.split('---');				
			if(typeof text[1] != 'undefined' ){
				items[k] = Array();
				items[k][0] = text[0];
				items[k][1] = text[1];
				items[k][3] = obj[i].value;
				if(in_array(text[1],domain) == false){
					domain[dindex++] = text[1];
				}
				k++;	
			}			
	}	
	// generating the group html
	generateHTML(obj,items);
	return items;	
}

function in_array (needle, haystack, argStrict) {
	var key = '', strict = !!argStrict; 
	if (strict) {
		for (key in haystack) {
			if (haystack[key] === needle) {
				return true;            }
		}
	} else {
		for (key in haystack) {
			if (haystack[key] == needle) {                
				return true;
			}
		}
	}
	 return false;
}
