var cookie_options = {
    path: '/'
};
function block_on(i,t) {
    $('#block_'+i).hide();
    $('#block-txt_'+i).show();
    if(typeof(t)!='undefined'){
        $.cookie(t, null);
    }
}

function block_off(i,t) {
    $('#block_'+i).show();
    $('#block-txt_'+i).hide();
    if(typeof(t)!='undefined'){

        $.cookie(t, '1', cookie_options);
    }
}
function add_on(i) {
    $('#add_'+i).hide();
    $('#add-txt_'+i).show();
}

function add_off(i) {
    $('#add_'+i).show();
    $('#add-txt_'+i).hide();
}

function check_off() {
    $('#indForm').show();
    $('#colForm').hide();
    $('#indErrorsContainer').hide();
    $('#colErrorsContainer').hide();
}
function check_on() {
    $('#indForm').hide();
    $('#colForm').show();
    $('#indErrorsContainer').hide();
    $('#colErrorsContainer').hide();
}
function check2_on() {
    $('#indForm').hide();
    $('#colForm').show();
}
function trim( str, charlist ) {
    charlist = !charlist ? ' ' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
    var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');
    return str.replace(re, '');
}

/***********************************************************************************/

function str_replace(search, replace, subject) {
    var s = subject;
    var f = [].concat(search);
    var r = [].concat(replace);
    var l = (f.length>r.length) ? r.length : f.length;
    var i = 0;

    for (i=0; i<l; ++i)
    {
        s = s.split(f[i]).join(r[i]);
    }

    return s;
}
function explode( delimiter, string ) {    // Split a string by string
    //
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: kenneth
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)

    var emptyArray = {
        0: ''
    };

    if ( arguments.length != 2
        || typeof arguments[0] == 'undefined'
        || typeof arguments[1] == 'undefined' )
        {
        return null;
    }

    if ( delimiter === ''
        || delimiter === false
        || delimiter === null )
        {
        return false;
    }

    if ( typeof delimiter == 'function'
        || typeof delimiter == 'object'
        || typeof string == 'function'
        || typeof string == 'object' )
        {
        return emptyArray;
    }

    if ( delimiter === true ) {
        delimiter = '1';
    }

    return string.toString().split ( delimiter.toString() );
}
/***********************************************************************************/

function refreshSecretkey(id,type)
{
    if(typeof(type)=='undefined'){
        setTimeout("refreshSecretkeyTimeout('"+id+"')",100);
    }else{
        setTimeout("refreshSecretkeyTimeout('"+id+"','"+type+"')",100);
    }
}
function refreshSecretkeyTimeout(id,type)
{
    if(typeof(type)=='undefined'){
        $('#'+id).attr({
            'src':'/secretkey.php?id='+Math.round(Math.random(0)*1000)+1
        });
    }else{
        $('#'+id).attr({
            'src':'/secretkey.php?type='+type+'&id='+Math.round(Math.random(0)*1000)+1
        });
    }
}

/***********************************************************************************/

jQuery.validator.addMethod("validemail", function(value, element, param) {
    if(trim(value)=='' && this.optional(element)==false)return false;
    var reg = /^[0-9a-z_\.-]+@[0-9a-z_^\.-]+\.[a-z]{2,6}$/i
    return this.optional(element) || (reg.test(value) || reg.test(value));
},'Please enter valid email');

//------------------------------------------------------------------------------------

jQuery.validator.addMethod("checkDate", function(value, element, param) {
    //alert(element.id);
    var params = explode(',',param);
    var day=parseInt($('#'+params[0]).val());
    var month=parseInt($('#'+params[1]).val())-1;
    var year=parseInt($('#'+element.id).val());
    if(!this.optional(element) && (day+month+year==-1))return true;
    var date = new Date( year, month, day )
    if((day==date.getDate())&&(month==date.getMonth())&&(year==date.getFullYear())&&(year>1753))
    {
        return true;
    }
    return false;
});
//------------------------------------------------------------------------------------
jQuery.validator.addMethod("secretkey",  function(value, element, param) {
    if(trim(value)=='' && this.optional(element)==false)return true;
    var reg = /^[a-z0-9_-]+$/i
    return reg.test(value) || reg.test(value);
}, 'Please enter valid secretkey!');
jQuery.validator.addMethod("checkAge", function(value, element, param) {
    var params = explode(',',param);
    var day=parseInt($('#'+params[0]).val());
    var month=parseInt($('#'+params[1]).val())-1;
    var year=parseInt($('#'+element.id).val());
    var ageStart = params[2];
    var ageEnd   = params[3];
    //alert(ageStart+ ' '+ageEnd);
    if(!this.optional(element) && (day+month+year==-1))return true;
    var date = new Date( year, month, day )
    if((day==date.getDate())&&(month==date.getMonth())&&(year==date.getFullYear())&&(year>1753))
    {
        var nowTime = new Date();
        var date1   = new Date(nowTime.getFullYear()-ageEnd,nowTime.getMonth(), nowTime.getDate());
        var date2   = new Date(nowTime.getFullYear()-ageStart,nowTime.getMonth(), nowTime.getDate());
        return ((date.getTime()>=date1.getTime())&&(date.getTime()<=date2.getTime()));
    }
    return false;
});

