var defaultMinDate = '2008-01-01';
var defaultMaxDate = '2012-12-31';
var calendarPopUp;
var dp_xml = '<configs><statecfg><mindate>'+defaultMinDate+'</mindate><maxdate>'+defaultMaxDate+'</maxdate><dateformat>m/d/Y</dateformat></statecfg><initcfg><name>base</name><mode>popup</mode><multiselect>no</multiselect></initcfg></configs>';
var member = false;
var shownVideo = 0;

function isValidEmail(str) {
    return str.match(new RegExp("^([a-zA-Z0-9_]|\\-|\\.)+@(([a-zA-Z0-9_]|\\-)+\\.)+[a-zA-Z]{2,4}$"));
}

function checkFields() {
    var i, a=checkFields.arguments;
    for(i=0;i<a.length;i++) {
        var obj = $(a[i]);
        if(obj && !obj.value.length) {
            alert("Empty field '"+obj.name+"'");
            return false;
        }
        if (obj && obj.name.match(/(.*?)email(.*?)/i)) {
            if (!isValidEmail(obj.value)) {
                alert("Wrong email format");
                return false;
            }
        }
    }
    return true;
}

function checkRegForm() {
    if (!checkFields('Email', 'Password', 'PasswordMatch', 'FirstName', 'LastName', 'Phrase')) {
        return false;
    }
    if ($('Password').value!=$('PasswordMatch').value) {
            alert("Passwords are different");
            return false;
    }
    if (!$('IAgree').checked) {
            alert("You should accept legal terms");
            return false;
    }
    return true;
}

function checkProfileForm() {
    if (!checkFields('Password', 'PasswordMatch')) {
        return false;
    }
    if ($('Password').value!=$('PasswordMatch').value) {
            alert("Passwords are different");
            return false;
    }

    return true;
}

function validateForm1() {
    if (!checkFields('ArrivalDate')) {
        return false;
    }
    if (parseInt($('NumDays').value)<0) {
        alert("Select # of days");
        return false;
    }
    if (parseInt($('adults_num').value)<0) {
        alert("Select # of adults");
        return false;
    }
    if (parseInt($('FlightFrom').value)<0) {
        alert("Select Departure City");
        return false;
    }
    if (!$('Maui').checked && !$('Kauai').checked && !$('Oahu').checked && !$('Molokai').checked && !$('Lanai').checked && !$('Big_Island').checked) {
        alert("Select island");
        return false;
    }
    if (!validateForm2()) {
    	return false;
    }
    return true;
}

function validateForm2() {
    if (!checkFields('QuoteName','YourName','YourEMail','PhoneNumber')) {
        return false;
    }
    return true;
}

function loadById(id) {
    if (++shownVideo>1 && !member) {
        singUpBox('loadById',id);
        return;
    }
    new Ajax.Request('/utils/ajax_video_controller',
    {
        method: 'post',
        parameters: {
            action: 'getById',
            id: id
        },
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success) {
                if ($(commentsBlock)) {
                    $(commentsBlock).innerHTML = responseJS.data.description;
                }
                initPlayer(playerBlock, 'pagePlayer1', responseJS.data.file, responseJS.data.icon, 360, 290);
            }
        }
    });
}

function loadVideoById(id) {
    if (++shownVideo>1 && !member) {
        singUpBox('loadVideoById',id);
        return;
    }
    new Ajax.Request('/utils/ajax_video_controller',
    {
        method: 'post',
        parameters: {
            action: 'getById',
            id: id
        },
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success) {
                initPlayer(playerBlock, 'pagePlayer1', responseJS.data.file, responseJS.data.icon, 360, 290);
            }
        }
    });
}

function loadVPL(id, start, limit, autoplay) {
    $(playlistBlock).innerHTML = '<div style="width:300px;height:245px;display:block;background: url(/js/shadowbox/images/loading.gif) no-repeat center center;" >&nbsp;</div>';
    new Ajax.Request('/utils/ajax_video_controller',
    {
        method: 'post',
        parameters: {
            action: 'getVPL',
            id: id,
            start: start,
            limit: limit
        },
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success && parseInt(responseJS.data.total)) {
                $(playlistBlock).innerHTML = responseJS.data.playlist;
                playListLength = parseInt(responseJS.data.total);
                if (autoplay) {
                    loadById(responseJS.data.first);
                }
            } else {
                $(playlistBlock).innerHTML = '';
            }
        },
        onFailure: function() {
            $(playlistBlock).innerHTML = '';
        }
    });
}

