/*  Medi Ajax Tabs, version 1.0.0
 *  (c) 2009-2012 Justin Anderson-Enos
 *
 *  utilizes prototype-1.6.0.3 to make the actual ajax request for script eval purposes
 *
 *--------------------------------------------------------------------------*/
//loading and error messages
var ajax_page_display_loading 				= "<div style='width:200px;height:30px;position:relative;left:50%;margin-left:-100px;top:20px;text-align: center;'><img src='images/ajax_tabs/loading.gif'><br /><span class='ajax_tab_loading_txt'>loading page content</span></div>";
var ajax_tabs_error_loading_msg     		= "<div style='width:200px;height:30px;position:relative;left:50%;margin-left:-100px;top:20px;text-align: center;'><span class='ajax_tab_error_txt'>error retrieving data</span></div>";
//
//example of a custom tag.. and well.. what im calling the classic_tab
var classic_tabs							= "<table id='ajax_tab_TABLE' class='ajax_tab_TABLE' cellspacing='0'><tr><td class='ajax_tab_image_left'></td><td class='ajax_tab_image_mid'></td><td class='ajax_tab_image_right'></td></tr></table>";
//..
//..
//..
//
var my_ajax_menus_array 					= new Array();
var my_ajax_tabs_array 						= new Array();
var menu_count								= 0;
function ajax_tabs_create_menu(ajax_tab_array, div_display, array_i, catID){
	//initialize menu for tab creation
	my_ajax_menus_array[array_i] 			= this;
	this.xmlHttp 							= null;
	this.menu_id 							= catID;
	this.tab_count							= 0;
	this.tab_amount							= ajax_tab_array[1].length;
	this.tab_selected 						= ajax_tab_array[0][13];
	this.img_dir 							= ajax_tab_array[0][3];
	this.div_container 						= ajax_tab_array[0][2];
	this.tab_div_css 						= ajax_tab_array[0][4];
	this.tab_back_css 						= ajax_tab_array[0][5];
	this.div_display						= div_display;
	menu_count 								+= 1;
	this.create_tabs(ajax_tab_array, catID);
	this.clean_up();
	return this;
}
function ajax_tabs_create_tab(menu_id, tab_id, ajax_tab_array, catID){
	//initialize tab in menu
	this.xmlHTTP							= null;
	this.ajax_tab_node						= null;
	this.menu_id 							= catID;
	this.tab_id 							= tab_id;
	this.tab_type 							= ajax_tab_array[0][0];
	if(this.tab_type != 'image'){
		//display custom tabs [classic, etc.]
		this.ohover							= false;
		this.tab_bg							= ajax_tab_array[0][1];
	}else{
		//display image defined in array
		this.ohover							= true;
		this.tab_bg							= my_ajax_menus_array[this.return_i(this.menu_id)].img_dir + ajax_tab_array[1][this.tab_id][1];
	}
	this.text 								= ajax_tab_array[1][this.tab_id][0];
	this.link 								= ajax_tab_array[1][this.tab_id][2];
	this.nid									= ajax_tab_array[1][this.tab_id][3];
	this.catID = catID;
	this.tab_div_css 						= ajax_tab_array[0][0];
	if (ajax_tab_array[0][13] == this.tab_id){
		//set tab as selected
		this.text_selected 					= "_selected";
		this.selected 						= true;
		this.tab_opacity 					= ajax_tab_array[0][6];
	}else{
		//set tab as unselected
		this.text_selected 					= "";
		this.selected 						= false;
		this.tab_opacity 					= ajax_tab_array[0][7];
	}
	this.tab_opacity_hover 					= ajax_tab_array[0][6];
	this.tab_opacity_selected 				= ajax_tab_array[0][6];
	this.tab_opacity_leave 					= ajax_tab_array[0][8];
	this.text_css 							= ajax_tab_array[0][10];
	this.text_css_hover 					= ajax_tab_array[0][11];
	this.text_css_selected 					= ajax_tab_array[0][12];
	ajax_tabs_HTML 							= "";
	ajax_tabs_HTML 							= "<div onmouseout='ajax_tabs_return_tab_object(" + this.menu_id + ", " + this.tab_id + ").leave()' onmouseover='ajax_tabs_return_tab_object(" + this.menu_id + ", " + this.tab_id + ").hovers()' onclick='ajax_tabs_return_tab_object(" + this.menu_id + ", " + this.tab_id + ").click()' id='ajax_tab_DIV-" + this.menu_id + "-" + this.tab_id + "' class='"+ ajax_tab_array[0][4] +"'> <div id='ajax_tab_back-" + this.menu_id + "-" + this.tab_id + "' style='opacity:" + (this.tab_opacity/10) + ";filter:alpha(opacity=\""+(this.tab_opacity*10)+"\");' class='" + ajax_tab_array[0][5] + "'>";
	if(this.tab_type != 'image'){
		ajax_tabs_HTML						+= ajax_tab_array[0][1];
	}else{
		ajax_tabs_HTML						+= "<img src='" + my_ajax_menus_array[this.return_i(this.menu_id)].img_dir + ajax_tab_array[1][this.tab_id][1] + "' />";
	}
	ajax_tabs_HTML							+= "</div> <div id='ajax_tab_link_DIV-" + this.menu_id + "-" + this.tab_id + "' class='" + ajax_tab_array[0][9] + "'><div style='zoom: 1;' id='ajax_tab_txt-" + this.menu_id + "-" + this.tab_id + "' class='" + this.text_css + this.text_selected + "'>" + ajax_tab_array[1][this.tab_id][0] + "</div></div> </div>";
	this.ajax_tab_node						= geID('ajax_table_' +  this.menu_id + '_TABLE_TR',d).insertCell(this.tab_id);
	this.ajax_tab_node.innerHTML			= ajax_tabs_HTML;
	my_ajax_menus_array[this.return_i(this.menu_id)].tab_count = (my_ajax_menus_array[this.return_i(this.menu_id)].tab_count*1)+1;
	if( my_ajax_menus_array[this.return_i(this.menu_id)].tab_count == my_ajax_menus_array[this.return_i(this.menu_id)].tab_amount){
		this.ajax_loading();
		//ajax_tabs_return_tab_object(this.menu_id, ajax_tab_array[0][13]).loadXMLDoc(ajax_tabs_return_tab_object(this.menu_id, ajax_tab_array[0][13]).link);
		new Ajax.Updater(my_ajax_menus_array[this.return_i(this.menu_id)].div_display, ajax_tabs_return_tab_object(this.menu_id, ajax_tab_array[0][13]).link, {evalScripts:true, failure:ajax_tabs_error_loading_msg});
		//if(ajax_tab_array[0][13] == this.tab_id){
		
			//once created auto-select the index defined by array
			//this.ajax_loading();
			//new Ajax.Updater(my_ajax_menus_array[this.return_i(this.menu_id)].div_display, this.link, {evalScripts:true, failure:ajax_tabs_error_loading_msg});
		//}
	}
	return;
}
ajax_tabs_create_tab.prototype = {
	click:function(){		
		//alert(this.menu_id);
		if(this.menu_id==0 && this.tab_id==0) ddaccordion.collapseall('expandable','subexpandable',22,22);
		if(this.menu_id==0 && this.tab_id==1) ddaccordion.collapseall('expandable','subexpandable',3563,3563);
		if(this.menu_id==0 && this.tab_id==2) ddaccordion.collapseall('expandable','subexpandable',2467,2467);
		if(this.menu_id==0 && this.tab_id==3) ddaccordion.collapseall('expandable','subexpandable',21,21);
		if (this.selected == false){			
			geID("ajax_tab_back-" 	+ this.menu_id + "-" + my_ajax_menus_array[this.return_i(this.menu_id)].tab_selected,d).style.opacity 	= (this.tab_opacity_leave/10);
			geID("ajax_tab_back-" 	+ this.menu_id + "-" + my_ajax_menus_array[this.return_i(this.menu_id)].tab_selected,d).style.filter 		= "alpha(opacity=\""+(this.tab_opacity_leave*10)+"\")";
			geID("ajax_tab_txt-" 	+ this.menu_id + "-" + my_ajax_menus_array[this.return_i(this.menu_id)].tab_selected,d).className 		= this.text_css;
			geID("ajax_tab_back-" 	+ this.menu_id + "-" + this.tab_id,d).style.opacity 														= (this.tab_opacity_selected/10);
			geID("ajax_tab_back-" 	+ this.menu_id + "-" + this.tab_id,d).style.filter 														= "alpha(opacity=\""+(this.tab_opacity_selected*10)+"\")";
			geID("ajax_tab_txt-" 	+ this.menu_id + "-" + this.tab_id,d).className 															= this.text_css_selected;
			ajax_tabs_return_tab_object(this.menu_id, my_ajax_menus_array[this.return_i(this.menu_id)].tab_selected).selected 					= false;
			this.selected 																														= true;
			my_ajax_menus_array[this.return_i(this.menu_id)].tab_selected																		= this.tab_id;
			this.ajax_loading();
			//this.loadXMLDoc(this.link);
		  //alert(this.catID);alert(this.nid);
		  ddaccordion.collapseall('expandable','subexpandable',this.catID,this.nid);
			new Ajax.Updater(my_ajax_menus_array[this.return_i(this.menu_id)].div_display, this.link, {evalScripts:true, failure:ajax_tabs_error_loading_msg});			
		}
		return;
	},
	hovers:function(){
		if(this.selected == false){
			mousePoint();
			if(this.ohover == true){
				geID("ajax_tab_back-" 	+ this.menu_id + "-" + this.tab_id,d).style.opacity 	= (this.tab_opacity_selected/10);
				geID("ajax_tab_back-" 	+ this.menu_id + "-" + this.tab_id,d).style.filter 	= "alpha(opacity=\""+(this.tab_opacity_selected*10)+"\")";
			}
			geID("ajax_tab_txt-"		+ this.menu_id + "-" + this.tab_id,d).className 		= this.text_css_hover;
		}else{
			mouseDefault();
		}
		return;
	},
	leave:function(){
		mouseDefault();
		if (this.selected == false){
			if(this.ohover == true){
				geID("ajax_tab_back-" 	+ this.menu_id + "-" + this.tab_id,d).style.opacity	= ((this.tab_opacity_leave)/10);
				geID("ajax_tab_back-" 	+ this.menu_id + "-" + this.tab_id,d).style.filter		= "alpha(opacity=\""+(this.tab_opacity_leave*10)+"\")";
			}
			geID("ajax_tab_txt-" 		+ this.menu_id + "-" + this.tab_id,d).className 		= this.text_css;
		}
		return;
	},
	ajax_loading:function(){
		geID(my_ajax_menus_array[this.return_i(this.menu_id)].div_display,d).innerHTML = ajax_page_display_loading;
		return;
	},
	return_i:function(menu_id){
		for(var i = 0; i < my_ajax_menus_array.length; i++){
			if(my_ajax_menus_array[i].menu_id == menu_id){
				return i;
			}
		}
		return 0;
	},
	loadXMLDoc:function(url){
		xmlHTTP=null;
		if (window.XMLHttpRequest){
			xmlHTTP=new XMLHttpRequest();
		}else if (window.ActiveXObject){
			xmlHTTP=new ActiveXObject("Microsoft.XMLHTTP");
		}
		if (xmlHTTP!=null)
		{
			xmlHTTP.link = this.link;
			xmlHTTP.menu_id = this.menu_id;
			xmlHTTP.menu_index = this.return_i(this.menu_id);
			xmlHTTP.onreadystatechange=this.state_Change;
			xmlHTTP.open("GET",url,true);
			xmlHTTP.send(null);
		}else{
			alert("Your browser does not support AJAX.");
		}
	},
	state_Change:function(){
		if (xmlHTTP.readyState==4){// 4 = "loaded"
			if (xmlHTTP.status==200){// 200 = "OK"
				alert("getting");
				new Ajax.Updater(my_ajax_menus_array[this.menu_index].div_display, this.link, {evalScripts:true, failure:ajax_tabs_error_loading_msg});
			}else{
				geID(my_ajax_menus_array[this.menu_index].div_display,d).innerHTML = ajax_tabs_error_loading_msg;
			}
		}
	}
};
ajax_tabs_create_menu.prototype = {
	create_tabs:function(ajax_tab_array, catID){
		var ajax_tabs_HTML = "";
		geID(this.div_container,d).innerHTML				= "<table cellspacing='0'><tbody><tr id='ajax_table_" + this.menu_id + "_TABLE_TR'>";
		for(var i = 0; i < ajax_tab_array[1].length; i++){
			my_ajax_tabs_array[my_ajax_tabs_array.length] 	= new ajax_tabs_create_tab(this.menu_id, i, ajax_tab_array, catID);
		}
	},
	clean_up:function(){
		//geID("arrays_container",d).innerHTML = "";
		var menu_id = 0;
		for(var i=0; i < my_ajax_tabs_array.length;i++){
			if(!geID("ajax_tab_DIV-" + my_ajax_tabs_array[i].menu_id + "-" + my_ajax_tabs_array[i].tab_id,d)){
				menu_id 	= my_ajax_tabs_array[i].menu_id;
				my_ajax_tabs_array.remove(i);
				i -= 1;
				if(this.return_i(menu_id)){
					my_ajax_menus_array.remove(this.return_i(menu_id));
				}
			}
		}
		//debug purposes
		//for(var i=0; i < my_ajax_tabs_array.length;i++){
		//	geID("arrays_container",d).innerHTML 	+= my_ajax_tabs_array[i].menu_id + "-" + my_ajax_tabs_array[i].tab_id + "<br/>";
		//}
		//geID("arrays_container",d).innerHTML += "<br />";
		//for(var i=0; i < my_ajax_menus_array.length;i++){
		//	geID("arrays_container",d).innerHTML 	+= my_ajax_menus_array[i].menu_id + "<br/>";
		//}
		return;
	},
	return_i:function(menu_id){
		for(var i = 0; i < my_ajax_menus_array.length;i ++){
			if(my_ajax_menus_array[i].menu_id == menu_id){
				return i;
			}
		}
		return false;
	}
};
function ajax_tabs_return_tab_object(menu_id, tab_id){
	for(var i = 0; i < my_ajax_tabs_array.length; i++){
		if(my_ajax_tabs_array[i].menu_id == menu_id && my_ajax_tabs_array[i].tab_id == tab_id){
			return my_ajax_tabs_array[i];
		}
	}
}
function get_new_id(){
	return my_ajax_menus_array.length;
}
function checkIfRemoteFileExists(fileToCheck){
	var tmp=new Image;
	tmp.src=fileToCheck;
	if(tmp.complete){ 
		return true;
	}else{
		window.setTimeout('checkIfRemoteFileExists('+fileToCheck+')', 1000);
	}
}
Array.prototype.remove = function(from, to) {
	var rest = this.slice((to || from) + 1 || this.length);
	this.length = from < 0 ? this.length + from : from;
	return this.push.apply(this, rest);
}
