﻿// AJAX GENERIC SEARCH HELPER FILE VERSION 1.0
// COPYRIGHT 2007 DIGITAL TRIP LTD. ALL RIGHTS RESERVED.
// NO PORTION OF THIS CODE MAY BE COPIED, STORED OR DISTRIBUTED WITHOUT PRIOR WRITTEN CONSENT BY DIGITAL TRIP LTD.

// -- Searches array for a specific field --
function ajaxFnArraySearch(arr,srch,srchFld,retFld){
for(var i=0;i<arr.length;i++){if((srchFld==null?arr[i]:arr[i][srchFld])==srch) return (srchFld==null?i:(retFld==null?arr[i]:arr[i][retFld]));}
return null;
}
// -- Add value to array --
function ajaxFnArrayAdd(arr,val){arr[arr.length]=val;}
// -- Shortens text --
function ajaxFnShorten(txt,len){return (txt.length>len?txt.substring(0,len)+'..':txt);}
// -- Sets paging -- TODO: Needs to check max boundary
function ajaxFnSetPage(pN){ajaxVarPgN=(pN>0?pN:1);ajaxFnDrawResults();self.location.href='#imgYourSearch';}
// -- Sets min and max price --
function ajaxFnSetMinMaxPrice(prc){
var u=false;
if(ajaxVarFlt[1]==-1 || ajaxVarFlt[1]>prc){ajaxVarFlt[1]=prc;u=true;}
if(ajaxVarFlt[2]==-1 || ajaxVarFlt[2]<prc){ajaxVarFlt[2]=prc;u=true;}
if(u) ajaxFnUpdPriceRange();
}
// -- Resets all values in array --
function ajaxFnSetAllFilter(a,e,v){for(var i=0;i<a.length;i++){a[i][e]=v;}ajaxFnDrawFilters();ajaxFnDrawResults();}
function ajaxFnResetMaxPrice(){ajaxVarFlt[0]=100;ajaxVarCtPS.setValue(100);ajaxFnUpdPriceRange();}
function ajaxFnResetFilter(a,v){for(var i=0;i<a.length;i++){a[i][a[i].length-1]=v;} }
function ajaxFnFilterSet(a,v,c){
    for(var i=0;i<a.length;i++){if(a[i][0]==c) a[i][a[i].length-1]=v;}
    ajaxFnDrawResults(true);
}
function ajaxFnFilterCheck(a,c){
    for(var i=0;i<a.length;i++){if(a[i][0]==c) return a[i][a[i].length-1];}
}
// -- Updates progress bar --
function ajaxUpdProgress(t,r){var pC=parseInt((100/t)*(t-r));if(pC==0)pC=10;$('divAjaxProgTxt').innerHTML=pC+'%';$('divAjaxProgBar').style.backgroundPosition='-'+(214-parseInt((208/100)*pC))+'px -3px'; }
// -- Get xml element by tag name --
function ajaxFnXmlGEBTN(x,t){return x.getElementsByTagName(t);}
function ajaxFnXmlGEBTNA(x,t,a){return x.getElementsByTagName(t)[0].getAttribute(a);}
// -- Initialises search --
function ajaxFnInit(){
    ajaxVarUID=queryString('guid');
    ajaxVarCtPS=new Control.Slider('divAjaxFilterPrcH','divAjaxFilterPrcT',{range:$R(0,100),sliderValue:100,step:10,onSlide:function(v){ajaxVarFlt[0]=v;ajaxFnUpdPriceRange();},onChange:function(v){ajaxFnDrawResults(true);}});
    ajaxFnPoller();
}
// -- Stops searching --
function ajaxFnStopSearch(){clearTimeout(ajaxVarCtPE);ajaxFnCompleted();}
// -- Calculate max price from percentage --
function ajaxFnCalcMaxPrice(){return parseInt(ajaxVarFlt[1]+(((ajaxVarFlt[2]-ajaxVarFlt[1])/100)*ajaxVarFlt[0]),10);}
// -- Update price slider range --
function ajaxFnUpdPriceRange(){$('divAjaxFilterPrc').innerHTML=ajaxVarCurrSymbol+ajaxVarFlt[1]+'-'+ajaxVarCurrSymbol+ajaxFnCalcMaxPrice();}
// -- Returns elapsed time since start --
function ajaxFnCheckTimer(){return (new Date()-ajaxVarTmr)/1000;}
// -- Cleans up after polling has finished -- TODO: Show contact form if no results found
function ajaxFnCompleted(){
    objHide('ajaxLoading');objHide('ajaxLoadingPage');if(ajaxVarRes.length==0){objShow('divContact');objShow('divContactProblem');}
}
// -- Handles Ajax.Request errors --
function ajaxFnHandleError(){alert('Sorry, there was a problem receiving your results!');}
// -- Repeat-draws image file --
function ajaxFnDrawImgLoop(img,txt,loop){var h=''; for(var i=0;i<loop;i++){h+='<img src="'+img+'" alt="'+txt+'" title="'+txt+'"/>';} return h;}
// -- Draws pager bar --
function ajaxFnDrawPagerNew(rc){
    var mPC=8;
    var pgC=rc/ajaxVarRPP;
    if(rc % ajaxVarRPP) pgC+=1;
    var h='Page: ';
    for(var i=1;i<=pgC;i++)
    {
        if(pgC>=mPC && (mPC) && i==1){
            h+='<a href="javascript:ajaxFnSetPage('+mPC+');">...</a> | ';
        }
        if(pgC<mPC || (pgC>=mPC && i<=mPC)){
            if(i>1)h+=' | ';
            if(ajaxVarPgN==i) h+='<strong>';
            else h+='<a href="javascript:ajaxFnSetPage('+i+');">';
            h+=''+i+'';
            if(ajaxVarPgN==i) h+='</strong>';
            else h+='</a>';
        }
        if(pgC>=mPC && i==mPC){
            h+=' | <a href="javascript:ajaxFnSetPage('+mPC+');">...</a>';
        }
    }
    $('divAjaxPager1').innerHTML=h;$('divAjaxPager2').innerHTML=h;
}
function ajaxFnDrawPager(rc){
    var pgC=rc/ajaxVarRPP;
    if(rc % ajaxVarRPP) pgC+=1;
    var h='Page: ';
    for(var i=1;i<=pgC;i++)
    {
        if(i>1)h+=' | ';
        if(ajaxVarPgN==i) h+='<strong>';
        else h+='<a href="javascript:ajaxFnSetPage('+i+');">';
        h+=''+i+'';
        if(ajaxVarPgN==i) h+='</strong>';
        else h+='</a>';
    }
    $('divAjaxPager1').innerHTML=h;$('divAjaxPager2').innerHTML=h;
}
// -- Sets sorting --
function ajaxFnSort(fld){
    if(ajaxVarFlt[3]!=fld) ajaxVarFlt[4]=true;
    else ajaxVarFlt[4]=!ajaxVarFlt[4];
    ajaxVarFlt[3]=fld;
    for(var i=0;i<ajaxVarSortLst.length;i++)
    {
        if((i+1)==fld){
            $('divAjaxSortD'+(i+1)).addClassName('box2');$('divAjaxSortD'+(i+1)).addClassName('text1');$('divAjaxSortD'+(i+1)).style.fontWeight='bold';
        }else{
            $('divAjaxSortD'+(i+1)).removeClassName('box2');$('divAjaxSortD'+(i+1)).removeClassName('text1');$('divAjaxSortD'+(i+1)).style.fontWeight='normal';
        }
        //$('divAjaxSortD'+(i+1)).style.backgroundColor=((i+1)==fld?'#F7E6EC':'#E6EFF4');
        $('divAjaxSort'+(i+1)).innerHTML=ajaxVarSortLst[i]+(fld==(i+1)?'<img src="/Assets/Images/Icons/bullet_arrow_'+(ajaxVarFlt[4]?'up':'down')+'.png" alt="Sort by '+ajaxVarSortLst[i]+' '+(ajaxVarFlt[4]?'ascending':'decending')+'" />':'');}
    ajaxFnDrawResults();
}
// -- Sort array alphabetically --
function ajaxFnSortAlpha(a,b){
    if(a==b) return 0;
    return (a<b)?-1:1;
}
// -- Shows the meaning of board basis --
function ajaxFnBoardBasis(bb){
    switch(bb){
    case 'RO':return 'Room Only';break;
    case 'SC':return 'Self Catering';break;
    case 'BB':return 'Bed &amp; Breakfast';break;
    case 'HB':return 'Half Board';break;
    case 'FB':return 'Full Board';break;
    case 'AI':return 'All Inclusive';break;
    default:return 'Unknown';
    }
}
// -- Ajax enquiry form submission --
function validate(field){
   if(objAttach(field).value=="")return false;
   return true;
}
function sendEnquiry(){
   var error=0;
   var strError='';
   var fields=[["contact_name2","first name"],["contact_name3","surname"],["contact_email","email address"],["contact_telno","telephone number"],["contact_televe","evening number"],["contact_mobno","mobile number"],["contact_best","best time"],["enquiry_details","enquiry details"],["contact_additional","comments"]];
   //for (i=0;i<fields.length;i++){
    for (i=0;i<4;i++){
       if(!validate(fields[i][0])){
            strError += 'Please enter a valid '+fields[i][1]+'<br />';
            objAttach('contact_val'+(i+1)).innerHTML = '* ';
            error=1;
       } else { objAttach('contact_val'+(i+1)).innerHTML = ''; }
   }
   if(error==0){
        // send email off
        new Ajax.Request('/Assets/Handlers/Ajax/SendEnquiry.ashx',{
            method:'get',
            parameters:'name1='+objAttach('contact_name1').value+'&name2='+objAttach('contact_name2').value+'&name3='+objAttach('contact_name3').value+'&email='+objAttach('contact_email').value+'&tel='+objAttach('contact_telno').value+'&televe='+objAttach('contact_televe').value+'&telmob='+objAttach('contact_mobno').value+'&best='+objAttach('contact_best').value+'&desc='+objAttach('enquiry_details').innerHTML+'&add='+objAttach('contact_additional').value+'&news='+objAttach('contact_newsletter').checked+'&siteEmail='+objAttach('site_email').value,
            onSuccess: function(transport){
                var xml=transport.responseXML || null;
                if(xml!=null){ objAttach('divContact').innerHTML='<strong>Thank you, your enquiry has been successfuly submitted.</strong>'; }
            },
            onFailure: function(){
                objAttach('divErrors').innerHTML='There was an error sending this form.';
            }
        });
   } else { objAttach('divErrors').innerHTML=strError+'<br />'; }
}