function getPrevPlayList() {
    if (defStart<=0) {
        defStart = 0;
        return;
    } else if (defStart-defLimit>=0) {
        defStart -= defLimit;
    } else {
        defStart = 0;
    }
    loadVPL(defPlayList, defStart, defLimit, false);
}

function getNextPlayList() {
    if (defStart>=playListLength-defLimit) {
        defStart = playListLength-defLimit;
        return;
    } else if (defStart+defLimit>=playListLength-defLimit) {
        defStart = playListLength-defLimit;
    } else {
        defStart += defLimit;
    }
    loadVPL(defPlayList, defStart, defLimit, false);
}

function setPlayList(id) {
    defStart = 0;
    defPlayList = id;
    loadVPL(id, defStart, defLimit, false);
}

function loadVPL2(id, start, limit, autoplay) {
    $(playlistBlock).innerHTML = '<div style="width:300px;height:245px;display:block;background: url(/js/shadowbox/images/loading.gif) no-repeat center center;" >&nbsp;</div>';
    new Ajax.Request('/utils/ajax_video_controller',
    {
        method: 'post',
        parameters: {
            action: 'getVPL2',
            id: id,
            start: start,
            limit: limit,
            block: defBlock
        },
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success && parseInt(responseJS.data.total)) {
                $(playlistBlock).innerHTML = responseJS.data.playlist;
                playListLength = parseInt(responseJS.data.total);
                if (autoplay) {
                    loadById(responseJS.data.first);
                }
            } else {
                $(playlistBlock).innerHTML = '';
            }
        },
        onFailure: function() {
            $(playlistBlock).innerHTML = '';
        }
    });
}

function loadVPL3(id, start, limit, autoplay) {
    $(playlistBlock).innerHTML = '<div style="width:300px;height:245px;display:block;background: url(/js/shadowbox/images/loading.gif) no-repeat center center;" >&nbsp;</div>';
    new Ajax.Request('/utils/ajax_video_controller',
    {
        method: 'post',
        parameters: {
            action: 'getVPL2',
            id: id,
            start: start,
            limit: limit,
            block: defBlock
        },
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success && parseInt(responseJS.data.total)) {
                $(playlistBlock).innerHTML = responseJS.data.playlist;
                playListLength = parseInt(responseJS.data.total);
                if (autoplay) {
                    loadVideoById(responseJS.data.first);
                }
            } else {
                $(playlistBlock).innerHTML = '';
            }
        },
        onFailure: function() {
            $(playlistBlock).innerHTML = '';
        }
    });
}

function getPrevPlayList2() {
    if (defStart<=0) {
        defStart = 0;
        return;
    } else if (defStart-defLimit>=0) {
        defStart -= defLimit;
    } else {
        defStart = 0;
    }
    loadVPL2(defPlayList, defStart, defLimit, false);
}

function getNextPlayList2() {
    if (defStart>=playListLength-defLimit) {
        defStart = playListLength-defLimit;
        return;
    } else if (defStart+defLimit>=playListLength-defLimit) {
        defStart = playListLength-defLimit;
    } else {
        defStart += defLimit;
    }
    loadVPL2(defPlayList, defStart, defLimit, false);
}

function setPlayList2(id) {
    defStart = 0;
    defPlayList = id;
    loadVPL2(id, defStart, defLimit, false);
}

function getPrevPlayList3() {
    if (defStart<=0) {
        defStart = 0;
        return;
    } else if (defStart-defLimit>=0) {
        defStart -= defLimit;
    } else {
        defStart = 0;
    }
    loadVPL3(defPlayList, defStart, defLimit, false);
}

function getNextPlayList3() {
    if (defStart>=playListLength-defLimit) {
        defStart = playListLength-defLimit;
        return;
    } else if (defStart+defLimit>=playListLength-defLimit) {
        defStart = playListLength-defLimit;
    } else {
        defStart += defLimit;
    }
    loadVPL3(defPlayList, defStart, defLimit, false);
}

