/**
 * @author john
 * 
 * more class for device 	= device_menu_item_more
 * back class for device	= device_menu_item_back
 * 
 * more class for model		= model_menu_item_more
 * back class for model		= model_menu_item_back
 * 
 * 
 */
var q = jQuery.noConflict();

if (typeof(_moreDeviceLabel) == "undefined" || typeof(_moreDeviceLabel) == null || _moreDeviceLabel == "")
	_moreDeviceLabel	= "More Devices &gt;";
	
if (typeof(_moreManuLabel) == "undefined" || typeof(_moreManuLabel) == null || _moreManuLabel == "")
	_moreManuLabel	= "More Manufactureres &gt;";
	
if (typeof(_backLabel) == "undefined" || typeof(_backLabel) == null || _backLabel == "")
	_backLabel	= "&lt; Back";

if (typeof(_baseURL) == "undefined" || typeof(_baseURL) == null || _baseURL == ""){
	_baseURL	= "http://dev.morfica.com/reskin09";
}
	
if (typeof(_startStateDevice) == "undefined" || typeof(_startStateDevice) == null || _startStateDevice =="") {
	_startStateDevice	= 0;
}

if (typeof(_startStateModel) == "undefined" || typeof(_startStateModel) == null || _startStateModel =="") {
	_startStateModel	= 0;
}

if (typeof(_pageModelId) == "undefined" || typeof(_pageModelId) == null || _pageModelId =="") {
	_pageModelId	= 0;
}

if (typeof(_pageDeviceId) == "undefined" || typeof(_pageDeviceId) == null || _pageDeviceId =="") {
	_pageDeviceId	= 0;
}

_loadingImageId		= "loadingImage";

_moreDeviceClass	= "device_menu_item_more";
_backDeviceClass	= "device_menu_item_back";

_moreModelClass		= "model_menu_item_more";
_backModelClass		= "model_menu_item_back";

_iefixClass			= "iefix";

_menuID				= "menu";
_headerClass		= "root-category";

_mainCategoryArray	= new Array();
_subCategoryArray	= new Array();
_interval			= 10;  //Number of items in the list
_intervalModel		= 8;  //Number of items in the list
_imgPath			= _baseURL + "/images/loading.gif";
_oldCatId			= 0;
_replaceCatId		= 0;

_subCategoryArray[239]	= _startStateModel; 
 
 
 
q(document).ready(function(){
 
	q("#" + _menuID + " ." + _headerClass).click(function() {
		clickElem	= q(this);

		q("#" + _menuID + " ." + _headerClass).next().each(function(id){
			if (q(clickElem).html() != q(this).prev().html()) {
				q(this).hide('slow');
			}
		})
		q(this).next().toggle("slide");
		if (clickElem.attr("href") == "")
			return false;
		
	}).next().hide();
	
	q("." + _moreDeviceClass).click(registerMoreDeviceClick);
	q("." + _backDeviceClass).click(registerDeviceBackClick);
	
	q("." + _moreModelClass).click(registerMoreModelClick);
	q("." + _backModelClass).click(registerBackModelClick);
	
	
	q(".root-category").each(function(){
		idArr		= q(this).attr("id").split("-");
		_mainCategoryArray[idArr[1]]	= _startStateDevice;
	});
	
	q(".device_menu_item").each(function(){
		if (q(this).attr("href") == "") {
			q(this).click(getDeviceList);
		}
	})
	
	

	if (_pageDeviceId > 0 && _pageModelId > 0) { //Some stuff to do when categories have been set. 

		_mainCategoryArray[_pageCatId]		= _devicePage;
		triggerCategoryClick(_pageCatId) 
		_subCategoryArray[_pageDeviceId]	= _modelPage;
		q("#dev-" + _pageModelId + "-" + _pageDeviceId).addClass("menu_active");
		//getModels(_pageDeviceId, _pageCatId);
		//triggerDeviceClick(_pageDeviceId, _pageCatId);
		
	} 

	
});

function registerMoreModelClick() {
	idArr		= q(this).attr("id").split("-");
	deviceId	= idArr[1];
	catId		= idArr[2];

	state		= parseInt(_subCategoryArray[deviceId]);
	_subCategoryArray[deviceId]	= (state + _intervalModel); 	
	
	q("#" + _loadingImageId).remove();
	q(this).prepend("<img id='" + _loadingImageId + "' src='" + _imgPath + "' />");
 
	
	getModels(deviceId, catId);		
	return false;
}

function registerBackModelClick() {
	idArr		= q(this).attr("id").split("-");
	deviceId	= idArr[1];
	catId		= idArr[2];

	state		= parseInt(_subCategoryArray[deviceId]);
	if ((state - _intervalModel) >= 0)
		_subCategoryArray[deviceId]	= (state - _intervalModel); 	
	else 
		_subCategoryArray[deviceId]	= 0; 	
	
	q("#" + _loadingImageId).remove();
	q(this).prepend("<img id='" + _loadingImageId + "' src='" + _imgPath + "' />");
	
	getModels(deviceId, catId);	
	return false;	
}

function getDeviceList() {
	idArr		= q(this).attr("id").split("-");
	deviceId	= idArr[1];
	catId		= idArr[2];
 
	_subCategoryArray[deviceId]	= _startStateModel;
	
 	q(".submenu").remove();
	q("#" + _loadingImageId).remove();
	q(this).prepend("<img id='" + _loadingImageId + "' src='" + _imgPath + "' />");
	getModels(deviceId, catId);	
	return false;
}


