/********************************************************
 *
 * Streamsolutions.co.uk
 *
 * Date   : 25/02/08
 * Author : Ray Boyd
 * Notes  : Website javascript functions, dependant on JQuery
 *          JQuery 1.2.3+ (currently working on 1.2.6) at time of creation.
 *
 ********************************************************/

$(document).ready(function(){

  $.ajaxHistory.initialize();

  var testimonials = [
    "They have delivered well above our expectations and shine above the rest. We look forward to a working with you in 2008 and beyond.",
    "Just wanted to say a big thank you from me and my team... Very fast setup... Thanks guys.",
    "Just a quick note to say thanks for putting up with all of my pestering questions over the past few weeks. Every time you've replied, you've been professional, friendly and very helpful. Keep up the excellent work.",
    "Always happy to help, and if what you want isn't possible, they'll develop it so it is... Not like any other streaming media provider, service you won't find anywhere else.",
    "Excellent service and support. Best on the net, without doubt.",

    "Problem solving: Excellent - although my problems were trivial they were solved immediately without delays. It is nice doing business with a service that cares and responds quickly to customer, and pre-customer inquiries...",
    "Easily the best streaming hosts on the internet, Highly Recommended.",
    "I find StreamSolutions to be an incredibly realible service and offer excellent technical support when required.",
    "We are very satisfied customers and would not hesitate to recommend the service to anyone wanting a reliable, cost-effective solution to internet audio streaming.",
    "Onwards and upwards for these guys, can't fault them at all.",

    "I've had several broadcasters, old and new alike, ask me where to go for bandwidth and I always happily point them to StreamSolutions.",
    "For years I was at Live 365 and quite frankly folks... StreamSolutions is the answer.",
    "We want to give SS our highest recommendation, very stable servers, great service and excellent support!",
    "It's not often people get a pat on the back but in the case StreamSolutions gets a double pat on the back from me GREAT service coupled with even better customer care!!!",
    "I'd just like to thank you for being so helpful as i started as a novice and now own a popular station, you are with out a doubt the best around and im sure everyone will agree.",

    "The service was easy to setup and works 'out of the box' which is just up my street.",
    "I have been with many hosting suppliers but this has got to be the best and most user freindly from start to finish."
  ];

  var buttons = [
    "/public/images/rotation/qserv_btn.jpg",
    "/public/images/rotation/standard_btn.jpg",
    "/public/images/rotation/flashvid_btn.jpg",
    "/public/images/rotation/flash_btn.jpg",
    "/public/images/rotation/consult_btn.jpg",          // 1 related to // 1 below
    "/public/images/rotation/content_btn.jpg",          // 2
    "/public/images/rotation/dj_switch_btn.jpg",        // 3
    "/public/images/rotation/freedom_btn.jpg",
    "/public/images/rotation/ice_btn.jpg",
    "/public/images/rotation/msgr_control_btn.jpg",
    "/public/images/rotation/shout_btn.jpg",
    "/public/images/rotation/video_btn.jpg",
    "/public/images/rotation/windows_btn.jpg"
  ];

  var btn_links = [
    "/range/qserv",
    "/range/standard",
    "/video/flash",
    "/audio/flash",
    "/services/consultancy",        // 1 related to // 1 below
    "/cds/shoutcast",               // 2
    "/services/dj_switching",       // 3
    "/range/freedom",
    "/audio/icecast",
    "/services/messenger_control",
    "/audio/shoutcast",
    "/video/windows",
    "/audio/windows"
  ];

  var btn_txt = [
    "Qservers",
    "Standard Servers",
    "Flash Video",
    "Flash Media",
    "Consultancy",                  // 1
    "Shoutcast",                    // 2
    "DJ Switching",                 // 3
    "Freedom Servers",
    "Icecast",
    "Messenger Control",
    "Shoutcast",
    "Windows Video",
    "Windows Audio"
  ];

/** DO NOT EDIT **/
  // top menu mouse events
  $("#navigation li").hover(
    // mouseover
    function()
    {
      $("ul", this).show();
      switch( $(this).attr('id') )
      {
        case 'audio' :
          $('.audio').css({ backgroundColor:'#262626', color:'#fff' });
        break;

        case 'cds' :
          $('.cds').css({ backgroundColor:'#3d3d3d', color:'#fff' });
        break;

        case 'services' :
          $('.services').css({ backgroundColor:'#4a4a4a', color:'#fff' });
        break;

        case 'help' :
          $('.help').css({ backgroundColor:'#565656', color:'#fff' });
        break;

        default:
        break;
      }
    },
    // mouseout
    function()
    {
      $('.audio').css({ backgroundColor:'#f3f3f3', color:'#262626' });
      $('.cds').css({ backgroundColor:'#f3f3f3', color:'#262626' });
      $('.services').css({ backgroundColor:'#f3f3f3', color:'#262626' });
      $('.help').css({ backgroundColor:'#f3f3f3', color:'#262626' });
      $("ul", this).hide();
    }
  );

  // testimonial rotater
  var testimonial_number = Math.floor( Math.random()*(testimonials.length-1) );
  $('#testimonials-display').text(testimonials[testimonial_number]);

  var adindex = Math.floor( Math.random()*9 );
  $('#text-rotate').text(btn_txt[adindex]);
  $('#text-rotate').attr("href", btn_links[adindex]);
  $('#rotater').css({ "backgroundImage" : "url(" + buttons[adindex] + ")"  }).fadeIn(200);

  /** login window **/
  $("#loginwindow").attr("open","false");
  $("#login_form").hide();
  $("#loginwindow").bind("click", function(e){
    if($("#loginwindow").attr("open") != "true"){
      $("#loginwindow").attr("open","true");
      $("#loginwindow").text("Close [X]");
      $("#login_form").show();
    } else {
      $("#loginwindow").attr("open","false");
      $("#login_form").hide();
      $("#loginwindow").text("Sign In");
    }
    return false;
  });
/** DO NOT EDIT **/

});