function loadTRPlayList(year, start, limit) {
    new Ajax.Request('/utils/ajax_audio_controller',
    {
        method: 'post',
        parameters: {
            action: 'getPlayList',
            year: year,
            start: start,
            limit: limit
        },
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success) {
                $('player_report_padding').innerHTML = responseJS.playList;
                playListLength = parseInt(responseJS.total);
            } else {
                $('player_report_padding').innerHTML = '';
            }
        },
        onFailure: function() {
            $('player_report_padding').innerHTML = '';
        }
    });
}

function loadTRFirst(year, start, limit) {
    new Ajax.Request('/utils/ajax_audio_controller',
    {
        method: 'post',
        parameters: {
            action: 'getFirst',
            year: year
        },
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success) {
                initPlayer('report_player', 'pagePlayer1', responseJS.file, '/img/report_img.jpg', 216, 181, true);
                $('video_description_padd').innerHTML = responseJS.description;
            }
        }
    });
}

function loadTRById(id) {
    new Ajax.Request('/utils/ajax_audio_controller',
    {
        method: 'post',
        parameters: {
            action: 'getById',
            id: id
        },
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success) {
                $('video_description_padd').innerHTML = responseJS.description;
            } else {
                $('video_description_padd').innerHTML = '';
            }
        }
    });
}

function initPlayer(wrapper, placeholder, theFile, previewImage, width, height) {
        deletePlayer(wrapper, placeholder, 'player1');
        createPlayer(wrapper, placeholder, 'player1', theFile, previewImage, width, height, true, false);
}

function createPlayer(theWrapper, thePlaceholder, thePlayerId, theFile, previewImage, width, height, theStart, playList) {
    deletePlayer(theWrapper, thePlaceholder, thePlayerId);

    var flashvars = {
        file:theFile,
        image: previewImage,
        autostart:theStart,
        playlist:playList
    }

    var params = {
        allowfullscreen:"true",
        allowscriptaccess:"always",
        wmode: 'transparent'
    }

    var attributes = {
        id:thePlayerId,
        name:thePlayerId
    }

    swfobject.embedSWF("/js/flv/player.swf", thePlaceholder, width, height, "9.0", false, flashvars, params, attributes);
}

function deletePlayer(theWrapper, thePlaceholder, thePlayerId) {
        swfobject.removeSWF(thePlayerId);
        var tmp=$(theWrapper);
        if (tmp) { tmp.innerHTML = "<div id=" + thePlaceholder + "></div>"; }
}

function singUpBox(func, id) {
    Shadowbox.open({
        content: '/signup.php?back='+location.href+'&func='+func+'&id='+id,
        type:	'iframe',
        title:	'',
        width:	500,
        height:	200
    });

}

function regMe(form, func, id) {
    new Ajax.Request('/members/login-popup',
    {
        method: 'post',
        parameters: {
            'Email': form.Email.value,
            'Password': form.Password.value
        },
        onSuccess: function(result) {
            var response = result.responseText.evalJSON();
            if (!response.success) {
                location.href = '/login.asp';
            } else {
                member = true;
                /*
                if ($('back').value.length) {
                    location.href = $('back').value;
                }
                */
				if (func) {
					eval(func+"("+id+")");
				}
            }
            Shadowbox.close();
        }
    });
}

function displayBlocks() {
    displayBox('Flight','Flight_box');
    displayBox('Accommodation','Accommodation_box');
    displayBox('Golf','Golf_box');
    displayBox('Car','Car_box');
    displayBox('Activities','Activities_box');
    displayBox('Maui','Maui_Accommodation_box');
    displayBox('Oahu','Oahu_Accommodation_box');
    displayBox('Kauai','Kauai_Accommodation_box');
    displayBox('Big_Island','Big_Island_Accommodation_box');
    displayBox('Molokai','Molokai_Accommodation_box');
    displayBox('Lanai','Lanai_Accommodation_box');
    displayBox('Maui','Maui_Golf_box');
    displayBox('Oahu','Oahu_Golf_box');
    displayBox('Kauai','Kauai_Golf_box');
    displayBox('Big_Island','Big_Island_Golf_box');
    displayBox('Molokai','Molokai_Golf_box');
    displayBox('Lanai','Lanai_Golf_box');
    displayBox('Maui','Maui_Activities_box');
    displayBox('Oahu','Oahu_Activities_box');
    displayBox('Kauai','Kauai_Activities_box');
    displayBox('Big_Island','Big_Island_Activities_box');
    displayBox('Molokai','Molokai_Activities_box');
    displayBox('Lanai','Lanai_Activities_box');
}