function switchImg(strImg,strImgId,strCheckImg,strFolder,strExtension,strShowHide)
{ 
    if(strCheckImg==null)strCheckImg='AdvancedSearchOn';
    if(strFolder==null)strFolder='Home';
    if(strExtension==null)strExtension='jpg';
    if(strShowHide==null)strShowHide='divAdvanced';
    objShowHideAuto(strShowHide); 
    objAttach(strImgId).src=(objAttach(strImgId).src.indexOf(strCheckImg)==-1?'/Assets/Themes/'+themeID+'/Images/'+strCheckImg+'.'+strExtension+'':'/Assets/Themes/'+themeID+'/Images/'+strImg+'.'+strExtension); return false; 
}

//Setup Selected Result Enquiry Form
function sendResultsEnquiry(id){
    var err='';
    if($('contact_name2_'+id).value.length<2) err+=(err==''?'':', ')+'\n-First name';
    if($('contact_name3_'+id).value.length<2) err+=(err==''?'':', ')+'\n-Surname';
    if($('contact_email_'+id).value.length<2) err+=(err==''?'':', ')+'\n-Email Address';
    if($('contact_telno_'+id).value.length<2) err+=(err==''?'':', ')+'\n-Phone Number';
    if($('contact_best_'+id).value.length<2) err+=(err==''?'':', ')+'\n-Best time to call you';
    if($('contact_additional_'+id).value.length<2) err+=(err==''?'':', ')+'\n-You Enquiry';
    if(err==''){
        //send to handler
        new Ajax.Request('/Assets/Handlers/Ajax/SendResultsEnquiry.ashx',{
            method:'get',
            parameters:'name1='+objAttach('contact_name1_'+id).value+'&name2='+objAttach('contact_name2_'+id).value+'&name3='+objAttach('contact_name3_'+id).value+'&email='+objAttach('contact_email_'+id).value+'&tel='+objAttach('contact_telno_'+id).value+'&best='+objAttach('contact_best_'+id).value+'&desc='+objAttach('search_criteria').value+'&add='+objAttach('contact_additional_'+id).value+'&siteEmail='+objAttach('site_email').value+'&searchdestination='+objAttach('search_destination').value+'&searchurl='+objAttach('search_url').value+'&accommdetails='+objAttach('accomm_details_'+id).value+'&flightdetails='+objAttach('flight_details_'+id).value+'&searchtypeid='+objAttach('search_type_id').value+'&selecteddetails='+objAttach('selected_details_'+id).value,
            onSuccess: function(transport){
                var xml=transport.responseXML || null;
                if(xml!=null){ objAttach('divResultsEnquiry'+id).innerHTML='<div class="divResultsEnquiryMessage"><strong>Thank you, your enquiry has been successfuly submitted.</strong></div>';}
            },
            onFailure: function(){
                objAttach('divErrors_'+id).innerHTML='There was an error sending this form.';
            }
        });
    }else{
        //fire validation
        alert("Please correct the following - "+err);
        return false;
    }
}