/*
 * jQuery Form Plugin
 * version: 2.12 (06/07/2008)
 * @requires jQuery v1.2.2 or later
 *
 * Examples and documentation at: http://malsup.com/jquery/form/
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Revision: $Id$
 * compressed 05/08/08 by RB on http://dean.edwards.name/packer/
 */
(function($){$.fn.ajaxSubmit=function(options){if(!this.length){log('ajaxSubmit: skipping submit process - no element selected');return this}if(typeof options=='function')options={success:options};options=$.extend({url:this.attr('action')||window.location.toString(),type:this.attr('method')||'GET'},options||{});var veto={};this.trigger('form-pre-serialize',[this,options,veto]);if(veto.veto){log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');return this}var a=this.formToArray(options.semantic);if(options.data){options.extraData=options.data;for(var n in options.data)a.push({name:n,value:options.data[n]})}if(options.beforeSubmit&&options.beforeSubmit(a,this,options)===false){log('ajaxSubmit: submit aborted via beforeSubmit callback');return this}this.trigger('form-submit-validate',[a,this,options,veto]);if(veto.veto){log('ajaxSubmit: submit vetoed via form-submit-validate trigger');return this}var q=$.param(a);if(options.type.toUpperCase()=='GET'){options.url+=(options.url.indexOf('?')>=0?'&':'?')+q;options.data=null}else options.data=q;var $form=this,callbacks=[];if(options.resetForm)callbacks.push(function(){$form.resetForm()});if(options.clearForm)callbacks.push(function(){$form.clearForm()});if(!options.dataType&&options.target){var oldSuccess=options.success||function(){};callbacks.push(function(data){$(options.target).html(data).each(oldSuccess,arguments)})}else if(options.success)callbacks.push(options.success);options.success=function(data,status){for(var i=0,max=callbacks.length;i<max;i++)callbacks[i](data,status,$form)};var files=$('input:file',this).fieldValue();var found=false;for(var j=0;j<files.length;j++)if(files[j])found=true;if(options.iframe||found){if($.browser.safari&&options.closeKeepAlive)$.get(options.closeKeepAlive,fileUpload);else fileUpload()}else $.ajax(options);this.trigger('form-submit-notify',[this,options]);return this;function fileUpload(){var form=$form[0];if($(':input[@name=submit]',form).length){alert('Error: Form elements must not be named "submit".');return}var opts=$.extend({},$.ajaxSettings,options);var id='jqFormIO'+(new Date().getTime());var $io=$('<iframe id="'+id+'" name="'+id+'" />');var io=$io[0];if($.browser.msie||$.browser.opera)io.src='javascript:false;document.write("");';$io.css({position:'absolute',top:'-1000px',left:'-1000px'});var xhr={responseText:null,responseXML:null,status:0,statusText:'n/a',getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){}};var g=opts.global;if(g&&!$.active++)$.event.trigger("ajaxStart");if(g)$.event.trigger("ajaxSend",[xhr,opts]);var cbInvoked=0;var timedOut=0;var sub=form.clk;if(sub){var n=sub.name;if(n&&!sub.disabled){options.extraData=options.extraData||{};options.extraData[n]=sub.value;if(sub.type=="image"){options.extraData[name+'.x']=form.clk_x;options.extraData[name+'.y']=form.clk_y}}}setTimeout(function(){var t=$form.attr('target'),a=$form.attr('action');$form.attr({target:id,encoding:'multipart/form-data',enctype:'multipart/form-data',method:'POST',action:opts.url});if(opts.timeout)setTimeout(function(){timedOut=true;cb()},opts.timeout);var extraInputs=[];try{if(options.extraData)for(var n in options.extraData)extraInputs.push($('<input type="hidden" name="'+n+'" value="'+options.extraData[n]+'" />').appendTo(form)[0]);$io.appendTo('body');io.attachEvent?io.attachEvent('onload',cb):io.addEventListener('load',cb,false);form.submit()}finally{$form.attr('action',a);t?$form.attr('target',t):$form.removeAttr('target');$(extraInputs).remove()}},10);function cb(){if(cbInvoked++)return;io.detachEvent?io.detachEvent('onload',cb):io.removeEventListener('load',cb,false);var operaHack=0;var ok=true;try{if(timedOut)throw'timeout';var data,doc;doc=io.contentWindow?io.contentWindow.document:io.contentDocument?io.contentDocument:io.document;if(doc.body==null&&!operaHack&&$.browser.opera){operaHack=1;cbInvoked--;setTimeout(cb,100);return}xhr.responseText=doc.body?doc.body.innerHTML:null;xhr.responseXML=doc.XMLDocument?doc.XMLDocument:doc;xhr.getResponseHeader=function(header){var headers={'content-type':opts.dataType};return headers[header]};if(opts.dataType=='json'||opts.dataType=='script'){var ta=doc.getElementsByTagName('textarea')[0];xhr.responseText=ta?ta.value:xhr.responseText}else if(opts.dataType=='xml'&&!xhr.responseXML&&xhr.responseText!=null){xhr.responseXML=toXml(xhr.responseText)}data=$.httpData(xhr,opts.dataType)}catch(e){ok=false;$.handleError(opts,xhr,'error',e)}if(ok){opts.success(data,'success');if(g)$.event.trigger("ajaxSuccess",[xhr,opts])}if(g)$.event.trigger("ajaxComplete",[xhr,opts]);if(g&&!--$.active)$.event.trigger("ajaxStop");if(opts.complete)opts.complete(xhr,ok?'success':'error');setTimeout(function(){$io.remove();xhr.responseXML=null},100)};function toXml(s,doc){if(window.ActiveXObject){doc=new ActiveXObject('Microsoft.XMLDOM');doc.async='false';doc.loadXML(s)}else doc=(new DOMParser()).parseFromString(s,'text/xml');return(doc&&doc.documentElement&&doc.documentElement.tagName!='parsererror')?doc:null}}};

/**
 * ajaxForm() provides a mechanism for fully automating form submission.
 * compressed 05/08/08 by RB on http://dean.edwards.name/packer/
 */
$.fn.ajaxForm=function(options){return this.ajaxFormUnbind().bind('submit.form-plugin',function(){$(this).ajaxSubmit(options);return false}).each(function(){$(":submit,input:image",this).bind('click.form-plugin',function(e){var $form=this.form;$form.clk=this;if(this.type=='image'){if(e.offsetX!=undefined){$form.clk_x=e.offsetX;$form.clk_y=e.offsetY}else if(typeof $.fn.offset=='function'){var offset=$(this).offset();$form.clk_x=e.pageX-offset.left;$form.clk_y=e.pageY-offset.top}else{$form.clk_x=e.pageX-this.offsetLeft;$form.clk_y=e.pageY-this.offsetTop}}setTimeout(function(){$form.clk=$form.clk_x=$form.clk_y=null},10)})})};$.fn.ajaxFormUnbind=function(){this.unbind('submit.form-plugin');return this.each(function(){$(":submit,input:image",this).unbind('click.form-plugin')})};$.fn.formToArray=function(semantic){var a=[];if(this.length==0)return a;var form=this[0];var els=semantic?form.getElementsByTagName('*'):form.elements;if(!els)return a;for(var i=0,max=els.length;i<max;i++){var el=els[i];var n=el.name;if(!n)continue;if(semantic&&form.clk&&el.type=="image"){if(!el.disabled&&form.clk==el)a.push({name:n+'.x',value:form.clk_x},{name:n+'.y',value:form.clk_y});continue}var v=$.fieldValue(el,true);if(v&&v.constructor==Array){for(var j=0,jmax=v.length;j<jmax;j++)a.push({name:n,value:v[j]})}else if(v!==null&&typeof v!='undefined')a.push({name:n,value:v})}if(!semantic&&form.clk){var inputs=form.getElementsByTagName("input");for(var i=0,max=inputs.length;i<max;i++){var input=inputs[i];var n=input.name;if(n&&!input.disabled&&input.type=="image"&&form.clk==input)a.push({name:n+'.x',value:form.clk_x},{name:n+'.y',value:form.clk_y})}}return a};$.fn.formSerialize=function(semantic){return $.param(this.formToArray(semantic))};$.fn.fieldSerialize=function(successful){var a=[];this.each(function(){var n=this.name;if(!n)return;var v=$.fieldValue(this,successful);if(v&&v.constructor==Array){for(var i=0,max=v.length;i<max;i++)a.push({name:n,value:v[i]})}else if(v!==null&&typeof v!='undefined')a.push({name:this.name,value:v})});return $.param(a)};$.fn.fieldValue=function(successful){for(var val=[],i=0,max=this.length;i<max;i++){var el=this[i];var v=$.fieldValue(el,successful);if(v===null||typeof v=='undefined'||(v.constructor==Array&&!v.length))continue;v.constructor==Array?$.merge(val,v):val.push(v)}return val};$.fieldValue=function(el,successful){var n=el.name,t=el.type,tag=el.tagName.toLowerCase();if(typeof successful=='undefined')successful=true;if(successful&&(!n||el.disabled||t=='reset'||t=='button'||(t=='checkbox'||t=='radio')&&!el.checked||(t=='submit'||t=='image')&&el.form&&el.form.clk!=el||tag=='select'&&el.selectedIndex==-1))return null;if(tag=='select'){var index=el.selectedIndex;if(index<0)return null;var a=[],ops=el.options;var one=(t=='select-one');var max=(one?index+1:ops.length);for(var i=(one?index:0);i<max;i++){var op=ops[i];if(op.selected){var v=$.browser.msie&&!(op.attributes['value'].specified)?op.text:op.value;if(one)return v;a.push(v)}}return a}return el.value};$.fn.clearForm=function(){return this.each(function(){$('input,select,textarea',this).clearFields()})};$.fn.clearFields=$.fn.clearInputs=function(){return this.each(function(){var t=this.type,tag=this.tagName.toLowerCase();if(t=='text'||t=='password'||tag=='textarea')this.value='';else if(t=='checkbox'||t=='radio')this.checked=false;else if(tag=='select')this.selectedIndex=-1})};$.fn.resetForm=function(){return this.each(function(){if(typeof this.reset=='function'||(typeof this.reset=='object'&&!this.reset.nodeType))this.reset()})};$.fn.enable=function(b){if(b==undefined)b=true;return this.each(function(){this.disabled=!b})};$.fn.select=function(select){if(select==undefined)select=true;return this.each(function(){var t=this.type;if(t=='checkbox'||t=='radio')this.checked=select;else if(this.tagName.toLowerCase()=='option'){var $sel=$(this).parent('select');if(select&&$sel[0]&&$sel[0].type=='select-one'){$sel.find('option').select(false)}this.selected=select}})};function log(){if($.fn.ajaxSubmit.debug&&window.console&&window.console.log)window.console.log('[jquery.form] '+Array.prototype.join.call(arguments,''))}})(jQuery);