function displayBox(elem, div) {
    if ($(elem) && $(div)) {
        $(div).style.display = $(elem).checked ? '' : 'none';
    }
}

function deleteBox(div) {
    if ($(div)) {
        $(div).remove();
    }
}

var MauiGolfBoxes = 0;
var OahuGolfBoxes = 0;
var KauaiGolfBoxes = 0;
var HawaiiGolfBoxes = 0;
var MolokaiGolfBoxes = 0;
var LanaiGolfBoxes = 0;

var MauiActBoxes = 0;
var OahuActBoxes = 0;
var KauaiActBoxes = 0;
var HawaiiActBoxes = 0;
var MolokaiActBoxes = 0;
var LanaiActBoxes = 0;

function addGolfBox(island, div, counter) {
    new Ajax.Request('/utils/ajax_booking_controller',
    {
        method: 'post',
        parameters: {
            action: 'newGolfBox',
            island: island,
            count: counter
        },
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success) {
                var elemDiv = $(div);
                if (elemDiv) {
                    elemDiv.insert(responseJS.data, elemDiv);
                }
            }
        }
    });
}

function addActBox(island, div, counter) {
    new Ajax.Request('/utils/ajax_booking_controller',
    {
        method: 'post',
        parameters: {
            action: 'newActBox',
            island: island,
            count: counter
        },
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success) {
                var elemDiv = $(div);
                if (elemDiv) {
                    elemDiv.insert(responseJS.data, elemDiv);
                }
            }
        }
    });
}

function loadCourses(island) {
    if (!island) {
        return;
    }
    new Ajax.Request('/utils/ajax_dots_controller',
    {
        method: 'post',
        parameters: {
            action: 'getCourseByIslandId',
            id: island
        },
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success) {
                if (responseJS.points.length && $('island_map')) {
                    drawPoints(responseJS.points);
                    drawTT(responseJS.points);
                }
            }
        }
    });
}

function loadCourse(id) {
    if (!id) {
        return;
    }
    new Ajax.Request('/utils/ajax_dots_controller',
    {
        method: 'post',
        parameters: {
            action: 'getByCourseId',
            id: id
        },
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success) {
                if (responseJS.points.length && $('island_map')) {
                    drawPoints(responseJS.points);
                    drawTT(responseJS.points);
                }
            }
        }
    });
}

function loadResorts(island) {
    if (!island) {
        return;
    }
    new Ajax.Request('/utils/ajax_dots_controller',
    {
        method: 'post',
        parameters: {
            action: 'getResortByIslandId',
            id: island
        },
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success) {
                if (responseJS.points.length && $('island_map')) {
                    drawPoints(responseJS.points);
                    drawTT(responseJS.points);
                }
            }
        }
    });
}

function loadResort(id) {
    if (!id) {
        return;
    }
    new Ajax.Request('/utils/ajax_dots_controller',
    {
        method: 'post',
        parameters: {
            action: 'getByResortId',
            id: id
        },
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success) {
                if (responseJS.points.length && $('island_map')) {
                    drawPoints(responseJS.points);
                    drawTT(responseJS.points);
                }
            }
        }
    });
}

function drawPoints(points) {
	var tpl = '';
    for (var i=0; i<points.length; i++) {
        if (!$('course'+points[i].id)) {
        	switch (points[i].type) {
				case 'course':
					tpl = '<a target="_blank" onclick="javascript:void(0)" id="course#{id}" style="display:block; position: absolute; top: #{dot_y}px; left: #{dot_x}px; cursor: pointer;" onmouseover="this.style.cursor=\'pointer\';"><img src="/img/icon_golf_flag_red.gif" width="16" heitgh="16"></a>';
					break;
				case 'resort':
					tpl = '<a target="_blank" onclick="javascript:void(0)" id="course#{id}" style="display:block; position: absolute; top: #{dot_y}px; left: #{dot_x}px; cursor: pointer;" onmouseover="this.style.cursor=\'pointer\';"><img src="/img/icon_resort_small.gif" width="16" heitgh="16"></a>';
					break;
        	}
			var dot1 = new Template(tpl);
            $('island_map').innerHTML += dot1.evaluate(points[i]);
        }
    }
}

