/*
THIS LICENSE HEADER MUST REMAIN INTACT FOR LEGAL USE!
Pagefusion; Pagefusion Core Platform
Description: A powerful, easy-to-use, and highly customizable content management system.
Copyright (C), 2007-2008 Pagefusion.com, All Rights Reserved.
Author: Chris Davis, chris@pagefusion.com
Support portal: www.pagefusion.com

Filename: /components/accordion/accordion.js
Description: (see schema.xml for a detailed description)

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
*/

// accordion
function accordion_target(target) {
	var e = document.getElementById(target);
	var t = e.className;
	if (t.match('accordion_none')) {
		t = t.replace(/accordion_none/gi, 'accordion_row');
	} else {
		t = t.replace(/accordion_row/gi, 'accordion_none');
	} // if
	e.className = t;
	if (window.resizeWindow) { resizeWindow(); } // if
} // function

function accordion_div(target) {
	var e = document.getElementById(target);
	var t = e.className;
	if (t.match('accordion_none')) {
		t = t.replace(/accordion_none/gi, 'accordion_inline');
	} else {
		t = t.replace(/accordion_inline/gi, 'accordion_none');
	} // if
	e.className = t;
	if (window.resizeWindow) { resizeWindow(); } // if
} // function

function accordion_divs(id_str) {
	var id_array=id_str.split("|");
	for (var i=0; i<id_array.length; i++) {
		var e = document.getElementById(id_array[i]);
		var t = e.className;
		if (e) {
			if (t.match('accordion_none')) {
				t = t.replace(/accordion_none/gi, 'accordion_inline');
			} else {
				t = t.replace(/accordion_inline/gi, 'accordion_none');
			} // if
			e.className = t;
		} // if
	} // for
	if (window.resizeWindow) { resizeWindow(); } // if
} // function

// accordion object
function accordion_object(source, target) {
	var e = document.getElementById(target);
	var t = e.className;
	if (t.match('accordion_none')) {
		t = t.replace(/accordion_none/gi, 'accordion_inline');
	} else {
		t = t.replace(/accordion_inline/gi, 'accordion_none');
	} // if
	e.className = t;
	
	// change accordionr source plus/minus
	var f = document.getElementById(source);
	var u = f.className;
	if (u.match('accordion_minus')) {
		u = u.replace(/accordion_minus/gi, 'accordion_plus');
	} else {
		u = u.replace(/accordion_plus/gi, 'accordion_minus');
	} // if
	f.className = u;
	
	if (window.resizeWindow) { resizeWindow(); } // if
} // function

// accordion block
function accordion_block(source, target) {
	var e = document.getElementById(target);
	var t = e.className;
	if (t.match('accordion_none')) {
		t = t.replace(/accordion_none/gi, 'accordion_block');
	} else {
		t = t.replace(/accordion_block/gi, 'accordion_none');
	} // if
	e.className = t;
	
	// change accordionr source plus/minus
	var f = document.getElementById(source);
	var u = f.className;
	if (u.match('accordion_minus')) {
		u = u.replace(/accordion_minus/gi, 'accordion_plus');
	} else {
		u = u.replace(/accordion_plus/gi, 'accordion_minus');
	} // if
	f.className = u;
	
	if (window.resizeWindow) { resizeWindow(); } // if
} // function

// accordion table row
function accordion_row(source, target) {
	var e = document.getElementById(target);
	var t = e.className;
	if (t.match('accordion_none')) {
		t = t.replace(/accordion_none/gi, 'accordion_row');
	} else {
		t = t.replace(/accordion_row/gi, 'accordion_none');
	} // if
	e.className = t;
	
	// change accordionr source plus/minus
	var f = document.getElementById(source);
	var u = f.className;
	if (u.match('accordion_minus')) {
		u = u.replace(/accordion_minus/gi, 'accordion_plus');
	} else {
		u = u.replace(/accordion_plus/gi, 'accordion_minus');
	} // if
	f.className = u;
	
	if (window.resizeWindow) { resizeWindow(); } // if
} // function

