/*---------<+>---------*\

  @submit express
  @author Arbi Alexandri
  @version 05/06/2010

\*---------<+>---------*/

function freeSubmission()
{
	var warning = '';
	if(!isUrl('input_url'))
	{
		warning = '- Please provide a valid URL\n';
	}
	if(!isEmail('input_email'))
	{
		warning += '- Please provide a valid Email\n';
	}
	if($('#input_email').val() == '')
	{
		warning += '- Please provide a valid Name\n';
	}
	if(!isNumber('input_phone'))
	{
		warning += '- Please provide a valid Phone Number (Min. 10 Digits)\n';
	}
	if($('#input_country').val() == 'None')
	{
		warning += '- Please select a Country\n';
	}
	if($('#captcha').val() == '')
	{
		warning += '- Please provide a valid Security Code';
	}
	if(warning != '')
	{
		alert(warning);
		return false;
	}
	$.ajax({
			url: 'includes/php/ajax/freeSubmission.php',
			type: 'GET',
			dataType: 'html',
			async: true,
			data: $('#free_submission').serialize(),
			beforeSend:	function()
						{
							$('#process').html('<strong>Please be patient...</strong><img src="includes/img/ajax/process.gif" />');
							$('#notification').slideUp();
							$('#success').slideUp();
							$('#submit').attr('disabled','disabled');
						},
			error: 		function()
						{
							$('#process').html('<img src="includes/img/ajax/failed.gif" />');
							$('#notification').html('<p>Something went wrong! Please try again.</p>');
							$('#notification').slideDown();
							$('#submit').attr('disabled','');
							captcha();
						},
			success: 	function(data)
						{
							if(data.indexOf('error') == 0)
							{
								$('#process').html('<img src="includes/img/ajax/failed.gif" />');
								$('#notification').html('<div class="text" id="redhighlite">'+data.substring(6)+'</div>');
								$('#notification').slideDown();
							}
							else
							{
								$('#process').html('<img src="includes/img/ajax/success.gif" />');
								$('#success').html(data);
								$('#success').slideDown();
								$('#input_url').val('http://');
								$('#input_email').val('');
								$('#input_name').val('');
								$('#input_phone').val('');
								$('#input_country').val('None');
								pageTracker._trackPageview("/free-submission-successful");
							}
							$('#submit').attr('disabled','');
							captcha();
						}
			});
}

function newsletter(form_id)
{
	var warning = '';
	if(!isEmail('email'))
	{
		warning += '- Please provide a valid Email';
	}
	if(warning != '')
	{
		alert(warning);
		return false;
	}
	$('#page_url').val(window.location.href);
	$.ajax({
			url: 'includes/php/ajax/newsletter.php',
			type: 'GET',
			dataType: 'html',
			async: true,
			data: $('#'+form_id).serialize(),
			beforeSend:	function()
						{
							$('.submit').attr('disabled','disabled');
							$('#'+form_id+'_process').html('<strong>Please wait...</strong><img src="includes/img/ajax/process.gif" />');
							$('#'+form_id+'_process').slideDown();
						},
			error: 		function()
						{
							$('.submit').attr('disabled','');
							$('#'+form_id+'_process').html('<strong>Failed! Please try again...</strong><img src="includes/img/ajax/failed.gif" />');
						},
			success: 	function(data)
						{
							if(data.indexOf('error') == 0)
							{
								$('#'+form_id+'_process').html(data.substring(6));
							}
							else
							{
								$('#'+form_id+'_process').html(data);
								$('#email').val('');
								pageTracker._trackPageview("/newsletter-successful");
							}
							$('.submit').attr('disabled','');
						}
			});
}

