/*
 * Global js for creativo.co.nz
 * should be loaded after jquery
 *
 */
var Creativo = {};

Creativo.Utility = {

    checkEmail: function(email) {
        var pattern = /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i;
        if (!pattern.test(email)) return false;
        return true;
    },

    isUnsignedInt: function(s) {
      return (s.toString().search(/^[0-9]+$/) == 0);
    },

    isUnsignedFloat: function(s) {
      return (s.toString().search(/^[0-9]+$/) == 0) || (s.toString().search(/^[0-9]+\.[0-9]+$/) == 0)
    },

    /**
    * show the global message
    */
    showMsg: function(msg,title) {
        $('#msgGlobalBody').html(msg);

        var name = 'Info';

        if(title) {
            name = title;
        }
        
        $('#msgGlobalHeader').html(name);
        openStaticPopup("msgGlobal", "msgGlobal", 350);
    },

    /**
     * close the global message
     */
    closeMsg: function() {
        $.closePopupLayer('msgGlobal');
    },

    /**
     * to show the global loading message box
     */
    showLoading: function() {
        openStaticPopup("loadingGlobal", "loadingGlobal", 350);
    },

    /**
     * to close the global loading message box
     */
    closeLoading: function() {
        $.closePopupLayer('loadingGlobal');
    },
    
    /**
     * repeat string
     * @param string  s -- string to repeat
     * @param integer n -- occurance number
     */
    strRepeat: function (s, n){
        var a = [];
        while(a.length < n){
            a.push(s);
        }
        return a.join('');
    },
    
    /**
     * get formatted order number
     * @param string oid -- order id
     */
    getOrderNumber: function(oid) {
    	oid = String(oid);
    	var left_num = 7 - oid.length;
    	return Creativo.Utility.strRepeat('0',left_num) + oid;
    },
    
    /**
     * press enter to submit form
     * @param event_field -- input id for event to bind
     * @form_id -- form to submit
     */
    enterKeyToSubmit: function(event_field, form_id) {
    	$('#'+event_field).bind('keypress', function(e) {
    		var code = (e.keyCode ? e.keyCode : e.which);
    		if(code == 13) { //Enter keycode
    		   $('#'+form_id).submit();
    		}
    	}); 
    },

    loginBoxTextControl: {

        initialise: function() {

            $(['boxLoginMail', 'boxLoginPassword']).each(function(index,id){
                var input = $('#'+id);
                var input_fake = $('#'+id+'Fake');

                input_fake.bind('focus',function(){
                    $(this).hide();
                    input.val('').show().focus();
                });

                input.bind('blur',function(){
                    var str = $.trim($(this).val());
                    if(str.length == 0) {
                        $(this).hide();
                        input_fake.show();
                    }
                });

            })
        }
    }
    

}

//Dependcy js file loader
var DCL = {

    /*
	 * load the js file immediately
	 * @param url -- url of the file
	 * @param callback -- callback function after file loaded
     */
	loadScript: function (url, callback){
	  var script = document.createElement("script")
	  script.type = "text/javascript";
	  if(callback) {
		  if (script.readyState){  //IE
			  script.onreadystatechange = function(){
				  if (script.readyState == "loaded" ||
						  script.readyState == "complete"){
					  script.onreadystatechange = null;
					  callback();
				  }
			  };
		  } else {  //Others
			  script.onload = function(){
				  callback();
			  };
		  }
	  }
	  script.src = url;
	  document.getElementsByTagName("head")[0].appendChild(script);
	},

	/*
	 * load the js file at the end after DOM and images loaded
	 * @param url -- url of the file
	 * @param callback -- callback function after file loaded
     */
	loadAtEnd :function (url, callback){
	  $(window).load( function() {DCL.loadScript(url, callback)});
	},
	
	/*
	 * load google analytics
	 */
	loadGa : function () {
		var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
		DCL.loadAtEnd(gaJsHost + "google-analytics.com/ga.js", function() {
			try {
				var pageTracker = _gat._getTracker("UA-1765108-51");
				pageTracker._trackPageview();
			} catch(err) {}
		});
	}

};



/**
 * Get the value of a cookie.
 * @example $.cookie('the_cookie');
 *
 * Set the value of a cookie.
 * @example $.cookie('the_cookie', 'the_value');
 *
 * Create a cookie with all available options.
 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
 *
 * Create a session cookie.
 * @example $.cookie('the_cookie', 'the_value');
 *
 * Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain used when the cookie was set.
 * @example $.cookie('the_cookie', null);
 *
 *
 * @param String name The name of the cookie.
 * @param String value The value of the cookie.
 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
 *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
 *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
 *                             when the the browser exits.
 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
 *                        require a secure protocol (like HTTPS).
 * @type undefined
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */
jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};

/******************************************************/
/** run on pape load **/
/******************************************************/

$(document).ready(function() {
    //press enter on header password field to sigin in
	if($('#boxLoginPassword').length>0) {
		Creativo.Utility.enterKeyToSubmit('boxLoginPassword', 'boxLoginForm');
                Creativo.Utility.loginBoxTextControl.initialise();
	}
});