// accordion table row
function accordion_row_close(source, target, source2, target2) {
	var e = document.getElementById(target);
	var t = e.className;
	if (t.match('accordion_none')) {
		t = t.replace(/accordion_none/gi, 'accordion_row');
	} else {
		t = t.replace(/accordion_row/gi, 'accordion_none');
	} // if
	e.className = t;
	
	// change accordionr source plus/minus
	var f = document.getElementById(source);
	var u = f.className;
	if (u.match('accordion_minus')) {
		u = u.replace(/accordion_minus/gi, 'accordion_plus');
	} else {
		u = u.replace(/accordion_plus/gi, 'accordion_minus');
	} // if
	f.className = u;
	
	// accordion other source
	var e = document.getElementById(target2);
	var t = e.className;
	if (t.match('accordion_none')) {
		t = t.replace(/accordion_none/gi, 'accordion_row');
	} else {
		t = t.replace(/accordion_row/gi, 'accordion_none');
	} // if
	e.className = t;
	
	// change accordionr source plus/minus
	var f = document.getElementById(source2);
	var u = f.className;
	if (u.match('accordion_minus')) {
		u = u.replace(/accordion_minus/gi, 'accordion_plus');
	} else {
		u = u.replace(/accordion_plus/gi, 'accordion_minus');
	} // if
	f.className = u;
	
	if (window.resizeWindow) { resizeWindow(); } // if
} // function

function accordion_group_cookie(cid, id_str) {
	var id_array=id_str.split(",");
	for (var i=0; i<id_array.length; i++) {
		var e = document.getElementById(id_array[i]);
		var t = e.className;
		if (e) {
			if (t.match('accordion_none')) {
				t = t.replace(/accordion_none/gi, 'accordion_row');
				if (get_cookie(id_array[i])) { delete_cookie(id_array[i], '/', ''); } // if
				set_cookie(id_array[i], 'Y', 0);
			} else {
				t = t.replace(/accordion_row/gi, 'accordion_none');
				if (get_cookie(id_array[i])) { delete_cookie(id_array[i], '/', ''); } // if
				set_cookie(id_array[i], 'N', 0);
			} // if
			e.className = t;
		} // if
	} // for
	
	// change accordionr id plus/minus
	var f = document.getElementById(cid);
	var u = f.className;
	if (u.match('accordion_minus')) {
		u = u.replace(/accordion_minus/gi, 'accordion_plus');
	} else {
		u = u.replace(/accordion_plus/gi, 'accordion_minus');
	} // if
	f.className = u;
	
	if (window.resizeWindow) { resizeWindow(); } // if
} // function

function accordion_children_cookie(cookieName, cookieArray, accordion_id, accordion_row_id, id_str, level) {
	
	// cookieName (name of cookie that holds cookieArray)
	// cookieArray (array that holds row ids for all enabled cookie ids)
	// accordion_id (ID of clickable accordion that is inside parent row)
	// row_id (row ID of parent row)
	
	var cookieArray = init_cookie_array();
	var timeToKeep = 86400000; // one day
	var expires = new Date();
	expires.setTime(expires.getTime() + timeToKeep);
	
	// change accordionr state
	var f = document.getElementById(accordion_id);
	var u = f.className;
	var parent_state;
	
	// change plus/minus sign of parent row (and save ID value in cookieArray)
	if (f) {
		if (u.match('accordion_minus')) {
			u = u.replace(/accordion_minus/gi, 'accordion_plus'); // collapsed
			parent_state = "N";
			var pos = get_id_pos(cookieName, accordion_id, cookieArray);
			del_pos(cookieName, cookieArray, pos, expires);
			//alert('deleting accordion: ' + accordion_id);
		} else {
			u = u.replace(/accordion_plus/gi, 'accordion_minus');  // expanded
			parent_state = "Y";

			get_array(cookieName, cookieArray);
			var pos = next_pos(cookieArray);
			cookieArray[pos] = accordion_id;
			//alert('showing accordion: ' + accordion_id);
			set_array(cookieName, cookieArray, expires);

			//get_array(cookieName, cookieArray);
			//var pos = next_pos(cookieArray);
			//cookieArray[pos] = accordion_row_id;
			//set_array(cookieName, cookieArray, expires);
		} // if
		
		f.className = u;
	} // if
	
	// change display state of child rows (and save ID value in cookieArray)
	var id_array=id_str.split(",");
	for (var i=0; i<id_array.length; i++) {
		var e = document.getElementById(id_array[i]);
		var t = e.className;
		
		var row_id = id_array[i];
		
		if (e) {
			var id_level = row_id.substring(0,1);
			var level_plus = level+1;
			
			if (parent_state == "Y") {
				if (id_level == level_plus) {
					t = t.replace(/accordion_none/gi, 'accordion_row');
				} else {
					if (is_in_array(cookieName, row_id, cookieArray)) {
						t = t.replace(/accordion_none/gi, 'accordion_row');
					} // if
				} // if
			} else {
				t = t.replace(/accordion_row/gi, 'accordion_none');
			} // if
			
			if (id_level == level_plus) {
				if (parent_state == "Y") {
					get_array(cookieName, cookieArray);
					var pos = next_pos(cookieArray);
					cookieArray[pos] = row_id;
					//alert('showing row: ' + row_id);
					set_array(cookieName, cookieArray, expires);
					
				} else {
					var pos = get_id_pos(cookieName, row_id, cookieArray);
					del_pos(cookieName, cookieArray, pos, expires);
					//alert('deleting row: ' + row_id);
				} // if
			} // if
			
			e.className = t;
		} // if
	} // for
	if (window.resizeWindow) { resizeWindow(); } // if
} // function

