/** image swapping functions from the template */
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

/** loads all images asynchronously
 * 
 * @return
 */
function LoadAllImages(){
    $('.auto-load').each(function(){       
        var loader = $(this);        
        loadImage(loader);
    });
}


/** Async loading of images 
 * 
 * @param pSelector where the images is added to.
 * @param pCallback call back function.
 * @return
 */
function loadImage(selector){
	var src = selector.attr('alt') ; 
    var loader = $(selector);
    loader.load ( function () {
    	
    	return src ; 
    	}		
    ) ; 
    
    loader.attr('src' , src) ; 
    loader.show() ; 
}

/**
 * 1.toggles visibility of a list, opens or closes it.
 * 2.Changes the icon next to the anchor
 * 3.If opening, closes all other lists of the same level.
 * 
 * @param ul
 * @return
 */
function toggleClass(a, liId, event) {
	//event.stopPropagation() ;
	var anchor = $(a) ;
	anchor.toggleClass('open')  ;
	var sublistClass = anchor.siblings("ul").get(0).className ;
	// if opening a list, close all list of the same level
	if ( sublistClass.indexOf('closed') != -1 ) {
		// obtain class name without closed at the end.
		/**
		sublistClass = sublistClass.substring( 0,sublistClass.indexOf('closed') - 1)  ;		
		var sameLevelLists = $("ul." + sublistClass) ;
		sameLevelLists.toggleClass('closed', true) ;
		sameLevelLists = $("ul." + sublistClass + " closed") ;
		sameLevelLists.slideToggle('fast' , function() {
			
			
		} ) ;
		 **/
	}
	
	
	var list = $("li#" + liId + ">ul") ;
	list.slideToggle('slow' , function() {
		list.toggleClass('closed')  ;
	} ) ; 
	

}

/**
 * 
 * @param cat
 * @param subcat
 * @param subsubcat
 * @param event
 * @return
 */
function displayProducts(cat, subcat, subsubcat,event) {
	event.stopPropagation() ;
	window.location = '/products/listing/' + cat + '/' + subcat + '/' + subsubcat
}


/**
 * displays the sub children of the category item clicked on
 * 
 * @param listItem the list including the category item.
 * @return
 */
function displaySubItems(listItem) {
	var id = listItem.id ; 
	var li = $("li#" + id) ; 
	var value = li.html() ;
	var level = li.parent().get(0).className ;
	var nextLevel = 'subcats' ;
	var className = 'subcat' ;
	var request = ''  ; 
	
	__selected[ level ] = value ;  

	if ( level == 'cat') {
		request = value ; 
	} if ( level =='subcat') {
		var cat = li.parent().get(0).html() ;
		alert ( cat ) ; 
		request = __selected['cat'] + '/' + value ;
		nextLevel = 'subsubcats' ;
		className = 'subsubcat' ; 
	} else if ( level =='subsubcat') {
		// redirect user 
	} 
	
	
	
	$.ajax({
		method: "get",url: "/product/get_subcategories/" + level + "/" + value
		,async: true 
		,dataType: "json"
		,beforeSend: function(){ 				
			$("#message").html("Loading the list of subcategories for" + value);
		} //show loading just when link is clicked
		,complete: function(){ 
		} //stop showing loading when the process is complete
		,success:function(json){

			totalItems = json.length ; 	
			if ( totalItems == 0 ) {
				$("#message").html("No sub categories were found.");					
			} else { 
				$("#message").html(totalItems + " sub categories were found.");
				var html = '' ; 
				
				html += '<ul class="' + className + '">' ;
				for (i = 0; i <  json.length; i++) {
					html += '<li id="' + className +'-' + i + '" onclick="displaySubItems(this);">' + json[i].name + '</li>'; 					
				}
				html += '</ul>' ;
				li.html( value + html ) ;
			}
			//__cat[id][nextLevel] = json  ;
		} 
	}) ;  
}

/** formats numbers to a certain number of decimal points 
 * 
 * @param pnumber
 * @param decimals
 * @return
 */
function formatNumber(pnumber,decimals){
	if (isNaN(pnumber)) { return 0};
	if (pnumber=='') { return 0};
	
	var snum = new String(pnumber);
	var sec = snum.split('.');
	var whole = parseFloat(sec[0]);
	var result = '';
	
	if(sec.length > 1){
		var dec = new String(sec[1]);
		dec = String(parseFloat(sec[1])/Math.pow(10,(dec.length - decimals)));
		dec = String(whole + Math.round(parseFloat(dec))/Math.pow(10,decimals));
		var dot = dec.indexOf('.');
		if(dot == -1){
			dec += '.'; 
			dot = dec.indexOf('.');
		}
		while(dec.length <= dot + decimals) { dec += '0'; }
		result = dec;
	} else{
		var dot;
		var dec = new String(whole);
		dec += '.';
		dot = dec.indexOf('.');		
		while(dec.length <= dot + decimals) { dec += '0'; }
		result = dec;
	}	
	return result;
}



