
    var special_item=new Array("confirm","multiple_choice","checkboxes","captcha","paragraph_text","drop_down","name_text","date","time","address","price","section_break","file_upload", "comments");
    var reqFields=new Array();

    
    (function($) {
        $.contact = {
                getTimeField: function(elem,elem_id){
                    var html="";
                    html+=this.getHeader(elem,elem_id);    
                    if(elem["required"]=="on")
                        class_name="required";
                    else
                        class_name="optional";
                    option=",custom[onlyNumber]";
                    
                    html += '<input type="hidden" name="item['+elem_id+'][label]" value="'+elem['label']+'"/>';
                    html += '<input type="hidden" name="item['+elem_id+'][id]" value="'+elem_id+'"/>';
                    
                    html+='<span class="two-column">';
                    html+='<input class="validate['+class_name+option+'] text-input hour" id="'+elem_id+'_heure" type="text" name="item['+elem_id+'][value][hour]" maxlength="2" /><span>:</span>';
                    html+='<br/><small>HH</small>';
                    html+='</span>';
                    html+='<span class="two-column">';
                    html+='<input class="validate['+class_name+option+'] text-input minutes" id="'+elem_id+'_minute" type="text"name="item['+elem_id+'][value][minutes]" maxlength="2" />';
                    html+='<br/><small>MM</small>';
                    html+='</span>';
                    html+="<div style='clear:both'></div>";
                    html+="<small>"+elem.guidelines+"</small>";
                    html+="</div>";

                    if(elem["required"]!="" && elem["required"]=="on")
                    {
                        reqFields[elem_id+"Vheure"]=true;
                        reqFields[elem_id+"Vminute"]=true;
                    }    
                    return html;    
                },

            
                setRadionActions: function(parrent){
                    var children=$(parrent).children(":input");
                    $(children).click(function(){ 
                            $(children).removeAttr("checked");
                            $(this).attr("checked","''");
                        });
                },

                getFieldType: function(key){
                    for(type in special_item)
                    {
                        if(key.indexOf(special_item[type])!=-1)
                        {
                            if(key.indexOf("address")!==-1) 
                                return "address";
                            else if( key.indexOf("paragraph_text")!==-1 || key.indexOf("comments")!==-1 )
                                return "paragraph";
                            else if(key.indexOf("drop_down")!==-1) 
                                return "select";
                            else if(key.indexOf("name_text")!==-1)
                                return "name";
                            else if(key.indexOf("date")!==-1) 
                                return "date";
                            else if(key.indexOf("time")!==-1)
                                return "time";
                            else if(key.indexOf("price")!==-1)
                                return "price";
                            else if(key.indexOf("file_upload")!==-1)
                                return "upload";
                            else if(key.indexOf("confirm")!==-1)
                                return "confirm";
                            else if(key.indexOf("checkboxes")!==-1)
                                return "checkboxe";
                            else if(key.indexOf("multiple_choice")!==-1)
                                return "multiple";
                            else if(key.indexOf("section_break")!==-1)
                                return "break";
                            else
                                return;    
                        }
                    }
                    return "simple";
                },    
                
                getHeader: function(elem,elem_id){
                    var quide="";
                    if(typeof(elem.guidelines)!="undefined")
                        quide=elem.guidelines;
                        
                    elem["size"]=(!elem["size"])? "small" : elem["size"];
                    if(typeof(elem["size"])!="undefined")
                        switch(elem["size"])
                        {
                            case '25' : { sizeClass="Small"; break; }
                            case '40' : { sizeClass="Medium"; break; }
                            case '55' : { sizeClass="Large"; break; }
                            default:    { sizeClass="Medium"; break; }
                        }
                    else
                        sizeClass="Medium";

                    var html="";
                    className = (elem && elem["className"]) ? elem["className"] : ""
                    html+="<div class='"+className+" formItem id_"+elem_id+" "+sizeClass+"'>";
                    html+="<label class='infoLabel' for='"+elem_id+"'>";
                    html+=elem["label"];
                    if(elem["required"]==="on")
                        html+="<span class='required'> *</span>";
                    html+="</label>";
                    return html;
                },
                
                getSimpleField: function(elem,elem_id){
                    var html="";
                    
                    html+=this.getHeader(elem,elem_id);
                    html+="<span class='simpleInputFrame'></span>";
                    if(elem["required"]=="on")
                        class_name="required"; 
                    else
                        class_name="optional";
                    option="";
                    if(elem_id.indexOf("number")!=-1)
                        option=",custom[onlyNumber]";    
                    else if(elem_id.indexOf("mail")!=-1 || elem_id.indexOf("email")!=-1) 
                        option=",custom[email]";    

                    html+="<input  type=\"hidden\" value='"+elem.id+"' name='item["+elem_id+"][id]' />";  
                    html+="<input  type=\"hidden\" value='"+elem.label+"' name='item["+elem_id+"][label]' />";  
                    addValue = ( elem["id"].indexOf("web_site") != -1 ) ? "http://" : "";
                    html+="<input id='"+elem_id+"' type=\"text\" value='"+addValue+"' name='item["+elem_id+"][value]' class='"+sizeClass+" validate["+class_name+option+"] text-input'/>";
                    html+="<small>"+elem.guidelines+"</small>";
                    html+="</div>";
                    if(elem["required"]!="" && elem["required"]=="on")
                        reqFields[elem_id]=true;
                    return html;        
                },

                getParagraphField: function(elem,elem_id){
                    if(elem["required"]=="on")
                        class_name="required"; 
                    else
                        class_name="optional";
                    var singleText=false;
                    if(typeof(dataContact[elem_id].single) && dataContact[elem_id].single=="on" && dataContact[elem_id].singleContent)
                        singleText=true;
                    var html="";
                    html+=this.getHeader(elem,elem_id);
                    html+="<span class='simpleInputFrame'></span>";
                    
                    if(singleText==true)
                        html+="<div class='singleText'>"+dataContact[elem_id].singleContent+"</div>";
                    else
                    {
                        if(elem["required"]=="on")
                        {
                            class_name="required";
                            reqFields[elem_id]=true;
                        }
                        else
                            class_name="optional";
                        html+="<input  type=\"hidden\" value='"+elem.id+"' name='item["+elem_id+"][id]' />";  
                        html+="<input  type=\"hidden\" value='"+elem.label+"' name='item["+elem_id+"][label]' />"; 
                        html+='<textarea id="'+elem_id+'" class="'+sizeClass+' validate['+class_name+'] text-input" type="text" rows="5" cols="30" name="item['+elem_id+'][value]"></textarea>';                        
                    }
                    html+="<small>"+elem.guidelines+"</small>";
                    html+="</div>";
                    return html;    
                },

                getAddressField: function(elem,elem_id){
                    var html="";
                    if(elem["required"]=="on")
                        class_name="required";
                    else
                        class_name="optional";
                    html+=this.getHeader(elem,elem_id);
                    
                    html+="<input  type=\"hidden\" value='"+elem_id+"' name='item["+elem_id+"][id]' />";
                    html+="<input  type=\"hidden\" value='"+elem.label+"' name='item["+elem_id+"][label]' />";
                    
                    html+='<span class="two-column">';
                    html+="<input id='"+elem_id+"_rue' class='validate["+class_name+"] text-input addressInput address' type='text' name='item["+elem_id+"][value][rue]'/>";
                    html+='<small class="space">'+contact_adresse_street+'</small>';
                    html+='</span>';

                    html+='<span class="two-column">';
                    html+="<input id='"+elem_id+"_ville' class='validate["+class_name+"] text-input addressInput city' type='text' name='item["+elem_id+"][value][ville]' />";
                    html+='<small class="space">'+contact_adresse_city+'</small>';
                    html+='</span>';
                    
                    html+='<div class="clear"></div>';
                    
                    html+='<span class="two-column">';
                    html+="<input id='"+elem_id+"_zip' class='validate["+class_name+"] text-input addressInput zip' type='text' name='item["+elem_id+"][value][zip]'/>";
                    html+='<small class="space">'+contact_adresse_zip+'</small>';
                    html+='</span>';

                    html+='<span class="two-column">';
                    html+="<input id='"+elem_id+"_pays' class='validate["+class_name+"] text-input addressInput country' type='text' name='item["+elem_id+"][value][pays]'/>";
                    html+='<small class="space">'+contact_adresse_country+'</small>';
                    html+='</span>';
                    
                    html+='<div class="clear"></div>';
                    html+="<small>"+elem.guidelines+"</small>";
                    html+="</div>";

                    if(elem["required"]!="" && elem["required"]=="on")
                    {
                        reqFields[elem_id+"Vrue"]=true;
                        reqFields[elem_id+"Vville"]=true;
                        reqFields[elem_id+"Vzip"]=true;
                        reqFields[elem_id+"Vpays"]=true;
                    }    
                    return html;
                },
                
                getSelectField: function(elem,elem_id){
                    var html="";
                    html+=this.getHeader(elem,elem_id);
                    //class="validate['+class_name+'] text-input"
                    if(elem["required"]=="on")
                        class_name="required";
                    else
                        class_name="optional";
                        
                    html+="<input  type='hidden' value='"+elem_id+"' name='item["+elem_id+"][id]' />";  
                    html+="<input  type='hidden' value='"+elem.label+"' name='item["+elem_id+"][label]'/>"; 
                    html+="<select name='item["+elem_id+"][value]' class='contactSelect'>";

                    for(key in elem["drop_down"]){
                        var selected = (elem["drop_down"][key]["selected"] === true || elem["drop_down"][key]["selected"] == "true")? "selected=''" : "";
                        html+='<option  '+selected+' class="'+elem_id+'">'+elem["drop_down"][key]["label"]+'</option>';    
                    }    
                    html+="</select>";
                    html+="<small>"+elem.guidelines+"</small>";
                    html+="</div>";
                    return html;
                },

                getNameField: function(elem,elem_id){
                    
                    var html="";
                    html+=this.getHeader(elem,elem_id);    
                    if(elem["required"]=="on")
                        class_name="required";
                    else
                        class_name="optional";
                    html+="<input  type=\"hidden\" value='"+elem_id+"' name='item["+elem_id+"][id]' />";  
                    html+="<input  type=\"hidden\" value='"+elem.label+"' name='item["+elem_id+"][label]' />"; 
                    
                    html+='<span class="two-column">';
                    html+='<input id="'+elem_id+'_first" class="validate['+class_name+'] text-input" type="text" name="item['+elem_id+'][value][first]" />';
                    html+='<br/><small>'+contact_name_first+'</small>';
                    html+='</span>';
                    html+='<span class="two-column">';
                    html+='<input id="'+elem_id+'_last" class="validate['+class_name+'] text-input" type="text" name="item['+elem_id+'][value][last]"/>';
                    html+='<br/><small>'+contact_name_last+'</small>';
                    html+='</span>';
                    html+='<div style="clear:both"></div>';
                    html+="<small>"+elem.guidelines+"</small>";
                    html+="</div>";

                    if(elem["required"]!="" && elem["required"]=="on")
                    {
                        reqFields[elem_id+"Vfirst"]=true;
                        reqFields[elem_id+"Vlast"]=true;
                    }
                    
                    return html;
                },

                getDateField: function(elem,elem_id){
                    var html="";
                    html+=this.getHeader(elem,elem_id);    
                    if(elem["required"]=="on")
                        class_name="required";
                    else
                        class_name="optional";
                    option = "";
                    
                    html+="<input  type=\"hidden\" value='"+elem_id+"' name='item["+elem_id+"][id]' />";  
                    html+="<input  type=\"hidden\" value='"+elem.label+"' name='item["+elem_id+"][label]' />"; 
                    
                    html += "<input class='validate["+class_name+option+"] datepicker' type='text' name='item["+elem_id+"][value]' id='' value='' />";
                    html+="<small>"+elem.guidelines+"</small>";
                    html+="</div>";

                    if(elem["required"]!="" && elem["required"]=="on")
                    {
                        reqFields[elem_id+"Vjour"]=true;
                        reqFields[elem_id+"Vmois"]=true;
                        reqFields[elem_id+"Van"]=true;
                    }    
                    return html;    
                },

                getPriceField: function(elem,elem_id){
                    var html="";
                    html+=this.getHeader(elem,elem_id);    
                    if(elem["required"]=="on")
                        class_name="required";
                    else
                        class_name="optional";
                    option=",custom[onlyNumber]";
                    
                    html+="<input  type=\"hidden\" value='"+elem_id+"' name='item["+elem_id+"][id]' />";  
                    html+="<input  type=\"hidden\" value='"+elem.label+"' name='item["+elem_id+"][label]' />"; 
                    
                    html+='<span class="two-column">';
                    html+='<input class="validate['+class_name+option+'] text-input euro" id="'+elem_id+'_euro" type="text" size="3" name="item['+elem_id+'][value][euro]" /><span>,</span>';
                    html+='<br><small>'+contact_euro+'</small>';
                    html+='</span>';
                    html+='<span class="two-column">';
                    html+='<input class="validate['+class_name+option+'] text-input cents" id="'+elem_id+'_cents" type="text" size="3" name="item['+elem_id+'][value][cent]"  maxlength="2" />';
                    html+='<br><small>'+contact_cents+'</small>';
                    html+='</span>';
                    html+='<div style="clear:both"></div>';
                    html+="<small>"+elem.guidelines+"</small>";
                    html+="</div>";

                    if(elem["required"]!="" && elem["required"]=="on")
                    {
                        reqFields[elem_id+"Veuro"]=true;
                        reqFields[elem_id+"Vcents"]=true;
                    }
                    
                    return html;
                },

                getUploadField: function(elem,elem_id){
                    
                    html = $("#ajaxUpload").html();
                    html = html.replace("xxxDirectivexxx",elem["guidelines"]);
                    return html; 
                },
                
                getConfirmField: function(elem, elem_id){
                    html = $("#clientConfirmTpl").html();
                    html = (elem && elem["label"]) ? html.replace("xxxLabelxxx", '<label for="comments" class="infoLabel">'+elem["label"]+'</label>') : html.replace("xxxLabelxxx", "");   
                    return html;
                },
                
                getCheckboxesField: function(elem,elem_id){
                    var html="";
                    html+=this.getHeader(elem,elem_id);
                    if(elem["required"]=="on")
                        class_name="required";
                    else
                        class_name="optional";    
                    
                    html += '<input type="hidden" name="item['+elem_id+'][label]" value="'+elem['label']+'"/>';
                    html += '<input type="hidden" name="item['+elem_id+'][id]" value="'+elem_id+'"/>';
                    
                    for(key in elem["checkboxes"]){
                        var selected=(elem["checkboxes"][key]["checked"] && elem["checkboxes"][key]["checked"]!="false")? "checked=''" : "";
                        html+='<span class="option"><input value ="'+elem["checkboxes"][key]["label"]+'" name="item['+elem_id+'][value]['+key+']" '+selected+' type="checkbox" class="checkbox" />'+elem["checkboxes"][key]["label"]+"</span>";
                    }
                    html+="<small>"+elem.guidelines+"</small>";
                    html+="</div>";    
                    return html;
                },
                
                SelectRadio: function(elem){
                   className = $(elem).attr("class");
                   $("."+className).attr("checked",false);
                   $(elem).attr("checked",true);
                },

                getMultipleField: function(elem,elem_id){
                    var html="";
                    html+=this.getHeader(elem,elem_id);
                    if(elem["required"]=="on")
                        class_name="required";
                    else
                        class_name="optional";  
                    
                    html += '<input type="hidden" name="item['+elem_id+'][label]" value="'+elem['label']+'"/>';
                    html += '<input type="hidden" name="item['+elem_id+'][id]" value="'+elem_id+'"/>';
                    
                    for(key in elem["multiple"]){
                        var selected=(elem["multiple"][key]["selected"] && elem["multiple"][key]["selected"]!="false")? "checked=''" : "";
                        
                        html+="<span class='option'><input class='radio radio_"+elem_id+"' onClick='$.contact.SelectRadio(this);' name='item["+elem_id+"][value]' "+selected+" type='radio' value='"+elem["multiple"][key]["label"]+"' class='radio' />"+elem["multiple"][key]["label"]+"</span>";
                    }
                    html+="<small>"+elem.guidelines+"</small>";
                    html+="</div>";    
                    return html;
                },
                
                
                getHtml: function(){
                    if( typeof(params_titre) == "undefined")
                        params_titre = "";
                    var html='<fieldset><legend class="FormTitle">'+params_titre+'</legend>';
                    var existeBreak=false;
                    for(key in dataContact)
                    { 
                        if( !this.firstFocus && dataContact[key].id)
                            this.firstFocus = dataContact[key].id;
                        switch(this.getFieldType(key))
                        {
                            case "simple":{
                                html+=this.getSimpleField(dataContact[key],key); 
                                break;
                            }
                            case "paragraph":{
                                html+=this.getParagraphField(dataContact[key],key);
                                break;
                            }
                            case "select":{
                                html+=this.getSelectField(dataContact[key],key); 
                                break;
                            }
                            case "name":{
                                html+=this.getNameField(dataContact[key],key);
                                break;
                            }
                            case "address":{
                                html+=this.getAddressField(dataContact[key],key); 
                                break;
                            }
                            case "date":{
                                html+=this.getDateField(dataContact[key],key);
                                break;
                            }
                            case "time":{
                                html+=this.getTimeField(dataContact[key],key);
                                break;
                            }
                            case "price":{ 
                                html+=this.getPriceField(dataContact[key],key); 
                                break;
                            }
                            case "upload":{
                                html+=this.getUploadField(dataContact[key],key); 
                                break;
                            }
                            case "confirm":{
                                html+=this.getConfirmField(dataContact[key],key); 
                                break;
                            }
                            case "checkboxe":{
                                html+=this.getCheckboxesField(dataContact[key],key);
                                break;
                            }
                            case "multiple":{

                                var code='var parrent=$(".id_'+key+'");';
                                html+=this.getMultipleField(dataContact[key],key);            
                                eval (code);
                                this.setRadionActions(parrent);
                                break;
                            }                 
                            case "break":{
                                className = (dataContact[key]["className"] && dataContact[key]["className"] != "") ? "class='"+dataContact[key]["className"]+"'" : "";
                                if (dataContact[key]["guidelines"] == ""){
                                    html +="</fieldset><fieldset "+className+">";
                                } else {
                                    html +="</fieldset><fieldset "+className+"><legend>"+dataContact[key]["guidelines"]+"</legend>";
                                }
                                break;
                            }
                            
                        }
                        
                    }
                    if(existeBreak==true)
                        html+=("</fieldset>");
                    $("#infoFrame").append(html);    
                    getPlugins();            
                },


                checkReqField: function(){
                    var error="";
                    for(key in reqFields)
                    {
                        var val=$("[name="+key+"]").val();
                        if(!val)
                        {
                            if(!error)
                                error+=contact_empty_fields+"\n";
                            error+=key+"\n";
                        }            
                    }
                    return error;
                },
                
                send: function(formID){
                    if( !formID)
                        return;
                    jQuery(function(){
                         res = $("#contactForm-"+formID).validationEngine({
                            success : true,
                            ajaxSubmit: true,
                            failure : false,
                            returnIsValid: true
                           
                        })
                    });
                    if(!res)
                        return;
                    
                    var params=$('#contactForm-'+formID).serialize();  
                    
                    $.ajax({                    
                        url: urlToSend,
                        type: 'POST',
                        data: params,
                        error: function(){
                            $("#contactForm-"+formID).css("display", "none");
                            $("#sendConfirm-"+formID).html(contact_send_error_server+"<br/>"+contact_send_try_later);
                            $("#sendConfirm-"+formID).show(); 
                        },
                        success: function(res) {    
                            $("#contactForm-"+formID).css("display", "none");
                            if(res && res == "Sended"){
                                if(contact_redirect){   
                                    if( contact_redirect.indexOf("http://") == -1 )
                                        window.location.href = "http://"+contact_redirect;
                                    else
                                        window.location.href = contact_redirect;  
                                    return;  
                                }
                                $("#sendConfirm-"+formID).html(contact_send_success);
                                
                            }
                            else
                                $("#sendConfirm-"+formID).html(contact_send_error+"<br/>"+contact_send_try_later);
                                
                            $("#sendConfirm-"+formID).show();
                        }
                    });
                }
        }
    })(jQuery);
    function getPlugins(){
        if( $('#file_upload').length == 0 )
            return;
        $(function() {
            $('#file_upload').uploadify({
              
              'uploader'        : cdnRoot+'/global/js/uploadify/uploadify.swf?titre=ilia',
              'script'          : cdnRoot+'/global/js/uploadify/uploadify.php',
              'cancelImg'       : cdnRoot+'/global/media/images/uploadify_cancel.png',
               
              'scriptAccess'    : 'always',
              'allowScriptAccess': "always",
              'fileKey' : fileKey,
              'folder': '/media/uploads/',
              'multi' : true,
              'sitePath' : sitePath,
              'fileExt' : filesToUpload,
              'fileDesc'    : 'Files to upload',
              'removeCompleted' : false
            });                
        });
    }

    $(document).ready(function(){
        if( typeof(dataContact) == "undefined" )
            return;
        $("#confirmTpl").dialog({
            bgiframe: true,                
            closeOnEscape: true,
            autoOpen: false,
            modal: true,            
            width: 400
        });
        $.contact.firstFocus = false;
        $.contact.getHtml();
        $('.datepicker').datepicker({ dateFormat: 'dd/mm/yy' });     
        $("input[type='text']").addClass("ui-input-text");
        $("textarea").addClass("ui-input-text");
    });