// accordion table row, keep state using cookie
function accordion_row_cookie(source, target) {

	var e = document.getElementById(target);
	var t = e.className;
	
	if (e) {
		if (t.match('accordion_none')) {
			t = t.replace(/accordion_none/gi, 'accordion_row');
			if (get_cookie(target)) { delete_cookie(target); } // if
			set_cookie(target, 'Y', 0);
		} else {
			t = t.replace(/accordion_row/gi, 'accordion_none');
			if (get_cookie(target)) { delete_cookie(target); } // if
			set_cookie(target, 'N', 0);
		} // if
		e.className = t;
	} // if
	
	// change accordionr source plus/minus
	var f = document.getElementById(source);
	var u = f.className;
	if (u.match('accordion_minus')) {
		u = u.replace(/accordion_minus/gi, 'accordion_plus');
	} else {
		u = u.replace(/accordion_plus/gi, 'accordion_minus');
	} // if
	f.className = u;
	
	if (window.resizeWindow) { resizeWindow(); } // if
} // function

// accordion class
function accordion_class(target, targetClass) {
	document.getElementById(target).className = targetClass;
	if (window.resizeWindow) { resizeWindow(); } // if
} // function

// accordion class, set cookie
function accordion_class_cookie(target, targetClass, cookie_value) {
	document.getElementById(target).className = targetClass;
	if (get_cookie(target)) { delete_cookie(target); } // if
	set_cookie(target, cookie_value, 0);
	if (window.resizeWindow) { resizeWindow(); } // if
} // function

// accordion horizontal grip row
function grip_horizontal(source, target) {
	var e = document.getElementById(target);
	var t = e.className;
	if (t.match('accordion_none')) {
		t = t.replace(/accordion_none/gi, 'accordion_row');
	} else {
		t = t.replace(/accordion_row/gi, 'accordion_none');
	} // if
	e.className = t;
	
	// change accordionr
	var f = document.getElementById(source);
	var u = f.className;
	if (u.match('grip horizontal closed')) {
		u = u.replace(/grip horizontal closed/gi, 'grip horizontal opened');
	} else {
		u = u.replace(/grip horizontal opened/gi, 'grip horizontal closed');
	} // if
	f.className = u;
	
	if (window.resizeWindow) { resizeWindow(); } // if
} // function

// accordion vertical grip row
function grip_vertical(source, target) {
	var e = document.getElementById(target);
	var t = e.className;
	if (t.match('accordion_none')) {
		t = t.replace(/accordion_none/gi, 'accordion_row');
	} else {
		t = t.replace(/accordion_row/gi, 'accordion_none');
	} // if
	e.className = t;
	
	// change accordionr
	var f = document.getElementById(source);
	var u = f.className;
	if (u.match('grip vertical closed')) {
		u = u.replace(/grip vertical closed/gi, 'grip vertical opened');
	} else {
		u = u.replace(/grip vertical opened/gi, 'grip vertical closed');
	} // if
	f.className = u;
	
	if (window.resizeWindow) { resizeWindow(); } // if
} // function

function closeit(my_id, accordion_class) {
	object=document.getElementById(my_id); object.className=accordion_class;
	if (window.resizeWindow) { resizeWindow(); } // if
} // function

function accordion_object_class(object_name, class_name) {
	object=document.getElementById(object_name); object.className=class_name;
	if (window.resizeWindow) { resizeWindow(); } // if
} // function