function requestQuote()
{
	//$.getScript('http://www.googleadservices.com/pagead/conversion.js');
	//$('#google-adword').attr('src', 'http://www.googleadservices.com/pagead/conversion/1072736890/?value=50&amp;label=CU6cCNTbywEQ-tTC_wM&amp;guid=ON&amp;script=0');
	var warning = '';
	if($('#req_name').val() == '')
	{
		warning += '- Please provide a valid Name\n';
	}
	if(!isEmail('req_email'))
	{
		warning += '- Please provide a valid Email\n';
	}
	if(!isUrl('req_url'))
	{
		warning += '- Please provide a valid URL\n';
	}
	if(!isNumber('req_phone'))
	{
		warning += '- Please provide a valid Phone Number (Min. 10 Digits)\n';
	}
	if(!$("input:[name*='req_services']").is(':checked'))
	{
		warning += '- Please select at least one service type\n';
	}
	if($('#req_keywords').val() == '')
	{
		warning += '- Please provide some keywords (at least one)\n';
	}
	if(warning != '')
	{
		alert(warning);
		return false;
	}
	$('#req_page_url').val(window.location.href);
	$.ajax({
			url: 'includes/php/ajax/requestQuote.php',
			type: 'GET',
			dataType: 'html',
			async: true,
			data: $('#request_quote').serialize(),
			beforeSend:	function()
						{
							$('.submit').attr('disabled','disabled');
							$('#req_process').html('<strong>Please wait...</strong><img src="includes/img/ajax/process.gif" />');
							$('#req_process').slideDown();
						},
			error: 		function()
						{
							$('.submit').attr('disabled','');
							$('#req_process').html('<strong>Failed! Please try again...</strong><img src="includes/img/ajax/failed.gif" />');
						},
			success: 	function(data)
						{
							if(data.indexOf('error') == 0)
							{
								$('#req_process').html(data.substring(6));
							}
							else
							{
								//$('#req_sidebar').submit();
								//$('#req_process').html(data);
								$('#req_process').html(data);
								pageTracker._trackPageview("/request-main-successful");
							}
							$('.submit').attr('disabled','');
						}
			});
}

function requestQuoteSidebar()
{
	var warning = '';
	if($('#req_name').val() == '')
	{
		warning += '- Please provide a valid Name\n';
	}
	if(!isEmail('req_email'))
	{
		warning += '- Please provide a valid Email\n';
	}
	if(!isUrl('req_url'))
	{
		warning += '- Please provide a valid URL\n';
	}
	if(!isNumber('req_phone'))
	{
		warning += '- Please provide a valid Phone Number (Min. 10 Digits)\n';
	}
	if(warning != '')
	{
		alert(warning);
		return false;
	}
	$('#req_page_url').val(window.location.href);
	$.ajax({
			url: 'includes/php/ajax/requestQuoteSidebar.php',
			type: 'GET',
			dataType: 'html',
			async: true,
			data: $('#req_sidebar').serialize(),
			beforeSend:	function()
						{
							$('.submit').attr('disabled','disabled');
							$('#req_process').html('<strong>Please wait...</strong><img src="includes/img/ajax/process.gif" />');
							$('#req_process').slideDown();
						},
			error: 		function()
						{
							$('.submit').attr('disabled','');
							$('#req_process').html('<strong>Failed! Please try again...</strong><img src="includes/img/ajax/failed.gif" />');
						},
			success: 	function(data)
						{
							if(data.indexOf('error') == 0)
							{
								$('#req_process').html(data.substring(6));
							}
							else
							{
								pageTracker._trackPageview("/request-sidebar-successful");
								$('#req_sidebar').submit();
								//$('#req_process').html(data);
							}
							$('.submit').attr('disabled','');
						}
			});
}


//---------------------
// generate captcha
//---------------------
function captcha()
{
	$('#captcha').val('');
	$('#img-captcha').attr('src', 'includes/php/classes/captcha.php?width=80&height=35&characters=5&ran='+Math.random());
}

function moreInfo(id,toggle)
{
	if( $('#'+toggle).html() == '+' )
	{
		$('#'+toggle+'_img').attr('src','includes/img/ajax/minus.gif');
		$('#'+toggle).html('-');
		$('#'+id).slideDown();
	}
	else if( $('#'+toggle).html() == '-' )
	{
		$('#'+toggle+'_img').attr('src','includes/img/ajax/plus.gif');
		$('#'+toggle).html('+');
		$('#'+id).slideUp();
	}
}

//---------------------
// email validation
//---------------------
function isEmail(input_id)
{
	//var regex = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	var regex = /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
	var email = $('#'+input_id).val();
	return regex.test(email);
}