//------------------------------------------------------------------------------------

jQuery.validator.addMethod("validnickname", function(value, element, param) {
    if(value=='')return false;
    var reg = /^[a-zA-Z0-9_]+$/i
    return reg.test(value) || reg.test(value);
}, 'Please enter valid nickname!');

jQuery.validator.addMethod("validlatin", function(value, element, param) {
    //alert(element.id+' '+this.optional(element));
    if(trim(value)=='' && this.optional(element)!=false)return true;
    var reg = /^[a-z0-9!@%#$\^&*()\[\]+_=<>?.\/\\{}~"'’`:;,| \r\n\t~¢£¤¥¦§¨©«¬®¯°±²³´·¸¹º»ǀǁǂ\‒\–\—\―‖‗‘’‚‛“”„‟†‡•…′″‴‹›₤€₵℅ℓ№℗™■□▪▫◊○◌●◦-]+$/i

    //var reg = /^[a-zA-Z!@%#$^&*()[\]+_=<>?./\{}~"'’`:;,| \r\n\t-]+$/i
    //@[\]^_`{|}~¢£¤¥¦§¨©«¬­®¯°±²³´·¸¹º»ǀǁǂ‒–—―‖‗‘’‚‛“”„‟†‡•…′″‴‹›₤€₵℅ℓ№℗™■□▪▫◊○◌●◦
    return reg.test(value) || reg.test(value);
}, 'Please enter latin symbols only!');


function processXml(responseXML, form_id, callback_function) {
    var form = $('#'+form_id);
    $('[id^=error_]',form).hide();
    var count_errors = 0;
    $('e', responseXML).each(function(i){
        count_errors++;
        var container	= $('c',$(this)).text();
        var message		= $('m',$(this)).text();
        if(container==form_id+'_secretkey'){
            var s=explode('Form',container);
            refreshSecretkey(form_id+'_secretkey_img',s[0]);
        }
        $('#error_'+container).html(message).show();
    });
    if(count_errors==0 && typeof(callback_function)=='function'){
        callback_function(form_id);
    }
}


function createUploadContainer(content_type,container_type,file_container,session_id,ext1,ext2,maxsize){
    maxsize = parseInt(maxsize)*1024*1024;
    $(document).ready(function() {
        if(FlashInstalled /*&& FlashValid*/){
            $('#'+file_container).uploadify({
                'uploader'  : '/js/uploadify/uploadify.swf',
                'script'    : '/importer.php',
                'cancelImg' : '/js/uploadify/remove.gif',
                'buttonImg' : '/js/uploadify/button_upload.gif',
                'expressInstall' :'/js/uploadify/scripts/expressInstall.swf',
                'fileDesc'  : ext2,
                'fileExt'  : ext1,
                'sizeLimit':maxsize,
                'rollover'  : true,
                'wmode'     : 'transparent',
                'auto'      : true,
                'width'     : 222,
                'height'    : 22,
                'onComplete'  : function(event,queueID,fileObj,response,data){
                    refreshImportList(content_type,container_type);
                },
                'scriptData':{
                    "SESSION_KEY" : session_id,
                    "do":"upload",
                    "hash":Math.random(),
                    'content_type':content_type,
                    'container_type':container_type
                }
            });
        }else{
        // $('#'+file_container).attr('size','33');
        }
        refreshImportList(content_type,container_type);
    });
    

}


function refreshImportList(content_type,container_type){
    var id = content_type+'_'+container_type;
    $.post('/importer.php',{
        'do'    : 'get_list',
        content_type:content_type,
        container_type:container_type
    },function(data){
        $('#'+id+'_container').html(data);
    });
}


function DeleteImportFile(video_file,content_type,container_type){
    if(confirm('Are you sure?')){
        var id = content_type+'_'+container_type;
        $.post('/importer.php',{
            'do'    : 'delete',
            video_file:video_file,
            content_type:content_type,
            container_type:container_type
        },function(data){
            refreshImportList(content_type,container_type);
        });
    }
}

$().ready(function(){
    $('#confirmForm_confirm_').click(function(){
        if($(this).get(0).checked){
            $('#confirm_btn').css('cursor', 'pointer');
            $('#confirm_btn').removeAttr('disabled');
        }else{
            $('#confirm_btn').css('cursor', 'default');
            $('#confirm_btn').attr('disabled','disabled');
        }
    });
});



function highlightErrorsWorks(el_name, el_id,form_id){
    $('#'+el_id).addClass('error');
    location.href='#worksErrorsList';
}
function unhighlightErrorsWorks(el_name, el_id,form_id){
    $('#'+el_id).removeClass('error');
}


function highlightErrorsInd(el_name, el_id,form_id){
    ///alert('Err:'+el_id+form_id);


    if(el_name=='birth_years'){
        $('#indBirthDateContainer').addClass('error');
    }else if(el_name=='birth_country'){
        $('#indBirthCountryContainer').addClass('error');
    }else if(el_name=='country'){
        $('#indCountryContainer').addClass('error');
    }else if(el_name=='gender'){
        $('#indGenderContainer').addClass('error');
    }else{
        $('#'+el_id).addClass('error');
    }
    location.href='#indErrorsList';
}
function unhighlightErrorsInd(el_name, el_id,form_id){
    if(el_name=='birth_years'){
        $('#indBirthDateContainer').removeClass('error');
    }else if(el_name=='birth_country'){
        $('#indBirthCountryContainer').removeClass('error');
    }else if(el_name=='country'){
        $('#indCountryContainer').removeClass('error');
    }else if(el_name=='gender'){
        $('#indGenderContainer').removeClass('error');
    }else{
        $('#'+el_id).removeClass('error');
    }
}
function highlightErrorsCol(el_name, el_id,form_id){
    //alert('Err:'+el_id+form_id);
    var gender_patt=/gender-(\d+)/g;
    var country_patt=/country-(\d+)/g;
    var birth_country_patt=/birth_country-(\d+)/g;
    var birth_year_patt=/birth_year-(\d+)/g;
    if(result=birth_year_patt.exec(el_name)){
        $('#colBirthDayContainer-'+result[1]).addClass('error');
    }else if(result=birth_country_patt.exec(el_name)){
        $('#colBirthCountryContainer-'+result[1]).addClass('error');
    }else if(result=country_patt.exec(el_name)){
        $('#colCountryContainer-'+result[1]).addClass('error');
    }else if(result=gender_patt.exec(el_name)){
        $('#colGenderContainer-'+result[1]).addClass('error');
    }else{
        $('#'+el_id).addClass('error');
    }

    location.href='#colErrorsList';
}
function unhighlightErrorsCol(el_name, el_id,form_id){
    var gender_patt=/gender-(\d+)/g;
    var country_patt=/country-(\d+)/g;
    var birth_country_patt=/birth_country-(\d+)/g;
    if(result=birth_country_patt.exec(el_name)){
        $('#colBirthCountryContainer-'+result[1]).removeClass('error');
    }else
    if(result=country_patt.exec(el_name)){
        $('#colCountryContainer-'+result[1]).removeClass('error');
    }else
    if(result=gender_patt.exec(el_name)){
        $('#colGenderContainer-'+result[1]).removeClass('error');
    }else{
        $('#'+el_id).removeClass('error');
    }
}


function setupCalendar(ico_calendar_id,sel_days_id,sel_month_id,sel_year_id){
    var ageEnd=36;
    var ageStart=18;
    var nowTime = new Date();
    var date1   = new Date(nowTime.getFullYear()-ageEnd,nowTime.getMonth(), nowTime.getDate());
    var date2   = new Date(nowTime.getFullYear()-ageStart,nowTime.getMonth(), nowTime.getDate());
    var startDate=date1.getDate()+'/'+(date1.getMonth()+1)+'/'+date1.getFullYear();
    var endDate=date2.getDate()+'/'+(date2.getMonth()+1)+'/'+date2.getFullYear();
    // initialise the "Select date" link
    $('#'+ico_calendar_id)
    .datePicker(
    // associate the link with a date picker
    {
        createButton:false,
        startDate:startDate,
        endDate:endDate
    }
    ).bind(
        // when the link is clicked display the date picker
        'click',
        function()
        {
            //alert($(this).dpGetSelected()[0]);
            updateSelects($(this).dpGetSelected()[0]);
            $(this).dpDisplay();
            return false;
        }
        ).bind(
        // when a date is selected update the SELECTs
        'dateSelected',
        function(e, selectedDate, $td, state)
        {
            updateSelects(selectedDate);
        }
        ).bind(
        'dpClosed',
        function(e, selected)
        {
            updateSelects(selected[0]);
        }
        );

    var updateSelects = function (selectedDate)
    {
        
        var selectedDate = new Date(selectedDate);
        $('#'+sel_days_id+' option[value=' + selectedDate.getDate() + ']').attr('selected', 'selected');
        $('#'+sel_month_id+' option[value=' + (selectedDate.getMonth()+1) + ']').attr('selected', 'selected');
        $('#'+sel_year_id+' option[value=' + (selectedDate.getFullYear()) + ']').attr('selected', 'selected');
    }
    // listen for when the selects are changed and update the picker
    $('#'+sel_days_id+', #'+sel_month_id+', #'+sel_year_id)
    .bind(
        'change',
        function()
        {
            var d = new Date(
                $('#'+sel_year_id).val(),
                $('#'+sel_month_id).val()-1,
                $('#'+sel_days_id).val()
                );
            $('#'+ico_calendar_id).dpSetSelected(d.asString());
        }
        );
    //updateSelects(date1.getTime());
    $('#'+sel_days_id).trigger('change');
/*
        // default the position of the selects to today
        var today = new Date();
        updateSelects(today.getTime());

        // and update the datePicker to reflect it...
        $('#'+sel_days_id).trigger('change');
        $('#'+sel_years_id).trigger('change');
        $('#'+sel_months_id).trigger('change');*/

}
function setNotLatinHandlers(form,fields){
    for(f in fields){
        notLatinHandler(form+'_'+fields[f]);
    }
}
function addParticipantRowById(id){
    $(template(id)).appendTo("#colform_persons");
    setupCalendar('celendarCol-'+id,'colForm_birth_day-'+id, 'colForm_birth_month-'+id, 'colForm_birth_year-'+id);
    setNotLatinHandlers('colForm',new Array('first_name-'+id,'last_name-'+id,'middle_name-'+id,'city-'+id));
    if(id==1){
        $('#participant_'+id).remove();
    }else{
        deleteParticipantContainer(id);
    }

    $('#colForm_participant_count').val(id);

}
function addParticipantRow() {
    

    for(var i=1;i<=20;i++){
        if(!document.getElementById('colForm_first_name-'+i)){
            addParticipantRowById(i);
            break;
        }
    }
    colform_persons_count++;

    if(colform_persons_count>20){
        $("#add").hide();
    }
}

function deleteParticipantContainer(p){
    $('#participant_'+p).click(function(){
        if(confirm('Are you sure?')){
            var id=$(this).attr('id').substr(12);
            $('#participant_line_1_'+id).remove();
            $('#participant_line_2_'+id).remove();
            $('#participant_line_3_'+id).remove();
            colform_persons_count--;
            if(colform_persons_count<=20){
                $("#add").show();
            }
        }
    }).css('cursor','pointer');
}
function checkRecommend(){
    if(!FlashInstalled){
        $('.alternativeFile').show();
    }
    $("input[name^='rec-']").click(function(){
        var ch=false;
        $("input[name^='rec-']").each(function(){
            if(this.checked){
                ch=true;
            }
        });
        if(ch){
            $("input[name='rec']").val($(this).val());
        }else{
            $("input[name='rec']").val('');
        }
    });

}
function removeWorkHandler(id){
    $('#worktitle_'+id).click(function(){
        if(confirm('Are you sure?')){
            var id=$(this).attr('id').substr(10);
            $('#work_line_1_'+id).remove();
            $('#work_line_2_'+id).remove();
            colform_work_count--;
            checkRecommend();
            $('#worksForm_works_count').val(colform_work_count);

            if(colform_work_count<=7){
                $("#add").show();
            }

            if($("input[name='rec']").val()==id){
                $("input[name='rec']").val('');
            };

            $.post('/importer.php',{
                'do'    : 'delete_all',
                content_type:'step2',
                container_type:'media'+id
            },function(data){
               
                });


        }
    }).css('cursor','pointer');
}
function addWorkById(id,session_id){
    $(template(id)).appendTo("#works");
    setNotLatinHandlers('worksForm',new Array('works_title_eng-'+id,'material-'+id,'size-'+id,'description-'+id));

    if(id<=3){
        $('#worktitle_'+id).remove();

    }else{
        removeWorkHandler(id);
    }
    createUploadContainer('step2','media'+id,'worksForm_file-'+id,session_id,'*.jpg;*.gif;*.png;*.avi;*.mp4;*.mov;*.flv;',"All .jpg .gif .png .avi .mp4 .mov .flv files",'100 MB');
    
}
function addWorkRow(session_id) {
    for(var i=1;i<=7;i++){
        if(!document.getElementById('worksForm_photo_video-'+i)){
            addWorkById(i, session_id);
            break;
        }
    }
    checkRecommend();
    $('#worksForm_works_count').val(colform_work_count);
    colform_work_count++;
    if(colform_work_count>7){
        $("#add").hide();
    }
}

function checkMedia(){
    if(FlashInstalled){
        for(var i=1;i<=7;i++){
            if(document.getElementById('worksForm_photo_video-'+i)){
                $('#worksForm_photo_video-'+i).val((new Date()).getTime());
            }
        }
    }else{
        for(var i=1;i<=7;i++){
            if(document.getElementById('worksForm_photo_video-'+i)){
                $('#worksForm_photo_video-'+i).val('');
            }
        }
        
    }
}



var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
    var version;
    var axo;
    var e;

    // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

    try {
        // version will be set for 7.X or greater players
        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
        version = axo.GetVariable("$version");
    } catch (e) {
    }

    if (!version)
    {
        try {
            // version will be set for 6.X players only
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");

            // installed player is some revision of 6.0
            // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
            // so we have to be careful.

            // default to the first public version
            version = "WIN 6,0,21,0";

            // throws if AllowScripAccess does not exist (introduced in 6.0r47)
            axo.AllowScriptAccess = "always";

            // safe to call for 6.0r47 or greater
            version = axo.GetVariable("$version");

        } catch (e) {
        }
    }

    if (!version)
    {
        try {
            // version will be set for 4.X or 5.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
            version = axo.GetVariable("$version");
        } catch (e) {
        }
    }

    if (!version)
    {
        try {
            // version will be set for 3.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
            version = "WIN 3,0,18,0";
        } catch (e) {
        }
    }

    if (!version)
    {
        try {
            // version will be set for 2.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
            version = "WIN 2,0,0,11";
        } catch (e) {
            version = -1;
        }
    }

    return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
    // NS/Opera version >= 3 check for Flash plugin in plugin array
    var flashVer = -1;

    if (navigator.plugins != null && navigator.plugins.length > 0) {
        if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
            var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
            var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
            var descArray = flashDescription.split(" ");
            var tempArrayMajor = descArray[2].split(".");
            var versionMajor = tempArrayMajor[0];
            var versionMinor = tempArrayMajor[1];
            var versionRevision = descArray[3];
            if (versionRevision == "") {
                versionRevision = descArray[4];
            }
            if (versionRevision[0] == "d") {
                versionRevision = versionRevision.substring(1);
            } else if (versionRevision[0] == "r") {
                versionRevision = versionRevision.substring(1);
                if (versionRevision.indexOf("d") > 0) {
                    versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
                }
            }
            var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
        }
    }
    // MSN/WebTV 2.6 supports Flash 4
    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
    // WebTV 2.5 supports Flash 3
    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
    // older WebTV supports Flash 2
    else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
    else if ( isIE && isWin && !isOpera ) {
        flashVer = ControlVersion();
    }
    return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
    versionStr = GetSwfVer();
    if (versionStr == -1 ) {
        return false;
    } else if (versionStr != 0) {
        if(isIE && isWin && !isOpera) {
            // Given "WIN 2,0,0,11"
            tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
            tempString        = tempArray[1];			// "2,0,0,11"
            versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
        } else {
            versionArray      = versionStr.split(".");
        }
        var versionMajor      = versionArray[0];
        var versionMinor      = versionArray[1];
        var versionRevision   = versionArray[2];

        // is the major.revision >= requested major.revision AND the minor version >= requested minor
        if (versionMajor > parseFloat(reqMajorVer)) {
            return true;
        } else if (versionMajor == parseFloat(reqMajorVer)) {
            if (versionMinor > parseFloat(reqMinorVer))
                return true;
            else if (versionMinor == parseFloat(reqMinorVer)) {
                if (versionRevision >= parseFloat(reqRevision))
                    return true;
            }
        }
        return false;
    }
}
var FlashInstalled = GetSwfVer()!=-1;
var FlashValid     = DetectFlashVer(9,0,24);
function notLatinHandler(el){
    $('#'+el).autotab({
        format: 'latin'
    });
}

function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName];
    } else {
        return document[movieName];
    }
}
function sendToActionScript(player,value) {
    setTimeout('thisMovie("'+player+'").sendTextToFlash("'+value+'")',1000);
}
function DateFromString(d){
    var p=explode('/',d);
    var date = new Date(p[2],p[1]-1,p[0]);
    return date;
}

