jQuery(document).ready(function(){
	var Apple = {};
	Apple.UA = navigator.userAgent;
	Apple.Device = false;
	Apple.Types = ["iPhone", "iPod", "iPad"];
	for (var d = 0; d < Apple.Types.length; d++) {
		var t = Apple.Types[d];
		Apple[t] = !!Apple.UA.match(new RegExp(t, "i"));
		Apple.Device = Apple.Device || Apple[t];
	}
	jQuery('.bouton_commande').click(function(){
		var tokens = jQuery(this).attr('id').split('_');
		jQuery('#formulaire_commande').find('#commande_musiqueid').val(tokens[1]);
		jQuery('#formulaire_commande').find('#commande_musiquetitre').val($(this).attr("rel"));
	});
	jQuery('.bouton_commande').colorbox({width:"550px", inline:true, href:"#formulaire_commande"});

	jQuery('.ngg-gallery-thumbnail').children('a').colorbox();
	
	jQuery('.video').click(function(){
		element = jQuery(this);
		show_video(element, Apple.Device);
	});
	jQuery('.playbutton, .titre_video, .videotitre').click(function(){
		element = jQuery(this).parent().children('.video');
		show_video(element, Apple.Device);
	});	
	
	Cufon.replace('.titre,.date,.datenews,.ticket,.titre_artiste, .titre_video, .titre_musique, .date_from_to, .date_from_to_concert, h1, h2, h3,.more,#menuDeroulant, .ngg-album-desc',{
		hover: true
	});

	Cufon.replace('#formulaire_commande h2, #message_commande h2',{
		hover: false
	});
	
});

function show_video(element, appleDevide){
	if(!appleDevide){
		video_id = element.attr('id');
		iWidth = element.children('.iWidth').html();
		iHeight = element.children('.iHeight').html();
		iTitle = element.children('.iTitle').html();
		jQuery.colorbox({title:iTitle, iframe:true, innerWidth:iWidth, innerHeight:iHeight, href:"http://www.cameratalausanne.ch/wp-content/themes/camerata/video_embed.php?video_id="+video_id+""});	
	}else{
		iMP4 = element.children('.iMP4').html();
		document.location = iMP4;
	}

}
function passerLaCommande(){

	errors = false;
			
	infos = new Array();

	commande_post_var = jQuery('input[name=commande_post]').val();
	infos['commande_post'] = commande_post_var;

	commande_quantite_var = jQuery('select[name=commande_quantite] option:selected').val();
	infos['commande_quantite'] = commande_quantite_var;
		
	commande_nom_var = jQuery('input[name=commande_nom]').val();
	if(commande_nom_var == ''){
		errors = true;
		jQuery('input[name=commande_nom]').addClass('error');
	}else{
		infos['commande_nom'] = commande_nom_var;
		jQuery('input[name=commande_nom]').removeClass('error');
	}		
	
	commande_prenom_var = jQuery('input[name=commande_prenom]').val();
	if(commande_prenom_var == ''){
		errors = true;
		jQuery('input[name=commande_prenom]').addClass('error');
	}else{
		infos['commande_prenom'] = commande_prenom_var;
		jQuery('input[name=commande_prenom]').removeClass('error');
	}			
			
	commande_adresse_var = jQuery('input[name=commande_adresse]').val();
	if(commande_adresse_var == ''){
		errors = true;
		jQuery('input[name=commande_adresse]').addClass('error');
	}else{
		infos['commande_adresse'] = commande_adresse_var;
		jQuery('input[name=commande_adresse]').removeClass('error');
	}	

	commande_npa_var = jQuery('input[name=commande_npa]').val();
	if(commande_npa_var == ''){
		errors = true;
		jQuery('input[name=commande_npa]').addClass('error');
	}else{
		infos['commande_npa'] = commande_npa_var;
		jQuery('input[name=commande_npa]').removeClass('error');
	}
	
	commande_localite_var = jQuery('input[name=commande_localite]').val();
	if(commande_localite_var == ''){
		errors = true;
		jQuery('input[name=commande_localite]').addClass('error');
	}else{
		infos['commande_localite'] = commande_localite_var;
		jQuery('input[name=commande_localite]').removeClass('error');
	}			
	
	commande_pays_var = jQuery('input[name=commande_pays]').val();
	if(commande_pays_var == ''){
		errors = true;
		jQuery('input[name=commande_pays]').addClass('error');
	}else{
		infos['commande_pays'] = commande_pays_var;
		jQuery('input[name=commande_pays]').removeClass('error');
	}
	
	commande_email_var = jQuery('input[name=commande_email]').val();
	if(!echeck(commande_email_var)){
		errors = true;
		jQuery('input[name=commande_email]').addClass('error');
	}else{
		infos['commande_email'] = commande_email_var;
		jQuery('input[name=commande_email]').removeClass('error');
	}		
	
	commande_telephone_var = jQuery('input[name=commande_telephone]').val();
	infos['commande_telephone'] = commande_telephone_var;
	
	if(!errors){
		jQuery.colorbox({width: "500px",inline:true, href:"#message_commande"});
		theData = serialize(infos);
		jQuery.ajax({
		   type: "POST",
		   url: "../../wp-content/themes/camerata/commande.php",
		   data: "theData="+theData,
		   success: function(msg){
				setTimeout(function(){
					jQuery.colorbox.close();
				}, 3000)
		   }
		 });		
	}
	return false;
}