//---------------------
// URL validation
//---------------------
function isUrl(input_id) {
	//var regex = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
	var regex = /^((http|https|ftp):\/\/)?(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i;
	var url   = $('#'+input_id).val();
	return regex.test(url);
}

//---------------------
// NUMBER validation
//---------------------
function isNumber(input_id) {
	var regex = /^[-]?\d*\.?\d*$/;
	var number = $('#'+input_id).val();
	return (number.length < 10)?false:regex.test(number);
}

function test()
{
	//$("input:[name*='req_services']").attr('checked','checked');
	if(!$("input:[name*='req_services']").is(':checked'))
	{
		alert('check one');
	}
	else
	{
		alert('good');
	}	
}


//----------------------
// jsddm.js
//----------------------
var timeout         = 500;
var closetimer		= 0;
var ddmenuitem      = 0;

function jsddm_open()
{	jsddm_canceltimer();
	jsddm_close();
	ddmenuitem = $(this).find('ul').eq(0).css('visibility', 'visible');}

function jsddm_close()
{	if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');}

function jsddm_timer()
{	closetimer = window.setTimeout(jsddm_close, timeout);}

function jsddm_canceltimer()
{	if(closetimer)
	{	window.clearTimeout(closetimer);
		closetimer = null;}}

$(document).ready(function()
{	$('#jsddm > li').bind('mouseover', jsddm_open);
	$('#jsddm > li').bind('mouseout',  jsddm_timer);});

document.onclick = jsddm_close;


//----------------------
// scroller.js
//----------------------
function changeScrollerArrow(cp, sw, nos) {
  var arrowLoc = 'includes/img/';
  var arrowLeft = document.getElementById('scroller-arrow-left');
  var arrowRight = document.getElementById('scroller-arrow-right');

  if (cp == 0) {
    arrowLeft.src = arrowLoc + 'left-off.gif';
    arrowRight.src = arrowLoc + 'right.gif';
  } else if (cp == (nos - 2) * sw) {
    arrowLeft.src = arrowLoc + 'left.gif';
    arrowRight.src = arrowLoc + 'right-off.gif';
  } else {
    arrowLeft.src = arrowLoc + 'left.gif';
    arrowRight.src = arrowLoc + 'right.gif';
  }
}

/**
 * Moves a sliding div back and forth to display different feature segments.
 * @param {string} direction Supplied in function call to set direction of
 * movement.
  */
function moveItem(direction) {
  var increment = 5;
  var slideWidth = 255;
  var numberOfSlides = 4;
  var slideStyle = document.getElementById('slide-holder').style;
  var currentPosition = Number(slideStyle.left.replace('px', ''));

  direction == 'right' ? increment = increment * -1 : increment = increment;
  direction == 'right' ? slideWidth = slideWidth * -1 :
      slideWidth = slideWidth + increment;

  var stopSlidePosition = currentPosition % slideWidth;

  if (direction == 'right' &&
    currentPosition > slideWidth * (numberOfSlides - 2) ||
    direction == 'left' &&
    currentPosition != 0) {

    slideStyle.left = currentPosition + increment + 'px';
    animate = setTimeout('moveItem(\'' + direction + '\')', 15);

    if (stopSlidePosition == 0 && currentPosition != 0) {
      changeScrollerArrow(currentPosition, slideWidth, numberOfSlides);
      clearTimeout(animate);
      var theDirection = direction;
    }
  } else {
    changeScrollerArrow(currentPosition, slideWidth, numberOfSlides);
  }
}


//----------------------
// slideshow.js
//----------------------
/**
 * Slideshow Lite plugin for jQuery
 *
 * v0.5.3
 *
 * Copyright (c) 2009 Fred Wu
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */

/**
 * Configuration options:
 *
 * pauseSeconds  float    number of seconds between each photo to be displayed
 * fadeSpeed     float    number of seconds for the fading transition, the value should not exceed 'pauseSeconds'
 * width         integer  width of the slideshow, in pixels
 * height        integer  height of the slideshow, in pixels
 * caption       boolean  display photo caption?
 * cssClass      string   name of the CSS class, defaults to 'slideshowlite'
 */

(function($){
	$.fn.slideshow = function(options){
		
		var defaults = {
			pauseSeconds: 2,
			fadeSpeed: 0.5,
			width: 468,
			height: 120,
			caption: true,
			cssClass: 'slideshowlite',
			loop: true
		};
		
		var options = $.extend(defaults, options);
		
		// ----------------------------------------
		// slideshow objects and variables
		// ----------------------------------------
		
		var target = this;
		var items  = $(target).children("a");
		var instance;
		
		// ----------------------------------------
		// some mandontory styling
		// ----------------------------------------
		
		if ( ! $(this).hasClass(options.cssClass)) $(this).addClass(options.cssClass);
		
		$(this).css({
			width: options.width + "px",
			height: options.height + "px"
		});
		
		// ----------------------------------------
		// create anchor links to make the structure simpler for manupilation
		// ----------------------------------------
		
		$(this).children("img").wrap(document.createElement("a"));
		//$(this).children("a").attr("target", "blank");
		
		// ----------------------------------------
		// add item sequence markups
		// ----------------------------------------
		
		var i = 1;
		$(this).children("a").each(function(){
			$(this).attr("rel", i++);
		});
		
		
		// ----------------------------------------
		// create pagination and caption
		// ----------------------------------------
		
		$(this).append("<ul></ul>");
		$(this).append("<ol></ol>");
		var pagination = $(this).children("ul");
		var caption = $(this).children("ol");
		
		var i = 1;
		var j = 0;
		$(this).children("a").each(function(){
			pagination.append("<li><a href=\"javascript:void(0);\">" + i++ + "</a></li>");
			caption.append("<li>" + $("#" + $(target).attr("id") + " img:nth(" + j++ + ")").attr("alt") + "</li>");
		});
		
		pagination.fadeTo(0, 0.8);
		caption.fadeTo(0, 0.6);
		caption.hide();
		
		// ----------------------------------------
		// shortcuts
		// ----------------------------------------
		
		var firstItem   = $(target).children("a:first");
		var lastItem    = $(target).children("a:last");
		var currentItem = firstItem;
		
		// ----------------------------------------
		// pagination highlight
		// ----------------------------------------
		
		var paginationHighlight = function(sequence){
			pagination.children("li").children("a").removeClass("current");
			pagination.children("li").children("a:nth(" + sequence + ")").addClass("current");
		}
		
		// ----------------------------------------
		// caption
		// ----------------------------------------
		
		var showCaption = function(sequence){
			caption.show();
			caption.children("li").hide();
			caption.children("li:nth(" + sequence + ")").fadeIn();
		}
		
		// ----------------------------------------
		// slideshow logic
		// ----------------------------------------
		
		var makeSlideshow = function(){
			
			// pagination click
			pagination.children("li").children("a").click(function(){
				if ( ! $(this).hasClass("current"))
				{
					// select the current item after the pagination click
					currentItem = $(target).children("a:nth(" + ($(this).text()-1) + ")");

					currentItem.show();
					startSlideshow();
				}
			});
			
			// pagination highlight
			paginationHighlight(currentItem.attr("rel")-1);
			
			// show caption
			if (options.caption == true)
			{
				showCaption(currentItem.attr("rel")-1);
			}
			
			// show the current slide
			currentItem.fadeIn(options.fadeSpeed*1000, function(){
				$(target).children("a").hide();
				$(this).show().css("z-index", 1);
			});
			
			if(!options.loop)
			{
				if (currentItem.children("img").attr("src") == lastItem.children("img").attr("src"))
				{
					clearInterval(instance);
				}
				
			}
			
			// prepare for the next slide
			// determines the next item (or we need to rewind to the first item?)
			if (currentItem.children("img").attr("src") == lastItem.children("img").attr("src"))
			{
				currentItem = firstItem;
				currentItem.css("z-index", 2);
			}
			else
			{
				currentItem = currentItem.next();
			}
		};
		
		var startSlideshow = function(){
			clearInterval(instance);
			makeSlideshow();
			instance = setInterval(makeSlideshow, options.pauseSeconds*1000);
		};
		
		// ----------------------------------------
		// start the slideshow!
		// ----------------------------------------
		
		startSlideshow();
	};
})(jQuery);