function drawTT(points) {
    for (var i=0; i<points.length; i++) {
        new Tip('course'+points[i].id, points[i].content, {
            title: points[i].title,
            offset: {x:0, y:5},
            hook: { tip: 'bottomRight', target: 'topLeft'},
            hideOn: false,
            hideAfter: 0.5,
            showOn: 'mousemove'
        });
    }
}

function loadGreetingsStep1() {
    var params = $('gform1').serialize(true);
    params.gstep = 1;
    new Ajax.Request('/popup/greetings.asp',
    {
        method: 'post',
        parameters: params,
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success) {
                if ($('shadowbox_content')) {
                    $('shadowbox_content').innerHTML = responseJS.content;
                } else {
                    Shadowbox.open({
                        content: responseJS.content,
                        type:   'html',
                        title:  '',
                        width:  700,
                        height: 500
                    });
                }
            }
        }
    });
}

function loadGreetingsStep2() {
    var params = $('gform2').serialize(true);
    new Ajax.Request('/popup/greetings.asp',
    {
        method: 'post',
        parameters: params,
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success) {
                if ($('shadowbox_content')) {
                    $('shadowbox_content').innerHTML = responseJS.content;
                }
            }
        }
    });
}

function loadGreetingsStep3() {
    var params = $('gform3').serialize(true);
    new Ajax.Request('/popup/greetings.asp',
    {
        method: 'post',
        parameters: params,
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success) {
                if ($('shadowbox_content')) {
                    $('shadowbox_content').innerHTML = responseJS.content;
                }
            }
        }
    });
}

function loadGreeting(id) {
    new Ajax.Request('/popup/greeting.asp',
    {
        method: 'post',
        parameters: {
            view: id
        },
        onSuccess: function(transport){
            var responseJS = transport.responseText.evalJSON();
            if (responseJS.success) {
                Shadowbox.open({
                    content: responseJS.content,
                    type:   'html',
                    title:  '',
                    width:  700,
                    height: 500
                });
            }
        }
    });
}

function checkSearch(f) {
	if ($('pages').checked) {
		$('q').value = $('txtCourse').value;
		f.action = '/search.asp';
		f.submit();
	}
}

function moreText() {
	Effect.SlideDown('more_text', { duration: 0.5 });
	$('more_link').hide();
}

function bookResort(resort, island) {
	$('AccommodationField').checked = true;
	$(island+'Field').checked = true;
	var inp = document.createElement('input');
	inp.setAttribute('type','hidden');
	inp.setAttribute('name',island+'Hotels');
	inp.setAttribute('value',unescape(resort));
	$('form2').appendChild(inp);
	$('form2').submit();
}

function bookCourses(arr, island) {
	$('GolfField').checked = true;
	$(island+'Field').checked = true;
	var inp;
	for (var i=0; i<arr.length; i++) {
		inp = document.createElement('input');
		inp.setAttribute('type','hidden');
		inp.setAttribute('name',island+'Courses['+i+']');
		inp.setAttribute('value',unescape(arr[i]));
		$('form2').appendChild(inp);
		inp = document.createElement('input');
		inp.setAttribute('type','hidden');
		inp.setAttribute('name',island+'Adults['+i+']');
		inp.setAttribute('value','');
		$('form2').appendChild(inp);
		inp = document.createElement('input');
		inp.setAttribute('type','hidden');
		inp.setAttribute('name',island+'Child['+i+']');
		inp.setAttribute('value','');
		$('form2').appendChild(inp);
		inp = document.createElement('input');
		inp.setAttribute('type','hidden');
		inp.setAttribute('name',island+'Tee['+i+']');
		inp.setAttribute('value','');
		$('form2').appendChild(inp);
	}
	$('form2').submit();
}

function switchLeiNum(val) {
	if (val=='No') {
		$('GreetingsNum').value = '';
		$('GreetingsNum').selectedIndex = 0;
		$('leisnum').hide();
	} else {
		$('leisnum').show();
	}
}