var mobione = {};

$(document).ready(function() {
    jQuery.preloadCssImages();

    var webappCache = window.applicationCache;
    if (webappCache) {
    	// Reload page right after update came. 
        webappCache.addEventListener("updateready", function() { location.reload(); }, false);
        var downloadingShown = false;
        webappCache.addEventListener("downloading", function() {
        	if (!downloadingShown) { 
        		$('#cache-prompt') .css("display", "block");
	            downloadingShown = true;
            }
        }, false);
        webappCache.addEventListener("cached", function() {
        	if (downloadingShown) { 
        		$('#cache-prompt') .css("display", "none");
        		downloadingShown = false;
            }
        }, false);
    }

	var isSliding = false;

	mobione.navigateToScreen = function($new, $old, trigger) 
	{
	    if(isSliding === false && (($new).attr('id') != ($old).attr('id')))  {
	    	isSliding = true;
			var dir = 'forward';
			var delay = 300;
			if ($(trigger).is('.m1-back-button') || $(trigger).is('.m1-transition-slide-right')) dir = 'backward';
			if ($(trigger).is('.m1-transition-none')) delay = 0;
			
			if ($(trigger).is('.m1-transition-fade'))
			{
				if ($new .length > 0)
				{
					$old .addClass('m1-fade m1-out');
					$new .show().css({left: '0px'}).addClass('m1-fade m1-in');
					
					var t = setTimeout(function() 
					{
						$old .hide();
						$old .removeClass('m1-fade m1-out');
						$new .removeClass('m1-fade m1-in');
						isSliding = false;
					}, delay);
				}
			}
			else if ($(trigger).is('.m1-transition-flip-right'))
			{
				if ($new .length > 0) 
				{
					$old .addClass('m1-flip m1-out');
		
					var t = setTimeout(function() 
					{
						$old .hide();
						$old .removeClass('m1-flip m1-out');
						$new .show().css({left: '0'}).addClass('m1-flip m1-in');
						setTimeout(function() { $new .removeClass('m1-flip m1-in').css({left: '0'}) }, delay);
						isSliding = false;
					}, delay);
				}
			}
			else if ($(trigger).is('.m1-transition-flip-left'))
			{
				if ($new .length > 0) 
				{
					$old .addClass('m1-flip m1-out m1-reverse');
			
					var t = setTimeout(function()  {
						$old .hide();
						$old .removeClass('m1-flip m1-out m1-reverse');
						$new .show().css({left: '0'}).addClass('m1-flip m1-in m1-reverse');
						setTimeout(function() { 
							$new .removeClass('m1-flip m1-in m1-reverse').css({left: '0'})
							isSliding = false;
						}, delay);
					}, delay);
				}
			}
																																																			else
			{
								var INC =  {forward: '-=', backward: '+='};
				var STEP = {forward: '+',  backward: '-'};
			
				if ($new .length > 0)
				{
					$old .animate({left: INC[dir]+'320px'}, delay, function() { isSliding = false; $old .hide(); });
					$new .css({left: STEP[dir]+'320px'}).show().animate({left: INC[dir]+'320px'}, delay);
				}
			}
	    }
	};
	
	$('.m1-hyperlink').click(function() {
		var href = $(this).attr('href');
		if (href.match(/^#/)) {
			mobione.navigateToScreen($(href), $(this).closest('.m1-root'), this);
		} else {
			window.location.href = href;
		}
	});

	$('.m1-button').bind("touchstart", function() {
		$(this).attr('active', 'true');
	});
	
	$('.m1-button').bind("touchend", function() {
		$(this).attr('active', 'false');
	});
	
	$('.m1-button').bind("touchcancel", function() {
		$(this).attr('active', 'false');
	});

		$('.m1-select-list-menu-spinner').each(function(i, v) {	
		var sel = $("#" + $(v).attr("hiddenInputId"));
		var selInfoId = $("#" + $(v).attr("selectionInfoId"));
		if (selInfoId) {
			function onSelectionChange() {
				var labelsArray = [];
				var lis = sel.children('option');
		        for(var i = 0; i < lis.length; i++) {
		        	var lbl = $(lis[i]);
		        	if (lbl.get(0).selected) {
		        		labelsArray.push(lbl.text());
		        	}
		        }
	        	if ($(v).attr('multiple')=='false') {
	        		selInfoId.text(labelsArray[0]);
	        	} else {
	        		selInfoId.text("" + labelsArray.length);
	        	}
			}

			onSelectionChange();
			sel.unbind('change', onSelectionChange).bind('change', onSelectionChange);
						sel.unbind('blur', onSelectionChange).bind('blur', onSelectionChange);
		}
	});
	
	$('.m1-select-list-menu-spinner').click(function() {
		var sel = $("#" + $(this).attr("hiddenInputId"));
		var el = sel.get(0);
		var evt = el.ownerDocument.createEvent('MouseEvents');
		evt.initMouseEvent('mousedown', true, true, el.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
		el.dispatchEvent(evt);
	});
		
    $(".m1-selection-list > li").click(function() {
        tableListMngt($(this));
    });
    
    jQuery.each($(".m1-selection-list"), function(i, v) {
    	processSelectionList(v);
    });

    function processSelectionList(elt) {
        var selInfoId = $("#" + $(elt).attr("selectionInfoId"));
        var labelsArray = [];
        var resultMap = {};
        var lis = $(elt).children('li');
        for(var i = 0; i < lis.length; i++) {
        	var lbl = $(lis[i]);
            if(lbl.hasClass("m1-selected")) {
            	resultMap[lbl.attr('name')] = true;
                if (selInfoId) {
                	labelsArray.push(lbl.text());
                }
            }
        }
        var hiddenSel = $("#" + $(elt).attr("hiddenInputId"));
                hiddenSel.children('option').each(function() {
        	var el = $(this).get(0);
        	el.selected = resultMap[el.value];
        });

        if (selInfoId) {
        	if ($(elt).attr('multiple')=='false') {
        		selInfoId.text(labelsArray[0]);
        	} else {
        		selInfoId.text("" + labelsArray.length);
        	}
        }
    }
    
    function tableListMngt(item) {    	
        var elt = $(item).closest('ul')[0];     
        if($(elt).attr('multiple')=='false') {
            $(elt).children('li').removeClass("m1-selected m1-sl-select m1-sl-unselect");
            $(item).addClass('m1-selected');
            setTimeout(function() {
            	$(item).addClass("m1-sl-select");
            }, 0);
        } else {
            if ($(item).is(".m1-selected")) {
            	$(item).removeClass("m1-sl-select m1-selected");
            	$(item).addClass('m1-sl-unselect');
            } else {
            	$(item).removeClass("m1-sl-unselect");
            	$(item).addClass("m1-selected m1-sl-select");
            }
        }
                setTimeout(function() {
        	$(elt).children('li').removeClass("m1-sl-select m1-sl-unselect");
        	}, 350); 
        processSelectionList(elt);
    }
    	
   function SetCookie(sName, sValue) {
           document.cookie = sName + "=" + escape(sValue);
           var date = new Date();
           var expdate = date.getTime();
           expdate += 3600*1000 //expires (milliseconds - 1000 is for a day)
           date.setTime(expdate);
           document.cookie += ("; expires=" + date.toUTCString());
   }

   
   function GetCookie(sName) {
           var aCookie = document.cookie.split("; ");
           for (var i=0; i < aCookie.length; i++)
           {
                   var aCrumb = aCookie[i].split("=");
                   if (sName == aCrumb[0])
                           return unescape(aCrumb[1]);
           }
           return null;
   }

   if(window.navigator.standalone != true) {
           if(GetCookie('phc')) {
                   // Hide the dialog box - to avoid scrolling
                   $('#m1-homescreen-prompt') .hide();
           } else {
                   // Show prompt dialog
                   SetCookie('phc','true');
                   $('#m1-homescreen-prompt') .css({top: '400px', opacity: '0.0'});
                   setTimeout(function() { $('#m1-homescreen-prompt') .animate({top: '300px', opacity: '1.0'}, 400); }, 600);
                   setTimeout(function() { $('#m1-homescreen-prompt') .animate({opacity: '0'}, 400); }, 5000);
           }
   } else {
		$('#m1-homescreen-prompt') .hide();
   }
	
});

function hideAddressBar() {
	setTimeout(function() { window.scrollTo(0, 1) }, 100);
}

function showActivityIndicator() {
    $('.m1-loading').show();
}

function hideActivityIndicator() {
	$('.m1-loading').hide();
}


function submitForm(formId, button, url) {
    var result = false;
    var form = document.forms(formId);
    if (form == null) return result;
    
    var onsubmitName = "preSubmitForm" + form.name;
    if (onsubmitName in window) {
        result = window[onsubmitName](form);
        if (result == false) {
        	return result;
        }
    }   
    
    var method = $(form).attr('method');
    var str = $(form).serialize();
    var path = $(form).attr('action');
    var aftersubmitName = "postSubmitForm" + form.name;
    
    jQuery.ajax({
        type: method,
        url: path,
        data: str,
        //dataType: "html", //let smart data detection happen here
        beforeSend: function(){ 
            showActivityIndicator();
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
        	hideActivityIndicator();
        	if (aftersubmitName in window) {
        		window[aftersubmitName](false,textStatus);
        	}        	 
        },
        success: function(data){
           	result = true;

           	if (aftersubmitName in window) {
           		result = window[aftersubmitName](true, data);
        	}
           	
           	hideActivityIndicator();
           	
           	if (result && url) {
           		// If has link, then goto it
           		mobione.navigateToScreen($(url), $(button).closest('.m1-root'), button);
           	}
        }
    });   

    return result;
}