function registerMoreDeviceClick(){
	idArr		= q(this).attr("id").split("-");
	id			= idArr[1];
	state		= parseInt(_mainCategoryArray[id]);
	_mainCategoryArray[id]	= (state + _interval); 
	q("#" + _loadingImageId).remove();
	q(this).prepend("<img id='" + _loadingImageId + "' src='" + _imgPath + "' />");
	getDevices(id);
	return false;
}

function registerDeviceBackClick(){
	idArr		= q(this).attr("id").split("-");
	id			= idArr[1];
	state		= parseInt(_mainCategoryArray[id]);
	
	if ((state - _interval) >= 0)
		_mainCategoryArray[id]	= (state - _interval);
	else
		_mainCategoryArray[id]	= 0;
		
	q("#" + _loadingImageId).remove(); 
	q(this).prepend("<img id='" + _loadingImageId + "' src='" + _imgPath + "' />");
	getDevices(id);
	return false;
}

function getDevices(catId) {
	state		= _mainCategoryArray[catId];
	if (isNaN(state)) state = 0;
	
	q.get(_baseURL + "//menu/menu_xml_generator.php", {"cat_id":catId, "start":state, "mode":"device"}, function(data){

		if (typeof data == "string") {
			try {
				xml = new ActiveXObject("Microsoft.XMLDOM");
				xml.async = false;
				xml.loadXML(data);
			} catch (e) {
				xml = data;
			}
		} else {
			xml = data;
		}
		
		if (q("error", xml).length) { 	//basically checking for any session related errors. If positive, then reload window.
			window.location.reload();
		}
		
		listItems	= "<ol>";
		if (state > 0) {
			listItems	+= '<li><a href="" id="dev-' + catId + '-" class="' + _backDeviceClass + '">' + _backLabel + '</a></li>';
		}
		
		q("device", xml).each(function(){
			listItems	+= '<li><a id="dev-' + q(this).attr("device_id") + '-' + catId + '"';
			 
			if (q(this).attr("has_sub_cats") == "0")
				listItems	+= 'href="' + _baseURL + '/F02/PPF02P05.php?t_id=' + q(this).attr("device_id") + '&t_mode=cat" class="device_menu_item">';
			else
				listItems	+= 'href="" class="device_menu_item">';
				
			listItems	+=	q(this).attr("device_name") + '</a></li>';
		});

		total_devices	= parseInt(q("count", xml).eq("0").attr("size"));
		
		if ((state + _interval) < total_devices) {
			listItems	+= '<li class="' + _iefixClass + '"><a href="" id="dev-' + catId + '" class="' + _moreDeviceClass + '">' + _moreManuLabel + '</a></li>';
		}
		listItems	+= "</ol>";
 	 
		q("#cat-" + catId).next().remove();
		q("#cat-" + catId).after(listItems);

		q("#" + _loadingImageId).remove();
		
		q("." + _backDeviceClass).click(registerDeviceBackClick);
		q("." + _moreDeviceClass).click(registerMoreDeviceClick);

	 	q(".device_menu_item").each(function(){
			if (q(this).attr("href") == "") {
				q(this).click(getDeviceList);
			}
		})
		
	});
}


function getModels(deviceId, catId) {
	
	state	= _subCategoryArray[deviceId];
	if (isNaN(state)) state = 0;
	
	sortVal = 1;
	
	q.get(_baseURL + "//menu/menu_xml_generator.php", {"cat_id":deviceId, "start":state, "mode":"device", "limit":_intervalModel, "sort":sortVal}, function(data){
	
		if (typeof data == "string") {
			try {
				xml = new ActiveXObject("Microsoft.XMLDOM");
				xml.async = false;
				xml.loadXML(data);
			} catch (e) {
				xml = data;
			}
		} else {
			xml = data;
		}
		
		if (q("error", xml).length) {	//basically checking for any session related errors. If positive, then reload window.
			window.location.reload();
		}
		
		
		listItems	= "<ol class='submenu'>";
		
		if (state > 0) {
			listItems	+= '<li><a href="" id="dev-' + deviceId + '-' + catId + '" class="' + _backModelClass + '">' + _backLabel + '</a></li>';
		}
		
		q("device", xml).each(function(){
			listItems	+= '<li><a id="dev-' + q(this).attr("device_id") + '-' + deviceId + '"';
			listItems	+= 'href="' + _baseURL + '/F02/PPF02P05.php?t_id=' + q(this).attr("device_id") + '&t_mode=cat" class="device_menu_item">';
			listItems	+=	q(this).attr("device_name") + '</a></li>';
		});

		total_devices	= parseInt(q("count", xml).eq("0").attr("size"));
		if ((state + _intervalModel) < total_devices) {
			listItems	+= '<li><a href="" id="dev-' + deviceId + '-' + catId + '" class="' + _moreModelClass + '">' + _moreDeviceLabel + '</a></li>';
		}
		listItems	+= "</ol>";
		
		q("#" + _loadingImageId).remove();
		q(".submenu").remove(); 
		
		q("#dev-" + deviceId + "-" + catId).after(listItems);
		
		q("." + _moreModelClass).click(registerMoreModelClick);
		q("." + _backModelClass).click(registerBackModelClick);
		
		q(".submenu").slideDown("slow");
 
	})
}

function triggerCategoryClick(catId) {
	q("#cat-" + catId).trigger("click");
}

function triggerDeviceClick(deviceId, catId) {
	q("#dev-" + deviceId + "-" + catId).trigger("click");
}
