﻿// JavaScript Document
//----------------------------------------------------------------------------
// Catalog Main
//
// version:   1.0
// date:      22/02/10
// author:    [Olivier Robert]
//-----------------------------------------------------------------------------

var $j = jQuery.noConflict();

$j(document).ready(function() {

    var masterId = "ctl00_content_";

    var firstPage             = "1";
	
    var catalogNumPage        = 28;
	var notInCatalogNumPage   = "08";
	
	var catalogContainer      = "catalogBrowser";
	var notInCatalogContainer = "notInCatalogBrowser";

	var catalogImagePath      = "catalog/STEEL_ACCESSORIES_CATALOG_PAGE_";
	var notInCatalogImagePath = "not_in_catalog/STEEL_ACCESSORIES_NOT_IN_CATALOG_PAGE_";
	
	param = { 
	
		productType: "catalog",
		
		pageCurrent: "01",
	
	   	totalPage: catalogNumPage, 
		
		path: catalogImagePath
		
	};
	
    _init = function() {

        $j('div.browser_container').append('<div class="loading"><span>&nbsp;</span></div>');
        $j('div.browser_container div.loading').css({ 'display': 'none' });
		
		$j('div.browser_container input#'+masterId+'catalogJumpCategoryGo').css({ 'display': 'none' });
		$j('div.browser_container input#'+masterId+'notInCatalogJumpCategoryGo').css({ 'display': 'none' });
		
		$j('input#catalogJumpPage').numeric();
		$j('input#notInCatalogJumpPage').numeric();
		
		controlPage();
		jumpCategory();


		////////////////////////////////////////////////////////////////////////////////////
		
		var pageHashCurrent = null;
		var pageGetParam    = null;
		var viewParam       = param.productType;
		
		var pageHash        = window.location.hash;
		var pageHashParam   = pageHash != null ? pageHash.split("=") : null;
		var pageHashCurrent = pageHashParam.length > 1 ? pageHashParam[1] : null;
			
		var pageUrl    		= location.href != null ? location.href.split("?") : null;
		
		if ( pageUrl.length > 1 ) {
		
			var pageUrlParamEl  = pageUrl.length > 1 ? pageUrl[1].split("&") : null;
			
			if  (pageUrlParamEl.length > 1 ) {
				
				var viewParamEl  = pageUrlParamEl.length > 1 ? pageUrlParamEl[0].split("=") : null;
				viewParam        = viewParamEl != null ? viewParamEl[1] : null;
				
				var pageParamEl  = pageUrlParamEl.length > 1 ? pageUrlParamEl[1].split("=") : null;
				var pageGetParam = pageUrlParamEl.length > 1 ? pageParamEl[1] : null;
			
			} else {
				
				var viewParamEl  = pageUrl[1].length > 1 ? pageUrl[1].split("=") : null;
				viewParam        = viewParamEl != null ? (viewParamEl[1]).replace("#page","") : null;
				
			}
		
		}
		
		////////////////////////////////////////////////////////////////////////////////////////
		
		if ( pageHashCurrent == null && pageGetParam == null ) {
			
			param.pageCurrent   = "01";
			
		} else {
			
			param.pageCurrent   = pageGetParam != null ? pageGetParam : pageHashCurrent;
			
		}
		
		param.productType   = viewParam;
		param.totalPage     = viewParam == "new_items" ? notInCatalogNumPage : catalogNumPage;
		param.path          = viewParam == "new_items" ? notInCatalogImagePath : catalogImagePath;	
				
		//////////////////////////////////////////////////////////////////////////////////////////////////////////
		
        if (param.pageCurrent !== null) {

            var prevPageChk = parseInt(param.pageCurrent) - 1 < firstPage ? param.totalPage : parseInt(param.pageCurrent) - 1;
            var prevPage    = prevPageChk < 10 ? "0" + prevPageChk : prevPageChk;

            var nextPageChk = parseInt(param.pageCurrent) + 1 > param.totalPage ? firstPage : parseInt(param.pageCurrent) + 1;
            var nextPage    = nextPageChk < 10 ? "0" + nextPageChk : nextPageChk;

            $j('div.browser_container div.loading').fadeIn(200, function() {
																	
                loadPage(param.pageCurrent, prevPage, nextPage, param.totalPage);
				
            });

        }
		
    }

    var loadPage = function(currentPage, prevPage, nextPage, totalPage) {

        var img = new Image();

        $j(img).load(function() {

            $j('div.browser_container div.page_container img').fadeOut(10000).remove();

            $j('div.browser_container div.loading').fadeOut(200);

            $j('div.browser_container div.page_container').append(this);

            $j(this).fadeIn();

            $j('div.browser_container div.control.page span').html(currentPage + ' / ' + totalPage);
            $j('div.browser_container div.control.prev a').attr('rel', prevPage);
            $j('div.browser_container div.control.next a').attr('rel', nextPage);

            window.location.hash = 'page=' + currentPage;

        })

        .attr('src', 'image/public/' + param.path + currentPage + '.jpg');
 
    }
	
	var controlPage = function() {

		$j('div.control a').click(function(e) {
			e.preventDefault();
	
			var gotoPage = $j(this).attr('rel');
	
			$j('div.browser_container div.loading').fadeIn(200, function() {
	
				$j.ajax({
					type: 'POST',
					url: 'system/service/productPageBrowser.asmx/getProductPage',
					data: '{"pageNumber": ' + gotoPage + ', "productType": "' + param.productType + '"}',
					contentType: 'application/json; charset=utf-8',
					dataType: 'json',
					success: function(response) {
	
						var data = (typeof (response.d)) == 'string' ? eval('(' + response.d + ')') : response.d;
	
						loadPage(data.currentPage, data.prevPage, data.nextPage, data.totalPage);
	
					},
					error: function(error) {
	
						alert(error.responseText);
					}
				});
	
			})
	
		});
		
		$j('input.jump_page_button').click(function(e) {
        e.preventDefault();

			jumpPage();
	
		});
	
		$j('form').submit(function(e) {
			e.preventDefault();
	
			jumpPage();
	
		});
	
	}

    var jumpPage = function() {

        var gotoPage = param.productType == "catalog" ? $j('input#catalogJumpPage').val() : $j('input#notInCatalogJumpPage').val();
				
        if (parseInt(gotoPage) !== "" && parseInt(gotoPage) > 0 && gotoPage < (parseInt(param.totalPage) + 1)) {

            $j('div.browser_container div.loading').fadeIn(200, function() {

                $j.ajax({
                    type: 'POST',
                    url: 'system/service/productPageBrowser.asmx/getProductPage',
                    data: '{"pageNumber": ' + gotoPage + ', "productType": "' + param.productType + '"}',
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    success: function(response) {

                        var data = (typeof (response.d)) == 'string' ? eval('(' + response.d + ')') : response.d;
					
                        loadPage(data.currentPage, data.prevPage, data.nextPage, data.totalPage);
							
						$j('input.jump_page').val(gotoPage);
						
                    },
                    error: function(error) {

                        alert(error.responseText);
                    }
                });

            });

        } else {

			$j('input.jump_page').val("01");

            alert("This page could not be found. Please try another page.");

        }

    }
	
	var jumpCategory = function() {

        $j('select.category_list').change(function(){
											   
			var gotoPage = $j(this).val()											   
											   
			$j('div.browser_container div.loading').fadeIn(200, function() {

                $j.ajax({
                    type: 'POST',
                    url: 'system/service/productPageBrowser.asmx/getProductPage',
                    data: '{"pageNumber": ' + gotoPage + ', "productType": "' + param.productType + '"}',
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    success: function(response) {

                        var data = (typeof (response.d)) == 'string' ? eval('(' + response.d + ')') : response.d;

                        loadPage(data.currentPage, data.prevPage, data.nextPage, data.totalPage);
						
						$j('input.jump_page').val(gotoPage);


                    },
                    error: function(error) {

                        alert(error.responseText);
                    }
                });

			})   
		})
    }

    //-------------------------------------------------------//
    // Page Initialize                                       //
    //-------------------------------------------------------//

    _init();

});