function echeck(str) {
	if(str != null){
		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;
		var ldot=str.indexOf(dot);
		if (str.indexOf(at)==-1){
			return false;
		}
		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
			return false;
		}
		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
			return false;
		}
		if (str.indexOf(at,(lat+1))!=-1){
			return false;
		}
		if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
			return false;
		}
		if (str.indexOf(dot,(lat+2))==-1){
			return false;
		}
		if (str.indexOf(" ")!=-1){
			return false;
		}
		return true;	
	}else{
		return false;
	}				
}		
function serialize (mixed_value) {
    // http://kevin.vanzonneveld.net
    // +   original by: Arpad Ray (mailto:arpad@php.net)
    // +   improved by: Dino
    // +   bugfixed by: Andrej Pavlovic
    // +   bugfixed by: Garagoth
    // +      input by: DtTvB (http://dt.in.th/2008-09-16.string-length-in-bytes.html)
    // +   bugfixed by: Russell Walker (http://www.nbill.co.uk/)
    // +   bugfixed by: Jamie Beck (http://www.terabit.ca/)
    // +      input by: Martin (http://www.erlenwiese.de/)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net/)
    // +   improved by: Le Torbi (http://www.letorbi.de/)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net/)
    // +   bugfixed by: Ben (http://benblume.co.uk/)
    // -    depends on: utf8_encode
    // %          note: We feel the main purpose of this function should be to ease the transport of data between php & js
    // %          note: Aiming for PHP-compatibility, we have to translate objects to arrays
    // *     example 1: serialize(['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: 'a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}'
    // *     example 2: serialize({firstName: 'Kevin', midName: 'van', surName: 'Zonneveld'});
    // *     returns 2: 'a:3:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";s:7:"surName";s:9:"Zonneveld";}'

	var _utf8Size = function (str) {
	    var size = 0, i = 0, l = str.length, code = '';
	    for (i = 0; i < l; i++) {
	        code = str.charCodeAt(i);
	        if (code < 0x0080) {
	            size += 1;
	        } else if (code < 0x0800) {
	            size += 2;
	        } else {
	        	size += 3;
			}
	    }
	    return size;
	};
    var _getType = function (inp) {
        var type = typeof inp, match;
        var key;

        if (type === 'object' && !inp) {
            return 'null';
        }
        if (type === "object") {
            if (!inp.constructor) {
                return 'object';
            }
            var cons = inp.constructor.toString();
            match = cons.match(/(\w+)\(/);
            if (match) {
                cons = match[1].toLowerCase();
            }
            var types = ["boolean", "number", "string", "array"];
            for (key in types) {
                if (cons == types[key]) {
                    type = types[key];
                    break;
                }
            }
        }
        return type;
    };
    var type = _getType(mixed_value);
    var val, ktype = '';
    
    switch (type) {
        case "function": 
            val = ""; 
            break;
        case "boolean":
            val = "b:" + (mixed_value ? "1" : "0");
            break;
        case "number":
            val = (Math.round(mixed_value) == mixed_value ? "i" : "d") + ":" + mixed_value;
            break;
        case "string":
			val = "s:" + _utf8Size(mixed_value) + ":\"" + mixed_value + "\"";
            break;
        case "array":
        case "object":
            val = "a";
            /*
            if (type == "object") {
                var objname = mixed_value.constructor.toString().match(/(\w+)\(\)/);
                if (objname == undefined) {
                    return;
                }
                objname[1] = this.serialize(objname[1]);
                val = "O" + objname[1].substring(1, objname[1].length - 1);
            }
            */
            var count = 0;
            var vals = "";
            var okey;
            var key;
            for (key in mixed_value) {
			    if (mixed_value.hasOwnProperty(key)) {
               	   ktype = _getType(mixed_value[key]);
	               if (ktype === "function") { 
	                   continue; 
	               }
               
	               okey = (key.match(/^[0-9]+$/) ? parseInt(key, 10) : key);
	               vals += this.serialize(okey) +
	                       this.serialize(mixed_value[key]);
	               count++;
		        }
            }
            val += ":" + count + ":{" + vals + "}";
            break;
        case "undefined": // Fall-through
        default: // if the JS object has a property which contains a null value, the string cannot be unserialized by PHP
            val = "N";
            break;
    }
    if (type !== "object" && type !== "array") {
        val += ";";
    }
    return val;
}
